duoyun-ui 2.2.2 → 2.2.8
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/elements/badge.d.ts +2 -16
- package/elements/badge.d.ts.map +1 -1
- package/elements/badge.js +4 -158
- package/elements/badge.js.map +1 -1
- package/elements/banner.d.ts +2 -17
- package/elements/banner.d.ts.map +1 -1
- package/elements/banner.js +4 -127
- package/elements/banner.js.map +1 -1
- package/elements/base/chart.d.ts +2 -2
- package/elements/base/resize.d.ts +1 -22
- package/elements/base/resize.d.ts.map +1 -1
- package/elements/base/resize.js +1 -95
- package/elements/base/resize.js.map +1 -1
- package/elements/base/scroll.d.ts +1 -8
- package/elements/base/scroll.d.ts.map +1 -1
- package/elements/base/scroll.js +1 -158
- package/elements/base/scroll.js.map +1 -1
- package/elements/base/visible.d.ts +1 -18
- package/elements/base/visible.d.ts.map +1 -1
- package/elements/base/visible.js +1 -112
- package/elements/base/visible.js.map +1 -1
- package/elements/button.d.ts +2 -24
- package/elements/button.d.ts.map +1 -1
- package/elements/button.js +7 -287
- package/elements/button.js.map +1 -1
- package/elements/checkbox.d.ts +3 -21
- package/elements/checkbox.d.ts.map +1 -1
- package/elements/checkbox.js +6 -180
- package/elements/checkbox.js.map +1 -1
- package/elements/code-block.d.ts +2 -7
- package/elements/code-block.d.ts.map +1 -1
- package/elements/code-block.js +4 -432
- package/elements/code-block.js.map +1 -1
- package/elements/collapse.d.ts +3 -29
- package/elements/collapse.d.ts.map +1 -1
- package/elements/collapse.js +6 -197
- package/elements/collapse.js.map +1 -1
- package/elements/compartment.d.ts +2 -5
- package/elements/compartment.d.ts.map +1 -1
- package/elements/compartment.js +4 -23
- package/elements/compartment.js.map +1 -1
- package/elements/contextmenu.d.ts +5 -42
- package/elements/contextmenu.d.ts.map +1 -1
- package/elements/contextmenu.js +8 -285
- package/elements/contextmenu.js.map +1 -1
- package/elements/countdown.d.ts +2 -12
- package/elements/countdown.d.ts.map +1 -1
- package/elements/countdown.js +4 -94
- package/elements/countdown.js.map +1 -1
- package/elements/divider.d.ts +2 -8
- package/elements/divider.d.ts.map +1 -1
- package/elements/divider.js +4 -129
- package/elements/divider.js.map +1 -1
- package/elements/empty.d.ts +2 -8
- package/elements/empty.d.ts.map +1 -1
- package/elements/empty.js +4 -59
- package/elements/empty.js.map +1 -1
- package/elements/grouped-picker.d.ts +29 -0
- package/elements/grouped-picker.d.ts.map +1 -0
- package/elements/grouped-picker.js +199 -0
- package/elements/grouped-picker.js.map +1 -0
- package/elements/input.d.ts +4 -36
- package/elements/input.d.ts.map +1 -1
- package/elements/input.js +6 -489
- package/elements/input.js.map +1 -1
- package/elements/letters.d.ts +4 -0
- package/elements/letters.d.ts.map +1 -0
- package/elements/letters.js +56 -0
- package/elements/letters.js.map +1 -0
- package/elements/link.d.ts +3 -5
- package/elements/link.d.ts.map +1 -1
- package/elements/link.js +6 -38
- package/elements/link.js.map +1 -1
- package/elements/list.d.ts +5 -58
- package/elements/list.d.ts.map +1 -1
- package/elements/list.js +19 -664
- package/elements/list.js.map +1 -1
- package/elements/modal.d.ts +5 -63
- package/elements/modal.d.ts.map +1 -1
- package/elements/modal.js +13 -411
- package/elements/modal.js.map +1 -1
- package/elements/options.d.ts +4 -32
- package/elements/options.d.ts.map +1 -1
- package/elements/options.js +5 -254
- package/elements/options.js.map +1 -1
- package/elements/page-loadbar.js +1 -1
- package/elements/paragraph.d.ts +2 -2
- package/elements/paragraph.d.ts.map +1 -1
- package/elements/paragraph.js +4 -45
- package/elements/paragraph.js.map +1 -1
- package/elements/placeholder.d.ts +2 -14
- package/elements/placeholder.d.ts.map +1 -1
- package/elements/placeholder.js +4 -114
- package/elements/placeholder.js.map +1 -1
- package/elements/radio.d.ts +5 -24
- package/elements/radio.d.ts.map +1 -1
- package/elements/radio.js +7 -165
- package/elements/radio.js.map +1 -1
- package/elements/rate.d.ts +2 -12
- package/elements/rate.d.ts.map +1 -1
- package/elements/rate.js +4 -142
- package/elements/rate.js.map +1 -1
- package/elements/rolling-number.d.ts +4 -0
- package/elements/rolling-number.d.ts.map +1 -0
- package/elements/rolling-number.js +56 -0
- package/elements/rolling-number.js.map +1 -0
- package/elements/scroll-box.d.ts +2 -2
- package/elements/scroll-box.d.ts.map +1 -1
- package/elements/scroll-box.js +4 -5
- package/elements/scroll-box.js.map +1 -1
- package/elements/segmented.d.ts +3 -20
- package/elements/segmented.d.ts.map +1 -1
- package/elements/segmented.js +4 -191
- package/elements/segmented.js.map +1 -1
- package/elements/slider.d.ts +2 -20
- package/elements/slider.d.ts.map +1 -1
- package/elements/slider.js +4 -261
- package/elements/slider.js.map +1 -1
- package/elements/sort-box.d.ts +1 -2
- package/elements/sort-box.d.ts.map +1 -1
- package/elements/sort-box.js +4 -15
- package/elements/sort-box.js.map +1 -1
- package/elements/space.d.ts +2 -4
- package/elements/space.d.ts.map +1 -1
- package/elements/space.js +4 -37
- package/elements/space.js.map +1 -1
- package/elements/switch.d.ts +2 -11
- package/elements/switch.d.ts.map +1 -1
- package/elements/switch.js +5 -134
- package/elements/switch.js.map +1 -1
- package/elements/tag.d.ts +3 -16
- package/elements/tag.d.ts.map +1 -1
- package/elements/tag.js +4 -133
- package/elements/tag.js.map +1 -1
- package/elements/timeline.d.ts.map +1 -1
- package/elements/timeline.js +0 -1
- package/elements/timeline.js.map +1 -1
- package/elements/toast.js +1 -1
- package/elements/wait.js +1 -1
- package/helper/error.js +2 -39
- package/helper/error.js.map +1 -1
- package/helper/webapp.d.ts +4 -5
- package/helper/webapp.d.ts.map +1 -1
- package/helper/webapp.js +5 -11
- package/helper/webapp.js.map +1 -1
- package/lib/animations.d.ts +1 -10
- package/lib/animations.d.ts.map +1 -1
- package/lib/animations.js +1 -29
- package/lib/animations.js.map +1 -1
- package/lib/cache.d.ts +1 -18
- package/lib/cache.d.ts.map +1 -1
- package/lib/cache.js +1 -62
- package/lib/cache.js.map +1 -1
- package/lib/color.d.ts +1 -37
- package/lib/color.d.ts.map +1 -1
- package/lib/color.js +1 -98
- package/lib/color.js.map +1 -1
- package/lib/decorators.d.ts +2 -0
- package/lib/decorators.d.ts.map +1 -0
- package/lib/decorators.js +2 -0
- package/lib/decorators.js.map +1 -0
- package/lib/easing.d.ts +2 -0
- package/lib/easing.d.ts.map +1 -0
- package/lib/easing.js +2 -0
- package/lib/easing.js.map +1 -0
- package/lib/element.d.ts +1 -18
- package/lib/element.d.ts.map +1 -1
- package/lib/element.js +1 -131
- package/lib/element.js.map +1 -1
- package/lib/encode.d.ts +1 -10
- package/lib/encode.d.ts.map +1 -1
- package/lib/encode.js +1 -48
- package/lib/encode.js.map +1 -1
- package/lib/hotkeys.d.ts +1 -43
- package/lib/hotkeys.d.ts.map +1 -1
- package/lib/hotkeys.js +1 -247
- package/lib/hotkeys.js.map +1 -1
- package/lib/icons.d.ts +1 -114
- package/lib/icons.d.ts.map +1 -1
- package/lib/icons.js +1 -90
- package/lib/icons.js.map +1 -1
- package/lib/image.d.ts +1 -39
- package/lib/image.d.ts.map +1 -1
- package/lib/image.js +1 -140
- package/lib/image.js.map +1 -1
- package/lib/locale.d.ts +1 -87
- package/lib/locale.d.ts.map +1 -1
- package/lib/locale.js +1 -8
- package/lib/locale.js.map +1 -1
- package/lib/map.d.ts +1 -8
- package/lib/map.d.ts.map +1 -1
- package/lib/map.js +1 -31
- package/lib/map.js.map +1 -1
- package/lib/number.d.ts +1 -94
- package/lib/number.d.ts.map +1 -1
- package/lib/number.js +1 -169
- package/lib/number.js.map +1 -1
- package/lib/patterns.d.ts +1 -9
- package/lib/patterns.d.ts.map +1 -1
- package/lib/patterns.js +1 -11
- package/lib/patterns.js.map +1 -1
- package/lib/styles.d.ts +1 -4
- package/lib/styles.d.ts.map +1 -1
- package/lib/styles.js +1 -28
- package/lib/styles.js.map +1 -1
- package/lib/theme.d.ts +1 -85
- package/lib/theme.d.ts.map +1 -1
- package/lib/theme.js +6 -70
- package/lib/theme.js.map +1 -1
- package/lib/time.d.ts +1 -81
- package/lib/time.d.ts.map +1 -1
- package/lib/time.js +1 -255
- package/lib/time.js.map +1 -1
- package/lib/timer.d.ts +1 -25
- package/lib/timer.d.ts.map +1 -1
- package/lib/timer.js +1 -106
- package/lib/timer.js.map +1 -1
- package/lib/types.d.ts +1 -13
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +1 -16
- package/lib/types.js.map +1 -1
- package/lib/utils.d.ts +1 -79
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +1 -240
- package/lib/utils.js.map +1 -1
- package/locales/en.d.ts +1 -37
- package/locales/en.d.ts.map +1 -1
- package/locales/en.js +1 -36
- package/locales/en.js.map +1 -1
- package/locales/zh.d.ts +1 -3
- package/locales/zh.d.ts.map +1 -1
- package/locales/zh.js +1 -37
- package/locales/zh.js.map +1 -1
- package/package.json +4 -6
- package/patterns/console.d.ts +1 -1
- package/patterns/form.d.ts +5 -3
- package/patterns/form.d.ts.map +1 -1
- package/patterns/form.js +18 -5
- package/patterns/form.js.map +1 -1
- package/react/DyBadge.d.ts +1 -9
- package/react/DyBadge.js +1 -1
- package/react/DyBanner.d.ts +1 -6
- package/react/DyBanner.js +1 -1
- package/react/DyButton.d.ts +1 -15
- package/react/DyButton.js +1 -1
- package/react/DyCheckbox.d.ts +1 -7
- package/react/DyCheckbox.js +1 -1
- package/react/DyCheckboxGroup.d.ts +1 -7
- package/react/DyCheckboxGroup.js +1 -1
- package/react/DyCoachMark.d.ts +0 -5
- package/react/DyCoachMark.js +1 -1
- package/react/DyCodeBlock.d.ts +1 -5
- package/react/DyCodeBlock.js +1 -1
- package/react/DyCollapse.d.ts +1 -5
- package/react/DyCollapse.js +1 -1
- package/react/DyCollapsePanel.d.ts +1 -6
- package/react/DyCollapsePanel.js +1 -1
- package/react/DyCompartment.d.ts +1 -3
- package/react/DyCompartment.js +1 -1
- package/react/DyCountdown.d.ts +1 -5
- package/react/DyCountdown.js +1 -1
- package/react/DyDivider.d.ts +1 -6
- package/react/DyDivider.js +1 -1
- package/react/DyDrawer.d.ts +1 -21
- package/react/DyDrawer.js +1 -1
- package/react/DyEmpty.d.ts +1 -5
- package/react/DyEmpty.js +1 -1
- package/react/DyGroupedPicker.d.ts +27 -0
- package/react/DyGroupedPicker.js +22 -0
- package/react/DyInput.d.ts +1 -22
- package/react/DyInput.js +1 -1
- package/react/DyLegend.d.ts +0 -4
- package/react/DyLegend.js +1 -1
- package/react/DyLetters.d.ts +15 -0
- package/react/{DyListOutside.js → DyLetters.js} +4 -4
- package/react/DyList.d.ts +0 -13
- package/react/DyList.js +1 -1
- package/react/DyOptions.d.ts +1 -5
- package/react/DyOptions.js +1 -1
- package/react/DyPatForm.d.ts +1 -0
- package/react/DyPlaceholder.d.ts +1 -10
- package/react/DyPlaceholder.js +1 -1
- package/react/DyRadio.d.ts +1 -6
- package/react/DyRadio.js +1 -1
- package/react/DyRadioGroup.d.ts +1 -7
- package/react/DyRadioGroup.js +1 -1
- package/react/DyRate.d.ts +1 -7
- package/react/DyRate.js +1 -1
- package/react/DyRollingNumber.d.ts +15 -0
- package/react/{DyListItem.js → DyRollingNumber.js} +5 -5
- package/react/DySegmented.d.ts +1 -8
- package/react/DySegmented.js +1 -1
- package/react/DySlider.d.ts +1 -12
- package/react/DySlider.js +1 -1
- package/react/DySortItem.d.ts +1 -3
- package/react/DySortItem.js +1 -1
- package/react/DySpace.d.ts +1 -4
- package/react/DySpace.js +1 -1
- package/react/DySwitch.d.ts +1 -7
- package/react/DySwitch.js +1 -1
- package/react/DyTag.d.ts +1 -9
- package/react/DyTag.js +1 -1
- package/svelte/badge.d.ts +0 -8
- package/svelte/banner.d.ts +0 -5
- package/svelte/button.d.ts +0 -14
- package/svelte/checkbox.d.ts +0 -6
- package/svelte/coach-mark.d.ts +0 -5
- package/svelte/code-block.d.ts +0 -4
- package/svelte/collapse.d.ts +0 -4
- package/svelte/compartment.d.ts +0 -2
- package/svelte/countdown.d.ts +0 -4
- package/svelte/divider.d.ts +0 -5
- package/svelte/drawer.d.ts +0 -20
- package/svelte/empty.d.ts +0 -4
- package/svelte/grouped-picker.d.ts +19 -0
- package/svelte/grouped-picker.js +2 -0
- package/svelte/legend.d.ts +0 -4
- package/svelte/letters.d.ts +9 -0
- package/svelte/letters.js +2 -0
- package/svelte/list.d.ts +4 -11
- package/svelte/options.d.ts +0 -4
- package/svelte/pat-form.d.ts +1 -0
- package/svelte/placeholder.d.ts +0 -9
- package/svelte/radio.d.ts +0 -6
- package/svelte/rate.d.ts +0 -6
- package/svelte/rolling-number.d.ts +9 -0
- package/svelte/rolling-number.js +2 -0
- package/svelte/segmented.d.ts +0 -7
- package/svelte/slider.d.ts +0 -11
- package/svelte/space.d.ts +0 -3
- package/svelte/switch.d.ts +0 -6
- package/svelte/tag.d.ts +0 -8
- package/vue/DyBadge.vue +2 -8
- package/vue/DyBanner.vue +4 -6
- package/vue/DyButton.vue +2 -14
- package/vue/DyCheckbox.vue +4 -7
- package/vue/DyCheckboxGroup.vue +4 -7
- package/vue/DyCoachMark.vue +4 -8
- package/vue/DyCodeBlock.vue +2 -4
- package/vue/DyCollapse.vue +2 -4
- package/vue/DyCollapsePanel.vue +4 -6
- package/vue/DyCompartment.vue +2 -2
- package/vue/DyCountdown.vue +4 -5
- package/vue/DyDivider.vue +2 -5
- package/vue/DyDrawer.vue +4 -21
- package/vue/DyEmpty.vue +2 -4
- package/vue/DyGroupedPicker.vue +53 -0
- package/vue/DyInput.vue +4 -22
- package/vue/DyLegend.vue +2 -6
- package/vue/{DyListOutside.vue → DyLetters.vue} +8 -8
- package/vue/DyList.vue +4 -16
- package/vue/DyOptions.vue +2 -4
- package/vue/DyPatForm.vue +2 -2
- package/vue/DyPlaceholder.vue +2 -9
- package/vue/DyRadio.vue +4 -6
- package/vue/DyRadioGroup.vue +4 -7
- package/vue/DyRate.vue +4 -7
- package/vue/DyRollingNumber.vue +42 -0
- package/vue/DySegmented.vue +4 -8
- package/vue/DySlider.vue +4 -12
- package/vue/DySortItem.vue +2 -2
- package/vue/DySpace.vue +2 -3
- package/vue/DySwitch.vue +4 -7
- package/vue/DyTag.vue +4 -9
- package/elements/flow.d.ts +0 -52
- package/elements/flow.d.ts.map +0 -1
- package/elements/flow.js +0 -703
- package/elements/flow.js.map +0 -1
- package/elements/map.d.ts +0 -48
- package/elements/map.d.ts.map +0 -1
- package/elements/map.js +0 -396
- package/elements/map.js.map +0 -1
- package/react/DyFlow.d.ts +0 -24
- package/react/DyFlow.js +0 -18
- package/react/DyFlowCanvas.d.ts +0 -29
- package/react/DyFlowCanvas.js +0 -18
- package/react/DyListItem.d.ts +0 -24
- package/react/DyListOutside.d.ts +0 -15
- package/react/DyMap.d.ts +0 -32
- package/react/DyMap.js +0 -18
- package/svelte/flow.d.ts +0 -18
- package/svelte/flow.js +0 -2
- package/svelte/map.d.ts +0 -26
- package/svelte/map.js +0 -2
- package/vue/DyFlow.vue +0 -49
- package/vue/DyFlowCanvas.vue +0 -53
- package/vue/DyListItem.vue +0 -48
- package/vue/DyMap.vue +0 -56
package/elements/list.js
CHANGED
|
@@ -32,607 +32,13 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
|
|
|
32
32
|
}
|
|
33
33
|
return useValue ? value : void 0;
|
|
34
34
|
};
|
|
35
|
-
import {
|
|
36
|
-
import {
|
|
37
|
-
import {
|
|
38
|
-
import {
|
|
39
|
-
import { findScrollContainer } from '../lib/element';
|
|
40
|
-
import { blockContainer } from '../lib/styles';
|
|
35
|
+
import { adoptedStyle, customElement, property } from '@mantou/gem/lib/decorators';
|
|
36
|
+
import { css, html } from '@mantou/gem/lib/element';
|
|
37
|
+
import { styled } from '@mantou/gem/lib/utils';
|
|
38
|
+
import { TapListElement } from '@mantou/tap-ui/elements/list';
|
|
41
39
|
import { theme } from '../lib/theme';
|
|
42
|
-
import { once, throttle } from '../lib/timer';
|
|
43
|
-
import { DuoyunResizeBaseElement } from './base/resize';
|
|
44
|
-
import { DuoyunVisibleBaseElement, visibilityObserver } from './base/visible';
|
|
45
40
|
import './avatar';
|
|
46
41
|
import './divider';
|
|
47
|
-
let DuoyunOutsideElement = (() => {
|
|
48
|
-
let _classDecorators = [customElement('dy-list-outside'), adoptedStyle(blockContainer)];
|
|
49
|
-
let _classDescriptor;
|
|
50
|
-
let _classExtraInitializers = [];
|
|
51
|
-
let _classThis;
|
|
52
|
-
let _classSuper = DuoyunVisibleBaseElement;
|
|
53
|
-
var DuoyunOutsideElement = class extends _classSuper {
|
|
54
|
-
static { _classThis = this; }
|
|
55
|
-
static {
|
|
56
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
57
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
58
|
-
DuoyunOutsideElement = _classThis = _classDescriptor.value;
|
|
59
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
60
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
return DuoyunOutsideElement = _classThis;
|
|
64
|
-
})();
|
|
65
|
-
export { DuoyunOutsideElement };
|
|
66
|
-
const styles = css `
|
|
67
|
-
:host([infinite]),
|
|
68
|
-
* {
|
|
69
|
-
overflow-anchor: none;
|
|
70
|
-
}
|
|
71
|
-
.list {
|
|
72
|
-
display: contents;
|
|
73
|
-
}
|
|
74
|
-
dy-list-outside,
|
|
75
|
-
.placeholder,
|
|
76
|
-
::slotted(*) {
|
|
77
|
-
grid-column: 1/-1;
|
|
78
|
-
}
|
|
79
|
-
`;
|
|
80
|
-
let DuoyunListElement = (() => {
|
|
81
|
-
var _a;
|
|
82
|
-
let _classDecorators = [customElement('dy-list'), adoptedStyle(styles), adoptedStyle(blockContainer), shadow({ delegatesFocus: true }), aria({ role: 'list' })];
|
|
83
|
-
let _classDescriptor;
|
|
84
|
-
let _classExtraInitializers = [];
|
|
85
|
-
let _classThis;
|
|
86
|
-
let _classSuper = GemElement;
|
|
87
|
-
let _static_list_decorators;
|
|
88
|
-
let _static_list_initializers = [];
|
|
89
|
-
let _static_list_extraInitializers = [];
|
|
90
|
-
let _static_item_decorators;
|
|
91
|
-
let _static_item_initializers = [];
|
|
92
|
-
let _static_item_extraInitializers = [];
|
|
93
|
-
let _static_beforeOutside_decorators;
|
|
94
|
-
let _static_beforeOutside_initializers = [];
|
|
95
|
-
let _static_beforeOutside_extraInitializers = [];
|
|
96
|
-
let _static_afterOutside_decorators;
|
|
97
|
-
let _static_afterOutside_initializers = [];
|
|
98
|
-
let _static_afterOutside_extraInitializers = [];
|
|
99
|
-
let _static_before_decorators;
|
|
100
|
-
let _static_before_initializers = [];
|
|
101
|
-
let _static_before_extraInitializers = [];
|
|
102
|
-
let _static_after_decorators;
|
|
103
|
-
let _static_after_initializers = [];
|
|
104
|
-
let _static_after_extraInitializers = [];
|
|
105
|
-
let _data_decorators;
|
|
106
|
-
let _data_initializers = [];
|
|
107
|
-
let _data_extraInitializers = [];
|
|
108
|
-
let _items_decorators;
|
|
109
|
-
let _items_initializers = [];
|
|
110
|
-
let _items_extraInitializers = [];
|
|
111
|
-
let _backward_decorators;
|
|
112
|
-
let _backward_initializers = [];
|
|
113
|
-
let _backward_extraInitializers = [];
|
|
114
|
-
let _key_decorators;
|
|
115
|
-
let _key_initializers = [];
|
|
116
|
-
let _key_extraInitializers = [];
|
|
117
|
-
let _renderItem_decorators;
|
|
118
|
-
let _renderItem_initializers = [];
|
|
119
|
-
let _renderItem_extraInitializers = [];
|
|
120
|
-
let _debug_decorators;
|
|
121
|
-
let _debug_initializers = [];
|
|
122
|
-
let _debug_extraInitializers = [];
|
|
123
|
-
let _infinite_decorators;
|
|
124
|
-
let _infinite_initializers = [];
|
|
125
|
-
let _infinite_extraInitializers = [];
|
|
126
|
-
let _getKey_decorators;
|
|
127
|
-
let _getKey_initializers = [];
|
|
128
|
-
let _getKey_extraInitializers = [];
|
|
129
|
-
let _forward_decorators;
|
|
130
|
-
let _forward_initializers = [];
|
|
131
|
-
let _forward_extraInitializers = [];
|
|
132
|
-
let _itemshow_decorators;
|
|
133
|
-
let _itemshow_initializers = [];
|
|
134
|
-
let _itemshow_extraInitializers = [];
|
|
135
|
-
let _private_updateState_decorators;
|
|
136
|
-
let _private_updateState_initializers = [];
|
|
137
|
-
let _private_updateState_extraInitializers = [];
|
|
138
|
-
let _private_initMap_decorators;
|
|
139
|
-
let _private_initMap_initializers = [];
|
|
140
|
-
let _private_initMap_extraInitializers = [];
|
|
141
|
-
let _private_updateItem_decorators;
|
|
142
|
-
let _private_updateItem_initializers = [];
|
|
143
|
-
let _private_updateItem_extraInitializers = [];
|
|
144
|
-
let _private_preLayout_decorators;
|
|
145
|
-
let _private_preLayout_initializers = [];
|
|
146
|
-
let _private_preLayout_extraInitializers = [];
|
|
147
|
-
let _private_init_decorators;
|
|
148
|
-
let _private_init_initializers = [];
|
|
149
|
-
let _private_init_extraInitializers = [];
|
|
150
|
-
let _private_listener_decorators;
|
|
151
|
-
let _private_listener_initializers = [];
|
|
152
|
-
let _private_listener_extraInitializers = [];
|
|
153
|
-
let _private_check_decorators;
|
|
154
|
-
let _private_check_initializers = [];
|
|
155
|
-
let _private_check_extraInitializers = [];
|
|
156
|
-
var DuoyunListElement = class extends _classSuper {
|
|
157
|
-
static { _classThis = this; }
|
|
158
|
-
static {
|
|
159
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
160
|
-
_static_list_decorators = [part];
|
|
161
|
-
_static_item_decorators = [part];
|
|
162
|
-
_static_beforeOutside_decorators = [part];
|
|
163
|
-
_static_afterOutside_decorators = [part];
|
|
164
|
-
_static_before_decorators = [slot];
|
|
165
|
-
_static_after_decorators = [slot];
|
|
166
|
-
_data_decorators = [property];
|
|
167
|
-
_items_decorators = [property];
|
|
168
|
-
_backward_decorators = [emitter];
|
|
169
|
-
_key_decorators = [property];
|
|
170
|
-
_renderItem_decorators = [property];
|
|
171
|
-
_debug_decorators = [boolattribute];
|
|
172
|
-
_infinite_decorators = [boolattribute];
|
|
173
|
-
_getKey_decorators = [property];
|
|
174
|
-
_forward_decorators = [emitter];
|
|
175
|
-
_itemshow_decorators = [emitter];
|
|
176
|
-
_private_updateState_decorators = [willMount()];
|
|
177
|
-
_private_initMap_decorators = [memo((i) => [i.#items, i.infinite])];
|
|
178
|
-
_private_updateItem_decorators = [memo((i) => [i.#items])];
|
|
179
|
-
_private_preLayout_decorators = [memo((i) => [i.infinite])];
|
|
180
|
-
_private_init_decorators = [mounted()];
|
|
181
|
-
_private_listener_decorators = [effect()];
|
|
182
|
-
_private_check_decorators = [effect((i) => [i.#items])];
|
|
183
|
-
__esDecorate(null, null, _static_list_decorators, { kind: "field", name: "list", static: true, private: false, access: { has: obj => "list" in obj, get: obj => obj.list, set: (obj, value) => { obj.list = value; } }, metadata: _metadata }, _static_list_initializers, _static_list_extraInitializers);
|
|
184
|
-
__esDecorate(null, null, _static_item_decorators, { kind: "field", name: "item", static: true, private: false, access: { has: obj => "item" in obj, get: obj => obj.item, set: (obj, value) => { obj.item = value; } }, metadata: _metadata }, _static_item_initializers, _static_item_extraInitializers);
|
|
185
|
-
__esDecorate(null, null, _static_beforeOutside_decorators, { kind: "field", name: "beforeOutside", static: true, private: false, access: { has: obj => "beforeOutside" in obj, get: obj => obj.beforeOutside, set: (obj, value) => { obj.beforeOutside = value; } }, metadata: _metadata }, _static_beforeOutside_initializers, _static_beforeOutside_extraInitializers);
|
|
186
|
-
__esDecorate(null, null, _static_afterOutside_decorators, { kind: "field", name: "afterOutside", static: true, private: false, access: { has: obj => "afterOutside" in obj, get: obj => obj.afterOutside, set: (obj, value) => { obj.afterOutside = value; } }, metadata: _metadata }, _static_afterOutside_initializers, _static_afterOutside_extraInitializers);
|
|
187
|
-
__esDecorate(null, null, _static_before_decorators, { kind: "field", name: "before", static: true, private: false, access: { has: obj => "before" in obj, get: obj => obj.before, set: (obj, value) => { obj.before = value; } }, metadata: _metadata }, _static_before_initializers, _static_before_extraInitializers);
|
|
188
|
-
__esDecorate(null, null, _static_after_decorators, { kind: "field", name: "after", static: true, private: false, access: { has: obj => "after" in obj, get: obj => obj.after, set: (obj, value) => { obj.after = value; } }, metadata: _metadata }, _static_after_initializers, _static_after_extraInitializers);
|
|
189
|
-
__esDecorate(null, null, _data_decorators, { kind: "field", name: "data", static: false, private: false, access: { has: obj => "data" in obj, get: obj => obj.data, set: (obj, value) => { obj.data = value; } }, metadata: _metadata }, _data_initializers, _data_extraInitializers);
|
|
190
|
-
__esDecorate(null, null, _items_decorators, { kind: "field", name: "items", static: false, private: false, access: { has: obj => "items" in obj, get: obj => obj.items, set: (obj, value) => { obj.items = value; } }, metadata: _metadata }, _items_initializers, _items_extraInitializers);
|
|
191
|
-
__esDecorate(null, null, _backward_decorators, { kind: "field", name: "backward", static: false, private: false, access: { has: obj => "backward" in obj, get: obj => obj.backward, set: (obj, value) => { obj.backward = value; } }, metadata: _metadata }, _backward_initializers, _backward_extraInitializers);
|
|
192
|
-
__esDecorate(null, null, _key_decorators, { kind: "field", name: "key", static: false, private: false, access: { has: obj => "key" in obj, get: obj => obj.key, set: (obj, value) => { obj.key = value; } }, metadata: _metadata }, _key_initializers, _key_extraInitializers);
|
|
193
|
-
__esDecorate(null, null, _renderItem_decorators, { kind: "field", name: "renderItem", static: false, private: false, access: { has: obj => "renderItem" in obj, get: obj => obj.renderItem, set: (obj, value) => { obj.renderItem = value; } }, metadata: _metadata }, _renderItem_initializers, _renderItem_extraInitializers);
|
|
194
|
-
__esDecorate(null, null, _debug_decorators, { kind: "field", name: "debug", static: false, private: false, access: { has: obj => "debug" in obj, get: obj => obj.debug, set: (obj, value) => { obj.debug = value; } }, metadata: _metadata }, _debug_initializers, _debug_extraInitializers);
|
|
195
|
-
__esDecorate(null, null, _infinite_decorators, { kind: "field", name: "infinite", static: false, private: false, access: { has: obj => "infinite" in obj, get: obj => obj.infinite, set: (obj, value) => { obj.infinite = value; } }, metadata: _metadata }, _infinite_initializers, _infinite_extraInitializers);
|
|
196
|
-
__esDecorate(null, null, _getKey_decorators, { kind: "field", name: "getKey", static: false, private: false, access: { has: obj => "getKey" in obj, get: obj => obj.getKey, set: (obj, value) => { obj.getKey = value; } }, metadata: _metadata }, _getKey_initializers, _getKey_extraInitializers);
|
|
197
|
-
__esDecorate(null, null, _forward_decorators, { kind: "field", name: "forward", static: false, private: false, access: { has: obj => "forward" in obj, get: obj => obj.forward, set: (obj, value) => { obj.forward = value; } }, metadata: _metadata }, _forward_initializers, _forward_extraInitializers);
|
|
198
|
-
__esDecorate(null, null, _itemshow_decorators, { kind: "field", name: "itemshow", static: false, private: false, access: { has: obj => "itemshow" in obj, get: obj => obj.itemshow, set: (obj, value) => { obj.itemshow = value; } }, metadata: _metadata }, _itemshow_initializers, _itemshow_extraInitializers);
|
|
199
|
-
__esDecorate(null, null, _private_updateState_decorators, { kind: "field", name: "#updateState", static: false, private: true, access: { has: obj => #updateState in obj, get: obj => obj.#updateState, set: (obj, value) => { obj.#updateState = value; } }, metadata: _metadata }, _private_updateState_initializers, _private_updateState_extraInitializers);
|
|
200
|
-
__esDecorate(null, null, _private_initMap_decorators, { kind: "field", name: "#initMap", static: false, private: true, access: { has: obj => #initMap in obj, get: obj => obj.#initMap, set: (obj, value) => { obj.#initMap = value; } }, metadata: _metadata }, _private_initMap_initializers, _private_initMap_extraInitializers);
|
|
201
|
-
__esDecorate(null, null, _private_updateItem_decorators, { kind: "field", name: "#updateItem", static: false, private: true, access: { has: obj => #updateItem in obj, get: obj => obj.#updateItem, set: (obj, value) => { obj.#updateItem = value; } }, metadata: _metadata }, _private_updateItem_initializers, _private_updateItem_extraInitializers);
|
|
202
|
-
__esDecorate(null, null, _private_preLayout_decorators, { kind: "field", name: "#preLayout", static: false, private: true, access: { has: obj => #preLayout in obj, get: obj => obj.#preLayout, set: (obj, value) => { obj.#preLayout = value; } }, metadata: _metadata }, _private_preLayout_initializers, _private_preLayout_extraInitializers);
|
|
203
|
-
__esDecorate(null, null, _private_init_decorators, { kind: "field", name: "#init", static: false, private: true, access: { has: obj => #init in obj, get: obj => obj.#init, set: (obj, value) => { obj.#init = value; } }, metadata: _metadata }, _private_init_initializers, _private_init_extraInitializers);
|
|
204
|
-
__esDecorate(null, null, _private_listener_decorators, { kind: "field", name: "#listener", static: false, private: true, access: { has: obj => #listener in obj, get: obj => obj.#listener, set: (obj, value) => { obj.#listener = value; } }, metadata: _metadata }, _private_listener_initializers, _private_listener_extraInitializers);
|
|
205
|
-
__esDecorate(null, null, _private_check_decorators, { kind: "field", name: "#check", static: false, private: true, access: { has: obj => #check in obj, get: obj => obj.#check, set: (obj, value) => { obj.#check = value; } }, metadata: _metadata }, _private_check_initializers, _private_check_extraInitializers);
|
|
206
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
207
|
-
DuoyunListElement = _classThis = _classDescriptor.value;
|
|
208
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
209
|
-
}
|
|
210
|
-
static list = __runInitializers(_classThis, _static_list_initializers, void 0);
|
|
211
|
-
static item = (__runInitializers(_classThis, _static_list_extraInitializers), __runInitializers(_classThis, _static_item_initializers, void 0));
|
|
212
|
-
static beforeOutside = (__runInitializers(_classThis, _static_item_extraInitializers), __runInitializers(_classThis, _static_beforeOutside_initializers, void 0));
|
|
213
|
-
static afterOutside = (__runInitializers(_classThis, _static_beforeOutside_extraInitializers), __runInitializers(_classThis, _static_afterOutside_initializers, void 0));
|
|
214
|
-
static before = (__runInitializers(_classThis, _static_afterOutside_extraInitializers), __runInitializers(_classThis, _static_before_initializers, void 0));
|
|
215
|
-
static after = (__runInitializers(_classThis, _static_before_extraInitializers), __runInitializers(_classThis, _static_after_initializers, void 0));
|
|
216
|
-
/**@deprecated */
|
|
217
|
-
data = __runInitializers(this, _data_initializers, void 0);
|
|
218
|
-
items = (__runInitializers(this, _data_extraInitializers), __runInitializers(this, _items_initializers, void 0));
|
|
219
|
-
backward = (__runInitializers(this, _items_extraInitializers), __runInitializers(this, _backward_initializers, void 0)); // 滚动到最后触发
|
|
220
|
-
key = (__runInitializers(this, _backward_extraInitializers), __runInitializers(this, _key_initializers, void 0)); // 除了 items 提供另外一种方式来更新
|
|
221
|
-
renderItem = (__runInitializers(this, _key_extraInitializers), __runInitializers(this, _renderItem_initializers, void 0));
|
|
222
|
-
debug = (__runInitializers(this, _renderItem_extraInitializers), __runInitializers(this, _debug_initializers, void 0));
|
|
223
|
-
/**enable infinite scroll, virtualization render */
|
|
224
|
-
infinite = (__runInitializers(this, _debug_extraInitializers), __runInitializers(this, _infinite_initializers, void 0));
|
|
225
|
-
/**If infinite scrolling is enabled, this method must be provided */
|
|
226
|
-
getKey = (__runInitializers(this, _infinite_extraInitializers), __runInitializers(this, _getKey_initializers, void 0));
|
|
227
|
-
/**only infinite */
|
|
228
|
-
forward = (__runInitializers(this, _getKey_extraInitializers), __runInitializers(this, _forward_initializers, void 0));
|
|
229
|
-
/**only infinite */
|
|
230
|
-
itemshow = (__runInitializers(this, _forward_extraInitializers), __runInitializers(this, _itemshow_initializers, void 0));
|
|
231
|
-
#beforeItemRef = (__runInitializers(this, _itemshow_extraInitializers), createRef());
|
|
232
|
-
#afterItemRef = createRef();
|
|
233
|
-
#listRef = createRef();
|
|
234
|
-
get #items() {
|
|
235
|
-
return this.items || this.data;
|
|
236
|
-
}
|
|
237
|
-
get #beforeVisible() {
|
|
238
|
-
return this.#beforeItemRef.value?.visible;
|
|
239
|
-
}
|
|
240
|
-
get #afterVisible() {
|
|
241
|
-
return this.#afterItemRef.value?.visible;
|
|
242
|
-
}
|
|
243
|
-
// 防止网格布局渲染不是整数行
|
|
244
|
-
get #appendCount() {
|
|
245
|
-
return this.#itemCountPerScreen - (this.#state.renderList.length % this.#itemColumnCount);
|
|
246
|
-
}
|
|
247
|
-
#state = createState({
|
|
248
|
-
beforeHeight: 0,
|
|
249
|
-
renderList: [],
|
|
250
|
-
afterHeight: 0,
|
|
251
|
-
});
|
|
252
|
-
#itemLinked = new LinkedList();
|
|
253
|
-
#prevItemLinked = new LinkedList();
|
|
254
|
-
#keyItemMap = new Map();
|
|
255
|
-
#initState;
|
|
256
|
-
#updateState = __runInitializers(this, _private_updateState_initializers, () => {
|
|
257
|
-
if (this.infinite)
|
|
258
|
-
this.#setState({ ...this.#initState });
|
|
259
|
-
});
|
|
260
|
-
#initMap = (__runInitializers(this, _private_updateState_extraInitializers), __runInitializers(this, _private_initMap_initializers, () => {
|
|
261
|
-
if (!this.infinite)
|
|
262
|
-
return;
|
|
263
|
-
this.#prevItemLinked = this.#itemLinked;
|
|
264
|
-
this.#itemLinked = new LinkedList();
|
|
265
|
-
this.#keyItemMap = new Map();
|
|
266
|
-
this.#items?.forEach((item) => {
|
|
267
|
-
const key = this.getKey(item);
|
|
268
|
-
this.#keyItemMap.set(key, item);
|
|
269
|
-
this.#itemLinked.add(key);
|
|
270
|
-
});
|
|
271
|
-
}));
|
|
272
|
-
#updateItem = (__runInitializers(this, _private_initMap_extraInitializers), __runInitializers(this, _private_updateItem_initializers, ([items], oldDeps) => {
|
|
273
|
-
if (!this.infinite)
|
|
274
|
-
return;
|
|
275
|
-
if (this.#itemLinked.isSuperLinkOf(this.#prevItemLinked)) {
|
|
276
|
-
// 是父集 items 就肯定有内容
|
|
277
|
-
this.#appendItems(items, oldDeps?.at(0));
|
|
278
|
-
}
|
|
279
|
-
else {
|
|
280
|
-
// 列表改了,需要重排
|
|
281
|
-
this.#setState({ beforeHeight: 0, renderList: [], afterHeight: 0 });
|
|
282
|
-
this.#reLayout();
|
|
283
|
-
}
|
|
284
|
-
}));
|
|
285
|
-
// 切换 infinite 时,在渲染前进行重排,以使用正确的 scrollTop
|
|
286
|
-
#preLayout = (__runInitializers(this, _private_updateItem_extraInitializers), __runInitializers(this, _private_preLayout_initializers, (_, oldDeps) => oldDeps && this.infinite && this.#reLayout()));
|
|
287
|
-
#log = (__runInitializers(this, _private_preLayout_extraInitializers), (...args) => {
|
|
288
|
-
this.debug && logger.info(...args);
|
|
289
|
-
});
|
|
290
|
-
#isEnd = (direction) => {
|
|
291
|
-
const item = this.#items?.at(direction);
|
|
292
|
-
const key = this.#state.renderList.at(direction);
|
|
293
|
-
return (item === undefined && key === undefined) || key === this.getKey(item);
|
|
294
|
-
};
|
|
295
|
-
#getRowHeight = (ele) => (ele ? ele.borderBoxSize.blockSize : this.#itemHeight) + this.#rowGap;
|
|
296
|
-
#setState = (newState) => {
|
|
297
|
-
this.#log(newState);
|
|
298
|
-
this.#state(newState);
|
|
299
|
-
};
|
|
300
|
-
#isLeftItem = (count) => !(count % this.#itemColumnCount);
|
|
301
|
-
// 没有渲染内容时
|
|
302
|
-
#reLayout = (options = {}) => {
|
|
303
|
-
this.#log('reLayout', options);
|
|
304
|
-
const { beforeHeight, afterHeight, renderList } = this.#state;
|
|
305
|
-
// 初始状态
|
|
306
|
-
if (!renderList.length && !beforeHeight && !afterHeight) {
|
|
307
|
-
this.#appendAfter(this.#itemLinked.first);
|
|
308
|
-
return;
|
|
309
|
-
}
|
|
310
|
-
const list = [];
|
|
311
|
-
const thisRect = this.getBoundingClientRect();
|
|
312
|
-
const containerRect = this.scrollContainer.getBoundingClientRect();
|
|
313
|
-
// Padding?
|
|
314
|
-
const firstElementY = this === this.scrollContainer ? thisRect.top - this.scrollTop : thisRect.top;
|
|
315
|
-
// 上下安全余量
|
|
316
|
-
const safeHeight = containerRect.height;
|
|
317
|
-
let beforeHeightSum = 0;
|
|
318
|
-
let renderHeightSum = 0;
|
|
319
|
-
let afterHeightSum = 0;
|
|
320
|
-
let node = this.#itemLinked.first;
|
|
321
|
-
let count = 0;
|
|
322
|
-
let pushed = false;
|
|
323
|
-
while (node) {
|
|
324
|
-
const ele = this.#getElement(node.value);
|
|
325
|
-
// 修正那些尚未显示的元素高度,只适用于高度相同的情况
|
|
326
|
-
// 因为之后触发 before visible 需要用到
|
|
327
|
-
if (options.resize)
|
|
328
|
-
ele.borderBoxSize.blockSize = this.#itemHeight;
|
|
329
|
-
const isLeft = this.#isLeftItem(count);
|
|
330
|
-
const currentItemHeight = this.#getRowHeight(ele);
|
|
331
|
-
const y = firstElementY + beforeHeightSum + renderHeightSum;
|
|
332
|
-
const realY = isLeft ? y + currentItemHeight : y;
|
|
333
|
-
const appendHeight = isLeft ? currentItemHeight : 0;
|
|
334
|
-
if (pushed || realY > containerRect.bottom + safeHeight) {
|
|
335
|
-
pushed = true;
|
|
336
|
-
afterHeightSum += appendHeight;
|
|
337
|
-
}
|
|
338
|
-
else if (realY > containerRect.top - safeHeight) {
|
|
339
|
-
list.push(node.value);
|
|
340
|
-
renderHeightSum += appendHeight;
|
|
341
|
-
}
|
|
342
|
-
else {
|
|
343
|
-
beforeHeightSum += appendHeight;
|
|
344
|
-
}
|
|
345
|
-
count++;
|
|
346
|
-
node = node.next;
|
|
347
|
-
// 让没有渲染过的项目至少存在一个,预留一点滚动空间
|
|
348
|
-
if (!ele.borderBoxSize.blockSize) {
|
|
349
|
-
break;
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
this.#setState({ beforeHeight: beforeHeightSum, renderList: list, afterHeight: afterHeightSum });
|
|
353
|
-
if (options.silent)
|
|
354
|
-
return;
|
|
355
|
-
// 如果滚动到最前/后时
|
|
356
|
-
if (this.#isEnd(0)) {
|
|
357
|
-
this.forward(null);
|
|
358
|
-
}
|
|
359
|
-
if (this.#isEnd(-1)) {
|
|
360
|
-
this.backward(null);
|
|
361
|
-
}
|
|
362
|
-
};
|
|
363
|
-
#onBeforeItemVisible = () => {
|
|
364
|
-
this.#log('onBeforeItemVisible');
|
|
365
|
-
if (this.#isEnd(0)) {
|
|
366
|
-
this.#setState({ beforeHeight: 0 });
|
|
367
|
-
this.forward(null);
|
|
368
|
-
return;
|
|
369
|
-
}
|
|
370
|
-
// 隐藏后面不可见的
|
|
371
|
-
let afterHeight = 0;
|
|
372
|
-
let len = this.#state.renderList.length;
|
|
373
|
-
let count = 0;
|
|
374
|
-
for (let i = len - 1; i >= 0; i--) {
|
|
375
|
-
const ele = this.#getElement(this.#state.renderList[i]);
|
|
376
|
-
if (!ele.visible) {
|
|
377
|
-
if (this.#isLeftItem(count))
|
|
378
|
-
afterHeight += this.#getRowHeight(ele);
|
|
379
|
-
len--;
|
|
380
|
-
}
|
|
381
|
-
count++;
|
|
382
|
-
}
|
|
383
|
-
this.#setState({
|
|
384
|
-
// 同一行 visible 值可能不一样,但高度已经被计算
|
|
385
|
-
renderList: this.#state.renderList.splice(0, len - (len % this.#itemColumnCount)),
|
|
386
|
-
afterHeight: this.#state.afterHeight + afterHeight,
|
|
387
|
-
});
|
|
388
|
-
const newRenderedFirstKey = this.#state.renderList.at(0);
|
|
389
|
-
if (!newRenderedFirstKey) {
|
|
390
|
-
this.#reLayout();
|
|
391
|
-
return;
|
|
392
|
-
}
|
|
393
|
-
// 显示前面的
|
|
394
|
-
this.#appendBefore(this.#itemLinked.find(newRenderedFirstKey)?.prev);
|
|
395
|
-
};
|
|
396
|
-
#appendBefore = (startNode) => {
|
|
397
|
-
const appendList = [];
|
|
398
|
-
let node = startNode;
|
|
399
|
-
let beforeHeight = 0;
|
|
400
|
-
for (let i = 0; i < this.#appendCount; i++) {
|
|
401
|
-
if (!node)
|
|
402
|
-
break;
|
|
403
|
-
if (this.#isLeftItem(i))
|
|
404
|
-
beforeHeight += this.#getRowHeight(this.#getElement(node.value));
|
|
405
|
-
appendList.unshift(node.value);
|
|
406
|
-
node = node.prev;
|
|
407
|
-
}
|
|
408
|
-
this.#setState({
|
|
409
|
-
renderList: appendList.concat(this.#state.renderList),
|
|
410
|
-
// itemHeight 改变,这里可能为负值,需要矫正?
|
|
411
|
-
beforeHeight: Math.max(0, this.#state.beforeHeight - beforeHeight),
|
|
412
|
-
});
|
|
413
|
-
};
|
|
414
|
-
#appendItems = (items, oldItems) => {
|
|
415
|
-
if (!oldItems)
|
|
416
|
-
return;
|
|
417
|
-
const oldFirst = oldItems.at(0);
|
|
418
|
-
let beforeHeight = 0;
|
|
419
|
-
if (oldFirst) {
|
|
420
|
-
for (let i = 0; i < items.length; i++) {
|
|
421
|
-
if (this.getKey(items[i]) === this.getKey(oldFirst))
|
|
422
|
-
break;
|
|
423
|
-
if (this.#isLeftItem(i))
|
|
424
|
-
beforeHeight += this.#getRowHeight();
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
if (beforeHeight) {
|
|
428
|
-
// 有向前(上)加载数据,必须是列数的倍数
|
|
429
|
-
this.#setState({ beforeHeight: this.#state.beforeHeight + beforeHeight });
|
|
430
|
-
// 等待渲染后再滚动
|
|
431
|
-
queueMicrotask(() => {
|
|
432
|
-
this.scrollContainer.scrollBy({
|
|
433
|
-
left: 0,
|
|
434
|
-
top: beforeHeight,
|
|
435
|
-
behavior: 'instant',
|
|
436
|
-
});
|
|
437
|
-
});
|
|
438
|
-
}
|
|
439
|
-
};
|
|
440
|
-
#onAfterItemVisible = () => {
|
|
441
|
-
this.#log('onAfterItemVisible');
|
|
442
|
-
if (!this.infinite || this.#isEnd(-1)) {
|
|
443
|
-
this.#setState({ afterHeight: 0 });
|
|
444
|
-
this.backward(null);
|
|
445
|
-
return;
|
|
446
|
-
}
|
|
447
|
-
// 隐藏前面不可见的
|
|
448
|
-
let len = 0;
|
|
449
|
-
let beforeHeight = 0;
|
|
450
|
-
let count = 0;
|
|
451
|
-
for (const key of this.#state.renderList) {
|
|
452
|
-
const ele = this.#getElement(key);
|
|
453
|
-
if (!ele.visible) {
|
|
454
|
-
len++;
|
|
455
|
-
if (this.#isLeftItem(count))
|
|
456
|
-
beforeHeight += this.#getRowHeight(ele);
|
|
457
|
-
}
|
|
458
|
-
count++;
|
|
459
|
-
}
|
|
460
|
-
// 同一行 visible 值可能不一样,但高度已经被计算
|
|
461
|
-
const mod = len % this.#itemColumnCount;
|
|
462
|
-
const difference = mod ? this.#itemColumnCount - mod : 0;
|
|
463
|
-
this.#setState({
|
|
464
|
-
renderList: this.#state.renderList.splice(len + difference),
|
|
465
|
-
beforeHeight: this.#state.beforeHeight + beforeHeight,
|
|
466
|
-
});
|
|
467
|
-
const newRenderedLastKey = this.#state.renderList.at(-1);
|
|
468
|
-
if (!newRenderedLastKey) {
|
|
469
|
-
this.#reLayout();
|
|
470
|
-
return;
|
|
471
|
-
}
|
|
472
|
-
// 显示后面的
|
|
473
|
-
this.#appendAfter(this.#itemLinked.find(newRenderedLastKey)?.next);
|
|
474
|
-
};
|
|
475
|
-
#appendAfter = (node) => {
|
|
476
|
-
const appendList = [];
|
|
477
|
-
let afterHeight = 0;
|
|
478
|
-
for (let i = 0; i < this.#appendCount; i++) {
|
|
479
|
-
if (!node)
|
|
480
|
-
break;
|
|
481
|
-
appendList.push(node.value);
|
|
482
|
-
if (this.#isLeftItem(i))
|
|
483
|
-
afterHeight += this.#getRowHeight(this.#getElement(node.value));
|
|
484
|
-
node = node.next;
|
|
485
|
-
}
|
|
486
|
-
this.#setState({
|
|
487
|
-
renderList: this.#state.renderList.concat(appendList),
|
|
488
|
-
afterHeight: Math.max(0, this.#state.afterHeight - afterHeight),
|
|
489
|
-
});
|
|
490
|
-
};
|
|
491
|
-
// 初次渲染可能没有排满, 初始值 itemCountPerScreen 一般能够排满
|
|
492
|
-
// 不重复执行
|
|
493
|
-
// 延迟执行确保读取 afterVisible 正确
|
|
494
|
-
#initCheckOnce = once((silent) => setTimeout(() => this.#afterVisible && this.#reLayout({ silent }), 60));
|
|
495
|
-
// 用于计算那些没有显示过的元素,item 高度不一致时需要用户提供函数?
|
|
496
|
-
#itemHeight = 0;
|
|
497
|
-
#itemColumnCount = 1;
|
|
498
|
-
#rowGap = 0;
|
|
499
|
-
#columnGap = 0;
|
|
500
|
-
// 跟用户初始 Items 长度相同会触发两次 backward 事件,用户配置?
|
|
501
|
-
#itemCountPerScreen = 19;
|
|
502
|
-
// 初次渲染
|
|
503
|
-
#initLayout = (ele) => {
|
|
504
|
-
this.#initCheckOnce(this.items.length > this.#itemCountPerScreen);
|
|
505
|
-
const style = getComputedStyle(this.#listRef.value);
|
|
506
|
-
const thisGrid = getComputedStyle(this);
|
|
507
|
-
this.#rowGap = parseFloat(style.rowGap) || parseFloat(thisGrid.rowGap) || 0;
|
|
508
|
-
this.#columnGap = parseFloat(style.columnGap) || parseFloat(thisGrid.columnGap) || 0;
|
|
509
|
-
this.#itemColumnCount = Math.round(this.clientWidth / (ele.borderBoxSize.inlineSize + this.#columnGap));
|
|
510
|
-
this.#itemHeight = ele.borderBoxSize.blockSize;
|
|
511
|
-
this.#itemCountPerScreen =
|
|
512
|
-
Math.ceil(this.scrollContainer.clientHeight / this.#getRowHeight(ele)) * this.#itemColumnCount;
|
|
513
|
-
};
|
|
514
|
-
#onItemResizeInit = throttle(this.#initLayout, 1000, { leading: true });
|
|
515
|
-
#onItemResize = ({ target }) => {
|
|
516
|
-
const ele = target;
|
|
517
|
-
if (!ele.borderBoxSize.blockSize)
|
|
518
|
-
return;
|
|
519
|
-
this.#onItemResizeInit(ele);
|
|
520
|
-
// 视口宽度改变导致的 Resize,使用 `itemHeight` 是避免滚动时再次触发
|
|
521
|
-
// Chrome 有精度问题
|
|
522
|
-
if (this.#itemHeight && Math.abs(this.#itemHeight - ele.borderBoxSize.blockSize) > 1) {
|
|
523
|
-
this.#reLayoutByResize(ele);
|
|
524
|
-
}
|
|
525
|
-
};
|
|
526
|
-
#reLayoutByResize = throttle((ele) => {
|
|
527
|
-
this.#initLayout(ele);
|
|
528
|
-
this.#reLayout({ resize: true });
|
|
529
|
-
}, 200);
|
|
530
|
-
#keyElementMap = new Map();
|
|
531
|
-
#getElement = (key) => {
|
|
532
|
-
if (!this.#keyElementMap.has(key)) {
|
|
533
|
-
const ele = new DuoyunListItemElement();
|
|
534
|
-
ele.setAttribute('part', DuoyunListElement.item);
|
|
535
|
-
ele.addEventListener('resize', this.#onItemResize);
|
|
536
|
-
ele.addEventListener('show', () => this.itemshow(this.#keyItemMap.get(key)));
|
|
537
|
-
ele.intersectionRoot = this.scrollContainer;
|
|
538
|
-
// 赋值初始值,用于没渲染的计算高度
|
|
539
|
-
ele.borderBoxSize.blockSize = this.#itemHeight;
|
|
540
|
-
this.#keyElementMap.set(key, ele);
|
|
541
|
-
}
|
|
542
|
-
const ele = this.#keyElementMap.get(key);
|
|
543
|
-
ele.item = this.#keyItemMap.get(key);
|
|
544
|
-
ele.key = this.key;
|
|
545
|
-
ele.renderItem = this.renderItem;
|
|
546
|
-
return ele;
|
|
547
|
-
};
|
|
548
|
-
#reCheck = () => {
|
|
549
|
-
if (this.#beforeVisible)
|
|
550
|
-
this.#onBeforeItemVisible();
|
|
551
|
-
if (this.#afterVisible)
|
|
552
|
-
this.#onAfterItemVisible();
|
|
553
|
-
};
|
|
554
|
-
// 用于保证渲染内容,但不应该运行太频繁
|
|
555
|
-
#onScroll = throttle(() => {
|
|
556
|
-
const { renderList } = this.#state;
|
|
557
|
-
if (renderList.length && renderList.every((key) => !this.#getElement(key).visible)) {
|
|
558
|
-
this.#reLayout();
|
|
559
|
-
}
|
|
560
|
-
else {
|
|
561
|
-
// 防止只显示半屏
|
|
562
|
-
this.#reCheck();
|
|
563
|
-
}
|
|
564
|
-
}, 110, { maxWait: 120 });
|
|
565
|
-
#init = __runInitializers(this, _private_init_initializers, () => {
|
|
566
|
-
this.scrollContainer = findScrollContainer(this) || document.documentElement;
|
|
567
|
-
if (this.#initState)
|
|
568
|
-
this.scrollContainer.scrollTo(0, this.#initState.scrollTop);
|
|
569
|
-
});
|
|
570
|
-
#listener = (__runInitializers(this, _private_init_extraInitializers), __runInitializers(this, _private_listener_initializers, () => {
|
|
571
|
-
if (!this.infinite)
|
|
572
|
-
return;
|
|
573
|
-
return addListener(this.scrollContainer, 'scroll', this.#onScroll);
|
|
574
|
-
}));
|
|
575
|
-
// 已经等到新值需要检查
|
|
576
|
-
#check = (__runInitializers(this, _private_listener_extraInitializers), __runInitializers(this, _private_check_initializers, () => this.infinite && this.#reCheck()));
|
|
577
|
-
render = (__runInitializers(this, _private_check_extraInitializers), () => {
|
|
578
|
-
const { beforeHeight, afterHeight, renderList } = this.#state;
|
|
579
|
-
return html `
|
|
580
|
-
<slot name=${DuoyunListElement.before}></slot>
|
|
581
|
-
<dy-list-outside
|
|
582
|
-
${this.#beforeItemRef}
|
|
583
|
-
v-if=${this.infinite}
|
|
584
|
-
part=${DuoyunListElement.beforeOutside}
|
|
585
|
-
.intersectionRoot=${this.scrollContainer}
|
|
586
|
-
@show=${this.#onBeforeItemVisible}
|
|
587
|
-
style=${styleMap({ height: `${beforeHeight}px` })}
|
|
588
|
-
></dy-list-outside>
|
|
589
|
-
<div ${this.#listRef} class="list" part=${DuoyunListElement.list}>
|
|
590
|
-
${this.infinite
|
|
591
|
-
? renderList.map((key) => this.#getElement(key))
|
|
592
|
-
: this.#items?.map((item) => html `
|
|
593
|
-
<dy-list-item
|
|
594
|
-
part=${DuoyunListElement.item}
|
|
595
|
-
.item=${item}
|
|
596
|
-
.key=${this.key}
|
|
597
|
-
.renderItem=${this.renderItem}
|
|
598
|
-
></dy-list-item>
|
|
599
|
-
`)}
|
|
600
|
-
</div>
|
|
601
|
-
<dy-list-outside
|
|
602
|
-
${this.#afterItemRef}
|
|
603
|
-
part=${DuoyunListElement.afterOutside}
|
|
604
|
-
.intersectionRoot=${this.scrollContainer}
|
|
605
|
-
@show=${this.#onAfterItemVisible}
|
|
606
|
-
style=${styleMap({ height: `${afterHeight}px` })}
|
|
607
|
-
>
|
|
608
|
-
</dy-list-outside>
|
|
609
|
-
<slot name=${DuoyunListElement.after}>
|
|
610
|
-
<!-- 无限滚动时避免找不到 "dy-list-outside", e.g: dy-list docs -->
|
|
611
|
-
<div class="placeholder" style="height: 1px"></div>
|
|
612
|
-
</slot>
|
|
613
|
-
`;
|
|
614
|
-
});
|
|
615
|
-
/**Setter: initState */
|
|
616
|
-
set persistentState(initState) {
|
|
617
|
-
this.#initState = initState;
|
|
618
|
-
}
|
|
619
|
-
/**Getter */
|
|
620
|
-
get persistentState() {
|
|
621
|
-
return {
|
|
622
|
-
...this.#state,
|
|
623
|
-
scrollTop: this.scrollContainer.scrollTop,
|
|
624
|
-
};
|
|
625
|
-
}
|
|
626
|
-
// 切换容器?
|
|
627
|
-
scrollContainer = document.documentElement;
|
|
628
|
-
static {
|
|
629
|
-
__runInitializers(_classThis, _static_after_extraInitializers);
|
|
630
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
631
|
-
}
|
|
632
|
-
};
|
|
633
|
-
return DuoyunListElement = _classThis;
|
|
634
|
-
})();
|
|
635
|
-
export { DuoyunListElement };
|
|
636
42
|
const itemStyle = css({
|
|
637
43
|
// 避免该样式干扰用户样式
|
|
638
44
|
item: styled `
|
|
@@ -664,75 +70,30 @@ const itemStyle = css({
|
|
|
664
70
|
}
|
|
665
71
|
`,
|
|
666
72
|
});
|
|
667
|
-
let
|
|
668
|
-
let _classDecorators = [customElement('dy-list
|
|
73
|
+
let DuoyunListElement = (() => {
|
|
74
|
+
let _classDecorators = [customElement('dy-list'), adoptedStyle(itemStyle)];
|
|
669
75
|
let _classDescriptor;
|
|
670
76
|
let _classExtraInitializers = [];
|
|
671
77
|
let _classThis;
|
|
672
|
-
let _classSuper =
|
|
673
|
-
let _show_decorators;
|
|
674
|
-
let _show_initializers = [];
|
|
675
|
-
let _show_extraInitializers = [];
|
|
676
|
-
let _hide_decorators;
|
|
677
|
-
let _hide_initializers = [];
|
|
678
|
-
let _hide_extraInitializers = [];
|
|
679
|
-
let _visible_decorators;
|
|
680
|
-
let _visible_initializers = [];
|
|
681
|
-
let _visible_extraInitializers = [];
|
|
682
|
-
let _intersectionRoot_decorators;
|
|
683
|
-
let _intersectionRoot_initializers = [];
|
|
684
|
-
let _intersectionRoot_extraInitializers = [];
|
|
685
|
-
let _intersectionRootMargin_decorators;
|
|
686
|
-
let _intersectionRootMargin_initializers = [];
|
|
687
|
-
let _intersectionRootMargin_extraInitializers = [];
|
|
688
|
-
let _item_decorators;
|
|
689
|
-
let _item_initializers = [];
|
|
690
|
-
let _item_extraInitializers = [];
|
|
78
|
+
let _classSuper = TapListElement;
|
|
691
79
|
let _renderItem_decorators;
|
|
692
80
|
let _renderItem_initializers = [];
|
|
693
81
|
let _renderItem_extraInitializers = [];
|
|
694
|
-
|
|
695
|
-
let _key_initializers = [];
|
|
696
|
-
let _key_extraInitializers = [];
|
|
697
|
-
let _private_observer1_decorators;
|
|
698
|
-
let _private_observer1_initializers = [];
|
|
699
|
-
let _private_observer1_extraInitializers = [];
|
|
700
|
-
var DuoyunListItemElement = class extends _classSuper {
|
|
82
|
+
var DuoyunListElement = class extends _classSuper {
|
|
701
83
|
static { _classThis = this; }
|
|
702
84
|
static {
|
|
703
85
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
704
|
-
_show_decorators = [emitter];
|
|
705
|
-
_hide_decorators = [emitter];
|
|
706
|
-
_visible_decorators = [state];
|
|
707
|
-
_intersectionRoot_decorators = [property];
|
|
708
|
-
_intersectionRootMargin_decorators = [property];
|
|
709
|
-
_item_decorators = [property];
|
|
710
86
|
_renderItem_decorators = [property];
|
|
711
|
-
_key_decorators = [property];
|
|
712
|
-
_private_observer1_decorators = [effect((i) => [i.intersectionRoot])];
|
|
713
|
-
__esDecorate(null, null, _show_decorators, { kind: "field", name: "show", static: false, private: false, access: { has: obj => "show" in obj, get: obj => obj.show, set: (obj, value) => { obj.show = value; } }, metadata: _metadata }, _show_initializers, _show_extraInitializers);
|
|
714
|
-
__esDecorate(null, null, _hide_decorators, { kind: "field", name: "hide", static: false, private: false, access: { has: obj => "hide" in obj, get: obj => obj.hide, set: (obj, value) => { obj.hide = value; } }, metadata: _metadata }, _hide_initializers, _hide_extraInitializers);
|
|
715
|
-
__esDecorate(null, null, _visible_decorators, { kind: "field", name: "visible", static: false, private: false, access: { has: obj => "visible" in obj, get: obj => obj.visible, set: (obj, value) => { obj.visible = value; } }, metadata: _metadata }, _visible_initializers, _visible_extraInitializers);
|
|
716
|
-
__esDecorate(null, null, _intersectionRoot_decorators, { kind: "field", name: "intersectionRoot", static: false, private: false, access: { has: obj => "intersectionRoot" in obj, get: obj => obj.intersectionRoot, set: (obj, value) => { obj.intersectionRoot = value; } }, metadata: _metadata }, _intersectionRoot_initializers, _intersectionRoot_extraInitializers);
|
|
717
|
-
__esDecorate(null, null, _intersectionRootMargin_decorators, { kind: "field", name: "intersectionRootMargin", static: false, private: false, access: { has: obj => "intersectionRootMargin" in obj, get: obj => obj.intersectionRootMargin, set: (obj, value) => { obj.intersectionRootMargin = value; } }, metadata: _metadata }, _intersectionRootMargin_initializers, _intersectionRootMargin_extraInitializers);
|
|
718
|
-
__esDecorate(null, null, _item_decorators, { kind: "field", name: "item", static: false, private: false, access: { has: obj => "item" in obj, get: obj => obj.item, set: (obj, value) => { obj.item = value; } }, metadata: _metadata }, _item_initializers, _item_extraInitializers);
|
|
719
87
|
__esDecorate(null, null, _renderItem_decorators, { kind: "field", name: "renderItem", static: false, private: false, access: { has: obj => "renderItem" in obj, get: obj => obj.renderItem, set: (obj, value) => { obj.renderItem = value; } }, metadata: _metadata }, _renderItem_initializers, _renderItem_extraInitializers);
|
|
720
|
-
__esDecorate(null, null, _key_decorators, { kind: "field", name: "key", static: false, private: false, access: { has: obj => "key" in obj, get: obj => obj.key, set: (obj, value) => { obj.key = value; } }, metadata: _metadata }, _key_initializers, _key_extraInitializers);
|
|
721
|
-
__esDecorate(null, null, _private_observer1_decorators, { kind: "field", name: "#observer1", static: false, private: true, access: { has: obj => #observer1 in obj, get: obj => obj.#observer1, set: (obj, value) => { obj.#observer1 = value; } }, metadata: _metadata }, _private_observer1_initializers, _private_observer1_extraInitializers);
|
|
722
88
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
723
|
-
|
|
89
|
+
DuoyunListElement = _classThis = _classDescriptor.value;
|
|
724
90
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
725
91
|
__runInitializers(_classThis, _classExtraInitializers);
|
|
726
92
|
}
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
intersectionRootMargin = (__runInitializers(this, _intersectionRoot_extraInitializers), __runInitializers(this, _intersectionRootMargin_initializers, void 0));
|
|
732
|
-
item = (__runInitializers(this, _intersectionRootMargin_extraInitializers), __runInitializers(this, _item_initializers, void 0));
|
|
733
|
-
renderItem = (__runInitializers(this, _item_extraInitializers), __runInitializers(this, _renderItem_initializers, void 0));
|
|
734
|
-
key = (__runInitializers(this, _renderItem_extraInitializers), __runInitializers(this, _key_initializers, void 0)); // 提供另外一种方式来更新
|
|
735
|
-
#renderDefaultItem = (__runInitializers(this, _key_extraInitializers), ({ title, avatar, description, status }) => {
|
|
93
|
+
renderItem = __runInitializers(this, _renderItem_initializers, (item) => {
|
|
94
|
+
if (!item || typeof item !== 'object')
|
|
95
|
+
return html `${item}`;
|
|
96
|
+
const { title, avatar, description, status } = item;
|
|
736
97
|
return html `
|
|
737
98
|
<div class=${itemStyle.item}>
|
|
738
99
|
<div v-if=${!!avatar} class="avatar">
|
|
@@ -748,18 +109,12 @@ let DuoyunListItemElement = (() => {
|
|
|
748
109
|
<dy-divider></dy-divider>
|
|
749
110
|
`;
|
|
750
111
|
});
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
return this.renderItem
|
|
756
|
-
? this.renderItem(this.item)
|
|
757
|
-
: typeof this.item === 'object'
|
|
758
|
-
? this.#renderDefaultItem(this.item)
|
|
759
|
-
: this.item;
|
|
760
|
-
});
|
|
112
|
+
constructor() {
|
|
113
|
+
super(...arguments);
|
|
114
|
+
__runInitializers(this, _renderItem_extraInitializers);
|
|
115
|
+
}
|
|
761
116
|
};
|
|
762
|
-
return
|
|
117
|
+
return DuoyunListElement = _classThis;
|
|
763
118
|
})();
|
|
764
|
-
export {
|
|
119
|
+
export { DuoyunListElement };
|
|
765
120
|
//# sourceMappingURL=list.js.map
|