Restructured library.
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
/** Basic class for poppable elements that need to be closed as soon as one poppable is
|
||||
* shown.
|
||||
*/
|
||||
export default class Poppable {
|
||||
|
||||
/** Register the poppable element in a context. Closes previously registered ones.
|
||||
* @param {*} context
|
||||
*/
|
||||
register(context) {
|
||||
let registered = Poppable.get(context)
|
||||
if (registered != null) {
|
||||
registered.close()
|
||||
}
|
||||
Poppable.set(context, this)
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregister object from context
|
||||
* @param {*} context
|
||||
*/
|
||||
unregister(context) {
|
||||
Poppable.delete(context)
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the given poppable in a context
|
||||
* @static
|
||||
* @param {*} context
|
||||
* @returns
|
||||
* @memberof Poppable
|
||||
*/
|
||||
static get(context) {
|
||||
return Poppable.registrations.get(context)
|
||||
}
|
||||
|
||||
/** Sets the poppable in the given context
|
||||
* @static
|
||||
* @param {*} context
|
||||
* @param {*} poppable
|
||||
* @returns
|
||||
* @memberof Poppable
|
||||
*/
|
||||
static set(context, poppable) {
|
||||
return Poppable.registrations.set(context, poppable)
|
||||
}
|
||||
|
||||
/** Test whether a poppable exists in the given context
|
||||
*
|
||||
* @param {*} context
|
||||
*/
|
||||
static has(context) {
|
||||
return Poppable.registrations.has(context)
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the poppable from the given context.
|
||||
*
|
||||
* @static
|
||||
* @param {*} context
|
||||
* @memberof Poppable
|
||||
*/
|
||||
static delete(context) {
|
||||
Poppable.registrations.delete(context)
|
||||
}
|
||||
|
||||
/** All poppable must implement a close method. */
|
||||
close() {
|
||||
console.error("Must be implemented")
|
||||
}
|
||||
}
|
||||
|
||||
Poppable.registrations = new Map()
|
||||
Reference in New Issue
Block a user