@lynx-js/web-elements 0.2.4

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 (204) hide show
  1. package/CHANGELOG.md +323 -0
  2. package/LICENSE.txt +202 -0
  3. package/Notice.txt +1 -0
  4. package/README.md +47 -0
  5. package/dist/LynxWrapper/LynxWrapper.d.ts +2 -0
  6. package/dist/LynxWrapper/LynxWrapper.js +27 -0
  7. package/dist/LynxWrapper/index.d.ts +1 -0
  8. package/dist/LynxWrapper/index.js +2 -0
  9. package/dist/ScrollView/FadeEdgeLengthAttribute.d.ts +10 -0
  10. package/dist/ScrollView/FadeEdgeLengthAttribute.js +43 -0
  11. package/dist/ScrollView/ScrollAttributes.d.ts +8 -0
  12. package/dist/ScrollView/ScrollAttributes.js +83 -0
  13. package/dist/ScrollView/ScrollIntoView.d.ts +9 -0
  14. package/dist/ScrollView/ScrollIntoView.js +71 -0
  15. package/dist/ScrollView/ScrollView.d.ts +31 -0
  16. package/dist/ScrollView/ScrollView.js +185 -0
  17. package/dist/ScrollView/ScrollViewEvents.d.ts +9 -0
  18. package/dist/ScrollView/ScrollViewEvents.js +146 -0
  19. package/dist/ScrollView/index.d.ts +1 -0
  20. package/dist/ScrollView/index.js +2 -0
  21. package/dist/XAudioTT/XAudioAttribute.d.ts +7 -0
  22. package/dist/XAudioTT/XAudioAttribute.js +93 -0
  23. package/dist/XAudioTT/XAudioEvents.d.ts +8 -0
  24. package/dist/XAudioTT/XAudioEvents.js +116 -0
  25. package/dist/XAudioTT/XAudioTT.d.ts +46 -0
  26. package/dist/XAudioTT/XAudioTT.js +183 -0
  27. package/dist/XAudioTT/index.d.ts +1 -0
  28. package/dist/XAudioTT/index.js +2 -0
  29. package/dist/XAudioTT/utils.d.ts +19 -0
  30. package/dist/XAudioTT/utils.js +66 -0
  31. package/dist/XCanvas/CanvasAttributes.d.ts +12 -0
  32. package/dist/XCanvas/CanvasAttributes.js +78 -0
  33. package/dist/XCanvas/XCanvas.d.ts +5 -0
  34. package/dist/XCanvas/XCanvas.js +32 -0
  35. package/dist/XCanvas/index.d.ts +1 -0
  36. package/dist/XCanvas/index.js +2 -0
  37. package/dist/XFoldViewNg/XFoldviewHeaderNg.d.ts +2 -0
  38. package/dist/XFoldViewNg/XFoldviewHeaderNg.js +32 -0
  39. package/dist/XFoldViewNg/XFoldviewHeaderNgFeatures.d.ts +9 -0
  40. package/dist/XFoldViewNg/XFoldviewHeaderNgFeatures.js +32 -0
  41. package/dist/XFoldViewNg/XFoldviewNg.d.ts +11 -0
  42. package/dist/XFoldViewNg/XFoldviewNg.js +52 -0
  43. package/dist/XFoldViewNg/XFoldviewNgEvents.d.ts +7 -0
  44. package/dist/XFoldViewNg/XFoldviewNgEvents.js +55 -0
  45. package/dist/XFoldViewNg/XFoldviewSlotDragNg.d.ts +2 -0
  46. package/dist/XFoldViewNg/XFoldviewSlotDragNg.js +30 -0
  47. package/dist/XFoldViewNg/XFoldviewSlotNg.d.ts +2 -0
  48. package/dist/XFoldViewNg/XFoldviewSlotNg.js +32 -0
  49. package/dist/XFoldViewNg/XFoldviewSlotNgTouchEventsHandler.d.ts +7 -0
  50. package/dist/XFoldViewNg/XFoldviewSlotNgTouchEventsHandler.js +105 -0
  51. package/dist/XFoldViewNg/XFoldviewToolbarNg.d.ts +2 -0
  52. package/dist/XFoldViewNg/XFoldviewToolbarNg.js +30 -0
  53. package/dist/XFoldViewNg/index.d.ts +5 -0
  54. package/dist/XFoldViewNg/index.js +6 -0
  55. package/dist/XImage/DropShadow.d.ts +6 -0
  56. package/dist/XImage/DropShadow.js +30 -0
  57. package/dist/XImage/FilterImage.d.ts +2 -0
  58. package/dist/XImage/FilterImage.js +31 -0
  59. package/dist/XImage/ImageEvents.d.ts +6 -0
  60. package/dist/XImage/ImageEvents.js +68 -0
  61. package/dist/XImage/ImageSrc.d.ts +7 -0
  62. package/dist/XImage/ImageSrc.js +61 -0
  63. package/dist/XImage/XImage.d.ts +2 -0
  64. package/dist/XImage/XImage.js +30 -0
  65. package/dist/XImage/index.d.ts +2 -0
  66. package/dist/XImage/index.js +3 -0
  67. package/dist/XInput/InputBaseAttributes.d.ts +9 -0
  68. package/dist/XInput/InputBaseAttributes.js +99 -0
  69. package/dist/XInput/Placeholder.d.ts +6 -0
  70. package/dist/XInput/Placeholder.js +60 -0
  71. package/dist/XInput/XInput.d.ts +28 -0
  72. package/dist/XInput/XInput.js +129 -0
  73. package/dist/XInput/XInputAttribute.d.ts +9 -0
  74. package/dist/XInput/XInputAttribute.js +52 -0
  75. package/dist/XInput/XInputEvents.d.ts +6 -0
  76. package/dist/XInput/XInputEvents.js +111 -0
  77. package/dist/XInput/index.d.ts +1 -0
  78. package/dist/XInput/index.js +2 -0
  79. package/dist/XList/ListItem.d.ts +2 -0
  80. package/dist/XList/ListItem.js +28 -0
  81. package/dist/XList/XList.d.ts +52 -0
  82. package/dist/XList/XList.js +257 -0
  83. package/dist/XList/XListAttributes.d.ts +8 -0
  84. package/dist/XList/XListAttributes.js +50 -0
  85. package/dist/XList/XListEvents.d.ts +7 -0
  86. package/dist/XList/XListEvents.js +356 -0
  87. package/dist/XList/index.d.ts +2 -0
  88. package/dist/XList/index.js +3 -0
  89. package/dist/XOverlayNg/XOverlayAttributes.d.ts +8 -0
  90. package/dist/XOverlayNg/XOverlayAttributes.js +80 -0
  91. package/dist/XOverlayNg/XOverlayNg.d.ts +2 -0
  92. package/dist/XOverlayNg/XOverlayNg.js +45 -0
  93. package/dist/XOverlayNg/index.d.ts +1 -0
  94. package/dist/XOverlayNg/index.js +2 -0
  95. package/dist/XRefreshView/XRefreshFooter.d.ts +3 -0
  96. package/dist/XRefreshView/XRefreshFooter.js +35 -0
  97. package/dist/XRefreshView/XRefreshHeader.d.ts +3 -0
  98. package/dist/XRefreshView/XRefreshHeader.js +35 -0
  99. package/dist/XRefreshView/XRefreshSubElementIntersectionObserver.d.ts +16 -0
  100. package/dist/XRefreshView/XRefreshSubElementIntersectionObserver.js +52 -0
  101. package/dist/XRefreshView/XRefreshView.d.ts +13 -0
  102. package/dist/XRefreshView/XRefreshView.js +125 -0
  103. package/dist/XRefreshView/XRefreshViewEventsEmitter.d.ts +8 -0
  104. package/dist/XRefreshView/XRefreshViewEventsEmitter.js +246 -0
  105. package/dist/XRefreshView/index.d.ts +3 -0
  106. package/dist/XRefreshView/index.js +4 -0
  107. package/dist/XSvg/XSvg.d.ts +8 -0
  108. package/dist/XSvg/XSvg.js +80 -0
  109. package/dist/XSvg/index.d.ts +1 -0
  110. package/dist/XSvg/index.js +2 -0
  111. package/dist/XSwiper/SwiperItem.d.ts +2 -0
  112. package/dist/XSwiper/SwiperItem.js +28 -0
  113. package/dist/XSwiper/XSwiper.d.ts +14 -0
  114. package/dist/XSwiper/XSwiper.js +231 -0
  115. package/dist/XSwiper/XSwiperAutoScroll.d.ts +8 -0
  116. package/dist/XSwiper/XSwiperAutoScroll.js +63 -0
  117. package/dist/XSwiper/XSwiperCircular.d.ts +8 -0
  118. package/dist/XSwiper/XSwiperCircular.js +191 -0
  119. package/dist/XSwiper/XSwiperEvents.d.ts +8 -0
  120. package/dist/XSwiper/XSwiperEvents.js +144 -0
  121. package/dist/XSwiper/XSwiperIndicator.d.ts +9 -0
  122. package/dist/XSwiper/XSwiperIndicator.js +118 -0
  123. package/dist/XSwiper/index.d.ts +2 -0
  124. package/dist/XSwiper/index.js +3 -0
  125. package/dist/XText/InlineImage.d.ts +11 -0
  126. package/dist/XText/InlineImage.js +56 -0
  127. package/dist/XText/InlineText.d.ts +5 -0
  128. package/dist/XText/InlineText.js +30 -0
  129. package/dist/XText/InlineTruncation.d.ts +5 -0
  130. package/dist/XText/InlineTruncation.js +42 -0
  131. package/dist/XText/RawText.d.ts +7 -0
  132. package/dist/XText/RawText.js +54 -0
  133. package/dist/XText/XText.d.ts +5 -0
  134. package/dist/XText/XText.js +49 -0
  135. package/dist/XText/XTextTruncation.d.ts +11 -0
  136. package/dist/XText/XTextTruncation.js +604 -0
  137. package/dist/XText/index.d.ts +5 -0
  138. package/dist/XText/index.js +6 -0
  139. package/dist/XTextarea/Placeholder.d.ts +7 -0
  140. package/dist/XTextarea/Placeholder.js +59 -0
  141. package/dist/XTextarea/TextareaBaseAttributes.d.ts +6 -0
  142. package/dist/XTextarea/TextareaBaseAttributes.js +70 -0
  143. package/dist/XTextarea/XTextarea.d.ts +21 -0
  144. package/dist/XTextarea/XTextarea.js +101 -0
  145. package/dist/XTextarea/XTextareaAttributes.d.ts +6 -0
  146. package/dist/XTextarea/XTextareaAttributes.js +81 -0
  147. package/dist/XTextarea/XTextareaEvents.d.ts +6 -0
  148. package/dist/XTextarea/XTextareaEvents.js +111 -0
  149. package/dist/XTextarea/index.d.ts +1 -0
  150. package/dist/XTextarea/index.js +2 -0
  151. package/dist/XView/BlurRadius.d.ts +7 -0
  152. package/dist/XView/BlurRadius.js +38 -0
  153. package/dist/XView/XBlurView.d.ts +2 -0
  154. package/dist/XView/XBlurView.js +29 -0
  155. package/dist/XView/XView.d.ts +4 -0
  156. package/dist/XView/XView.js +45 -0
  157. package/dist/XView/index.d.ts +2 -0
  158. package/dist/XView/index.js +3 -0
  159. package/dist/XViewpagerNg/XViewpagerItemNg.d.ts +2 -0
  160. package/dist/XViewpagerNg/XViewpagerItemNg.js +30 -0
  161. package/dist/XViewpagerNg/XViewpagerNg.d.ts +10 -0
  162. package/dist/XViewpagerNg/XViewpagerNg.js +98 -0
  163. package/dist/XViewpagerNg/XViewpagerNgEvents.d.ts +9 -0
  164. package/dist/XViewpagerNg/XViewpagerNgEvents.js +118 -0
  165. package/dist/XViewpagerNg/index.d.ts +2 -0
  166. package/dist/XViewpagerNg/index.js +3 -0
  167. package/dist/all.d.ts +16 -0
  168. package/dist/all.js +17 -0
  169. package/dist/common/Exposure.d.ts +28 -0
  170. package/dist/common/Exposure.js +193 -0
  171. package/dist/common/bindToIntersectionObserver.d.ts +1 -0
  172. package/dist/common/bindToIntersectionObserver.js +23 -0
  173. package/dist/common/commonEventInitConfiguration.d.ts +5 -0
  174. package/dist/common/commonEventInitConfiguration.js +9 -0
  175. package/dist/common/constants.d.ts +4 -0
  176. package/dist/common/constants.js +14 -0
  177. package/dist/common/convertLengthToPx.d.ts +1 -0
  178. package/dist/common/convertLengthToPx.js +25 -0
  179. package/dist/common/renameEvent.d.ts +1 -0
  180. package/dist/common/renameEvent.js +6 -0
  181. package/dist/common/throttle.d.ts +4 -0
  182. package/dist/common/throttle.js +40 -0
  183. package/dist/index.d.ts +4 -0
  184. package/dist/index.js +8 -0
  185. package/dist/lazy.d.ts +1 -0
  186. package/dist/lazy.js +106 -0
  187. package/index.css +19 -0
  188. package/package.json +110 -0
  189. package/src/LynxWrapper/lynx-wrapper.css +12 -0
  190. package/src/ScrollView/scroll-view.css +121 -0
  191. package/src/XAudioTT/x-audio-tt.css +3 -0
  192. package/src/XCanvas/x-canvas.css +16 -0
  193. package/src/XFoldViewNg/x-foldview-ng.css +80 -0
  194. package/src/XImage/x-image.css +82 -0
  195. package/src/XInput/x-input.css +48 -0
  196. package/src/XList/x-list.css +147 -0
  197. package/src/XOverlayNg/x-overlay-ng.css +56 -0
  198. package/src/XRefreshView/x-refresh-view.css +61 -0
  199. package/src/XSvg/x-svg.css +10 -0
  200. package/src/XSwiper/x-swiper.css +319 -0
  201. package/src/XText/x-text.css +272 -0
  202. package/src/XTextarea/x-textarea.css +49 -0
  203. package/src/XViewpagerNg/x-viewpager-ng.css +68 -0
  204. package/src/common-css/linear.css +386 -0
