@lynx-js/web-elements 0.5.4 → 0.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.
Files changed (53) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/dist/ScrollView/ScrollView.js +3 -3
  3. package/dist/XAudioTT/XAudioTT.js +2 -2
  4. package/dist/XCanvas/XCanvas.js +2 -2
  5. package/dist/XFoldViewNg/XFoldviewHeaderNg.d.ts +2 -0
  6. package/dist/XFoldViewNg/XFoldviewHeaderNg.js +9 -4
  7. package/dist/XFoldViewNg/XFoldviewNg.d.ts +13 -2
  8. package/dist/XFoldViewNg/XFoldviewNg.js +43 -5
  9. package/dist/XFoldViewNg/XFoldviewNgEvents.d.ts +1 -1
  10. package/dist/XFoldViewNg/XFoldviewNgEvents.js +17 -5
  11. package/dist/XFoldViewNg/XFoldviewSlotDragNg.js +2 -2
  12. package/dist/XFoldViewNg/XFoldviewSlotNg.d.ts +1 -0
  13. package/dist/XFoldViewNg/XFoldviewSlotNg.js +8 -2
  14. package/dist/XFoldViewNg/XFoldviewSlotNgTouchEventsHandler.js +51 -37
  15. package/dist/XFoldViewNg/XFoldviewToolbarNg.d.ts +2 -0
  16. package/dist/XFoldViewNg/XFoldviewToolbarNg.js +9 -2
  17. package/dist/XImage/FilterImage.js +2 -2
  18. package/dist/XImage/XImage.js +2 -2
  19. package/dist/XInput/XInput.js +2 -2
  20. package/dist/XList/ListItem.js +2 -2
  21. package/dist/XList/XList.js +4 -3
  22. package/dist/XList/XListAttributes.js +1 -0
  23. package/dist/XList/XListWaterfall.d.ts +8 -0
  24. package/dist/XList/XListWaterfall.js +144 -0
  25. package/dist/XOverlayNg/XOverlayNg.d.ts +2 -0
  26. package/dist/XOverlayNg/XOverlayNg.js +5 -2
  27. package/dist/XRefreshView/XRefreshFooter.js +2 -2
  28. package/dist/XRefreshView/XRefreshHeader.js +2 -2
  29. package/dist/XRefreshView/XRefreshView.js +2 -2
  30. package/dist/XSvg/XSvg.js +2 -2
  31. package/dist/XSwiper/SwiperItem.js +2 -2
  32. package/dist/XSwiper/XSwiper.js +2 -2
  33. package/dist/XText/XText.d.ts +2 -0
  34. package/dist/XText/XText.js +3 -3
  35. package/dist/XTextarea/XTextarea.js +2 -2
  36. package/dist/XView/XBlurView.js +2 -2
  37. package/dist/XView/XView.d.ts +2 -0
  38. package/dist/XView/XView.js +5 -3
  39. package/dist/XViewpagerNg/XViewpagerItemNg.js +2 -2
  40. package/dist/XViewpagerNg/XViewpagerNg.js +2 -2
  41. package/dist/common/CommonEventsAndMethods.d.ts +31 -2
  42. package/dist/common/CommonEventsAndMethods.js +198 -7
  43. package/dist/index.d.ts +1 -1
  44. package/dist/index.js +1 -1
  45. package/package.json +1 -1
  46. package/src/ScrollView/scroll-view.css +0 -1
  47. package/src/XFoldViewNg/x-foldview-ng.css +0 -3
  48. package/src/XList/x-list.css +67 -5
  49. package/src/XText/x-text.css +13 -45
  50. package/dist/XFoldViewNg/XFoldviewHeaderNgFeatures.d.ts +0 -9
  51. package/dist/XFoldViewNg/XFoldviewHeaderNgFeatures.js +0 -32
  52. package/dist/common/Exposure.d.ts +0 -32
  53. package/dist/common/Exposure.js +0 -202
