48 lines
1.2 KiB
JavaScript
48 lines
1.2 KiB
JavaScript
"use strict";
|
|
|
|
module.exports = function(options) {
|
|
var idGenerator = options.idGenerator;
|
|
var getState = options.stateHandler.getState;
|
|
|
|
/**
|
|
* Gets the resize detector id of the element.
|
|
* @public
|
|
* @param {element} element The target element to get the id of.
|
|
* @returns {string|number|null} The id of the element. Null if it has no id.
|
|
*/
|
|
function getId(element) {
|
|
var state = getState(element);
|
|
|
|
if (state && state.id !== undefined) {
|
|
return state.id;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Sets the resize detector id of the element. Requires the element to have a resize detector state initialized.
|
|
* @public
|
|
* @param {element} element The target element to set the id of.
|
|
* @returns {string|number|null} The id of the element.
|
|
*/
|
|
function setId(element) {
|
|
var state = getState(element);
|
|
|
|
if (!state) {
|
|
throw new Error("setId required the element to have a resize detection state.");
|
|
}
|
|
|
|
var id = idGenerator.generate();
|
|
|
|
state.id = id;
|
|
|
|
return id;
|
|
}
|
|
|
|
return {
|
|
get: getId,
|
|
set: setId
|
|
};
|
|
};
|