mirror of
https://github.com/captbaritone/webamp.git
synced 2026-01-23 02:15:01 +00:00
Upgrade Prettier
Improves formatting of hooks
This commit is contained in:
parent
c7f7b61fef
commit
8edd11da62
7 changed files with 70 additions and 85 deletions
|
|
@ -1,5 +1,8 @@
|
|||
package.json
|
||||
**/*.min.css
|
||||
**/base-skin.css
|
||||
js/googleAnalytics.min.js
|
||||
demo/js/googleAnalytics.min.js
|
||||
built/*
|
||||
demo/built/*
|
||||
coverage/*
|
||||
examples/webpack/bundle.js
|
||||
|
|
|
|||
|
|
@ -12,33 +12,27 @@ const WebampIcon = (props: Props) => {
|
|||
const ref = useRef();
|
||||
const [hidden, setHidden] = useState(true);
|
||||
const [selected, setSelected] = useState(false);
|
||||
useEffect(
|
||||
() => {
|
||||
return props.webamp.onClose(() => {
|
||||
setHidden(false);
|
||||
setSelected(false);
|
||||
});
|
||||
},
|
||||
[props.webamp]
|
||||
);
|
||||
useEffect(() => {
|
||||
return props.webamp.onClose(() => {
|
||||
setHidden(false);
|
||||
setSelected(false);
|
||||
});
|
||||
}, [props.webamp]);
|
||||
|
||||
useEffect(
|
||||
() => {
|
||||
if (!selected) {
|
||||
useEffect(() => {
|
||||
if (!selected) {
|
||||
return;
|
||||
}
|
||||
const handleClick = (e: MouseEvent) => {
|
||||
if (ref.current.contains(e.target)) {
|
||||
return;
|
||||
} else {
|
||||
setSelected(false);
|
||||
}
|
||||
const handleClick = (e: MouseEvent) => {
|
||||
if (ref.current.contains(e.target)) {
|
||||
return;
|
||||
} else {
|
||||
setSelected(false);
|
||||
}
|
||||
};
|
||||
document.addEventListener("click", handleClick);
|
||||
return () => document.removeEventListener("click", handleClick);
|
||||
},
|
||||
[selected]
|
||||
);
|
||||
};
|
||||
document.addEventListener("click", handleClick);
|
||||
return () => document.removeEventListener("click", handleClick);
|
||||
}, [selected]);
|
||||
return (
|
||||
hidden || (
|
||||
<div
|
||||
|
|
|
|||
|
|
@ -15,26 +15,20 @@ interface PortalProps {
|
|||
}
|
||||
|
||||
const Portal = (props: PortalProps) => {
|
||||
const node: HTMLDivElement = useMemo(
|
||||
() => {
|
||||
const node = document.createElement("div");
|
||||
node.id = "webamp-context-menu";
|
||||
node.style.position = "absolute";
|
||||
node.style.top = "0";
|
||||
node.style.left = "0";
|
||||
node.style.zIndex = String(props.zIndex + 1);
|
||||
return node;
|
||||
},
|
||||
[props.zIndex]
|
||||
);
|
||||
const node: HTMLDivElement = useMemo(() => {
|
||||
const node = document.createElement("div");
|
||||
node.id = "webamp-context-menu";
|
||||
node.style.position = "absolute";
|
||||
node.style.top = "0";
|
||||
node.style.left = "0";
|
||||
node.style.zIndex = String(props.zIndex + 1);
|
||||
return node;
|
||||
}, [props.zIndex]);
|
||||
|
||||
useEffect(
|
||||
() => {
|
||||
document.body.appendChild(node);
|
||||
return () => document.body.removeChild(node);
|
||||
},
|
||||
[node]
|
||||
);
|
||||
useEffect(() => {
|
||||
document.body.appendChild(node);
|
||||
return () => document.body.removeChild(node);
|
||||
}, [node]);
|
||||
|
||||
const style: React.CSSProperties = {
|
||||
top: props.top,
|
||||
|
|
|
|||
|
|
@ -30,29 +30,26 @@ function getNodeOffset(node?: Element) {
|
|||
function ContextMenuTarget(props: Props) {
|
||||
const handleNode = useRef(null);
|
||||
const [selected, setSelected] = useState(false);
|
||||
useEffect(
|
||||
() => {
|
||||
function handleGlobalClick(e: MouseEvent) {
|
||||
if (
|
||||
selected &&
|
||||
// Typescript does not believe that these click events are always fired on DOM nodes.
|
||||
e.target instanceof Element &&
|
||||
selected &&
|
||||
// Not sure how, but it's possible for this to get called when handleNode is null/undefined.
|
||||
// https://sentry.io/share/issue/2066cd79f21e4f279791319f4d2ea35d/
|
||||
handleNode.current &&
|
||||
!handleNode.current.contains(e.target!)
|
||||
) {
|
||||
setSelected(false);
|
||||
}
|
||||
useEffect(() => {
|
||||
function handleGlobalClick(e: MouseEvent) {
|
||||
if (
|
||||
selected &&
|
||||
// Typescript does not believe that these click events are always fired on DOM nodes.
|
||||
e.target instanceof Element &&
|
||||
selected &&
|
||||
// Not sure how, but it's possible for this to get called when handleNode is null/undefined.
|
||||
// https://sentry.io/share/issue/2066cd79f21e4f279791319f4d2ea35d/
|
||||
handleNode.current &&
|
||||
!handleNode.current.contains(e.target!)
|
||||
) {
|
||||
setSelected(false);
|
||||
}
|
||||
document.addEventListener("click", handleGlobalClick);
|
||||
return () => {
|
||||
document.removeEventListener("click", handleGlobalClick);
|
||||
};
|
||||
},
|
||||
[selected, handleNode.current]
|
||||
);
|
||||
}
|
||||
document.addEventListener("click", handleGlobalClick);
|
||||
return () => {
|
||||
document.removeEventListener("click", handleGlobalClick);
|
||||
};
|
||||
}, [selected, handleNode.current]);
|
||||
|
||||
const offset = useMemo(() => getNodeOffset(handleNode.current), [selected]);
|
||||
|
||||
|
|
|
|||
|
|
@ -18,21 +18,18 @@ function supress(e: React.DragEvent<HTMLDivElement>) {
|
|||
}
|
||||
|
||||
const DropTarget = (props: Props) => {
|
||||
const onDrop = useCallback(
|
||||
(e: React.DragEvent<HTMLDivElement>) => {
|
||||
supress(e);
|
||||
// TODO: We could probably move this coordinate logic into the playlist.
|
||||
// I think that's the only place it gets used.
|
||||
const { currentTarget } = e;
|
||||
if (!(currentTarget instanceof Element)) {
|
||||
return;
|
||||
}
|
||||
const onDrop = useCallback((e: React.DragEvent<HTMLDivElement>) => {
|
||||
supress(e);
|
||||
// TODO: We could probably move this coordinate logic into the playlist.
|
||||
// I think that's the only place it gets used.
|
||||
const { currentTarget } = e;
|
||||
if (!(currentTarget instanceof Element)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const { left: x, top: y } = currentTarget.getBoundingClientRect();
|
||||
props.handleDrop(e, { x, y });
|
||||
},
|
||||
[props.handleDrop]
|
||||
);
|
||||
const { left: x, top: y } = currentTarget.getBoundingClientRect();
|
||||
props.handleDrop(e, { x, y });
|
||||
}, [props.handleDrop]);
|
||||
|
||||
const {
|
||||
// eslint-disable-next-line no-shadow, no-unused-vars
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
"test": "jest --projects config/jest.unit.js config/jest.eslint.js",
|
||||
"travis-tests": "npm run test && npm run type-check && npm run build && npm run build-library",
|
||||
"tdd": "jest --projects config/jest.unit.js --watch",
|
||||
"format": "prettier --write **/*.js **/*.ts **/*.tsx **/*.d.ts **/*.css",
|
||||
"format": "prettier --write \"**/*.{js,ts,tsx,d.ts,css}\"",
|
||||
"integration-tests": "npm run build -- --display=errors-only && jest --projects config/jest.integration.js",
|
||||
"build-skin": "rm skins/base-2.91.wsz && cd skins/base-2.91 && zip -x .* -x 'Skining Updates.txt' -r ../base-2.91.wsz .",
|
||||
"build-skin-png": "rm skins/base-2.91-png.wsz && cd skins/base-2.91-png && zip -x .* -x 'Skining Updates.txt' -r ../base-2.91-png.wsz .",
|
||||
|
|
@ -101,7 +101,7 @@
|
|||
"jszip": "^3.1.3",
|
||||
"milkdrop-preset-converter-aws": "^0.1.6",
|
||||
"music-metadata-browser": "^0.6.1",
|
||||
"prettier": "^1.15.3",
|
||||
"prettier": "^1.16.0",
|
||||
"prop-types": "^15.5.10",
|
||||
"puppeteer": "^1.4.0",
|
||||
"raven-for-redux": "^1.3.1",
|
||||
|
|
|
|||
|
|
@ -6667,9 +6667,9 @@ preserve@^0.2.0:
|
|||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
|
||||
|
||||
prettier@^1.15.3:
|
||||
version "1.15.3"
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.3.tgz#1feaac5bdd181237b54dbe65d874e02a1472786a"
|
||||
prettier@^1.16.0:
|
||||
version "1.16.0"
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.0.tgz#104dd25f5ee3d0c9d0a6ce4bb40ced8481d51219"
|
||||
|
||||
pretty-bytes@^4.0.2:
|
||||
version "4.0.2"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue