1 $group
2 $include polyfill
3 iife
4 var wz = window.wz = {}
5 var rclass = /[\n\t\r]/g
6 var rnotwhite = (/\S+/g)
7 $include eventTarget
8 $include global
9 $include events
10 $include verify
11 set wz.element
12 function
13 param element
14 if typeof element === 'string'
15 var e = document.querySelector(element)
16 if !e
17 try
18 set e = document.querySelector("#" + element)
19 catch ex
20 return null
21 return e
22 else
23 return element
24 set wz.hide
25 function
26 param element
27 var e = wz.element(element)
28 set e.style.display = 'none'
29 set wz.show
30 function
31 param element
32 var e = wz.element(element)
33 set e.style.display = 'block'
34 set wz.hasClass
35 function
36 param element
37 param selector
38 var e = wz.element(element)
39 if (" " + e.className + " ").replace(rclass, " ").indexOf(" " + selector + " ") > -1
40 return true
41 return false
42 set wz.addClass
43 function
44 param element
45 param value
46 param options
47 var e = wz.element(element)
48 var classes, cur, finalValue
49 if options && options.removeOnClass
50 var elements = document.getElementsByClassName(options.removeOnClass)
51 _ Array.from(elements).forEach
52 function
53 param element
54 _ wz.removeClass(element, value)
55 if value && typeof value === "string"
56 set classes = ( value || "" ).match( rnotwhite ) || []
57 if !e.className && classes.length === 1
58 set e.className = value
59 else
60 set cur = " " + e.className + " "
61 foreach clazz in classes
62 if cur.indexOf( " " + clazz + " " ) < 0
63 set cur += clazz + " "
64 set finalValue = cur.trim()
65 if e.className !== finalValue
66 set e.className = finalValue
67 set wz.removeClass
68 function
69 param element
70 param value
71 var e = wz.element(element)
72 var classes, cur, finalValue
73 if value && typeof value === "string"
74 set classes = ( value || "" ).match( rnotwhite ) || []
75 set cur = e.className ? ( " " + e.className + " " ).replace( rclass, " " ) : ""
76 foreach clazz in classes
77 while cur.indexOf( " " + clazz + " " ) >= 0
78 set cur = cur.replace( " " + clazz + " ", " " )
79 set finalValue = cur.trim()
80 if e.className !== finalValue
81 set e.className = finalValue
82 set wz.toggleClass
83 function
84 param element
85 param value
86 if wz.hasClass(element, value)
87 _ wz.removeClass(element, value)
88 else
89 _ wz.addClass(element, value)
90 set wz.attribute
91 function
92 param element
93 param name
94 param value
95 var e = wz.element(element)
96 if typeof value === 'undefined'
97 return e.getAttribute(name)
98 else
99 _ e.setAttribute(name, value)
100 set wz.style
101 function
102 param element
103 param name
104 param value
105 var e = wz.element(element)
106 if typeof value === 'undefined'
107 return e.style[name]
108 else
109 set e.style[name] = value
110 set wz.text
111 function
112 param element
113 param value
114 var e = wz.element(element)
115 if typeof value === 'undefined'
116 return e.textContent
117 elif e.textContent !== value
118 set e.textContent = value
119 set wz.html
120 function
121 param element
122 param html
123 var saveElementForLog = element
124 if typeof element === "string"
125 set element = wz.element(element)
126 if !element
127 log 'element', saveElementForLog
128 throw new Error('In wz.html the element parameter must be an html element or the id of an html element. Received: ' + saveElementForLog)
129 if typeof html === 'undefined'
130 return element.innerHTML
131 else
132 set element.innerHTML = html
133 set wz.htmlEscaped
134 function
135 param element
136 param html
137 _ wz.html
138 @ element
139 _ wz.escapeHtml(html)
140 set wz.replaceChildren
141 function
142 param element
143 param nodes
144 var saveElementForLog = element
145 if typeof element === "string"
146 set element = wz.element(element)
147 if !element
148 log 'element', saveElementForLog
149 throw new Error('In wz.replaceChildren the element parameter must be an html element or the id of an html element. Received: ' + saveElementForLog)
150 set element.innerHTML = ''
151 if nodes.length
152 foreach node in nodes
153 _ element.appendChild( node )
154 else
155 _ element.appendChild( nodes )
156 set wz.value
157 function
158 param element
159 param value
160 var saveElementForLog = element
161 if typeof element === "string"
162 set element = wz.element(element)
163 if !element
164 log 'element', saveElementForLog
165 throw new Error('In wz.value the element parameter must be an html element or the id of an html element. Received: ' + saveElementForLog)
166 if typeof value === 'undefined'
167 return element.value
168 elif element.value !== value
169 set element.value = value
170 set wz.val = wz.value
171 set wz.click
172 function
173 param element
174 param handler
175 param useCapture
176 _ window.addEvent
177 @ wz.element(element)
178 @ 'click'
179 @ handler
180 @ useCapture
181 set wz.clickClass
182 function
183 param classname
184 param handler
185 param useCapture
186 var elements = document.getElementsByClassName(classname)
187 _ Array.from(elements).forEach
188 function
189 param element
190 _ wz.click
191 @ element
192 @ handler
193 @ useCapture
194 set wz.unclick
195 function
196 param element
197 param handler
198 param useCapture
199 _ window.removeEvent
200 @ wz.element(element)
201 @ 'click'
202 @ handler
203 @ useCapture
204 set wz.blur
205 function
206 param element
207 param handler
208 param useCapture
209 _ window.addEvent
210 @ wz.element(element)
211 @ 'blur'
212 @ handler
213 @ useCapture
214 set wz.unblur
215 function
216 param element
217 param handler
218 param useCapture
219 _ window.removeEvent
220 @ wz.element(element)
221 @ 'blur'
222 @ handler
223 @ useCapture
224 set wz.change
225 function
226 param element
227 param handler
228 param useCapture
229 _ window.addEvent
230 @ wz.element(element)
231 @ 'change'
232 @ handler
233 @ useCapture
234 set wz.unchange
235 function
236 param element
237 param handler
238 param useCapture
239 _ window.removeEvent
240 @ wz.element(element)
241 @ 'change'
242 @ handler
243 @ useCapture
244 set wz.contextmenu
245 function
246 param element
247 param handler
248 param useCapture
249 _ window.addEvent
250 @ wz.element(element)
251 @ 'contextmenu'
252 @ handler
253 @ useCapture
254 set wz.uncontextmenu
255 function
256 param element
257 param handler
258 param useCapture
259 _ window.removeEvent
260 @ wz.element(element)
261 @ 'contextmenu'
262 @ handler
263 @ useCapture
264 set wz.keypress
265 function
266 param element
267 param handler
268 param useCapture
269 _ window.addEvent
270 @ wz.element(element)
271 @ 'keypress'
272 @ handler
273 @ useCapture
274 set wz.unkeypress
275 function
276 param element
277 param handler
278 param useCapture
279 _ window.removeEvent
280 @ wz.element(element)
281 @ 'keypress'
282 @ handler
283 @ useCapture
284 set wz.contentLoaded
285 function
286 param fn
287 # from Diego Perini https://raw.githubusercontent.com/dperini/ContentLoaded/master/src/contentloaded.js
288 var
289 decl done = false
290 decl top = true
291 decl doc = window.document
292 decl root = doc.documentElement
293 decl modern = doc.addEventListener
294 decl add = modern ? 'addEventListener' : 'attachEvent'
295 decl rem = modern ? 'removeEventListener' : 'detachEvent'
296 decl pre = modern ? '' : 'on'
297 decl init
298 function
299 param e
300 if (e.type == 'readystatechange') && (doc.readyState != 'complete')
301 return
302 _ (e.type == 'load' ? window : doc)[rem]
303 @ pre + e.type
304 @ init
305 @ false
306 if !(done) && (done = true)
307 _ fn.call(window, (e.type || e))
308 decl poll
309 function
310 try
311 _ root.doScroll('left')
312 catch e
313 _ setTimeout(poll, 50)
314 return
315 _ init('poll')
316 if doc.readyState == 'complete'
317 _ fn.call(window, 'lazy')
318 else
319 if !(modern) && root.doScroll
320 try
321 set top = !(window.frameElement)
322 catch e
323 if top
324 _ poll()
325 _ doc[add]
326 @ pre + 'DOMContentLoaded'
327 @ init
328 @ false
329 _ doc[add]
330 @ pre + 'readystatechange'
331 @ init
332 @ false
333 _ window[add]
334 @ pre + 'load'
335 @ init
336 @ false
337 set wz.loaded = wz.contentLoaded
338 var entityMap
339 {
340 @ '&' '&'
341 @ '<' '<'
342 @ '>' '>'
343 @ '"' '"'
344 @ "'" '''
345 @ '/' '/'
346 @ '`' '`'
347 @ '=' '='
348 set wz.escapeHtml
349 function escapeHtml
350 param string
351 return
352 _ String(string).replace
353 @ /[&<>"'`=\/]/g
354 function fromEntityMap
355 param s
356 return entityMap[s]
357 set wz.unescapeHtml
358 function
359 param string
360 return
361 _ wz.replace
362 _ wz.replace
363 _ wz.replace
364 @ string
365 @ '<'
366 @ '<'
367 @ '>'
368 @ '>'
369 @ '&'
370 @ '&'
371 ()