MCPcopy
hub / github.com/bendc/sprint / insertHTML

Function insertHTML

sprint.js:190–269  ·  view source on GitHub ↗
(position, args)

Source from the content-addressed store, hash-verified

188 }
189
190 var insertHTML = function(position, args) {
191 var argsLen = args.length
192 var contents = args
193
194 // reverse argument list for afterbegin and afterend
195 if (argsLen > 1 && position.indexOf("after") > -1) {
196 contents = []
197 var i = argsLen
198 while (i--) {
199 contents.push(args[i])
200 }
201 }
202
203 for (var i = 0; i < argsLen; i++) {
204 var content = contents[i]
205 if (typeof content == "string" || typeof content == "number") {
206 this.each(function() {
207 this.insertAdjacentHTML(position, content)
208 })
209 }
210 else if (typeof content == "function") {
211 this.each(function(index) {
212 var callbackValue = content.call(this, index, this.innerHTML)
213 insertHTML.call(Sprint(this), position, [callbackValue])
214 })
215 }
216 else {
217 var isSprintObj = content instanceof Init
218 var clonedElements = []
219 var elementsToInsert = (function() {
220 if (isSprintObj) {
221 return content.get()
222 }
223 if (Array.isArray(content)) {
224 return sanitize(content, true, true)
225 }
226 // DOM node
227 if (content.nodeType) {
228 return [content]
229 }
230 // getElementsByTagName, getElementsByClassName, querySelectorAll
231 return toArray(content)
232 }())
233 var elementsToInsertLen = elementsToInsert.length
234
235 this.each(function(index) {
236 /*
237 * The fragment serves multiple purposes:
238 * 1) It significantly boosts perf when multiple elements are added.
239 * 2) It avoids the need for elementsToInsert.reverse() for afterbegin and afterend
240 * 3) It removes an element from its original position before adding it back, which is
241 * especially useful for elements not part of the DOM tree. That means it's important even
242 * when elementsToInsertLen == 1.
243 */
244 var fragment = document.createDocumentFragment()
245 for (var i = 0; i < elementsToInsertLen; i++) {
246 var element = elementsToInsert[i]
247 var elementToInsert

Callers

nothing calls this directly

Calls 3

sanitizeFunction · 0.85
toArrayFunction · 0.85
duplicateEventListenersFunction · 0.85

Tested by

no test coverage detected