PluginProbe ʕ •ᴥ•ʔ
Presto Player / trunk
Presto Player vtrunk
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 1 week ago index.scss 1 week ago
index.js
121 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 "./index.scss";
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 className="presto-toolbar__button"
34 >
35 <div
36 className={`presto-toolbar__badge ${customMeta ? 'is-active' : ''}`}
37 ></div>
38 {__("Instant Video Page", "presto-player")}
39 <div
40 className="presto-toolbar__icon"
41 >
42 <svg
43 xmlns="http://www.w3.org/2000/svg"
44 viewBox="0 0 24 24"
45 fill="currentColor"
46 className="w-6 h-6"
47 >
48 <path
49 fillRule="evenodd"
50 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"
51 clipRule="evenodd"
52 />
53 </svg>
54 </div>
55 </Button>
56 {isVisible && (
57 <Popover
58 placement="bottom-end"
59 shift
60 anchor={anchorRef.current}
61 resize={false}
62 onFocusOutside={toggleVisible}
63 className="pp-instant-video-dropdown"
64 >
65 <div
66 className="presto-toolbar__popover-content"
67 >
68 <RadioControl
69 label={__("Visibility", "presto-player")}
70 selected={customMeta ? "public" : "private"}
71 options={[
72 { label: __("Published", "presto-player"), value: "public" },
73 { label: __("Unpublished", "presto-player"), value: "private" },
74 ]}
75 onChange={onCustomMetaChange}
76 className="presto-toolbar__radio"
77 />
78 <p
79 className="presto-toolbar__description"
80 >
81 {__(
82 "An instant video page gives you an instant shareable page for your media.",
83 "presto-player"
84 )}
85 </p>
86 </div>
87 </Popover>
88 )}
89 </div>
90 );
91 };
92 (function (window, wp) {
93 const rootDiv = document.createElement("div");
94 rootDiv.classList.add("presto-player-edit-root");
95
96 // check if gutenberg's editor root element is present.
97 const editorEl = document.getElementById("editor");
98 if (!editorEl) {
99 // do nothing if there's no gutenberg root element on page.
100 return;
101 }
102
103 const unsubscribe = wp.data.subscribe(function () {
104 setTimeout(function () {
105 render(<EditApp />, rootDiv);
106 if (!document.querySelector(".presto-player-edit-root")) {
107 const toolbalEl =
108 editorEl.querySelector(".edit-post-header__settings") ||
109 editorEl.querySelector(".editor-header__settings");
110 if (toolbalEl instanceof HTMLElement) {
111 toolbalEl.prepend(rootDiv);
112 }
113 }
114 }, 1);
115 });
116 // unsubscribe
117 if (document.querySelector(".presto-player-edit-root")) {
118 unsubscribe();
119 }
120 })(window, wp);
121