UNPKG

@atlaskit/app-provider

Version:

A top level provider for the Design System.

48 lines (47 loc) 1.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.installDocumentAttribute = installDocumentAttribute; /** * Enables a document attribute with reference-counted cleanup. */ function installDocumentAttribute(targetDocument, attribute, controllers) { var existingController = controllers.get(targetDocument); if (existingController) { existingController.references += 1; var _isReleased = false; return function () { if (_isReleased) { return; } _isReleased = true; existingController.references -= 1; if (existingController.references === 0) { existingController.release(); controllers.delete(targetDocument); } }; } var rootElement = targetDocument.documentElement; var controller = { references: 1, release: function release() { return rootElement.removeAttribute(attribute); } }; rootElement.setAttribute(attribute, ''); controllers.set(targetDocument, controller); var isReleased = false; return function () { if (isReleased) { return; } isReleased = true; controller.references -= 1; if (controller.references === 0) { controller.release(); controllers.delete(targetDocument); } }; }