"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 }; };