@@ -1,202 +0,0 @@
1
- // Copyright 2024 The Lynx Authors. All rights reserved.
2
- // Licensed under the Apache License Version 2.0 that can be found in the
3
- // LICENSE file in the root directory of this source tree.
4
- import { convertLengthToPx } from './convertLengthToPx.js';
5
- import { commonComponentEventSetting } from './commonEventInitConfiguration.js';
6
- import { scrollContainerDom } from './constants.js';
7
- export class LynxExposure {
8
- static observedAttributes = [
9
- 'exposure-id',
10
- 'exposure-area',
11
- 'exposure-screen-margin-top',
12
- 'exposure-screen-margin-right',
13
- 'exposure-screen-margin-bottom',
14
- 'exposure-screen-margin-left',
15
- 'exposure-ui-margin-top',
16
- 'exposure-ui-margin-right',
17
- 'exposure-ui-margin-bottom',
18
- 'exposure-ui-margin-left',
19
- ];
20
- #uiAppearEnabled = false;
21
- #uiDisappearEnabled = false;
22
- #currentElement;
23
- /**
24
- * Stores a promise. We will handler the exposure attribute change after all related life-cycle events has been fired by browser.
25
- */
26
- #afterAttributeChanged;
27
- /**
28
- * If this dom is already exposured
29
- */
30
- #exposureTriggerd = false;
31
- /**
32
- * keeps the observer of current dom
33
- */
34
- #exposureObserver;
35
- get #exposureEnabled() {
36
- return (this.#uiAppearEnabled
37
- || this.#uiDisappearEnabled
38
- || this.#currentElement.getAttribute('exposure-id') !== null);
39
- }
40
- constructor(currentElement) {
41
- this.#currentElement = currentElement;
42
- }
43
- onExposureParamsChanged = () => {
44
- if (!this.#afterAttributeChanged) {
45
- this.#afterAttributeChanged = Promise.resolve().then(() => {
46
- this.#updateExposure();
47
- this.#afterAttributeChanged = undefined;
48
- });
49
- }
50
- };
51
- onExposureIdChanged(_, oldValue) {
52
- if (oldValue) {
53
- if (this.#exposureEnabled) {
54
- this.#sendOneExposureEvent({ isIntersecting: false }, oldValue);
55
- }
56
- }
57
- this.onExposureParamsChanged();
58
- }
59
- attributeChangedHandler = new Proxy(this, {
60
- get(target, attribute) {
61
- if (LynxExposure.observedAttributes.includes(attribute)) {
62
- if (attribute === 'exposure-id') {
63
- return { handler: target.onExposureIdChanged, noDomMeasure: true };
64
- }
65
- else {
66
- return {
67
- handler: target.onExposureParamsChanged,
68
- noDomMeasure: true,
69
- };
70
- }
71
- }
72
- return;
73
- },
74
- });
75
- eventStatusChangedHandler = {
76
- 'uiappear': (status) => {
77
- this.#uiAppearEnabled = status;
78
- this.onExposureParamsChanged();
79
- },
80
- 'uidisappear': (status) => {
81
- this.#uiDisappearEnabled = status;
82
- this.onExposureParamsChanged();
83
- },
84
- };
85
- #updateExposure() {
86
- const newParams = {
87
- exposureID: this.#currentElement.getAttribute('exposure-id'),
88
- exposureArea: this.#currentElement.getAttribute('exposure-area'),
89
- exposureScene: this.#currentElement.getAttribute('exposure-scene'),
90
- exposureScreenMarginTop: this.#currentElement.getAttribute('exposure-screen-margin-top'),
91
- exposureScreenMarginRight: this.#currentElement.getAttribute('exposure-screen-margin-right'),
92
- exposureScreenMarginBottom: this.#currentElement.getAttribute('exposure-screen-margin-bottom'),
93
- exposureScreenMarginLeft: this.#currentElement.getAttribute('exposure-screen-margin-left'),
94
- exposureUIMarginTop: this.#currentElement.getAttribute('exposure-ui-margin-top'),
95
- exposureUIMarginRight: this.#currentElement.getAttribute('exposure-ui-margin-right'),
96
- exposureUIMarginBottom: this.#currentElement.getAttribute('exposure-ui-margin-bottom'),
97
- exposureUIMarginLeft: this.#currentElement.getAttribute('exposure-ui-margin-left'),
98
- };
99
- if (this.#exposureEnabled) {
100
- if (IntersectionObserver) {
101
- const uiMargin = {
102
- top: convertLengthToPx(this.#currentElement, newParams.exposureUIMarginTop),
103
- right: convertLengthToPx(this.#currentElement, newParams.exposureUIMarginRight, true),
104
- bottom: convertLengthToPx(this.#currentElement, newParams.exposureUIMarginBottom),
105
- left: convertLengthToPx(this.#currentElement, newParams.exposureUIMarginLeft, true),
106
- };
107
- const screenMargin = {
108
- top: convertLengthToPx(this.#currentElement, newParams.exposureScreenMarginTop),
109
- right: convertLengthToPx(this.#currentElement, newParams.exposureScreenMarginRight, true),
110
- bottom: convertLengthToPx(this.#currentElement, newParams.exposureScreenMarginBottom),
111
- left: convertLengthToPx(this.#currentElement, newParams.exposureScreenMarginLeft, true),
112
- };
113
- /**
114
- * TODO: @haoyang.wang support the switch `enableExposureUIMargin`
115
- */
116
- const calcedRootMargin = {
117
- top: (uiMargin.bottom ? -1 : 1)
118
- * (screenMargin.top - uiMargin.bottom),
119
- right: (uiMargin.left ? -1 : 1)
120
- * (screenMargin.right - uiMargin.left),
121
- bottom: (uiMargin.top ? -1 : 1)
122
- * (screenMargin.bottom - uiMargin.top),
123
- left: (uiMargin.right ? -1 : 1)
124
- * (screenMargin.left - uiMargin.right),
125
- };
126
- const exposureArea = this.#currentElement.getAttribute('exposure-area');
127
- const rootMargin = `${calcedRootMargin.top}px ${calcedRootMargin.right}px ${calcedRootMargin.bottom}px ${calcedRootMargin.left}px`;
128
- const threshold = exposureArea ? parseFloat(exposureArea) / 100 : 0;
129
- if (this.#exposureObserver) {
130
- this.#exposureObserver.disconnect();
131
- }
132
- /**
133
- * Get the closest scrollable ancestor
134
- */
135
- let root = this.#currentElement.parentElement;
136
- while (root) {
137
- // @ts-expect-error
138
- if (root[scrollContainerDom]) {
139
- // @ts-expect-error
140
- root = root[scrollContainerDom];
141
- break;
142
- }
143
- else {
144
- root = root.parentElement;
145
- }
146
- }
147
- this.#exposureTriggerd = false;
148
- this.#exposureObserver = new IntersectionObserver(([entry]) => {
149
- if (entry) {
150
- if (entry.isIntersecting) {
151
- this.#exposureTriggerd = true;
152
- }
153
- this.#sendOneExposureEvent(entry);
154
- }
155
- }, {
156
- rootMargin,
157
- threshold,
158
- root,
159
- });
160
- this.#exposureObserver.observe(this.#currentElement);
161
- }
162
- }
163
- else {
164
- this.disableExposure();
165
- }
166
- }
167
- #sendOneExposureEvent(entry, overrideExposureId) {
168
- if (!this.#exposureTriggerd) {
169
- return;
170
- }
171
- const exposureID = overrideExposureId
172
- ?? this.#currentElement.getAttribute('exposure-id') ?? '';
173
- const exposureScene = this.#currentElement.getAttribute('exposure-scene')
174
- ?? '';
175
- const detail = {
176
- 'exposure-id': exposureID,
177
- 'exposure-scene': exposureScene,
178
- exposureID,
179
- exposureScene,
180
- };
181
- const appearEvent = new CustomEvent(entry.isIntersecting ? 'uiappear' : 'uidisappear', {
182
- ...commonComponentEventSetting,
183
- detail,
184
- });
185
- const exposureEvent = new CustomEvent(entry.isIntersecting ? 'exposure' : 'disexposure', {
186
- bubbles: true,
187
- composed: false,
188
- cancelable: false,
189
- detail,
190
- });
191
- Object.assign(appearEvent, detail);
192
- this.#currentElement.dispatchEvent(appearEvent);
193
- this.#currentElement.dispatchEvent(exposureEvent);
194
- }
195
- disableExposure() {
196
- if (this.#exposureObserver) {
197
- this.#exposureObserver.disconnect();
198
- this.#exposureObserver = undefined;
199
- }
200
- }
201
- }
202
- //# sourceMappingURL=Exposure.js.map