PluginProbe ʕ •ᴥ•ʔ
Presto Player / 3.0.0-beta1
Presto Player v3.0.0-beta1
4.5.0 4.4.1 4.4.0 4.3.3 4.3.2 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 / toolbar / index.js
presto-player / src / admin / toolbar Last commit date
index.js 2 years ago
index.js
155 lines
1 import { Button, Popover, RadioControl } from "@wordpress/components";
2 import { useSelect, useDispatch } from "@wordpress/data";
3 import { render, useState, useRef } from "@wordpress/element";
4 import { __ } from "@wordpress/i18n";
5 import { css, jsx } from "@emotion/core";
6
7 const EditApp = () => {
8 const META_KEY = "presto_player_instant_video_pages_enabled";
9 const { editPost } = useDispatch("core/editor");
10 const meta = useSelect((select) =>
11 select("core/editor").getEditedPostAttribute("meta")
12 );
13
14 let customMeta = meta && meta[META_KEY] ? meta[META_KEY] : false;
15
16 const onCustomMetaChange = (newValue) => {
17 editPost({
18 meta: { ...meta, [META_KEY]: newValue === "public" ? true : false },
19 });
20 };
21
22 const [isVisible, setIsVisible] = useState(false);
23 const anchorRef = useRef(null);
24 const toggleVisible = () => {
25 setIsVisible((state) => !state);
26 };
27
28 return (
29 <div>
30 <Button
31 variant="tertiary"
32 onClick={toggleVisible}
33 css={css`
34 display: flex;
35 justify-content: center;
36 gap: 0;
37 align-items: center;
38 padding: 4px;
39 `}
40 >
41 <div
42 className="pp-instant-video-badge"
43 css={css`
44 width: 6px;
45 height: 6px;
46 border-radius: 50%;
47 margin: 10px;
48 background-color: ${customMeta ? "#02b80d" : "#c49000"};
49 `}
50 ></div>
51 {__("Instant Video Page", "presto-player")}
52 <div
53 css={css`
54 width: 12px;
55 line-height: 0;
56 margin: 8px;
57 `}
58 >
59 <svg
60 xmlns="http://www.w3.org/2000/svg"
61 viewBox="0 0 24 24"
62 fill="currentColor"
63 className="w-6 h-6"
64 >
65 <path
66 fillRule="evenodd"
67 d="M12.53 16.28a.75.75 0 0 1-1.06 0l-7.5-7.5a.75.75 0 0 1 1.06-1.06L12 14.69l6.97-6.97a.75.75 0 1 1 1.06 1.06l-7.5 7.5Z"
68 clipRule="evenodd"
69 />
70 </svg>
71 </div>
72 </Button>
73 {isVisible && (
74 <Popover
75 placement="bottom-end"
76 shift
77 anchor={anchorRef.current}
78 resize={false}
79 onFocusOutside={toggleVisible}
80 className="pp-instant-video-dropdown"
81 >
82 <div
83 css={css`
84 padding: 2em;
85 width: 250px;
86 max-width: 100vw;
87 overflow: auto;
88 display: grid;
89 gap: 20px;
90 `}
91 >
92 <RadioControl
93 label={__("Visibility", "presto-player")}
94 selected={customMeta ? "public" : "private"}
95 options={[
96 { label: "Published", value: "public" },
97 { label: "Unpublished", value: "private" },
98 ]}
99 onChange={onCustomMetaChange}
100 css={css`
101 & .components-flex {
102 gap: 12px;
103 }
104 & .components-radio-control__input {
105 margin-right: 10px;
106 }
107 `}
108 />
109 <p
110 css={css`
111 margin: 0;
112 font-size: 12px;
113 font-style: normal;
114 color: rgb(117, 117, 117);
115 `}
116 >
117 {__(
118 "An instant video page gives you an instant shareable page for your media.",
119 "presto-player"
120 )}
121 </p>
122 </div>
123 </Popover>
124 )}
125 </div>
126 );
127 };
128 (function (window, wp) {
129 const rootDiv = document.createElement("div");
130 rootDiv.classList.add("presto-player-edit-root");
131
132 // check if gutenberg's editor root element is present.
133 const editorEl = document.getElementById("editor");
134 if (!editorEl) {
135 // do nothing if there's no gutenberg root element on page.
136 return;
137 }
138
139 const unsubscribe = wp.data.subscribe(function () {
140 setTimeout(function () {
141 render(<EditApp />, rootDiv);
142 if (!document.querySelector(".presto-player-edit-root")) {
143 const toolbalEl = editorEl.querySelector(".edit-post-header__settings");
144 if (toolbalEl instanceof HTMLElement) {
145 toolbalEl.prepend(rootDiv);
146 }
147 }
148 }, 1);
149 });
150 // unsubscribe
151 if (document.querySelector(".presto-player-edit-root")) {
152 unsubscribe();
153 }
154 })(window, wp);
155