PluginProbe ʕ •ᴥ•ʔ
Presto Player / 1.5.13
Presto Player v1.5.13
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 / blocks / shared / chapters / components / Chapter.js
presto-player / src / admin / blocks / shared / chapters / components Last commit date
Chapter.js 5 years ago
Chapter.js
94 lines
1 const { __ } = wp.i18n;
2 const { Flex, FlexItem, FlexBlock, TextControl, Button } = wp.components;
3 const { useState } = wp.element;
4
5 const Chapter = ({
6 update,
7 add,
8 remove,
9 className,
10 time,
11 title,
12 disabled,
13 showNotice,
14 }) => {
15 const [draftTime, setDraftTime] = useState(time);
16
17 const sanitizeTime = (time) => {
18 let draft = time;
19 // remove any letters
20 draft = draft.replace(/[^\d\d:\d\d.-]/g, "");
21 // make sure we have :
22 if (!draft.includes(":")) {
23 return `${draft}:00`;
24 }
25
26 // must have something before :00
27 if (draft.substr(0, draft.indexOf(":")).length === 0) {
28 draft = `0${draft}`;
29 }
30
31 // only allow 2 characters after :
32 let index = draft.indexOf(":");
33 draft = draft.substring(0, index + 3);
34 return draft;
35 };
36
37 return (
38 <Flex align="center" className={className}>
39 <FlexItem>
40 <TextControl
41 className={"presto-player__caption--time"}
42 style={{ width: "60px" }}
43 placeholder={"0:00"}
44 value={draftTime}
45 onChange={(time) => setDraftTime(time)}
46 onBlur={() => {
47 let time = sanitizeTime(draftTime);
48 update({ time });
49 setDraftTime(time);
50 }}
51 autoComplete="off"
52 placeholder="0:00"
53 />
54 </FlexItem>
55
56 <FlexBlock>
57 <TextControl
58 className={"presto-player__caption--title"}
59 placeholder={__("Title", "presto-player")}
60 value={title || ""}
61 onChange={(title) => update({ title })}
62 autoComplete="off"
63 />
64 </FlexBlock>
65
66 <FlexItem>
67 {remove && (
68 <Button
69 icon="minus"
70 className="ph-chapter__remove"
71 style={{ marginBottom: "8px" }}
72 label={__("Remove Chapter", "presto-player")}
73 onClick={remove}
74 />
75 )}
76 {add && (
77 <Button
78 icon="plus-alt"
79 className="ph-chapter__add"
80 label={__("Add Chapter", "presto-player")}
81 style={{ marginBottom: "8px" }}
82 onClick={() => {
83 add();
84 setDraftTime("");
85 }}
86 />
87 )}
88 </FlexItem>
89 </Flex>
90 );
91 };
92
93 export default Chapter;
94