@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,147 @@
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
+ x-list {
7
+ contain: layout;
8
+ scrollbar-width: none;
9
+ --list-item-sticky-offset: 0;
10
+ }
11
+
12
+ x-list > *:not(list-item) {
13
+ display: none;
14
+ }
15
+
16
+ x-list::part(content) {
17
+ display: flex;
18
+ flex: 0 0 auto;
19
+ flex-wrap: nowrap;
20
+ width: 100%;
21
+ height: 100%;
22
+ justify-content: inherit;
23
+ background-color: inherit;
24
+ flex-direction: inherit;
25
+ scrollbar-width: inherit;
26
+ scroll-snap-type: inherit;
27
+ scroll-snap-align: start;
28
+ overflow: inherit;
29
+ position: relative;
30
+ content-visibility: auto;
31
+ }
32
+
33
+ x-list::part(content), x-list::part(slot) {
34
+ --lynx-display: inherit;
35
+ }
36
+
37
+ x-list, x-list::part(content) {
38
+ scrollbar-width: none;
39
+ }
40
+
41
+ x-list::-webkit-scrollbar, x-list::part(content)::-webkit-scrollbar {
42
+ display: none;
43
+ }
44
+
45
+ x-list[scrollbar-enable]::part(content) {
46
+ scrollbar-width: initial;
47
+ }
48
+
49
+ x-list[scrollbar-enable]::part(content)::-webkit-scrollbar {
50
+ display: initial;
51
+ }
52
+
53
+ list-item {
54
+ display: none;
55
+ content-visibility: auto;
56
+ flex: 0 0 auto !important;
57
+ }
58
+
59
+ x-list > list-item, x-list > lynx-wrapper > list-item {
60
+ display: flex;
61
+ }
62
+
63
+ x-list[list-type="single"] {
64
+ display: flex;
65
+ flex-direction: column;
66
+ align-items: stretch;
67
+ overflow-y: scroll !important;
68
+ overflow-x: clip !important;
69
+ }
70
+
71
+ x-list[list-type="single"][scroll-orientation="horizontal"] {
72
+ flex-direction: row;
73
+ overflow-x: scroll !important;
74
+ overflow-y: clip !important;
75
+ }
76
+
77
+ x-list[list-type="single"][enable-scroll="false"] {
78
+ overflow-y: hidden !important;
79
+ }
80
+
81
+ x-list[list-type="single"][scroll-orientation="horizontal"][enable-scroll="false"] {
82
+ overflow-x: hidden !important;
83
+ }
84
+
85
+ list-item[sticky-top], list-item[sticky-bottom] {
86
+ position: sticky;
87
+ z-index: 1;
88
+ }
89
+
90
+ x-list[list-type="single"] > list-item[sticky-top],
91
+ x-list[list-type="single"] > lynx-wrapper > list-item[sticky-top] {
92
+ top: var(--list-item-sticky-offset);
93
+ }
94
+
95
+ x-list[list-type="single"] > list-item[sticky-bottom],
96
+ x-list[list-type="single"] > lynx-wrapper > list-item[sticky-bottom] {
97
+ bottom: var(--list-item-sticky-offset);
98
+ }
99
+
100
+ x-list[list-type="single"][scroll-orientation="horizontal"]
101
+ > list-item[sticky-top],
102
+ x-list[list-type="single"][scroll-orientation="horizontal"]
103
+ > lynx-wrapper
104
+ > list-item[sticky-top] {
105
+ top: unset;
106
+ left: var(--list-item-sticky-offset);
107
+ }
108
+
109
+ x-list[list-type="single"][scroll-orientation="horizontal"]
110
+ > list-item[sticky-bottom],
111
+ x-list[list-type="single"][scroll-orientation="horizontal"]
112
+ > lynx-wrapper
113
+ > list-item[sticky-bottom] {
114
+ bottom: unset;
115
+ right: var(--list-item-sticky-offset);
116
+ }
117
+
118
+ x-list[list-type="single"][item-snap],
119
+ x-list[list-type="single"][paging-enabled] {
120
+ scroll-snap-type: y mandatory;
121
+ scroll-snap-stop: always;
122
+ }
123
+
124
+ x-list[list-type="single"][item-snap][scroll-orientation="horizontal"],
125
+ x-list[list-type="single"][paging-enabled][scroll-orientation="horizontal"] {
126
+ scroll-snap-type: x mandatory;
127
+ }
128
+
129
+ x-list[list-type="single"][item-snap] > list-item,
130
+ x-list[list-type="single"][item-snap] > lynx-wrapper > list-item {
131
+ scroll-snap-align: start;
132
+ }
133
+
134
+ x-list[x-enable-scrolltoupper-event]::part(upper-threshold-observer),
135
+ x-list[x-enable-scrolltoupperedge-event]::part(upper-threshold-observer),
136
+ x-list[x-enable-scrolltolower-event]::part(lower-threshold-observer),
137
+ x-list[x-enable-scrolltoloweredge-event]::part(lower-threshold-observer) {
138
+ display: flex;
139
+ }
140
+
141
+ x-list::part(lower-threshold-observer) {
142
+ flex-direction: column-reverse;
143
+ }
144
+
145
+ x-list[vertical-orientation="false"]::part(lower-threshold-observer) {
146
+ flex-direction: row-reverse;
147
+ }
@@ -0,0 +1,56 @@
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
+ x-overlay-ng:not(:defined) {
7
+ display: none;
8
+ }
9
+ x-overlay-ng::part(dialog) {
10
+ padding: 0;
11
+ border: 0;
12
+ margin: 0;
13
+ width: 100%;
14
+ height: 100%;
15
+ max-width: 100%;
16
+ max-height: 100%;
17
+ background: transparent;
18
+ outline: none;
19
+ }
20
+ x-overlay-ng {
21
+ overflow: visible;
22
+ position: fixed;
23
+ display: contents;
24
+ top: 0;
25
+ width: 0;
26
+ contain: strict;
27
+ max-height: 0;
28
+ max-width: 0;
29
+ }
30
+ x-overlay-ng > *:not(:first-child) {
31
+ display: none !important;
32
+ }
33
+
34
+ x-overlay-ng > *:first-child, x-overlay-ng > lynx-wrapper > *:first-child {
35
+ display: flex;
36
+ top: 0;
37
+ left: 0;
38
+ position: absolute;
39
+ }
40
+
41
+ x-overlay-ng [event-through] {
42
+ pointer-events: none;
43
+ }
44
+
45
+ x-overlay-ng:not([level]), x-overlay-ng[level="1"] {
46
+ z-index: 4;
47
+ }
48
+ x-overlay-ng[level="2"] {
49
+ z-index: 3;
50
+ }
51
+ x-overlay-ng[level="3"] {
52
+ z-index: 2;
53
+ }
54
+ x-overlay-ng[level="4"] {
55
+ z-index: 1;
56
+ }
@@ -0,0 +1,61 @@
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
+ x-refresh-header, x-refresh-footer {
7
+ display: none;
8
+ }
9
+ x-refresh-view {
10
+ display: flex;
11
+ flex-direction: column;
12
+ box-sizing: border-box;
13
+ border-width: 0px;
14
+ position: relative;
15
+ flex-grow: 0;
16
+ flex-shrink: 1;
17
+ min-width: 0;
18
+ min-height: 0;
19
+ border-style: solid;
20
+ }
21
+ x-refresh-view:not(:defined) {
22
+ display: none;
23
+ }
24
+
25
+ x-refresh-view::part(container),
26
+ x-refresh-view::part(content),
27
+ x-refresh-view::part(slot) {
28
+ --lynx-display: inherit;
29
+ }
30
+
31
+ /* header */
32
+ x-refresh-view:not([enable-refresh="false"]) > x-refresh-header:first-of-type {
33
+ display: flex;
34
+ position: relative !important;
35
+ scroll-snap-align: none;
36
+ flex-shrink: 0;
37
+ }
38
+ /* ::part chrome 73, firefox 72, safari 13.4 */
39
+ x-refresh-view[enable-refresh="false"]::part(placeholder-top) {
40
+ display: none;
41
+ }
42
+
43
+ x-refresh-view > x-refresh-header[x-magnet-enable]:first-of-type {
44
+ scroll-snap-align: start !important;
45
+ }
46
+ x-refresh-view > x-refresh-footer[x-magnet-enable]:first-of-type {
47
+ scroll-snap-align: end !important;
48
+ }
49
+
50
+ /* footer */
51
+ x-refresh-view:not([enable-loadmore="false"]) > x-refresh-footer:first-of-type {
52
+ display: flex;
53
+ position: relative !important;
54
+ scroll-snap-align: none;
55
+ margin-top: auto;
56
+ flex-shrink: 0;
57
+ }
58
+
59
+ x-refresh-view[enable-loadmore="false"]::part(placeholder-bot) {
60
+ display: none;
61
+ }
@@ -0,0 +1,10 @@
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
+ x-svg {
7
+ contain: strict;
8
+ background: no-repeat center;
9
+ background-size: 100% 100%;
10
+ }
@@ -0,0 +1,319 @@
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
+ x-swiper {
7
+ display: flex;
8
+ flex-direction: row;
9
+ flex-wrap: nowrap !important;
10
+ overflow: hidden;
11
+ overflow-x: scroll;
12
+ overflow-y: clip;
13
+ scroll-snap-type: x mandatory;
14
+ scrollbar-width: none;
15
+ contain: content;
16
+ justify-content: flex-start;
17
+ timeline-scope:
18
+ --x-swiper-item-0,
19
+ --x-swiper-item-1,
20
+ --x-swiper-item-2,
21
+ --x-swiper-item-3,
22
+ --x-swiper-item-4;
23
+ }
24
+
25
+ x-swiper::part(content) {
26
+ --page-margin: 0px;
27
+ --next-margin: 0px;
28
+ --previous-margin: 0px;
29
+ }
30
+
31
+ x-swiper,
32
+ x-swiper::part(content),
33
+ x-swiper::part(slot),
34
+ x-swiper::part(slot-start),
35
+ x-swiper::part(slot-end) {
36
+ --lynx-display: linear;
37
+ --lynx-display-toggle: var(--lynx-display-linear);
38
+ }
39
+
40
+ /**
41
+ * The scroll-view would always be a linear container
42
+ * see linear.css
43
+ */
44
+ x-swiper > *, x-swiper > lynx-wrapper > * {
45
+ flex-shrink: 0;
46
+ flex-grow: calc(var(--lynx-linear-weight) / var(--lynx-linear-weight-sum));
47
+ flex-basis: var(--lynx-linear-weight-basis);
48
+ align-self: var(--align-self-column);
49
+ }
50
+
51
+ x-swiper::-webkit-scrollbar {
52
+ display: none;
53
+ }
54
+
55
+ x-swiper[vertical] {
56
+ overflow-x: clip;
57
+ overflow-y: scroll;
58
+ scroll-snap-type: y mandatory;
59
+ flex-direction: column !important;
60
+ --lynx-linear-orientation: vertical;
61
+ --lynx-linear-orientation-toggle: var(--lynx-linear-orientation-vertical);
62
+ }
63
+
64
+ x-swiper[bounces]:not([circular])::part(bounce-padding) {
65
+ display: initial;
66
+ }
67
+
68
+ x-swiper-item {
69
+ scroll-snap-align: start;
70
+ animation-duration: 10ms;
71
+ flex-shrink: 0 !important;
72
+ flex-grow: calc(var(--lynx-linear-weight) / var(--lynx-linear-weight-sum))
73
+ !important;
74
+ flex-basis: var(--lynx-linear-weight-basis) !important;
75
+ }
76
+
77
+ x-swiper-item:nth-child(n+5) {
78
+ contain: strict;
79
+ content-visibility: auto;
80
+ }
81
+
82
+ x-swiper-item:nth-child(1) {
83
+ view-timeline-name: --x-swiper-item-0;
84
+ }
85
+ x-swiper-item:nth-child(2) {
86
+ view-timeline-name: --x-swiper-item-1;
87
+ }
88
+ x-swiper-item:nth-child(3) {
89
+ view-timeline-name: --x-swiper-item-2;
90
+ }
91
+ x-swiper-item:nth-child(4) {
92
+ view-timeline-name: --x-swiper-item-3;
93
+ }
94
+ x-swiper-item:nth-child(5) {
95
+ view-timeline-name: --x-swiper-item-4;
96
+ }
97
+
98
+ x-swiper > *:not(x-swiper-item) {
99
+ display: none;
100
+ }
101
+
102
+ x-swiper > x-swiper-item {
103
+ width: calc(
104
+ 100% - 2 * var(--page-margin) - var(--previous-margin) - var(--next-margin)
105
+ ) !important;
106
+ height: 100%;
107
+ view-timeline-axis: inline;
108
+ animation-timeline: view(inline);
109
+ }
110
+
111
+ x-swiper[vertical] > x-swiper-item {
112
+ width: 100%;
113
+ height: calc(
114
+ 100% - 2 * var(--page-margin) - var(--previous-margin) - var(--next-margin)
115
+ ) !important;
116
+ view-timeline-axis: block;
117
+ animation-timeline: view(block);
118
+ }
119
+
120
+ /* circular */
121
+
122
+ x-swiper[circular] {
123
+ overflow-y: clip;
124
+ overflow-x: hidden;
125
+ scroll-snap-type: none;
126
+ }
127
+
128
+ x-swiper[circular][vertical] {
129
+ overflow-y: hidden;
130
+ overflow-x: clip;
131
+ }
132
+ /* indicator */
133
+ x-swiper[indicator-dots]::part(indicator-container) {
134
+ display: none;
135
+ }
136
+
137
+ x-swiper::part(indicator-container) {
138
+ --indicator-size: 0.6rem;
139
+ --indicator-container-margin: 0.5rem;
140
+ display: flex;
141
+ flex-direction: row;
142
+ justify-content: center;
143
+ align-items: stretch;
144
+ overflow: clip;
145
+ position: absolute;
146
+ left: 0;
147
+ bottom: 0;
148
+ z-index: 100;
149
+ width: 100%;
150
+ height: var(--indicator-size);
151
+ contain: strict;
152
+ margin-bottom: var(--indicator-container-margin);
153
+ --indicator-color: #ffffff4d;
154
+ --indicator-active-color: white;
155
+ }
156
+
157
+ x-swiper[vertical]::part(indicator-container) {
158
+ flex-direction: column;
159
+ left: unset;
160
+ top: 0;
161
+ right: 0;
162
+ height: 100%;
163
+ width: var(--indicator-size);
164
+ margin-bottom: 0;
165
+ margin-right: var(--indicator-container-margin);
166
+ }
167
+
168
+ /* scroll driven animation, chromium 115, firefox positive, safari positive */
169
+ x-swiper::part(indicator-item) {
170
+ background-color: var(--indicator-color);
171
+ flex: 0 0 var(--indicator-size);
172
+ margin: 0 calc(var(--indicator-size) / 5) 0 calc(var(--indicator-size) / 5);
173
+ border-radius: 100%;
174
+ animation-name: indicator-dot;
175
+ animation-duration: 100ms;
176
+ }
177
+
178
+ x-swiper[vertical]::part(indicator-item) {
179
+ margin: calc(var(--indicator-size) / 5) 0 calc(var(--indicator-size) / 5) 0;
180
+ }
181
+
182
+ /* mode carousel */
183
+ x-swiper[mode="carousel"]:not([vertical]) > x-swiper-item {
184
+ width: calc(
185
+ 80% - 2 * var(--page-margin) - var(--previous-margin) - var(--next-margin)
186
+ ) !important;
187
+ }
188
+
189
+ x-swiper[mode="carousel"][vertical] > x-swiper-item {
190
+ height: calc(
191
+ 80% - 2 * var(--page-margin) - var(--previous-margin) - var(--next-margin)
192
+ ) !important;
193
+ }
194
+
195
+ x-swiper[mode="carousel"]:not([circular]) > x-swiper-item:last-child {
196
+ margin-right: 20%;
197
+ }
198
+
199
+ @media screen and (-webkit-min-device-pixel-ratio: 0) {
200
+ /* webkit bug */
201
+ x-swiper[mode="carousel"]::part(content)::after {
202
+ content: "";
203
+ padding-right: 20%;
204
+ }
205
+ }
206
+
207
+ /* mode coverflow */
208
+ x-swiper[mode="coverflow"]::part(content) {
209
+ perspective: 200px;
210
+ }
211
+ x-swiper[mode="coverflow"] > x-swiper-item {
212
+ scroll-snap-align: center;
213
+ animation-name: x-swiper-coverflow;
214
+ transform-style: preserve-3d;
215
+ z-index: 0;
216
+ }
217
+ x-swiper[mode="coverflow"]:not([vertical]) > x-swiper-item {
218
+ animation-name: x-swiper-coverflow-horizontal;
219
+ width: calc(
220
+ 60% - 2 * var(--page-margin) - var(--previous-margin) - var(--next-margin)
221
+ ) !important;
222
+ }
223
+ x-swiper[mode="coverflow"][vertical] > x-swiper-item {
224
+ animation-name: x-swiper-coverflow-vertical;
225
+ height: calc(
226
+ 60% - 2 * var(--page-margin) - var(--previous-margin) - var(--next-margin)
227
+ ) !important;
228
+ }
229
+ x-swiper[mode="coverflow"]:not([circular]):not([vertical])
230
+ > x-swiper-item:first-child {
231
+ margin-left: 20%;
232
+ }
233
+ x-swiper[mode="coverflow"]:not([circular]):not([vertical])
234
+ > x-swiper-item:last-child {
235
+ margin-right: 20%;
236
+ }
237
+ x-swiper[mode="coverflow"][vertical]:not([circular])
238
+ > x-swiper-item:first-child {
239
+ margin-top: 20%;
240
+ }
241
+ x-swiper[mode="coverflow"][vertical]:not([circular])
242
+ > x-swiper-item:last-child {
243
+ margin-bottom: 20%;
244
+ }
245
+
246
+ @keyframes x-swiper-coverflow-horizontal {
247
+ 25% {
248
+ transform: rotateY(-50deg) scale(0.8);
249
+ }
250
+ 45%, 55% {
251
+ transform: rotateY(0deg) scale(1);
252
+ z-index: 1;
253
+ }
254
+ 100% {
255
+ transform: rotateY(40deg) scale(0.8);
256
+ }
257
+ }
258
+ @keyframes x-swiper-coverflow-vertical {
259
+ 25% {
260
+ transform: rotateX(-50deg) scale(0.8);
261
+ }
262
+ 45%, 55% {
263
+ transform: rotateX(0deg) scale(1);
264
+ z-index: 1;
265
+ }
266
+ 100% {
267
+ transform: rotateX(40deg) scale(0.8);
268
+ }
269
+ }
270
+
271
+ /* mode flat-coverflow */
272
+
273
+ x-swiper[mode="flat-coverflow"] > x-swiper-item {
274
+ scroll-snap-align: center;
275
+ }
276
+
277
+ x-swiper[mode="flat-coverflow"]:not([vertical]) > x-swiper-item {
278
+ width: 60% !important;
279
+ }
280
+ x-swiper[mode="flat-coverflow"]:not([circular]):not([vertical])
281
+ > x-swiper-item:first-child {
282
+ margin-left: 20%;
283
+ }
284
+ x-swiper[mode="flat-coverflow"]:not([circular]):not([vertical])
285
+ > x-swiper-item:last-child {
286
+ margin-right: 20%;
287
+ }
288
+
289
+ x-swiper[mode="flat-coverflow"][vertical] > x-swiper-item {
290
+ height: 60% !important;
291
+ }
292
+ x-swiper[mode="flat-coverflow"][vertical]:not([circular])
293
+ > x-swiper-item:first-child {
294
+ margin-top: 20%;
295
+ }
296
+ x-swiper[mode="flat-coverflow"][vertical]:not([circular])
297
+ > x-swiper-item:last-child {
298
+ margin-bottom: 20%;
299
+ }
300
+
301
+ /* mode carry */
302
+ x-swiper[mode="carry"] > x-swiper-item {
303
+ scroll-snap-align: center;
304
+ width: 100% !important;
305
+ animation-name: x-swiper-carry;
306
+ }
307
+
308
+ @keyframes x-swiper-carry {
309
+ 0% {
310
+ transform: scale(0.6);
311
+ }
312
+ 45%, 55% {
313
+ transform: scale(1);
314
+ z-index: 1;
315
+ }
316
+ 100% {
317
+ transform: scale(0.6);
318
+ }
319
+ }