@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.
- package/CHANGELOG.md +323 -0
- package/LICENSE.txt +202 -0
- package/Notice.txt +1 -0
- package/README.md +47 -0
- package/dist/LynxWrapper/LynxWrapper.d.ts +2 -0
- package/dist/LynxWrapper/LynxWrapper.js +27 -0
- package/dist/LynxWrapper/index.d.ts +1 -0
- package/dist/LynxWrapper/index.js +2 -0
- package/dist/ScrollView/FadeEdgeLengthAttribute.d.ts +10 -0
- package/dist/ScrollView/FadeEdgeLengthAttribute.js +43 -0
- package/dist/ScrollView/ScrollAttributes.d.ts +8 -0
- package/dist/ScrollView/ScrollAttributes.js +83 -0
- package/dist/ScrollView/ScrollIntoView.d.ts +9 -0
- package/dist/ScrollView/ScrollIntoView.js +71 -0
- package/dist/ScrollView/ScrollView.d.ts +31 -0
- package/dist/ScrollView/ScrollView.js +185 -0
- package/dist/ScrollView/ScrollViewEvents.d.ts +9 -0
- package/dist/ScrollView/ScrollViewEvents.js +146 -0
- package/dist/ScrollView/index.d.ts +1 -0
- package/dist/ScrollView/index.js +2 -0
- package/dist/XAudioTT/XAudioAttribute.d.ts +7 -0
- package/dist/XAudioTT/XAudioAttribute.js +93 -0
- package/dist/XAudioTT/XAudioEvents.d.ts +8 -0
- package/dist/XAudioTT/XAudioEvents.js +116 -0
- package/dist/XAudioTT/XAudioTT.d.ts +46 -0
- package/dist/XAudioTT/XAudioTT.js +183 -0
- package/dist/XAudioTT/index.d.ts +1 -0
- package/dist/XAudioTT/index.js +2 -0
- package/dist/XAudioTT/utils.d.ts +19 -0
- package/dist/XAudioTT/utils.js +66 -0
- package/dist/XCanvas/CanvasAttributes.d.ts +12 -0
- package/dist/XCanvas/CanvasAttributes.js +78 -0
- package/dist/XCanvas/XCanvas.d.ts +5 -0
- package/dist/XCanvas/XCanvas.js +32 -0
- package/dist/XCanvas/index.d.ts +1 -0
- package/dist/XCanvas/index.js +2 -0
- package/dist/XFoldViewNg/XFoldviewHeaderNg.d.ts +2 -0
- package/dist/XFoldViewNg/XFoldviewHeaderNg.js +32 -0
- package/dist/XFoldViewNg/XFoldviewHeaderNgFeatures.d.ts +9 -0
- package/dist/XFoldViewNg/XFoldviewHeaderNgFeatures.js +32 -0
- package/dist/XFoldViewNg/XFoldviewNg.d.ts +11 -0
- package/dist/XFoldViewNg/XFoldviewNg.js +52 -0
- package/dist/XFoldViewNg/XFoldviewNgEvents.d.ts +7 -0
- package/dist/XFoldViewNg/XFoldviewNgEvents.js +55 -0
- package/dist/XFoldViewNg/XFoldviewSlotDragNg.d.ts +2 -0
- package/dist/XFoldViewNg/XFoldviewSlotDragNg.js +30 -0
- package/dist/XFoldViewNg/XFoldviewSlotNg.d.ts +2 -0
- package/dist/XFoldViewNg/XFoldviewSlotNg.js +32 -0
- package/dist/XFoldViewNg/XFoldviewSlotNgTouchEventsHandler.d.ts +7 -0
- package/dist/XFoldViewNg/XFoldviewSlotNgTouchEventsHandler.js +105 -0
- package/dist/XFoldViewNg/XFoldviewToolbarNg.d.ts +2 -0
- package/dist/XFoldViewNg/XFoldviewToolbarNg.js +30 -0
- package/dist/XFoldViewNg/index.d.ts +5 -0
- package/dist/XFoldViewNg/index.js +6 -0
- package/dist/XImage/DropShadow.d.ts +6 -0
- package/dist/XImage/DropShadow.js +30 -0
- package/dist/XImage/FilterImage.d.ts +2 -0
- package/dist/XImage/FilterImage.js +31 -0
- package/dist/XImage/ImageEvents.d.ts +6 -0
- package/dist/XImage/ImageEvents.js +68 -0
- package/dist/XImage/ImageSrc.d.ts +7 -0
- package/dist/XImage/ImageSrc.js +61 -0
- package/dist/XImage/XImage.d.ts +2 -0
- package/dist/XImage/XImage.js +30 -0
- package/dist/XImage/index.d.ts +2 -0
- package/dist/XImage/index.js +3 -0
- package/dist/XInput/InputBaseAttributes.d.ts +9 -0
- package/dist/XInput/InputBaseAttributes.js +99 -0
- package/dist/XInput/Placeholder.d.ts +6 -0
- package/dist/XInput/Placeholder.js +60 -0
- package/dist/XInput/XInput.d.ts +28 -0
- package/dist/XInput/XInput.js +129 -0
- package/dist/XInput/XInputAttribute.d.ts +9 -0
- package/dist/XInput/XInputAttribute.js +52 -0
- package/dist/XInput/XInputEvents.d.ts +6 -0
- package/dist/XInput/XInputEvents.js +111 -0
- package/dist/XInput/index.d.ts +1 -0
- package/dist/XInput/index.js +2 -0
- package/dist/XList/ListItem.d.ts +2 -0
- package/dist/XList/ListItem.js +28 -0
- package/dist/XList/XList.d.ts +52 -0
- package/dist/XList/XList.js +257 -0
- package/dist/XList/XListAttributes.d.ts +8 -0
- package/dist/XList/XListAttributes.js +50 -0
- package/dist/XList/XListEvents.d.ts +7 -0
- package/dist/XList/XListEvents.js +356 -0
- package/dist/XList/index.d.ts +2 -0
- package/dist/XList/index.js +3 -0
- package/dist/XOverlayNg/XOverlayAttributes.d.ts +8 -0
- package/dist/XOverlayNg/XOverlayAttributes.js +80 -0
- package/dist/XOverlayNg/XOverlayNg.d.ts +2 -0
- package/dist/XOverlayNg/XOverlayNg.js +45 -0
- package/dist/XOverlayNg/index.d.ts +1 -0
- package/dist/XOverlayNg/index.js +2 -0
- package/dist/XRefreshView/XRefreshFooter.d.ts +3 -0
- package/dist/XRefreshView/XRefreshFooter.js +35 -0
- package/dist/XRefreshView/XRefreshHeader.d.ts +3 -0
- package/dist/XRefreshView/XRefreshHeader.js +35 -0
- package/dist/XRefreshView/XRefreshSubElementIntersectionObserver.d.ts +16 -0
- package/dist/XRefreshView/XRefreshSubElementIntersectionObserver.js +52 -0
- package/dist/XRefreshView/XRefreshView.d.ts +13 -0
- package/dist/XRefreshView/XRefreshView.js +125 -0
- package/dist/XRefreshView/XRefreshViewEventsEmitter.d.ts +8 -0
- package/dist/XRefreshView/XRefreshViewEventsEmitter.js +246 -0
- package/dist/XRefreshView/index.d.ts +3 -0
- package/dist/XRefreshView/index.js +4 -0
- package/dist/XSvg/XSvg.d.ts +8 -0
- package/dist/XSvg/XSvg.js +80 -0
- package/dist/XSvg/index.d.ts +1 -0
- package/dist/XSvg/index.js +2 -0
- package/dist/XSwiper/SwiperItem.d.ts +2 -0
- package/dist/XSwiper/SwiperItem.js +28 -0
- package/dist/XSwiper/XSwiper.d.ts +14 -0
- package/dist/XSwiper/XSwiper.js +231 -0
- package/dist/XSwiper/XSwiperAutoScroll.d.ts +8 -0
- package/dist/XSwiper/XSwiperAutoScroll.js +63 -0
- package/dist/XSwiper/XSwiperCircular.d.ts +8 -0
- package/dist/XSwiper/XSwiperCircular.js +191 -0
- package/dist/XSwiper/XSwiperEvents.d.ts +8 -0
- package/dist/XSwiper/XSwiperEvents.js +144 -0
- package/dist/XSwiper/XSwiperIndicator.d.ts +9 -0
- package/dist/XSwiper/XSwiperIndicator.js +118 -0
- package/dist/XSwiper/index.d.ts +2 -0
- package/dist/XSwiper/index.js +3 -0
- package/dist/XText/InlineImage.d.ts +11 -0
- package/dist/XText/InlineImage.js +56 -0
- package/dist/XText/InlineText.d.ts +5 -0
- package/dist/XText/InlineText.js +30 -0
- package/dist/XText/InlineTruncation.d.ts +5 -0
- package/dist/XText/InlineTruncation.js +42 -0
- package/dist/XText/RawText.d.ts +7 -0
- package/dist/XText/RawText.js +54 -0
- package/dist/XText/XText.d.ts +5 -0
- package/dist/XText/XText.js +49 -0
- package/dist/XText/XTextTruncation.d.ts +11 -0
- package/dist/XText/XTextTruncation.js +604 -0
- package/dist/XText/index.d.ts +5 -0
- package/dist/XText/index.js +6 -0
- package/dist/XTextarea/Placeholder.d.ts +7 -0
- package/dist/XTextarea/Placeholder.js +59 -0
- package/dist/XTextarea/TextareaBaseAttributes.d.ts +6 -0
- package/dist/XTextarea/TextareaBaseAttributes.js +70 -0
- package/dist/XTextarea/XTextarea.d.ts +21 -0
- package/dist/XTextarea/XTextarea.js +101 -0
- package/dist/XTextarea/XTextareaAttributes.d.ts +6 -0
- package/dist/XTextarea/XTextareaAttributes.js +81 -0
- package/dist/XTextarea/XTextareaEvents.d.ts +6 -0
- package/dist/XTextarea/XTextareaEvents.js +111 -0
- package/dist/XTextarea/index.d.ts +1 -0
- package/dist/XTextarea/index.js +2 -0
- package/dist/XView/BlurRadius.d.ts +7 -0
- package/dist/XView/BlurRadius.js +38 -0
- package/dist/XView/XBlurView.d.ts +2 -0
- package/dist/XView/XBlurView.js +29 -0
- package/dist/XView/XView.d.ts +4 -0
- package/dist/XView/XView.js +45 -0
- package/dist/XView/index.d.ts +2 -0
- package/dist/XView/index.js +3 -0
- package/dist/XViewpagerNg/XViewpagerItemNg.d.ts +2 -0
- package/dist/XViewpagerNg/XViewpagerItemNg.js +30 -0
- package/dist/XViewpagerNg/XViewpagerNg.d.ts +10 -0
- package/dist/XViewpagerNg/XViewpagerNg.js +98 -0
- package/dist/XViewpagerNg/XViewpagerNgEvents.d.ts +9 -0
- package/dist/XViewpagerNg/XViewpagerNgEvents.js +118 -0
- package/dist/XViewpagerNg/index.d.ts +2 -0
- package/dist/XViewpagerNg/index.js +3 -0
- package/dist/all.d.ts +16 -0
- package/dist/all.js +17 -0
- package/dist/common/Exposure.d.ts +28 -0
- package/dist/common/Exposure.js +193 -0
- package/dist/common/bindToIntersectionObserver.d.ts +1 -0
- package/dist/common/bindToIntersectionObserver.js +23 -0
- package/dist/common/commonEventInitConfiguration.d.ts +5 -0
- package/dist/common/commonEventInitConfiguration.js +9 -0
- package/dist/common/constants.d.ts +4 -0
- package/dist/common/constants.js +14 -0
- package/dist/common/convertLengthToPx.d.ts +1 -0
- package/dist/common/convertLengthToPx.js +25 -0
- package/dist/common/renameEvent.d.ts +1 -0
- package/dist/common/renameEvent.js +6 -0
- package/dist/common/throttle.d.ts +4 -0
- package/dist/common/throttle.js +40 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +8 -0
- package/dist/lazy.d.ts +1 -0
- package/dist/lazy.js +106 -0
- package/index.css +19 -0
- package/package.json +110 -0
- package/src/LynxWrapper/lynx-wrapper.css +12 -0
- package/src/ScrollView/scroll-view.css +121 -0
- package/src/XAudioTT/x-audio-tt.css +3 -0
- package/src/XCanvas/x-canvas.css +16 -0
- package/src/XFoldViewNg/x-foldview-ng.css +80 -0
- package/src/XImage/x-image.css +82 -0
- package/src/XInput/x-input.css +48 -0
- package/src/XList/x-list.css +147 -0
- package/src/XOverlayNg/x-overlay-ng.css +56 -0
- package/src/XRefreshView/x-refresh-view.css +61 -0
- package/src/XSvg/x-svg.css +10 -0
- package/src/XSwiper/x-swiper.css +319 -0
- package/src/XText/x-text.css +272 -0
- package/src/XTextarea/x-textarea.css +49 -0
- package/src/XViewpagerNg/x-viewpager-ng.css +68 -0
- package/src/common-css/linear.css +386 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AttributeReactiveClass } from '@lynx-js/web-elements-reactive';
|
|
2
|
+
import { ScrollView } from './ScrollView.js';
|
|
3
|
+
export declare class ScrollAttributes implements InstanceType<AttributeReactiveClass<typeof ScrollView>> {
|
|
4
|
+
#private;
|
|
5
|
+
static observedAttributes: string[];
|
|
6
|
+
constructor(dom: ScrollView);
|
|
7
|
+
dispose(): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
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, } from '@lynx-js/web-elements-reactive';
|
|
8
|
+
let ScrollAttributes = (() => {
|
|
9
|
+
let _instanceExtraInitializers = [];
|
|
10
|
+
let _private_handleInitialScrollOffset_decorators;
|
|
11
|
+
let _private_handleInitialScrollOffset_descriptor;
|
|
12
|
+
let _private_handleInitialScrollIndex_decorators;
|
|
13
|
+
let _private_handleInitialScrollIndex_descriptor;
|
|
14
|
+
return class ScrollAttributes {
|
|
15
|
+
static {
|
|
16
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
17
|
+
_private_handleInitialScrollOffset_decorators = [registerAttributeHandler('scroll-top', false), registerAttributeHandler('scroll-left', false), registerAttributeHandler('nitial-scroll-offset', false)];
|
|
18
|
+
_private_handleInitialScrollIndex_decorators = [registerAttributeHandler('scroll-to-index', false), registerAttributeHandler('initial-scroll-index', false)];
|
|
19
|
+
__esDecorate(this, _private_handleInitialScrollOffset_descriptor = { value: __setFunctionName(function (newVal, _, attributeName) {
|
|
20
|
+
if (newVal) {
|
|
21
|
+
const scrollValue = parseFloat(newVal);
|
|
22
|
+
const scrollOrientation = this.#dom.getAttribute('scroll-orientation');
|
|
23
|
+
const scrollY = this.#dom.getAttribute('scroll-y');
|
|
24
|
+
const scrollX = this.#dom.getAttribute('scroll-x');
|
|
25
|
+
const topScrollDistance = (attributeName === 'scroll-top'
|
|
26
|
+
|| attributeName === 'initial-scroll-offset')
|
|
27
|
+
&& (scrollY === ''
|
|
28
|
+
|| scrollY === 'true'
|
|
29
|
+
|| scrollOrientation === 'vertical'
|
|
30
|
+
|| scrollOrientation === 'both');
|
|
31
|
+
const leftScrollDistance = (attributeName === 'scroll-left'
|
|
32
|
+
|| attributeName === 'initial-scroll-offset')
|
|
33
|
+
&& (scrollX === ''
|
|
34
|
+
|| scrollX === 'true'
|
|
35
|
+
|| scrollOrientation === 'vertical'
|
|
36
|
+
|| scrollOrientation === 'both');
|
|
37
|
+
requestAnimationFrame(() => {
|
|
38
|
+
if (topScrollDistance) {
|
|
39
|
+
this.#dom.scrollTo(0, scrollValue);
|
|
40
|
+
}
|
|
41
|
+
if (leftScrollDistance) {
|
|
42
|
+
this.#dom.scrollLeft = scrollValue;
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}, "#handleInitialScrollOffset") }, _private_handleInitialScrollOffset_decorators, { kind: "method", name: "#handleInitialScrollOffset", static: false, private: true, access: { has: obj => #handleInitialScrollOffset in obj, get: obj => obj.#handleInitialScrollOffset }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
47
|
+
__esDecorate(this, _private_handleInitialScrollIndex_descriptor = { value: __setFunctionName(function (newVal) {
|
|
48
|
+
if (newVal) {
|
|
49
|
+
const scrollValue = parseFloat(newVal);
|
|
50
|
+
const childrenElement = this.#dom.children.item(scrollValue);
|
|
51
|
+
if (childrenElement && childrenElement instanceof HTMLElement) {
|
|
52
|
+
const scrollX = !!this.#dom.getAttribute('scroll-x');
|
|
53
|
+
requestAnimationFrame(() => {
|
|
54
|
+
if (scrollX) {
|
|
55
|
+
this.#dom.scrollLeft = childrenElement.offsetLeft;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
this.#dom.scrollTop = childrenElement.offsetTop;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}, "#handleInitialScrollIndex") }, _private_handleInitialScrollIndex_decorators, { kind: "method", name: "#handleInitialScrollIndex", static: false, private: true, access: { has: obj => #handleInitialScrollIndex in obj, get: obj => obj.#handleInitialScrollIndex }, 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
|
+
static observedAttributes = [
|
|
68
|
+
'scroll-top',
|
|
69
|
+
'scroll-left',
|
|
70
|
+
'initial-scroll-offset',
|
|
71
|
+
'scroll-to-index',
|
|
72
|
+
'initial-scroll-index',
|
|
73
|
+
];
|
|
74
|
+
constructor(dom) {
|
|
75
|
+
this.#dom = dom;
|
|
76
|
+
}
|
|
77
|
+
get #handleInitialScrollOffset() { return _private_handleInitialScrollOffset_descriptor.value; }
|
|
78
|
+
get #handleInitialScrollIndex() { return _private_handleInitialScrollIndex_descriptor.value; }
|
|
79
|
+
dispose() { }
|
|
80
|
+
};
|
|
81
|
+
})();
|
|
82
|
+
export { ScrollAttributes };
|
|
83
|
+
//# sourceMappingURL=ScrollAttributes.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AttributeReactiveClass } from '@lynx-js/web-elements-reactive';
|
|
2
|
+
import { ScrollView } from './ScrollView.js';
|
|
3
|
+
export declare class ScrollIntoView implements InstanceType<AttributeReactiveClass<typeof ScrollView>> {
|
|
4
|
+
#private;
|
|
5
|
+
static eventName: "__scrollIntoView";
|
|
6
|
+
static observedAttributes: never[];
|
|
7
|
+
constructor(dom: ScrollView);
|
|
8
|
+
dispose(): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export class ScrollIntoView {
|
|
2
|
+
static eventName = '__scrollIntoView';
|
|
3
|
+
static observedAttributes = [];
|
|
4
|
+
#dom;
|
|
5
|
+
#handleScrollIntoView = ((event) => {
|
|
6
|
+
event.stopPropagation();
|
|
7
|
+
const compusedPath = event
|
|
8
|
+
.composedPath()
|
|
9
|
+
.filter((e) => e instanceof HTMLElement);
|
|
10
|
+
const eventPath = [];
|
|
11
|
+
const scrollContainer = this.#dom;
|
|
12
|
+
for (const target of compusedPath) {
|
|
13
|
+
if (target === scrollContainer)
|
|
14
|
+
break;
|
|
15
|
+
eventPath.push(target);
|
|
16
|
+
}
|
|
17
|
+
const scrollOrientation = this.#dom.getAttribute('scroll-orientation');
|
|
18
|
+
const scrollX = this.#dom.getAttribute('scroll-x') !== null
|
|
19
|
+
|| scrollOrientation === 'both'
|
|
20
|
+
|| scrollOrientation === 'horizontal';
|
|
21
|
+
const scrollY = this.#dom.getAttribute('scroll-y') !== null
|
|
22
|
+
|| scrollOrientation === 'both'
|
|
23
|
+
|| scrollOrientation === 'vertical';
|
|
24
|
+
let top = 0, left = 0;
|
|
25
|
+
for (const { offsetTop, offsetLeft } of eventPath) {
|
|
26
|
+
if (scrollX)
|
|
27
|
+
left += offsetLeft;
|
|
28
|
+
if (scrollY)
|
|
29
|
+
top += offsetTop;
|
|
30
|
+
}
|
|
31
|
+
if (scrollX) {
|
|
32
|
+
switch (event.detail.inline) {
|
|
33
|
+
case 'center':
|
|
34
|
+
left += (event.target.clientWidth
|
|
35
|
+
- this.#dom.clientWidth)
|
|
36
|
+
/ 2;
|
|
37
|
+
break;
|
|
38
|
+
case 'end':
|
|
39
|
+
left += event.target.clientWidth
|
|
40
|
+
- this.#dom.clientWidth;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (scrollY) {
|
|
45
|
+
switch (event.detail.block) {
|
|
46
|
+
case 'center':
|
|
47
|
+
top += (event.target.clientHeight
|
|
48
|
+
- this.#dom.clientHeight)
|
|
49
|
+
/ 2;
|
|
50
|
+
break;
|
|
51
|
+
case 'end':
|
|
52
|
+
top += event.target.clientHeight
|
|
53
|
+
- this.#dom.clientHeight;
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
scrollContainer.scrollTo({
|
|
58
|
+
behavior: event.detail.behavior === 'smooth' ? 'smooth' : 'instant',
|
|
59
|
+
left,
|
|
60
|
+
top,
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
constructor(dom) {
|
|
64
|
+
this.#dom = dom;
|
|
65
|
+
this.#dom.addEventListener(ScrollIntoView.eventName, this.#handleScrollIntoView, { passive: false });
|
|
66
|
+
}
|
|
67
|
+
dispose() {
|
|
68
|
+
this.#dom.removeEventListener(ScrollIntoView.eventName, this.#handleScrollIntoView);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=ScrollIntoView.js.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { scrollContainerDom } from '../common/constants.js';
|
|
2
|
+
export declare class ScrollView extends HTMLElement {
|
|
3
|
+
#private;
|
|
4
|
+
static readonly notToFilterFalseAttributes: Set<string>;
|
|
5
|
+
static readonly scrollInterval = 100;
|
|
6
|
+
scrollTo(options: {
|
|
7
|
+
/**
|
|
8
|
+
* @description The offset of the content
|
|
9
|
+
* @defaultValue 0
|
|
10
|
+
*/
|
|
11
|
+
offset?: `${number}px` | `${number}rpx` | `${number}ppx` | number;
|
|
12
|
+
/**
|
|
13
|
+
* @description target node
|
|
14
|
+
*/
|
|
15
|
+
index: number;
|
|
16
|
+
smooth?: boolean;
|
|
17
|
+
}): void;
|
|
18
|
+
scrollTo(options?: ScrollToOptions | undefined): void;
|
|
19
|
+
scrollTo(x: number, y: number): void;
|
|
20
|
+
autoScroll(options: {
|
|
21
|
+
/**
|
|
22
|
+
* @description scrolling speed
|
|
23
|
+
*/
|
|
24
|
+
rate: `${number}px` | number;
|
|
25
|
+
/**
|
|
26
|
+
* @description could be stop by this parameter
|
|
27
|
+
*/
|
|
28
|
+
start: boolean;
|
|
29
|
+
}): void;
|
|
30
|
+
get [scrollContainerDom](): this;
|
|
31
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
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 { LynxExposure } from '../common/Exposure.js';
|
|
8
|
+
import { FadeEdgeLengthAttribute } from './FadeEdgeLengthAttribute.js';
|
|
9
|
+
import { ScrollAttributes } from './ScrollAttributes.js';
|
|
10
|
+
import { ScrollViewEvents } from './ScrollViewEvents.js';
|
|
11
|
+
import { ScrollIntoView } from './ScrollIntoView.js';
|
|
12
|
+
import { Component, html } from '@lynx-js/web-elements-reactive';
|
|
13
|
+
import { scrollContainerDom } from '../common/constants.js';
|
|
14
|
+
let ScrollView = (() => {
|
|
15
|
+
let _classDecorators = [Component('scroll-view', [
|
|
16
|
+
LynxExposure,
|
|
17
|
+
ScrollAttributes,
|
|
18
|
+
FadeEdgeLengthAttribute,
|
|
19
|
+
ScrollViewEvents,
|
|
20
|
+
ScrollIntoView,
|
|
21
|
+
], html ` <style>
|
|
22
|
+
.placeholder-dom {
|
|
23
|
+
display: none;
|
|
24
|
+
flex: 0 0 0;
|
|
25
|
+
align-self: stretch;
|
|
26
|
+
min-height: 0;
|
|
27
|
+
min-width: 0;
|
|
28
|
+
}
|
|
29
|
+
.mask {
|
|
30
|
+
z-index: 1;
|
|
31
|
+
position: sticky;
|
|
32
|
+
}
|
|
33
|
+
.observer-container {
|
|
34
|
+
flex-direction: inherit;
|
|
35
|
+
overflow: visible;
|
|
36
|
+
}
|
|
37
|
+
.observer {
|
|
38
|
+
display: flex;
|
|
39
|
+
}
|
|
40
|
+
::-webkit-scrollbar {
|
|
41
|
+
display: none;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@keyframes topFading {
|
|
45
|
+
0% {
|
|
46
|
+
box-shadow: transparent 0px 0px 0px 0px;
|
|
47
|
+
}
|
|
48
|
+
5% {
|
|
49
|
+
box-shadow: var(--scroll-view-bg-color) 0px 0px
|
|
50
|
+
var(--scroll-view-fading-edge-length)
|
|
51
|
+
var(--scroll-view-fading-edge-length);
|
|
52
|
+
}
|
|
53
|
+
100% {
|
|
54
|
+
box-shadow: var(--scroll-view-bg-color) 0px 0px
|
|
55
|
+
var(--scroll-view-fading-edge-length)
|
|
56
|
+
var(--scroll-view-fading-edge-length);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
@keyframes botFading {
|
|
60
|
+
0% {
|
|
61
|
+
box-shadow: var(--scroll-view-bg-color) 0px 0px
|
|
62
|
+
var(--scroll-view-fading-edge-length)
|
|
63
|
+
var(--scroll-view-fading-edge-length);
|
|
64
|
+
}
|
|
65
|
+
95% {
|
|
66
|
+
box-shadow: var(--scroll-view-bg-color) 0px 0px
|
|
67
|
+
var(--scroll-view-fading-edge-length)
|
|
68
|
+
var(--scroll-view-fading-edge-length);
|
|
69
|
+
}
|
|
70
|
+
100% {
|
|
71
|
+
box-shadow: transparent 0px 0px 0px 0px;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
</style>
|
|
75
|
+
<div
|
|
76
|
+
class="mask placeholder-dom"
|
|
77
|
+
id="top-fade-mask"
|
|
78
|
+
part="top-fade-mask"
|
|
79
|
+
></div>
|
|
80
|
+
<div
|
|
81
|
+
class="observer-container placeholder-dom"
|
|
82
|
+
part="upper-threshold-observer"
|
|
83
|
+
>
|
|
84
|
+
<div
|
|
85
|
+
class="observer placeholder-dom"
|
|
86
|
+
id="upper-threshold-observer"
|
|
87
|
+
></div>
|
|
88
|
+
</div>
|
|
89
|
+
<slot></slot>
|
|
90
|
+
<div
|
|
91
|
+
class="observer-container placeholder-dom"
|
|
92
|
+
part="lower-threshold-observer"
|
|
93
|
+
>
|
|
94
|
+
<div
|
|
95
|
+
class="observer placeholder-dom"
|
|
96
|
+
id="lower-threshold-observer"
|
|
97
|
+
></div>
|
|
98
|
+
</div>
|
|
99
|
+
<div
|
|
100
|
+
class="mask placeholder-dom"
|
|
101
|
+
id="bot-fade-mask"
|
|
102
|
+
part="bot-fade-mask"
|
|
103
|
+
></div>`)];
|
|
104
|
+
let _classDescriptor;
|
|
105
|
+
let _classExtraInitializers = [];
|
|
106
|
+
let _classThis;
|
|
107
|
+
let _classSuper = HTMLElement;
|
|
108
|
+
var ScrollView = class extends _classSuper {
|
|
109
|
+
static { _classThis = this; }
|
|
110
|
+
static {
|
|
111
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
112
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
113
|
+
ScrollView = _classThis = _classDescriptor.value;
|
|
114
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
115
|
+
}
|
|
116
|
+
static notToFilterFalseAttributes = new Set(['enable-scroll']);
|
|
117
|
+
static scrollInterval = 100;
|
|
118
|
+
#autoScrollTimer;
|
|
119
|
+
scrollTo(...args) {
|
|
120
|
+
let offset;
|
|
121
|
+
if (typeof args[0].offset === 'string') {
|
|
122
|
+
const offsetValue = parseFloat(args[0].offset);
|
|
123
|
+
offset = { left: offsetValue, top: offsetValue };
|
|
124
|
+
}
|
|
125
|
+
else if (typeof args[0].offset === 'number') {
|
|
126
|
+
offset = { left: args[0].offset, top: args[0].offset };
|
|
127
|
+
}
|
|
128
|
+
if (typeof args[0].index === 'number') {
|
|
129
|
+
const index = args[0].index;
|
|
130
|
+
if (index === 0) {
|
|
131
|
+
this.scrollTop = 0;
|
|
132
|
+
this.scrollLeft = 0;
|
|
133
|
+
}
|
|
134
|
+
else if (index > 0 && index < this.childElementCount) {
|
|
135
|
+
const targetKid = this.children.item(index);
|
|
136
|
+
if (targetKid instanceof HTMLElement) {
|
|
137
|
+
if (offset) {
|
|
138
|
+
offset = {
|
|
139
|
+
left: targetKid.offsetLeft + offset.left,
|
|
140
|
+
top: targetKid.offsetTop + offset.top,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
offset = { left: targetKid.offsetLeft, top: targetKid.offsetTop };
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (offset) {
|
|
150
|
+
this.scrollTo({
|
|
151
|
+
...offset,
|
|
152
|
+
behavior: args[0].smooth ? 'smooth' : 'auto',
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
super.scrollTo(...args);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
autoScroll(options) {
|
|
160
|
+
clearInterval(this.#autoScrollTimer);
|
|
161
|
+
if (options.start) {
|
|
162
|
+
const rate = typeof options.rate === 'number'
|
|
163
|
+
? options.rate
|
|
164
|
+
: parseFloat(options.rate);
|
|
165
|
+
const tickDistance = (rate * ScrollView.scrollInterval) / 1000;
|
|
166
|
+
this.#autoScrollTimer = setInterval((dom) => {
|
|
167
|
+
dom.scrollBy({
|
|
168
|
+
left: tickDistance,
|
|
169
|
+
top: tickDistance,
|
|
170
|
+
behavior: 'smooth',
|
|
171
|
+
});
|
|
172
|
+
}, ScrollView.scrollInterval, this);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
get [scrollContainerDom]() {
|
|
176
|
+
return this;
|
|
177
|
+
}
|
|
178
|
+
static {
|
|
179
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
return ScrollView = _classThis;
|
|
183
|
+
})();
|
|
184
|
+
export { ScrollView };
|
|
185
|
+
//# sourceMappingURL=ScrollView.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type AttributeReactiveClass } from '@lynx-js/web-elements-reactive';
|
|
2
|
+
import { ScrollView } from './ScrollView.js';
|
|
3
|
+
export declare class ScrollViewEvents implements InstanceType<AttributeReactiveClass<typeof ScrollView>> {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(dom: ScrollView);
|
|
6
|
+
static observedAttributes: string[];
|
|
7
|
+
connectedCallback?(): void;
|
|
8
|
+
dispose(): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
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 { bindToStyle, genDomGetter, registerAttributeHandler, } from '@lynx-js/web-elements-reactive';
|
|
8
|
+
import { commonComponentEventSetting } from '../common/commonEventInitConfiguration.js';
|
|
9
|
+
import { bindToIntersectionObserver } from '../common/bindToIntersectionObserver.js';
|
|
10
|
+
import { useScrollEnd } from '../common/constants.js';
|
|
11
|
+
let ScrollViewEvents = (() => {
|
|
12
|
+
let _instanceExtraInitializers = [];
|
|
13
|
+
let _private_updateUpperIntersectionObserver_decorators;
|
|
14
|
+
let _private_updateUpperIntersectionObserver_initializers = [];
|
|
15
|
+
let _private_updateUpperIntersectionObserver_extraInitializers = [];
|
|
16
|
+
let _private_updateLowerIntersectionObserver_decorators;
|
|
17
|
+
let _private_updateLowerIntersectionObserver_initializers = [];
|
|
18
|
+
let _private_updateLowerIntersectionObserver_extraInitializers = [];
|
|
19
|
+
let _private_updateUpperThreshold_decorators;
|
|
20
|
+
let _private_updateUpperThreshold_initializers = [];
|
|
21
|
+
let _private_updateUpperThreshold_extraInitializers = [];
|
|
22
|
+
let _private_updateLowerThreshold_decorators;
|
|
23
|
+
let _private_updateLowerThreshold_initializers = [];
|
|
24
|
+
let _private_updateLowerThreshold_extraInitializers = [];
|
|
25
|
+
let _private_handleScrollEventsSwitches_decorators;
|
|
26
|
+
let _private_handleScrollEventsSwitches_descriptor;
|
|
27
|
+
return class ScrollViewEvents {
|
|
28
|
+
static {
|
|
29
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
30
|
+
_private_updateUpperIntersectionObserver_decorators = [registerAttributeHandler('x-enable-scrolltoupper-event', true)];
|
|
31
|
+
_private_updateLowerIntersectionObserver_decorators = [registerAttributeHandler('x-enable-scrolltolower-event', true)];
|
|
32
|
+
_private_updateUpperThreshold_decorators = [registerAttributeHandler('upper-threshold', true)];
|
|
33
|
+
_private_updateLowerThreshold_decorators = [registerAttributeHandler('lower-threshold', true)];
|
|
34
|
+
_private_handleScrollEventsSwitches_decorators = [registerAttributeHandler('x-enable-scroll-event', true), registerAttributeHandler('x-enable-scrollend-event', true)];
|
|
35
|
+
__esDecorate(this, _private_handleScrollEventsSwitches_descriptor = { value: __setFunctionName(function () {
|
|
36
|
+
const scroll = this.#dom.getAttribute('x-enable-scroll-event');
|
|
37
|
+
this.#enableScrollEnd =
|
|
38
|
+
this.#dom.getAttribute('x-enable-scrollend-event') !== null;
|
|
39
|
+
if (scroll !== null || this.#enableScrollEnd) {
|
|
40
|
+
this.#getScrollContainer().addEventListener('scroll', this.#handleScroll);
|
|
41
|
+
this.#getScrollContainer().addEventListener('scrollend', this.#handleScrollEnd);
|
|
42
|
+
this.#dom.addEventListener('scroll', this.#handleScroll);
|
|
43
|
+
this.#dom.addEventListener('scrollend', this.#handleScrollEnd);
|
|
44
|
+
this.#prevX = 0;
|
|
45
|
+
this.#prevY = 0;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
this.#dom.removeEventListener('scroll', this.#handleScroll);
|
|
49
|
+
this.#dom.removeEventListener('scrollend', this.#handleScrollEnd);
|
|
50
|
+
}
|
|
51
|
+
}, "#handleScrollEventsSwitches") }, _private_handleScrollEventsSwitches_decorators, { kind: "method", name: "#handleScrollEventsSwitches", static: false, private: true, access: { has: obj => #handleScrollEventsSwitches in obj, get: obj => obj.#handleScrollEventsSwitches }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
52
|
+
__esDecorate(null, null, _private_updateUpperIntersectionObserver_decorators, { kind: "field", name: "#updateUpperIntersectionObserver", static: false, private: true, access: { has: obj => #updateUpperIntersectionObserver in obj, get: obj => obj.#updateUpperIntersectionObserver, set: (obj, value) => { obj.#updateUpperIntersectionObserver = value; } }, metadata: _metadata }, _private_updateUpperIntersectionObserver_initializers, _private_updateUpperIntersectionObserver_extraInitializers);
|
|
53
|
+
__esDecorate(null, null, _private_updateLowerIntersectionObserver_decorators, { kind: "field", name: "#updateLowerIntersectionObserver", static: false, private: true, access: { has: obj => #updateLowerIntersectionObserver in obj, get: obj => obj.#updateLowerIntersectionObserver, set: (obj, value) => { obj.#updateLowerIntersectionObserver = value; } }, metadata: _metadata }, _private_updateLowerIntersectionObserver_initializers, _private_updateLowerIntersectionObserver_extraInitializers);
|
|
54
|
+
__esDecorate(null, null, _private_updateUpperThreshold_decorators, { kind: "field", name: "#updateUpperThreshold", static: false, private: true, access: { has: obj => #updateUpperThreshold in obj, get: obj => obj.#updateUpperThreshold, set: (obj, value) => { obj.#updateUpperThreshold = value; } }, metadata: _metadata }, _private_updateUpperThreshold_initializers, _private_updateUpperThreshold_extraInitializers);
|
|
55
|
+
__esDecorate(null, null, _private_updateLowerThreshold_decorators, { kind: "field", name: "#updateLowerThreshold", static: false, private: true, access: { has: obj => #updateLowerThreshold in obj, get: obj => obj.#updateLowerThreshold, set: (obj, value) => { obj.#updateLowerThreshold = value; } }, metadata: _metadata }, _private_updateLowerThreshold_initializers, _private_updateLowerThreshold_extraInitializers);
|
|
56
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
57
|
+
}
|
|
58
|
+
#dom = __runInitializers(this, _instanceExtraInitializers);
|
|
59
|
+
#enableScrollEnd = false;
|
|
60
|
+
#debounceScrollForMockingScrollEnd;
|
|
61
|
+
#prevX = 0;
|
|
62
|
+
#prevY = 0;
|
|
63
|
+
constructor(dom) {
|
|
64
|
+
this.#dom = dom;
|
|
65
|
+
}
|
|
66
|
+
#getScrollContainer = () => this.#dom;
|
|
67
|
+
#getUpperThresholdObserverDom = genDomGetter(() => this.#dom.shadowRoot, '#upper-threshold-observer');
|
|
68
|
+
#getLowerThresholdObserverDom = genDomGetter(() => this.#dom.shadowRoot, '#lower-threshold-observer');
|
|
69
|
+
#handleObserver = (entries) => {
|
|
70
|
+
const { isIntersecting, target } = entries[0];
|
|
71
|
+
const id = target.id;
|
|
72
|
+
if (isIntersecting) {
|
|
73
|
+
if (id === 'upper-threshold-observer') {
|
|
74
|
+
this.#dom.dispatchEvent(new CustomEvent('scrolltoupper', {
|
|
75
|
+
...commonComponentEventSetting,
|
|
76
|
+
detail: this.#getScrollDetail(),
|
|
77
|
+
}));
|
|
78
|
+
}
|
|
79
|
+
else if (id === 'lower-threshold-observer') {
|
|
80
|
+
this.#dom.dispatchEvent(new CustomEvent('scrolltolower', {
|
|
81
|
+
...commonComponentEventSetting,
|
|
82
|
+
detail: this.#getScrollDetail(),
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
static observedAttributes = [
|
|
88
|
+
'x-enable-scrolltoupper-event',
|
|
89
|
+
'x-enable-scrolltolower-event',
|
|
90
|
+
'x-enable-scroll-event',
|
|
91
|
+
'x-enable-scrollend-event',
|
|
92
|
+
'upper-threshold',
|
|
93
|
+
'lower-threshold',
|
|
94
|
+
];
|
|
95
|
+
#updateUpperIntersectionObserver = __runInitializers(this, _private_updateUpperIntersectionObserver_initializers, bindToIntersectionObserver(this.#getScrollContainer, this.#getUpperThresholdObserverDom, this.#handleObserver));
|
|
96
|
+
#updateLowerIntersectionObserver = (__runInitializers(this, _private_updateUpperIntersectionObserver_extraInitializers), __runInitializers(this, _private_updateLowerIntersectionObserver_initializers, bindToIntersectionObserver(this.#getScrollContainer, this.#getLowerThresholdObserverDom, this.#handleObserver)));
|
|
97
|
+
#updateUpperThreshold = (__runInitializers(this, _private_updateLowerIntersectionObserver_extraInitializers), __runInitializers(this, _private_updateUpperThreshold_initializers, bindToStyle(this.#getUpperThresholdObserverDom, 'flex-basis', (v) => `${parseInt(v)}px`)));
|
|
98
|
+
#updateLowerThreshold = (__runInitializers(this, _private_updateUpperThreshold_extraInitializers), __runInitializers(this, _private_updateLowerThreshold_initializers, bindToStyle(this.#getLowerThresholdObserverDom, 'flex-basis', (v) => `${parseInt(v)}px`)));
|
|
99
|
+
#getScrollDetail() {
|
|
100
|
+
let { scrollTop, scrollLeft, scrollHeight, scrollWidth } = this
|
|
101
|
+
.#getScrollContainer();
|
|
102
|
+
if (scrollTop === 0) {
|
|
103
|
+
scrollTop -= this.#dom.scrollHeight / 2 - this.#dom.scrollTop;
|
|
104
|
+
}
|
|
105
|
+
if (scrollLeft === 0) {
|
|
106
|
+
scrollLeft -= this.#dom.scrollWidth / 2 - this.#dom.scrollLeft;
|
|
107
|
+
}
|
|
108
|
+
const detail = {
|
|
109
|
+
scrollTop,
|
|
110
|
+
scrollLeft,
|
|
111
|
+
scrollHeight,
|
|
112
|
+
scrollWidth,
|
|
113
|
+
isDragging: false,
|
|
114
|
+
deltaX: scrollLeft - this.#prevX,
|
|
115
|
+
deltaY: scrollTop - this.#prevY,
|
|
116
|
+
};
|
|
117
|
+
this.#prevX = scrollLeft;
|
|
118
|
+
this.#prevY = scrollTop;
|
|
119
|
+
return detail;
|
|
120
|
+
}
|
|
121
|
+
#handleScroll = (__runInitializers(this, _private_updateLowerThreshold_extraInitializers), () => {
|
|
122
|
+
if (this.#enableScrollEnd && !useScrollEnd) {
|
|
123
|
+
// debounce
|
|
124
|
+
clearTimeout(this.#debounceScrollForMockingScrollEnd);
|
|
125
|
+
this.#debounceScrollForMockingScrollEnd = setTimeout(() => {
|
|
126
|
+
this.#handleScrollEnd();
|
|
127
|
+
}, 100);
|
|
128
|
+
}
|
|
129
|
+
this.#dom.dispatchEvent(new CustomEvent('lynxscroll', {
|
|
130
|
+
...commonComponentEventSetting,
|
|
131
|
+
detail: this.#getScrollDetail(),
|
|
132
|
+
}));
|
|
133
|
+
});
|
|
134
|
+
#handleScrollEnd = () => {
|
|
135
|
+
this.#dom.dispatchEvent(new CustomEvent('lynxscrollend', {
|
|
136
|
+
...commonComponentEventSetting,
|
|
137
|
+
detail: this.#getScrollDetail(),
|
|
138
|
+
}));
|
|
139
|
+
};
|
|
140
|
+
get #handleScrollEventsSwitches() { return _private_handleScrollEventsSwitches_descriptor.value; }
|
|
141
|
+
connectedCallback() { }
|
|
142
|
+
dispose() { }
|
|
143
|
+
};
|
|
144
|
+
})();
|
|
145
|
+
export { ScrollViewEvents };
|
|
146
|
+
//# sourceMappingURL=ScrollViewEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ScrollView } from './ScrollView.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AttributeReactiveClass } from '@lynx-js/web-elements-reactive';
|
|
2
|
+
import type { XAudioTT } from './XAudioTT.js';
|
|
3
|
+
export declare class XAudioAttribute implements InstanceType<AttributeReactiveClass<typeof HTMLElement>> {
|
|
4
|
+
#private;
|
|
5
|
+
static observedAttributes: string[];
|
|
6
|
+
constructor(dom: XAudioTT);
|
|
7
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/*
|
|
2
|
+
// Copyright 2024 The Lynx Authors. All rights reserved.
|
|
3
|
+
// Licensed under the Apache License Version 2.0 that can be found in the
|
|
4
|
+
// LICENSE file in the root directory of this source tree.
|
|
5
|
+
*/
|
|
6
|
+
import { __esDecorate, __runInitializers, __setFunctionName } from "tslib";
|
|
7
|
+
import { bindToAttribute, genDomGetter, registerAttributeHandler, } from '@lynx-js/web-elements-reactive';
|
|
8
|
+
import { XAudioErrorCode, xAudioBlob, xAudioSrc } from './utils.js';
|
|
9
|
+
import { commonComponentEventSetting } from '../common/commonEventInitConfiguration.js';
|
|
10
|
+
let XAudioAttribute = (() => {
|
|
11
|
+
let _instanceExtraInitializers = [];
|
|
12
|
+
let _private_handleSrc_decorators;
|
|
13
|
+
let _private_handleSrc_descriptor;
|
|
14
|
+
let _private_handleLoop_decorators;
|
|
15
|
+
let _private_handleLoop_initializers = [];
|
|
16
|
+
let _private_handleLoop_extraInitializers = [];
|
|
17
|
+
let _private_handlePauseOnHide_decorators;
|
|
18
|
+
let _private_handlePauseOnHide_descriptor;
|
|
19
|
+
return class XAudioAttribute {
|
|
20
|
+
static {
|
|
21
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
22
|
+
_private_handleSrc_decorators = [registerAttributeHandler('src', true)];
|
|
23
|
+
_private_handleLoop_decorators = [registerAttributeHandler('loop', true)];
|
|
24
|
+
_private_handlePauseOnHide_decorators = [registerAttributeHandler('pause-on-hide', true)];
|
|
25
|
+
__esDecorate(this, _private_handleSrc_descriptor = { value: __setFunctionName(function (newValue) {
|
|
26
|
+
let parsedSrc;
|
|
27
|
+
try {
|
|
28
|
+
parsedSrc = JSON.parse(newValue || '') || {};
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
console.error(`JSON.parse src error: ${error}`);
|
|
32
|
+
parsedSrc = {};
|
|
33
|
+
}
|
|
34
|
+
if (newValue === null) {
|
|
35
|
+
this.#dom.dispatchEvent(new CustomEvent('error', {
|
|
36
|
+
...commonComponentEventSetting,
|
|
37
|
+
detail: {
|
|
38
|
+
code: XAudioErrorCode.SrcError,
|
|
39
|
+
msg: '',
|
|
40
|
+
from: 'res loader',
|
|
41
|
+
currentSrcID: this.#dom[xAudioSrc]?.id,
|
|
42
|
+
},
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
else if (parsedSrc?.id === undefined || parsedSrc?.play_url === undefined) {
|
|
46
|
+
this.#dom.dispatchEvent(new CustomEvent('error', {
|
|
47
|
+
...commonComponentEventSetting,
|
|
48
|
+
detail: {
|
|
49
|
+
code: XAudioErrorCode.SrcJsonError,
|
|
50
|
+
msg: '',
|
|
51
|
+
from: 'res loader',
|
|
52
|
+
currentSrcID: this.#dom[xAudioSrc]?.id,
|
|
53
|
+
},
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
this.#dom[xAudioSrc] = parsedSrc;
|
|
57
|
+
this.#dom[xAudioBlob] = undefined;
|
|
58
|
+
this.#dom.stop();
|
|
59
|
+
}, "#handleSrc") }, _private_handleSrc_decorators, { kind: "method", name: "#handleSrc", static: false, private: true, access: { has: obj => #handleSrc in obj, get: obj => obj.#handleSrc }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
60
|
+
__esDecorate(this, _private_handlePauseOnHide_descriptor = { value: __setFunctionName(function (newValue) {
|
|
61
|
+
if (newValue !== null) {
|
|
62
|
+
document.addEventListener('visibilitychange', this.#documentVisibilitychange, { passive: true });
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
document.removeEventListener('visibilitychange', this.#documentVisibilitychange);
|
|
66
|
+
}
|
|
67
|
+
}, "#handlePauseOnHide") }, _private_handlePauseOnHide_decorators, { kind: "method", name: "#handlePauseOnHide", static: false, private: true, access: { has: obj => #handlePauseOnHide in obj, get: obj => obj.#handlePauseOnHide }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
68
|
+
__esDecorate(null, null, _private_handleLoop_decorators, { kind: "field", name: "#handleLoop", static: false, private: true, access: { has: obj => #handleLoop in obj, get: obj => obj.#handleLoop, set: (obj, value) => { obj.#handleLoop = value; } }, metadata: _metadata }, _private_handleLoop_initializers, _private_handleLoop_extraInitializers);
|
|
69
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
70
|
+
}
|
|
71
|
+
static observedAttributes = [
|
|
72
|
+
'src',
|
|
73
|
+
'loop',
|
|
74
|
+
'pause-on-hide',
|
|
75
|
+
];
|
|
76
|
+
#dom = __runInitializers(this, _instanceExtraInitializers);
|
|
77
|
+
#getAudioElement = genDomGetter(() => this.#dom.shadowRoot, '#audio');
|
|
78
|
+
#setAudioSrc = bindToAttribute(this.#getAudioElement, 'src');
|
|
79
|
+
get #handleSrc() { return _private_handleSrc_descriptor.value; }
|
|
80
|
+
#handleLoop = __runInitializers(this, _private_handleLoop_initializers, bindToAttribute(this.#getAudioElement, 'loop'));
|
|
81
|
+
#documentVisibilitychange = (__runInitializers(this, _private_handleLoop_extraInitializers), () => {
|
|
82
|
+
if (document.visibilityState === 'hidden') {
|
|
83
|
+
this.#dom.pause();
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
get #handlePauseOnHide() { return _private_handlePauseOnHide_descriptor.value; }
|
|
87
|
+
constructor(dom) {
|
|
88
|
+
this.#dom = dom;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
})();
|
|
92
|
+
export { XAudioAttribute };
|
|
93
|
+
//# sourceMappingURL=XAudioAttribute.js.map
|