@@ -0,0 +1,52 @@
1
+ export class XRefreshIntersectionObserverEvent extends Event {
2
+ startShowing;
3
+ fullyShowing;
4
+ static EventName = 'x-refresh-view-intersecting';
5
+ constructor(startShowing, fullyShowing) {
6
+ super(XRefreshIntersectionObserverEvent.EventName, {
7
+ composed: false,
8
+ cancelable: true,
9
+ bubbles: true,
10
+ });
11
+ this.startShowing = startShowing;
12
+ this.fullyShowing = fullyShowing;
13
+ }
14
+ }
15
+ export class XRefreshSubElementIntersectionObserver {
16
+ #dom;
17
+ static observedAttributes = [];
18
+ #intersectionObserver;
19
+ constructor(dom) {
20
+ this.#dom = dom;
21
+ }
22
+ connectedCallback() {
23
+ if (IntersectionObserver && !this.#intersectionObserver) {
24
+ const parent = this.#dom.parentElement;
25
+ if (parent) {
26
+ this.#intersectionObserver = new IntersectionObserver((intersectionEntries) => {
27
+ let isStartShowing = false;
28
+ let isFullyShowing = false;
29
+ intersectionEntries.forEach((e) => {
30
+ isStartShowing = e.intersectionRatio > 0;
31
+ isFullyShowing = e.intersectionRatio > 0.9;
32
+ });
33
+ this.#dom.dispatchEvent(new XRefreshIntersectionObserverEvent(isStartShowing, isFullyShowing));
34
+ if (isFullyShowing) {
35
+ this.#dom.setAttribute('x-magnet-enable', '');
36
+ }
37
+ }, {
38
+ root: parent,
39
+ threshold: [0.1, 0.9], // set to 0.9 to get better user-experience
40
+ });
41
+ this.#intersectionObserver.observe(this.#dom);
42
+ }
43
+ }
44
+ }
45
+ dispose() {
46
+ if (this.#intersectionObserver) {
47
+ this.#intersectionObserver.disconnect();
48
+ this.#intersectionObserver = undefined;
49
+ }
50
+ }
51
+ }
52
+ //# sourceMappingURL=XRefreshSubElementIntersectionObserver.js.map
@@ -0,0 +1,13 @@
1
+ import { scrollContainerDom } from '../common/constants.js';
2
+ export declare class XRefreshView extends HTMLElement {
3
+ #private;
4
+ static readonly notToFilterFalseAttributes: Set<string>;
5
+ _nextRefreshIsManual: boolean;
6
+ finishRefresh(): void;
7
+ finishLoadMore(): void;
8
+ autoStartRefresh(): void;
9
+ get scrollTop(): number;
10
+ set scrollTop(val: number);
11
+ get scrollHeight(): number;
12
+ get [scrollContainerDom](): this;
13
+ }
@@ -0,0 +1,125 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ /*
3
+ // Copyright 2024 The Lynx Authors. All rights reserved.
4
+ // Licensed under the Apache License Version 2.0 that can be found in the
5
+ // LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { Component, genDomGetter, html } from '@lynx-js/web-elements-reactive';
8
+ import { XRefreshViewEventsEmitter } from './XRefreshViewEventsEmitter.js';
9
+ import { LynxExposure } from '../common/Exposure.js';
10
+ import { scrollContainerDom } from '../common/constants.js';
11
+ let XRefreshView = (() => {
12
+ let _classDecorators = [Component('x-refresh-view', [LynxExposure, XRefreshViewEventsEmitter], html `
13
+ <style>
14
+ .bounce-container {
15
+ overflow: scroll;
16
+ overscroll-behavior: contain;
17
+ scroll-snap-type: y mandatory;
18
+ scroll-behavior: smooth;
19
+ scrollbar-width: none;
20
+ }
21
+ .overflow-placeholder {
22
+ min-height: 30%;
23
+ min-width: 100%;
24
+ flex-shrink: 0;
25
+ scroll-snap-align: none;
26
+ }
27
+ .not-shrink {
28
+ height: 100%;
29
+ width: 100%;
30
+ min-height: 100%;
31
+ min-width: 100%;
32
+ flex-shrink: 0;
33
+ }
34
+ .vertical {
35
+ display: flex;
36
+ flex-direction: column;
37
+ }
38
+ #content {
39
+ scroll-snap-align: center;
40
+ }
41
+ </style>
42
+ <div id="container" part="container" class="bounce-container not-shrink vertical">
43
+ <div
44
+ id="placeholder-top"
45
+ class="overflow-placeholder bounce-item"
46
+ part="placeholder-top"
47
+ ></div>
48
+ <slot name="header"></slot>
49
+ <div id="content" part="content" class="not-shrink vertical">
50
+ <slot part="slot"></slot>
51
+ </div>
52
+ <slot name="footer"></slot>
53
+ <div
54
+ id="placeholder-bot"
55
+ class="overflow-placeholder bounce-item"
56
+ part="placeholder-bot"
57
+ ></div>
58
+ </div>
59
+ `)];
60
+ let _classDescriptor;
61
+ let _classExtraInitializers = [];
62
+ let _classThis;
63
+ let _classSuper = HTMLElement;
64
+ var XRefreshView = class extends _classSuper {
65
+ static { _classThis = this; }
66
+ static {
67
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
68
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
69
+ XRefreshView = _classThis = _classDescriptor.value;
70
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
71
+ }
72
+ static notToFilterFalseAttributes = new Set([
73
+ 'enable-refresh',
74
+ 'enable-loadmore',
75
+ 'enable-auto-loadmore',
76
+ ]);
77
+ _nextRefreshIsManual = true;
78
+ finishRefresh() {
79
+ this.querySelector('x-refresh-view > x-refresh-header:first-of-type')?.removeAttribute('x-magnet-enable');
80
+ }
81
+ finishLoadMore() {
82
+ this.querySelector('x-refresh-view > x-refresh-footer:first-of-type')?.removeAttribute('x-magnet-enable');
83
+ }
84
+ autoStartRefresh() {
85
+ const content = this.shadowRoot.querySelector('#container');
86
+ this.querySelector('x-refresh-view > x-refresh-header:first-of-type')?.setAttribute('x-magnet-enable', '');
87
+ this._nextRefreshIsManual = false;
88
+ content.scroll({
89
+ top: 0,
90
+ behavior: 'smooth',
91
+ });
92
+ }
93
+ #getOverScrollContainer = genDomGetter(() => this.shadowRoot, '#container');
94
+ #getContentContainer = genDomGetter(() => this.shadowRoot, '#content');
95
+ get scrollTop() {
96
+ const outer = this.#getOverScrollContainer();
97
+ const inner = this.#getContentContainer();
98
+ return inner.scrollTop + inner.offsetTop - outer.scrollTop;
99
+ }
100
+ set scrollTop(val) {
101
+ console.log(val);
102
+ const outer = this.#getOverScrollContainer();
103
+ const inner = this.#getContentContainer();
104
+ if (val > 0) {
105
+ inner.scrollTop = val;
106
+ }
107
+ else {
108
+ outer.scrollTop = inner.offsetTop + val;
109
+ }
110
+ }
111
+ get scrollHeight() {
112
+ const inner = this.#getContentContainer();
113
+ return inner.scrollHeight;
114
+ }
115
+ get [scrollContainerDom]() {
116
+ return this;
117
+ }
118
+ static {
119
+ __runInitializers(_classThis, _classExtraInitializers);
120
+ }
121
+ };
122
+ return XRefreshView = _classThis;
123
+ })();
124
+ export { XRefreshView };
125
+ //# sourceMappingURL=XRefreshView.js.map
@@ -0,0 +1,8 @@
1
+ import { type AttributeReactiveClass } from '@lynx-js/web-elements-reactive';
2
+ import { XRefreshView } from './XRefreshView.js';
3
+ export declare class XRefreshViewEventsEmitter implements InstanceType<AttributeReactiveClass<typeof XRefreshView>> {
4
+ #private;
5
+ static observedAttributes: string[];
6
+ constructor(dom: XRefreshView);
7
+ dispose(): void;
8
+ }
@@ -0,0 +1,246 @@
1
+ import { __esDecorate, __runInitializers, __setFunctionName } from "tslib";
2
+ /*
3
+ // Copyright 2024 The Lynx Authors. All rights reserved.
4
+ // Licensed under the Apache License Version 2.0 that can be found in the
5
+ // LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { registerAttributeHandler, genDomGetter, } from '@lynx-js/web-elements-reactive';
8
+ import { XRefreshIntersectionObserverEvent } from './XRefreshSubElementIntersectionObserver.js';
9
+ import { commonComponentEventSetting } from '../common/commonEventInitConfiguration.js';
10
+ let XRefreshViewEventsEmitter = (() => {
11
+ let _instanceExtraInitializers = [];
12
+ let _private_handleXEnableHeaderOffsetEvent_decorators;
13
+ let _private_handleXEnableHeaderOffsetEvent_descriptor;
14
+ let _private_handleXEnableHeaderShowEvent_decorators;
15
+ let _private_handleXEnableHeaderShowEvent_descriptor;
16
+ let _private_handleXEnableFooterOffsetEvent_decorators;
17
+ let _private_handleXEnableFooterOffsetEvent_descriptor;
18
+ let _private_handleXEnableStartRefreshEvent_decorators;
19
+ let _private_handleXEnableStartRefreshEvent_descriptor;
20
+ let _private_handleXEnableHeaderReleasedEvent_decorators;
21
+ let _private_handleXEnableHeaderReleasedEvent_descriptor;
22
+ let _private_handleXEnableStartLoadMoreEvent_decorators;
23
+ let _private_handleXEnableStartLoadMoreEvent_descriptor;
24
+ let _private_handleXEnableFooterReleasedEvent_decorators;
25
+ let _private_handleXEnableFooterReleasedEvent_descriptor;
26
+ return class XRefreshViewEventsEmitter {
27
+ static {
28
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
29
+ _private_handleXEnableHeaderOffsetEvent_decorators = [registerAttributeHandler('x-enable-headeroffset-event', true)];
30
+ _private_handleXEnableHeaderShowEvent_decorators = [registerAttributeHandler('x-enable-headershow-event', true)];
31
+ _private_handleXEnableFooterOffsetEvent_decorators = [registerAttributeHandler('x-enable-footeroffset-event', true)];
32
+ _private_handleXEnableStartRefreshEvent_decorators = [registerAttributeHandler('x-enable-startrefresh-event', true)];
33
+ _private_handleXEnableHeaderReleasedEvent_decorators = [registerAttributeHandler('x-enable-headerreleased-event', true)];
34
+ _private_handleXEnableStartLoadMoreEvent_decorators = [registerAttributeHandler('x-enable-startloadmore-event', true)];
35
+ _private_handleXEnableFooterReleasedEvent_decorators = [registerAttributeHandler('x-enable-footerreleased-event', true)];
36
+ __esDecorate(this, _private_handleXEnableHeaderOffsetEvent_descriptor = { value: __setFunctionName(function (newVal) {
37
+ this.#enableHeaderOffsetEvent = newVal !== null;
38
+ this.#handleComplexEventEnableAttributes();
39
+ }, "#handleXEnableHeaderOffsetEvent") }, _private_handleXEnableHeaderOffsetEvent_decorators, { kind: "method", name: "#handleXEnableHeaderOffsetEvent", static: false, private: true, access: { has: obj => #handleXEnableHeaderOffsetEvent in obj, get: obj => obj.#handleXEnableHeaderOffsetEvent }, metadata: _metadata }, null, _instanceExtraInitializers);
40
+ __esDecorate(this, _private_handleXEnableHeaderShowEvent_descriptor = { value: __setFunctionName(function (newVal) {
41
+ this.#enableHeaderShowEvent = newVal !== null;
42
+ this.#handleComplexEventEnableAttributes();
43
+ }, "#handleXEnableHeaderShowEvent") }, _private_handleXEnableHeaderShowEvent_decorators, { kind: "method", name: "#handleXEnableHeaderShowEvent", static: false, private: true, access: { has: obj => #handleXEnableHeaderShowEvent in obj, get: obj => obj.#handleXEnableHeaderShowEvent }, metadata: _metadata }, null, _instanceExtraInitializers);
44
+ __esDecorate(this, _private_handleXEnableFooterOffsetEvent_descriptor = { value: __setFunctionName(function (newVal) {
45
+ this.#enableFooterOffsetEvent = newVal !== null;
46
+ this.#handleComplexEventEnableAttributes();
47
+ }, "#handleXEnableFooterOffsetEvent") }, _private_handleXEnableFooterOffsetEvent_decorators, { kind: "method", name: "#handleXEnableFooterOffsetEvent", static: false, private: true, access: { has: obj => #handleXEnableFooterOffsetEvent in obj, get: obj => obj.#handleXEnableFooterOffsetEvent }, metadata: _metadata }, null, _instanceExtraInitializers);
48
+ __esDecorate(this, _private_handleXEnableStartRefreshEvent_descriptor = { value: __setFunctionName(function (newVal) {
49
+ this.#enableStartRefreshEvent = newVal !== null;
50
+ this.#handleSimpleEventEnableAttributes();
51
+ }, "#handleXEnableStartRefreshEvent") }, _private_handleXEnableStartRefreshEvent_decorators, { kind: "method", name: "#handleXEnableStartRefreshEvent", static: false, private: true, access: { has: obj => #handleXEnableStartRefreshEvent in obj, get: obj => obj.#handleXEnableStartRefreshEvent }, metadata: _metadata }, null, _instanceExtraInitializers);
52
+ __esDecorate(this, _private_handleXEnableHeaderReleasedEvent_descriptor = { value: __setFunctionName(function (newVal) {
53
+ this.#enableHeaderReleasedEvent = newVal !== null;
54
+ this.#handleSimpleEventEnableAttributes();
55
+ }, "#handleXEnableHeaderReleasedEvent") }, _private_handleXEnableHeaderReleasedEvent_decorators, { kind: "method", name: "#handleXEnableHeaderReleasedEvent", static: false, private: true, access: { has: obj => #handleXEnableHeaderReleasedEvent in obj, get: obj => obj.#handleXEnableHeaderReleasedEvent }, metadata: _metadata }, null, _instanceExtraInitializers);
56
+ __esDecorate(this, _private_handleXEnableStartLoadMoreEvent_descriptor = { value: __setFunctionName(function (newVal) {
57
+ this.#enableStartLoadMoreEvent = newVal !== null;
58
+ this.#handleSimpleEventEnableAttributes();
59
+ }, "#handleXEnableStartLoadMoreEvent") }, _private_handleXEnableStartLoadMoreEvent_decorators, { kind: "method", name: "#handleXEnableStartLoadMoreEvent", static: false, private: true, access: { has: obj => #handleXEnableStartLoadMoreEvent in obj, get: obj => obj.#handleXEnableStartLoadMoreEvent }, metadata: _metadata }, null, _instanceExtraInitializers);
60
+ __esDecorate(this, _private_handleXEnableFooterReleasedEvent_descriptor = { value: __setFunctionName(function (newVal) {
61
+ this.#enableFooterReleasedEvent = newVal !== null;
62
+ this.#handleSimpleEventEnableAttributes();
63
+ }, "#handleXEnableFooterReleasedEvent") }, _private_handleXEnableFooterReleasedEvent_decorators, { kind: "method", name: "#handleXEnableFooterReleasedEvent", static: false, private: true, access: { has: obj => #handleXEnableFooterReleasedEvent in obj, get: obj => obj.#handleXEnableFooterReleasedEvent }, metadata: _metadata }, null, _instanceExtraInitializers);
64
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
65
+ }
66
+ #dom = __runInitializers(this, _instanceExtraInitializers);
67
+ #enableStartRefreshEvent = false;
68
+ #enableHeaderReleasedEvent = false;
69
+ #enableHeaderOffsetEvent = false;
70
+ #enableHeaderShowEvent = false;
71
+ #enableStartLoadMoreEvent = false;
72
+ #enableFooterReleasedEvent = false;
73
+ #enableFooterOffsetEvent = false;
74
+ static observedAttributes = [
75
+ 'x-enable-startrefresh-event',
76
+ 'x-enable-headerreleased-event',
77
+ 'x-enable-headeroffset-event',
78
+ 'x-enable-headershow-event',
79
+ 'x-enable-startloadmore-event',
80
+ 'x-enable-footerreleased-event',
81
+ 'x-enable-footeroffset-event',
82
+ ];
83
+ #getXRefreshHeader = genDomGetter(() => this.#dom, 'x-refresh-view > x-refresh-header:first-of-type');
84
+ #getXRefreshFooter = genDomGetter(() => this.#dom, 'x-refresh-view > x-refresh-footer:first-of-type');
85
+ constructor(dom) {
86
+ this.#dom = dom;
87
+ this.#dom.addEventListener(XRefreshIntersectionObserverEvent.EventName, this.#handleSubElementObserverEvent);
88
+ }
89
+ // complex events switches
90
+ get #handleXEnableHeaderOffsetEvent() { return _private_handleXEnableHeaderOffsetEvent_descriptor.value; }
91
+ get #handleXEnableHeaderShowEvent() { return _private_handleXEnableHeaderShowEvent_descriptor.value; }
92
+ get #handleXEnableFooterOffsetEvent() { return _private_handleXEnableFooterOffsetEvent_descriptor.value; }
93
+ #handleComplexEventEnableAttributes() {
94
+ if (this.#enableHeaderOffsetEvent
95
+ || this.#enableHeaderShowEvent
96
+ || this.#enableFooterOffsetEvent) {
97
+ this.#enableComplexRefreshViewEvents();
98
+ }
99
+ else {
100
+ this.#disableComplexRefreshViewEvents();
101
+ }
102
+ }
103
+ // simple events switches
104
+ get #handleXEnableStartRefreshEvent() { return _private_handleXEnableStartRefreshEvent_descriptor.value; }
105
+ get #handleXEnableHeaderReleasedEvent() { return _private_handleXEnableHeaderReleasedEvent_descriptor.value; }
106
+ get #handleXEnableStartLoadMoreEvent() { return _private_handleXEnableStartLoadMoreEvent_descriptor.value; }
107
+ get #handleXEnableFooterReleasedEvent() { return _private_handleXEnableFooterReleasedEvent_descriptor.value; }
108
+ #handleSimpleEventEnableAttributes() {
109
+ if (this.#enableHeaderReleasedEvent
110
+ || this.#enableFooterReleasedEvent
111
+ || this.#enableStartLoadMoreEvent
112
+ || this.#enableStartRefreshEvent) {
113
+ this.#enableSimpleRefreshViewEvents();
114
+ }
115
+ else {
116
+ this.#disableSimpleRefreshViewEvents();
117
+ }
118
+ }
119
+ /**
120
+ * handle header/footer showing events
121
+ */
122
+ #headerShowing = false;
123
+ #headerFullyShown = false;
124
+ #footerShowing = false;
125
+ #footerFullyShown = false;
126
+ #handleSubElementObserverEvent = (e) => {
127
+ e.stopPropagation();
128
+ if (e.target.tagName === 'X-REFRESH-HEADER') {
129
+ this.#headerShowing = e.startShowing;
130
+ this.#headerFullyShown = e.fullyShowing;
131
+ }
132
+ else {
133
+ this.#footerShowing = e.startShowing;
134
+ this.#footerFullyShown = e.fullyShowing;
135
+ }
136
+ };
137
+ /**
138
+ * Event without dragging info;
139
+ */
140
+ #simpleRefreshViewEventsEnabled = false;
141
+ #enableSimpleRefreshViewEvents() {
142
+ if (this.#simpleRefreshViewEventsEnabled)
143
+ return;
144
+ this.#dom.addEventListener('touchend', this.#handleTouchEndForEvent);
145
+ this.#simpleRefreshViewEventsEnabled = true;
146
+ }
147
+ #handleTouchEndForEvent = () => {
148
+ if (this.#headerFullyShown) {
149
+ this.#dom.dispatchEvent(new CustomEvent('headerreleased', commonComponentEventSetting));
150
+ this.#dom.dispatchEvent(new CustomEvent('startrefresh', {
151
+ ...commonComponentEventSetting,
152
+ detail: { isManual: this.#dom._nextRefreshIsManual },
153
+ }));
154
+ this.#dom._nextRefreshIsManual = true;
155
+ }
156
+ else if ((this.#dom.getAttribute('enable-auto-loadmore') === 'true'
157
+ && this.#footerShowing)
158
+ || this.#footerFullyShown) {
159
+ this.#dom.dispatchEvent(new CustomEvent('footerreleased', commonComponentEventSetting));
160
+ this.#dom.dispatchEvent(new CustomEvent('startloadmore', commonComponentEventSetting));
161
+ }
162
+ };
163
+ #disableSimpleRefreshViewEvents() {
164
+ if (this.#simpleRefreshViewEventsEnabled) {
165
+ this.#dom.removeEventListener('touchend', this.#handleTouchEndForEvent);
166
+ }
167
+ }
168
+ /**
169
+ * Event with dragging info
170
+ */
171
+ #dragging = false;
172
+ #complexRefreshViewEventEnabled = false;
173
+ #enableComplexRefreshViewEvents() {
174
+ if (this.#complexRefreshViewEventEnabled)
175
+ return;
176
+ this.#dom.addEventListener('touchstart', this.#handleTouchStartForDraggingStatus);
177
+ this.#dom.addEventListener('touchend', this.#handleTouchEndForDraggingStatus);
178
+ this.#dom.addEventListener('touchcancel', this.#handleTouchEndForDraggingStatus);
179
+ this.#dom
180
+ .shadowRoot.querySelector('#container')
181
+ .addEventListener('scroll', this.#handleScroll);
182
+ }
183
+ #handleTouchEndForDraggingStatus = () => {
184
+ this.#dragging = false;
185
+ };
186
+ #handleTouchStartForDraggingStatus = () => {
187
+ this.#dragging = true;
188
+ };
189
+ #handleScroll = () => {
190
+ if (this.#headerShowing
191
+ && (this.#enableHeaderShowEvent || this.#enableHeaderOffsetEvent)) {
192
+ const header = this.#getXRefreshHeader();
193
+ if (header) {
194
+ const height = parseFloat(getComputedStyle(header).height);
195
+ const scrollTop = this.#dom.shadowRoot.querySelector('#container').scrollTop;
196
+ this.#dom.dispatchEvent(new CustomEvent('headershow', {
197
+ ...commonComponentEventSetting,
198
+ detail: {
199
+ isDragging: this.#dragging,
200
+ offsetPercent: 1 - scrollTop / height,
201
+ },
202
+ }));
203
+ this.#dom.dispatchEvent(new CustomEvent('headeroffset', {
204
+ ...commonComponentEventSetting,
205
+ detail: {
206
+ isDragging: this.#dragging,
207
+ offsetPercent: 1 - scrollTop / height,
208
+ },
209
+ }));
210
+ }
211
+ }
212
+ else if (this.#footerShowing && this.#enableFooterOffsetEvent) {
213
+ const footer = this.#getXRefreshFooter();
214
+ if (footer) {
215
+ const contentDom = this.#dom.shadowRoot.querySelector('#container');
216
+ const scrollTop = contentDom.scrollTop;
217
+ const scrollHeight = contentDom.scrollHeight;
218
+ const height = parseFloat(getComputedStyle(footer).height);
219
+ this.#dom.dispatchEvent(new CustomEvent('footeroffset', {
220
+ ...commonComponentEventSetting,
221
+ detail: {
222
+ isDragging: this.#dragging,
223
+ offsetPercent: 1 - scrollTop / height,
224
+ },
225
+ }));
226
+ }
227
+ }
228
+ };
229
+ #disableComplexRefreshViewEvents() {
230
+ if (this.#complexRefreshViewEventEnabled) {
231
+ this.#dom.removeEventListener('touchstart', this.#handleTouchStartForDraggingStatus);
232
+ this.#dom.removeEventListener('touchend', this.#handleTouchEndForDraggingStatus);
233
+ this.#dom.removeEventListener('touchcancel', this.#handleTouchEndForDraggingStatus);
234
+ this.#dom
235
+ .shadowRoot.querySelector('#container')
236
+ .removeEventListener('scroll', this.#handleScroll);
237
+ }
238
+ }
239
+ dispose() {
240
+ this.#disableSimpleRefreshViewEvents();
241
+ this.#disableComplexRefreshViewEvents();
242
+ }
243
+ };
244
+ })();
245
+ export { XRefreshViewEventsEmitter };
246
+ //# sourceMappingURL=XRefreshViewEventsEmitter.js.map
@@ -0,0 +1,3 @@
1
+ export { XRefreshFooter } from './XRefreshFooter.js';
2
+ export { XRefreshHeader } from './XRefreshHeader.js';
3
+ export { XRefreshView } from './XRefreshView.js';
@@ -0,0 +1,4 @@
1
+ export { XRefreshFooter } from './XRefreshFooter.js';
2
+ export { XRefreshHeader } from './XRefreshHeader.js';
3
+ export { XRefreshView } from './XRefreshView.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,8 @@
1
+ import { AttributeReactiveClass } from '@lynx-js/web-elements-reactive';
2
+ export declare class XSvgFeatures implements InstanceType<AttributeReactiveClass<typeof XSvg>> {
3
+ #private;
4
+ static observedAttributes: string[];
5
+ constructor(dom: HTMLElement);
6
+ }
7
+ export declare class XSvg extends HTMLElement {
8
+ }
@@ -0,0 +1,80 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ /*
3
+ // Copyright 2024 The Lynx Authors. All rights reserved.
4
+ // Licensed under the Apache License Version 2.0 that can be found in the
5
+ // LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { Component, bindToStyle, registerAttributeHandler, } from '@lynx-js/web-elements-reactive';
8
+ import { LynxExposure } from '../common/Exposure.js';
9
+ import { commonComponentEventSetting } from '../common/commonEventInitConfiguration.js';
10
+ let XSvgFeatures = (() => {
11
+ let _private_handleSrc_decorators;
12
+ let _private_handleSrc_initializers = [];
13
+ let _private_handleSrc_extraInitializers = [];
14
+ let _private_handleContent_decorators;
15
+ let _private_handleContent_initializers = [];
16
+ let _private_handleContent_extraInitializers = [];
17
+ return class XSvgFeatures {
18
+ static {
19
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
20
+ _private_handleSrc_decorators = [registerAttributeHandler('src', true)];
21
+ _private_handleContent_decorators = [registerAttributeHandler('content', true)];
22
+ __esDecorate(null, null, _private_handleSrc_decorators, { kind: "field", name: "#handleSrc", static: false, private: true, access: { has: obj => #handleSrc in obj, get: obj => obj.#handleSrc, set: (obj, value) => { obj.#handleSrc = value; } }, metadata: _metadata }, _private_handleSrc_initializers, _private_handleSrc_extraInitializers);
23
+ __esDecorate(null, null, _private_handleContent_decorators, { kind: "field", name: "#handleContent", static: false, private: true, access: { has: obj => #handleContent in obj, get: obj => obj.#handleContent, set: (obj, value) => { obj.#handleContent = value; } }, metadata: _metadata }, _private_handleContent_initializers, _private_handleContent_extraInitializers);
24
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
25
+ }
26
+ static observedAttributes = ['src', 'content'];
27
+ #dom;
28
+ #loadEventInvoker = new Image();
29
+ #handleSrc = __runInitializers(this, _private_handleSrc_initializers, bindToStyle(() => this.#dom, 'background-image', (src) => {
30
+ this.#loadEventInvoker.src = src;
31
+ return `url(${src})`;
32
+ }));
33
+ #handleContent = (__runInitializers(this, _private_handleSrc_extraInitializers), __runInitializers(this, _private_handleContent_initializers, bindToStyle(() => this.#dom, 'background-image', (content) => {
34
+ if (!content)
35
+ return '';
36
+ // https://stackoverflow.com/questions/23223718/failed-to-execute-btoa-on-window-the-string-to-be-encoded-contains-characte
37
+ const src = 'data:image/svg+xml;base64,'
38
+ + btoa(unescape(encodeURIComponent(content)));
39
+ this.#loadEventInvoker.src = src;
40
+ return `url("${src}")`;
41
+ })));
42
+ #fireLoadEvent = (__runInitializers(this, _private_handleContent_extraInitializers), () => {
43
+ if (this.#dom.getAttribute('x-enable-load-event') === null)
44
+ return;
45
+ const { width, height } = this.#loadEventInvoker;
46
+ this.#dom.dispatchEvent(new CustomEvent('load', {
47
+ ...commonComponentEventSetting,
48
+ detail: {
49
+ width,
50
+ height,
51
+ },
52
+ }));
53
+ });
54
+ constructor(dom) {
55
+ this.#dom = dom;
56
+ this.#loadEventInvoker.addEventListener('load', this.#fireLoadEvent);
57
+ }
58
+ };
59
+ })();
60
+ export { XSvgFeatures };
61
+ let XSvg = (() => {
62
+ let _classDecorators = [Component('x-svg', [LynxExposure, XSvgFeatures])];
63
+ let _classDescriptor;
64
+ let _classExtraInitializers = [];
65
+ let _classThis;
66
+ let _classSuper = HTMLElement;
67
+ var XSvg = class extends _classSuper {
68
+ static { _classThis = this; }
69
+ static {
70
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
71
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
72
+ XSvg = _classThis = _classDescriptor.value;
73
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
74
+ __runInitializers(_classThis, _classExtraInitializers);
75
+ }
76
+ };
77
+ return XSvg = _classThis;
78
+ })();
79
+ export { XSvg };
80
+ //# sourceMappingURL=XSvg.js.map
@@ -0,0 +1 @@
1
+ export { XSvg } from './XSvg.js';
@@ -0,0 +1,2 @@
1
+ export { XSvg } from './XSvg.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,2 @@
1
+ export declare class SwiperItem extends HTMLElement {
2
+ }
@@ -0,0 +1,28 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ /*
3
+ // Copyright 2024 The Lynx Authors. All rights reserved.
4
+ // Licensed under the Apache License Version 2.0 that can be found in the
5
+ // LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { Component } from '@lynx-js/web-elements-reactive';
8
+ import { LynxExposure } from '../common/Exposure.js';
9
+ let SwiperItem = (() => {
10
+ let _classDecorators = [Component('x-swiper-item', [LynxExposure])];
11
+ let _classDescriptor;
12
+ let _classExtraInitializers = [];
13
+ let _classThis;
14
+ let _classSuper = HTMLElement;
15
+ var SwiperItem = class extends _classSuper {
16
+ static { _classThis = this; }
17
+ static {
18
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
19
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
20
+ SwiperItem = _classThis = _classDescriptor.value;
21
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
22
+ __runInitializers(_classThis, _classExtraInitializers);
23
+ }
24
+ };
25
+ return SwiperItem = _classThis;
26
+ })();
27
+ export { SwiperItem };
28
+ //# sourceMappingURL=SwiperItem.js.map
@@ -0,0 +1,14 @@
1
+ import { scrollContainerDom } from '../common/constants.js';
2
+ export declare class XSwiper extends HTMLElement {
3
+ #private;
4
+ static notToFilterFalseAttributes: Set<string>;
5
+ get current(): number;
6
+ set current(newval: number);
7
+ get snapDistance(): number;
8
+ get isVertical(): boolean;
9
+ get circularPlay(): boolean;
10
+ scrollToNext(): void;
11
+ scrollToPrevious(): void;
12
+ connectedCallback(): void;
13
+ get [scrollContainerDom](): this;
14
+ }