PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.1
Presto Player v4.3.1
4.3.1 4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / src / admin / blocks / shared / ProvidersPlaceholder / ProvidersPlaceholder.js
presto-player / src / admin / blocks / shared / ProvidersPlaceholder Last commit date
components 2 weeks ago ProvidersPlaceholder.js 2 weeks ago ProvidersPlaceholder.scss 2 weeks ago icons.js 2 years ago index.js 10 months ago
ProvidersPlaceholder.js
130 lines
1 import {
2 Placeholder,
3 Flex,
4 FlexItem,
5 Spinner,
6 Button,
7 MenuItem,
8 } from "@wordpress/components";
9 import "./ProvidersPlaceholder.scss";
10 import { __ } from "@wordpress/i18n";
11 import { useDispatch } from "@wordpress/data";
12 import VideoProvider from "./components/VideoProvider";
13 import providerIcons from "./icons";
14 import Separator from "./components/Separator";
15 import SelectMediaDropdown from "../components/SelectMediaDropdown";
16 import VideoIcon from "../components/VideoIcon";
17
18 const ProvidersPlaceholder = ({
19 loading,
20 onSelect,
21 onSelectMedia = null,
22 providers = [],
23 }) => {
24 const { dispatch } = useDispatch();
25
26 if (loading) {
27 return (
28 <Placeholder className="presto-providers-placeholder--loading">
29 <Spinner />
30 </Placeholder>
31 );
32 }
33
34 return (
35 <Placeholder
36 className="presto-providers-placeholder"
37 label={
38 <>
39 <Flex
40 direction="column"
41 className="presto-providers-placeholder__label"
42 gap="16px"
43 >
44 <Flex justify="flex-start">
45 {providerIcons?.mediaHubBlock}
46 <h1 className="presto-providers-placeholder__title">
47 {__("Presto Player", "presto-player")}
48 </h1>
49 </Flex>
50 <Flex>
51 <p className="presto-providers-placeholder__description">
52 {__("Choose a video type to get started.", "presto-player")}
53 </p>
54 </Flex>
55 </Flex>
56 </>
57 }
58 >
59 <Flex
60 direction="column"
61 className="presto-providers-placeholder__grid"
62 gap="20px"
63 >
64 <Flex
65 justify={"start"}
66 className="presto-providers-placeholder__row"
67 wrap="wrap"
68 gap="20px"
69 >
70 {(providers || []).map((provider) => (
71 <FlexItem key={provider?.id}>
72 <VideoProvider
73 provider={provider?.name}
74 onSelect={() =>
75 provider?.hasAccess
76 ? onSelect(provider?.id)
77 : dispatch("presto-player/player").setProModal(true)
78 }
79 icon={provider?.icon}
80 pro={provider?.premium && !provider?.hasAccess}
81 />
82 </FlexItem>
83 ))}
84 </Flex>
85 {onSelectMedia && (
86 <>
87 <Separator icon={providerIcons.line} />
88 <Flex>
89 <SelectMediaDropdown
90 popoverProps={{ placement: "bottom-start" }}
91 onSelect={({ id }) => onSelectMedia(id)}
92 renderToggle={({ isOpen, onToggle }) => (
93 <Button
94 variant="primary"
95 onClick={onToggle}
96 aria-expanded={isOpen}
97 >
98 {__("Select media", "presto-player")}
99 </Button>
100 )}
101 renderItem={({ item, onSelect }) => {
102 const { id, title, details } = item;
103 const { type, name } = details || {};
104 const thumbnail =
105 item?._embedded?.["wp:featuredmedia"]?.[0]?.source_url ||
106 "";
107 return (
108 <MenuItem
109 icon={<VideoIcon thumbnail={thumbnail} type={type} />}
110 iconPosition="left"
111 suffix={type ? name : __("Choose media", "presto-player")}
112 onClick={() => onSelect(item)}
113 key={id}
114 className="presto-providers-placeholder__menu-item"
115 >
116 {title || __("Untitled", "presto-player")}
117 </MenuItem>
118 );
119 }}
120 />
121 </Flex>
122 </>
123 )}
124 </Flex>
125 </Placeholder>
126 );
127 };
128
129 export default ProvidersPlaceholder;
130