@rxdrag/website-lib-core 0.0.127 → 0.0.128

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 (138) hide show
  1. package/README.md +1 -1
  2. package/index.ts +1 -1
  3. package/package.json +4 -4
  4. package/src/astro/animation.ts +146 -146
  5. package/src/astro/background.ts +82 -86
  6. package/src/astro/base.ts +7 -0
  7. package/src/astro/business.ts +13 -0
  8. package/src/astro/grid/consts.ts +80 -80
  9. package/src/astro/grid/index.ts +2 -2
  10. package/src/astro/grid/types.ts +35 -35
  11. package/src/astro/image.ts +239 -239
  12. package/src/astro/index.ts +12 -10
  13. package/src/astro/link.ts +20 -21
  14. package/src/astro/media.ts +123 -123
  15. package/src/astro/nav.ts +13 -13
  16. package/src/astro/section/index.ts +7 -12
  17. package/src/component-logic/index.ts +1 -1
  18. package/src/component-logic/link-client.ts +32 -32
  19. package/src/component-logic/link.ts +61 -61
  20. package/src/design-tokens.ts +160 -160
  21. package/src/entify/Entify.ts +533 -530
  22. package/src/entify/IEntify.ts +151 -177
  23. package/src/entify/index.ts +4 -4
  24. package/src/entify/lib/collectCategoryIds.ts +20 -20
  25. package/src/entify/lib/fulltextSearch.ts +63 -62
  26. package/src/entify/lib/langFields.ts +14 -14
  27. package/src/entify/lib/listToTree.ts +23 -23
  28. package/src/entify/lib/newAvatarQueryOptions.ts +4 -4
  29. package/src/entify/lib/newOgImageQueryOptions.ts +5 -5
  30. package/src/entify/lib/newQueryPostOptions.ts +42 -45
  31. package/src/entify/lib/newQueryProductOptions.ts +96 -98
  32. package/src/entify/lib/newQueryProductsMediaOptions.ts +28 -28
  33. package/src/entify/lib/queryAllProducts.ts +40 -40
  34. package/src/entify/lib/queryBulletin.ts +28 -16
  35. package/src/entify/lib/queryEntityList.ts +41 -41
  36. package/src/entify/lib/queryFeaturedProducts.ts +69 -68
  37. package/src/entify/lib/queryLangs.ts +36 -60
  38. package/src/entify/lib/queryLatestPosts.ts +92 -91
  39. package/src/entify/lib/queryOneEntity.ts +63 -63
  40. package/src/entify/lib/queryOneMedia.ts +27 -27
  41. package/src/entify/lib/queryOnePostById.ts +21 -21
  42. package/src/entify/lib/queryOnePostBySlug.ts +40 -39
  43. package/src/entify/lib/queryOnePostCategoryBySlug.ts +35 -35
  44. package/src/entify/lib/queryOneProductById.ts +20 -20
  45. package/src/entify/lib/queryOneProductBySlug.ts +53 -52
  46. package/src/entify/lib/queryOneProductCategoryBySlug.ts +50 -49
  47. package/src/entify/lib/queryOneTheme.ts +54 -72
  48. package/src/entify/lib/queryOneUser.ts +38 -38
  49. package/src/entify/lib/queryPostCategories.ts +67 -67
  50. package/src/entify/lib/queryPostSlugs.ts +37 -37
  51. package/src/entify/lib/queryPosts.ts +175 -174
  52. package/src/entify/lib/queryProductCategories.ts +59 -59
  53. package/src/entify/lib/queryProducts.ts +145 -144
  54. package/src/entify/lib/queryProductsInMenu.ts +45 -45
  55. package/src/entify/lib/queryTagCategories.ts +58 -58
  56. package/src/entify/lib/queryTags.ts +57 -57
  57. package/src/entify/lib/queryUserIds.ts +24 -24
  58. package/src/entify/lib/queryUserPosts.ts +80 -79
  59. package/src/entify/lib/queryWebSiteSettings.ts +28 -28
  60. package/src/entify/lib/queryWebsite.ts +43 -43
  61. package/src/entify/lib/sendEmail.ts +7 -7
  62. package/src/entify/lib/toQueryOptions.ts +19 -19
  63. package/src/entify/lib/upsertEntity.ts +8 -8
  64. package/src/entify/types/index.ts +1 -1
  65. package/src/entify/types/utils.ts +11 -6
  66. package/src/entify/types/variables.ts +5 -6
  67. package/src/entify/view-model/funcs.ts +230 -230
  68. package/src/entify/view-model/index.ts +1 -1
  69. package/src/entify/view-model/models.ts +135 -135
  70. package/src/global.d.ts +7 -7
  71. package/src/index.ts +8 -8
  72. package/src/lib/formatDate.ts +15 -15
  73. package/src/lib/index.ts +3 -3
  74. package/src/lib/pagination.ts +114 -114
  75. package/src/lib/utils.ts +135 -135
  76. package/src/react/components/Analytics/eventHandlers.ts +173 -173
  77. package/src/react/components/Analytics/index.tsx +21 -21
  78. package/src/react/components/Analytics/singleton.ts +214 -214
  79. package/src/react/components/Analytics/tracking.ts +221 -221
  80. package/src/react/components/Analytics/types.ts +60 -60
  81. package/src/react/components/Analytics/utils.ts +95 -95
  82. package/src/react/components/AttachmentIcon/index.tsx +53 -53
  83. package/src/react/components/BackgroundHlsVideoPlayer.tsx +97 -97
  84. package/src/react/components/BackgroundVideoPlayer.tsx +32 -32
  85. package/src/react/components/Bulletin.tsx +30 -30
  86. package/src/react/components/ContactForm/ContactForm.tsx +289 -289
  87. package/src/react/components/ContactForm/Input.tsx +48 -48
  88. package/src/react/components/ContactForm/Input2.tsx +59 -59
  89. package/src/react/components/ContactForm/Submit.tsx +48 -48
  90. package/src/react/components/ContactForm/TelInput.tsx +215 -215
  91. package/src/react/components/ContactForm/Textarea.tsx +48 -48
  92. package/src/react/components/ContactForm/Textarea2.tsx +89 -89
  93. package/src/react/components/ContactForm/funcs.ts +64 -64
  94. package/src/react/components/ContactForm/index.ts +7 -7
  95. package/src/react/components/ContactForm/types.ts +68 -68
  96. package/src/react/components/GoogleConsent/CookieItemPanel.tsx +80 -80
  97. package/src/react/components/GoogleConsent/CumtomizedModal.tsx +148 -148
  98. package/src/react/components/GoogleConsent/GoogleConsent.tsx +100 -100
  99. package/src/react/components/GoogleConsent/gtags.ts +67 -67
  100. package/src/react/components/GoogleConsent/index.ts +2 -2
  101. package/src/react/components/GoogleConsent/types.ts +18 -18
  102. package/src/react/components/GoogleConsent//345/217/202/350/200/203.md +4 -4
  103. package/src/react/components/Icon/index.tsx +19 -19
  104. package/src/react/components/Medias/MainMedia.tsx +257 -257
  105. package/src/react/components/Medias/Thumbnail.tsx +62 -62
  106. package/src/react/components/Medias/VideoPlayer.tsx +114 -114
  107. package/src/react/components/Medias/index.tsx +271 -271
  108. package/src/react/components/ProductCard/ProductCard.tsx +24 -24
  109. package/src/react/components/ProductCard/ProductCta/index.tsx +28 -28
  110. package/src/react/components/ProductCard/ProductCta/style.css +3 -3
  111. package/src/react/components/ProductCard/ProductDescription/index.tsx +12 -12
  112. package/src/react/components/ProductCard/ProductDescription/style.css +5 -5
  113. package/src/react/components/ProductCard/ProductMedia/index.tsx +35 -35
  114. package/src/react/components/ProductCard/ProductMedia/style.css +5 -5
  115. package/src/react/components/ProductCard/ProductTitle/index.tsx +7 -7
  116. package/src/react/components/ProductCard/ProductTitle/style.css +3 -3
  117. package/src/react/components/ProductCard/ProductView.tsx +36 -36
  118. package/src/react/components/ProductCard/index.ts +4 -4
  119. package/src/react/components/ProductCard/useQueryProduct.ts +32 -32
  120. package/src/react/components/ReactModalTrigger.tsx +28 -28
  121. package/src/react/components/ReactVideoPlayer.tsx +29 -52
  122. package/src/react/components/RichTextOutline/index.tsx +75 -75
  123. package/src/react/components/RichTextOutline/useAnchorScroll.ts +23 -23
  124. package/src/react/components/Scroller.tsx +39 -39
  125. package/src/react/components/SearchInput.tsx +21 -21
  126. package/src/react/components/Share/index.tsx +86 -86
  127. package/src/react/components/Share/socials.tsx +79 -77
  128. package/src/react/components/Share//350/265/204/346/226/231.md +7 -7
  129. package/src/react/components/ToTop.tsx +72 -72
  130. package/src/react/components/VideoPlayIcon.tsx +43 -0
  131. package/src/react/components/all.ts +38 -38
  132. package/src/react/components/index.ts +16 -16
  133. package/src/robots.ts +4 -4
  134. package/src/entify/lib/newPageMetaOptions.ts +0 -18
  135. package/src/entify/lib/newQueryPageOptions.ts +0 -14
  136. package/src/entify/lib/queryOneIcon.ts +0 -27
  137. package/src/entify/lib/queryPageBySlug.ts +0 -43
  138. package/src/entify/lib/queryPageByType.ts +0 -44
@@ -1,114 +1,114 @@
1
- import { Media } from "@rxdrag/rxcms-models";
2
- import React, { useEffect, useRef, useState } from "react";
3
- import Hls from "hls.js";
4
- import clsx from "clsx";
5
-
6
- export function VideoPlayer(props: {
7
- media: Media;
8
- size?: "normal" | "small";
9
- playButtonClass?: string;
10
- }) {
11
- const { media, size = "normal", playButtonClass } = props;
12
- const videoRef = useRef<HTMLVideoElement>(null);
13
- const hlsRef = useRef<Hls | null>(null);
14
- const [isPlaying, setIsPlaying] = useState(false);
15
-
16
- const handlePlayClick = React.useCallback(
17
- (e: React.MouseEvent) => {
18
- e.stopPropagation();
19
- if (videoRef.current) {
20
- if (isPlaying) {
21
- videoRef.current.pause();
22
- } else {
23
- videoRef.current.play();
24
- }
25
- }
26
- },
27
- [isPlaying]
28
- );
29
-
30
- useEffect(() => {
31
- if (!videoRef.current || !media.file?.original) return;
32
-
33
- const video = videoRef.current;
34
- const videoUrl = media.file.original;
35
-
36
- const handlePlay = () => {
37
- setIsPlaying(true);
38
- };
39
-
40
- const handlePause = () => {
41
- setIsPlaying(false);
42
- };
43
-
44
- video.addEventListener("play", handlePlay);
45
- video.addEventListener("pause", handlePause);
46
-
47
- if (media.storageType === "cloudflare_stream") {
48
- if (!Hls.isSupported()) {
49
- if (video.canPlayType("application/vnd.apple.mpegurl")) {
50
- video.src = videoUrl;
51
- }
52
- } else {
53
- const hls = new Hls({
54
- enableWorker: true,
55
- });
56
-
57
- hls.loadSource(videoUrl);
58
- hls.attachMedia(video);
59
- hlsRef.current = hls;
60
- }
61
- } else {
62
- video.src = videoUrl;
63
- }
64
-
65
- return () => {
66
- video.removeEventListener("play", handlePlay);
67
- video.removeEventListener("pause", handlePause);
68
- if (hlsRef.current) {
69
- hlsRef.current.destroy();
70
- hlsRef.current = null;
71
- }
72
- };
73
- }, [media.file?.original, media.storageType]);
74
-
75
- return (
76
- <div className="relative w-full h-full group cursor-pointer" onClick={handlePlayClick}>
77
- <video
78
- ref={videoRef}
79
- preload="metadata"
80
- poster={media.file?.thumbnail}
81
- className="absolute inset-0 w-full h-full object-cover"
82
- controls={false}
83
- playsInline
84
- />
85
- {!isPlaying && (
86
- <div className="absolute inset-0 flex items-center justify-center z-10 bg-black/10 group-hover:bg-black/20 transition-colors">
87
- <div
88
- className={clsx(
89
- "rounded-full bg-white/90 hover:bg-white flex items-center justify-center shadow-lg transition-all hover:scale-110 backdrop-blur-sm",
90
- size === "small" ? "w-8 h-8" : "w-14 h-14",
91
- playButtonClass
92
- )}
93
- >
94
- <svg
95
- xmlns="http://www.w3.org/2000/svg"
96
- viewBox="0 0 24 24"
97
- fill="currentColor"
98
- className={clsx(
99
- "text-gray-900 ml-1",
100
- size === "small" ? "w-4 h-4" : "w-8 h-8"
101
- )}
102
- >
103
- <path
104
- fillRule="evenodd"
105
- d="M4.5 5.653c0-1.426 1.529-2.33 2.779-1.643l11.54 6.348c1.295.712 1.295 2.573 0 3.248L7.28 19.987C6.03 20.673 4.5 19.77 4.5 18.562V5.653z"
106
- clipRule="evenodd"
107
- />
108
- </svg>
109
- </div>
110
- </div>
111
- )}
112
- </div>
113
- );
114
- }
1
+ import { Media } from "@rxdrag/rxcms-models";
2
+ import React, { useEffect, useRef, useState } from "react";
3
+ import Hls from "hls.js";
4
+ import clsx from "clsx";
5
+
6
+ export function VideoPlayer(props: {
7
+ media: Media;
8
+ size?: "normal" | "small";
9
+ playButtonClass?: string;
10
+ }) {
11
+ const { media, size = "normal", playButtonClass } = props;
12
+ const videoRef = useRef<HTMLVideoElement>(null);
13
+ const hlsRef = useRef<Hls | null>(null);
14
+ const [isPlaying, setIsPlaying] = useState(false);
15
+
16
+ const handlePlayClick = React.useCallback(
17
+ (e: React.MouseEvent) => {
18
+ e.stopPropagation();
19
+ if (videoRef.current) {
20
+ if (isPlaying) {
21
+ videoRef.current.pause();
22
+ } else {
23
+ videoRef.current.play();
24
+ }
25
+ }
26
+ },
27
+ [isPlaying]
28
+ );
29
+
30
+ useEffect(() => {
31
+ if (!videoRef.current || !media.file?.original) return;
32
+
33
+ const video = videoRef.current;
34
+ const videoUrl = media.file.original;
35
+
36
+ const handlePlay = () => {
37
+ setIsPlaying(true);
38
+ };
39
+
40
+ const handlePause = () => {
41
+ setIsPlaying(false);
42
+ };
43
+
44
+ video.addEventListener("play", handlePlay);
45
+ video.addEventListener("pause", handlePause);
46
+
47
+ if (media.storageType === "cloudflare_stream") {
48
+ if (!Hls.isSupported()) {
49
+ if (video.canPlayType("application/vnd.apple.mpegurl")) {
50
+ video.src = videoUrl;
51
+ }
52
+ } else {
53
+ const hls = new Hls({
54
+ enableWorker: true,
55
+ });
56
+
57
+ hls.loadSource(videoUrl);
58
+ hls.attachMedia(video);
59
+ hlsRef.current = hls;
60
+ }
61
+ } else {
62
+ video.src = videoUrl;
63
+ }
64
+
65
+ return () => {
66
+ video.removeEventListener("play", handlePlay);
67
+ video.removeEventListener("pause", handlePause);
68
+ if (hlsRef.current) {
69
+ hlsRef.current.destroy();
70
+ hlsRef.current = null;
71
+ }
72
+ };
73
+ }, [media.file?.original, media.storageType]);
74
+
75
+ return (
76
+ <div className="relative w-full h-full group cursor-pointer" onClick={handlePlayClick}>
77
+ <video
78
+ ref={videoRef}
79
+ preload="metadata"
80
+ poster={media.file?.thumbnail}
81
+ className="absolute inset-0 w-full h-full object-cover"
82
+ controls={false}
83
+ playsInline
84
+ />
85
+ {!isPlaying && (
86
+ <div className="absolute inset-0 flex items-center justify-center z-10 bg-black/10 group-hover:bg-black/20 transition-colors">
87
+ <div
88
+ className={clsx(
89
+ "rounded-full bg-white/90 hover:bg-white flex items-center justify-center shadow-lg transition-all hover:scale-110 backdrop-blur-sm",
90
+ size === "small" ? "w-8 h-8" : "w-14 h-14",
91
+ playButtonClass
92
+ )}
93
+ >
94
+ <svg
95
+ xmlns="http://www.w3.org/2000/svg"
96
+ viewBox="0 0 24 24"
97
+ fill="currentColor"
98
+ className={clsx(
99
+ "text-gray-900 ml-1",
100
+ size === "small" ? "w-4 h-4" : "w-8 h-8"
101
+ )}
102
+ >
103
+ <path
104
+ fillRule="evenodd"
105
+ d="M4.5 5.653c0-1.426 1.529-2.33 2.779-1.643l11.54 6.348c1.295.712 1.295 2.573 0 3.248L7.28 19.987C6.03 20.673 4.5 19.77 4.5 18.562V5.653z"
106
+ clipRule="evenodd"
107
+ />
108
+ </svg>
109
+ </div>
110
+ </div>
111
+ )}
112
+ </div>
113
+ );
114
+ }