mirror of
https://github.com/atom/atom.git
synced 2026-04-06 03:02:13 -04:00
26 lines
721 B
CoffeeScript
26 lines
721 B
CoffeeScript
{toArray} = require 'underscore-plus'
|
|
|
|
module.exports =
|
|
class DomElementsPool
|
|
constructor: ->
|
|
@freeElementsByTagName = {}
|
|
|
|
build: (tagName, className, textContent) ->
|
|
element = @freeElementsByTagName[tagName]?.pop()
|
|
element ?= document.createElement(tagName)
|
|
element.className = className
|
|
element.textContent = textContent
|
|
element.removeAttribute("style")
|
|
element
|
|
|
|
free: (element) ->
|
|
element.remove()
|
|
@freeElementsByTagName[element.tagName.toLowerCase()] ?= []
|
|
@freeElementsByTagName[element.tagName.toLowerCase()].push(element)
|
|
|
|
freeElementAndDescendants: (element) ->
|
|
@free(element)
|
|
|
|
for child in toArray(element.children)
|
|
@freeElementAndDescendants(child)
|