Refactor portals/outside clicks in sticker creator
This commit is contained in:
parent
8172840535
commit
4973dac57a
11 changed files with 96 additions and 198 deletions
|
@ -1,43 +0,0 @@
|
|||
// Copyright 2020 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import * as React from 'react';
|
||||
|
||||
const makeApi = (classes?: Array<string>) => ({
|
||||
createRoot: () => {
|
||||
const div = document.createElement('div');
|
||||
|
||||
if (classes) {
|
||||
classes.forEach(theme => {
|
||||
div.classList.add(theme);
|
||||
});
|
||||
}
|
||||
|
||||
document.body.appendChild(div);
|
||||
|
||||
return div;
|
||||
},
|
||||
removeRoot: (root: HTMLElement) => {
|
||||
document.body.removeChild(root);
|
||||
},
|
||||
});
|
||||
|
||||
export const PopperRootContext = React.createContext(makeApi());
|
||||
|
||||
export type ClassyProviderProps = {
|
||||
classes?: Array<string>;
|
||||
children?: React.ReactChildren;
|
||||
};
|
||||
|
||||
export function ClassyProvider({
|
||||
classes,
|
||||
children,
|
||||
}: ClassyProviderProps): JSX.Element {
|
||||
const api = React.useMemo(() => makeApi(classes), [classes]);
|
||||
|
||||
return (
|
||||
<PopperRootContext.Provider value={api}>
|
||||
{children}
|
||||
</PopperRootContext.Provider>
|
||||
);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue