rbbt-rest 1.8.126 → 1.8.129

Sign up to get free protection for your applications and to get access to all the features.
Files changed (295) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rbbt/rest/common/cache.rb +1 -0
  3. data/lib/rbbt/rest/file_server.rb +1 -2
  4. data/lib/rbbt/rest/workflow/jobs.rb +1 -0
  5. data/share/views/public/plugins/semantic-ui/README.md +8 -6
  6. data/share/views/public/plugins/semantic-ui/RELEASE-NOTES.md +0 -216
  7. data/share/views/public/plugins/semantic-ui/dist/components/accordion.css +2 -3
  8. data/share/views/public/plugins/semantic-ui/dist/components/accordion.js +4 -7
  9. data/share/views/public/plugins/semantic-ui/dist/components/accordion.min.css +2 -2
  10. data/share/views/public/plugins/semantic-ui/dist/components/accordion.min.js +1 -1
  11. data/share/views/public/plugins/semantic-ui/dist/components/ad.css +1 -1
  12. data/share/views/public/plugins/semantic-ui/dist/components/ad.min.css +1 -1
  13. data/share/views/public/plugins/semantic-ui/dist/components/api.js +2 -2
  14. data/share/views/public/plugins/semantic-ui/dist/components/api.min.js +1 -1
  15. data/share/views/public/plugins/semantic-ui/dist/components/breadcrumb.css +1 -1
  16. data/share/views/public/plugins/semantic-ui/dist/components/breadcrumb.min.css +1 -1
  17. data/share/views/public/plugins/semantic-ui/dist/components/button.css +245 -634
  18. data/share/views/public/plugins/semantic-ui/dist/components/button.min.css +2 -2
  19. data/share/views/public/plugins/semantic-ui/dist/components/card.css +37 -70
  20. data/share/views/public/plugins/semantic-ui/dist/components/card.min.css +2 -2
  21. data/share/views/public/plugins/semantic-ui/dist/components/checkbox.css +12 -19
  22. data/share/views/public/plugins/semantic-ui/dist/components/checkbox.js +2 -2
  23. data/share/views/public/plugins/semantic-ui/dist/components/checkbox.min.css +2 -2
  24. data/share/views/public/plugins/semantic-ui/dist/components/checkbox.min.js +1 -1
  25. data/share/views/public/plugins/semantic-ui/dist/components/colorize.js +274 -0
  26. data/share/views/public/plugins/semantic-ui/dist/components/colorize.min.js +11 -0
  27. data/share/views/public/plugins/semantic-ui/dist/components/comment.css +2 -3
  28. data/share/views/public/plugins/semantic-ui/dist/components/comment.min.css +2 -2
  29. data/share/views/public/plugins/semantic-ui/dist/components/container.css +1 -1
  30. data/share/views/public/plugins/semantic-ui/dist/components/container.min.css +1 -1
  31. data/share/views/public/plugins/semantic-ui/dist/components/dimmer.css +9 -48
  32. data/share/views/public/plugins/semantic-ui/dist/components/dimmer.js +4 -29
  33. data/share/views/public/plugins/semantic-ui/dist/components/dimmer.min.css +2 -2
  34. data/share/views/public/plugins/semantic-ui/dist/components/dimmer.min.js +1 -1
  35. data/share/views/public/plugins/semantic-ui/dist/components/divider.css +1 -1
  36. data/share/views/public/plugins/semantic-ui/dist/components/divider.min.css +2 -2
  37. data/share/views/public/plugins/semantic-ui/dist/components/dropdown.css +48 -90
  38. data/share/views/public/plugins/semantic-ui/dist/components/dropdown.js +23 -99
  39. data/share/views/public/plugins/semantic-ui/dist/components/dropdown.min.css +2 -2
  40. data/share/views/public/plugins/semantic-ui/dist/components/dropdown.min.js +2 -1
  41. data/share/views/public/plugins/semantic-ui/dist/components/embed.css +1 -1
  42. data/share/views/public/plugins/semantic-ui/dist/components/embed.js +1 -11
  43. data/share/views/public/plugins/semantic-ui/dist/components/embed.min.css +1 -1
  44. data/share/views/public/plugins/semantic-ui/dist/components/embed.min.js +1 -1
  45. data/share/views/public/plugins/semantic-ui/dist/components/feed.css +4 -3
  46. data/share/views/public/plugins/semantic-ui/dist/components/feed.min.css +2 -2
  47. data/share/views/public/plugins/semantic-ui/dist/components/flag.css +1 -6
  48. data/share/views/public/plugins/semantic-ui/dist/components/flag.min.css +2 -2
  49. data/share/views/public/plugins/semantic-ui/dist/components/form.css +16 -29
  50. data/share/views/public/plugins/semantic-ui/dist/components/form.js +14 -14
  51. data/share/views/public/plugins/semantic-ui/dist/components/form.min.css +2 -2
  52. data/share/views/public/plugins/semantic-ui/dist/components/form.min.js +1 -1
  53. data/share/views/public/plugins/semantic-ui/dist/components/grid.css +52 -89
  54. data/share/views/public/plugins/semantic-ui/dist/components/grid.min.css +2 -2
  55. data/share/views/public/plugins/semantic-ui/dist/components/header.css +5 -11
  56. data/share/views/public/plugins/semantic-ui/dist/components/header.min.css +2 -2
  57. data/share/views/public/plugins/semantic-ui/dist/components/icon.css +1855 -3345
  58. data/share/views/public/plugins/semantic-ui/dist/components/icon.min.css +2 -2
  59. data/share/views/public/plugins/semantic-ui/dist/components/image.css +3 -7
  60. data/share/views/public/plugins/semantic-ui/dist/components/image.min.css +2 -2
  61. data/share/views/public/plugins/semantic-ui/dist/components/input.css +42 -50
  62. data/share/views/public/plugins/semantic-ui/dist/components/input.min.css +2 -2
  63. data/share/views/public/plugins/semantic-ui/dist/components/item.css +9 -10
  64. data/share/views/public/plugins/semantic-ui/dist/components/item.min.css +2 -2
  65. data/share/views/public/plugins/semantic-ui/dist/components/label.css +28 -34
  66. data/share/views/public/plugins/semantic-ui/dist/components/label.min.css +2 -2
  67. data/share/views/public/plugins/semantic-ui/dist/components/list.css +13 -15
  68. data/share/views/public/plugins/semantic-ui/dist/components/list.min.css +2 -2
  69. data/share/views/public/plugins/semantic-ui/dist/components/loader.css +4 -4
  70. data/share/views/public/plugins/semantic-ui/dist/components/loader.min.css +2 -2
  71. data/share/views/public/plugins/semantic-ui/dist/components/menu.css +50 -91
  72. data/share/views/public/plugins/semantic-ui/dist/components/menu.min.css +1 -1
  73. data/share/views/public/plugins/semantic-ui/dist/components/message.css +23 -46
  74. data/share/views/public/plugins/semantic-ui/dist/components/message.min.css +2 -2
  75. data/share/views/public/plugins/semantic-ui/dist/components/modal.css +56 -88
  76. data/share/views/public/plugins/semantic-ui/dist/components/modal.js +50 -117
  77. data/share/views/public/plugins/semantic-ui/dist/components/modal.min.css +2 -2
  78. data/share/views/public/plugins/semantic-ui/dist/components/modal.min.js +1 -1
  79. data/share/views/public/plugins/semantic-ui/dist/components/nag.css +2 -3
  80. data/share/views/public/plugins/semantic-ui/dist/components/nag.js +2 -2
  81. data/share/views/public/plugins/semantic-ui/dist/components/nag.min.css +2 -2
  82. data/share/views/public/plugins/semantic-ui/dist/components/nag.min.js +1 -1
  83. data/share/views/public/plugins/semantic-ui/dist/components/popup.css +20 -39
  84. data/share/views/public/plugins/semantic-ui/dist/components/popup.js +18 -64
  85. data/share/views/public/plugins/semantic-ui/dist/components/popup.min.css +2 -2
  86. data/share/views/public/plugins/semantic-ui/dist/components/popup.min.js +1 -1
  87. data/share/views/public/plugins/semantic-ui/dist/components/progress.css +2 -3
  88. data/share/views/public/plugins/semantic-ui/dist/components/progress.js +2 -2
  89. data/share/views/public/plugins/semantic-ui/dist/components/progress.min.css +2 -2
  90. data/share/views/public/plugins/semantic-ui/dist/components/progress.min.js +1 -1
  91. data/share/views/public/plugins/semantic-ui/dist/components/rail.css +1 -1
  92. data/share/views/public/plugins/semantic-ui/dist/components/rail.min.css +1 -1
  93. data/share/views/public/plugins/semantic-ui/dist/components/rating.css +1 -1
  94. data/share/views/public/plugins/semantic-ui/dist/components/rating.js +2 -2
  95. data/share/views/public/plugins/semantic-ui/dist/components/rating.min.css +1 -1
  96. data/share/views/public/plugins/semantic-ui/dist/components/rating.min.js +1 -1
  97. data/share/views/public/plugins/semantic-ui/dist/components/reset.css +7 -13
  98. data/share/views/public/plugins/semantic-ui/dist/components/reset.min.css +2 -2
  99. data/share/views/public/plugins/semantic-ui/dist/components/reveal.css +1 -12
  100. data/share/views/public/plugins/semantic-ui/dist/components/reveal.min.css +2 -2
  101. data/share/views/public/plugins/semantic-ui/dist/components/search.css +24 -61
  102. data/share/views/public/plugins/semantic-ui/dist/components/search.js +23 -77
  103. data/share/views/public/plugins/semantic-ui/dist/components/search.min.css +2 -2
  104. data/share/views/public/plugins/semantic-ui/dist/components/search.min.js +1 -1
  105. data/share/views/public/plugins/semantic-ui/dist/components/segment.css +20 -101
  106. data/share/views/public/plugins/semantic-ui/dist/components/segment.min.css +2 -2
  107. data/share/views/public/plugins/semantic-ui/dist/components/shape.css +2 -3
  108. data/share/views/public/plugins/semantic-ui/dist/components/shape.js +2 -2
  109. data/share/views/public/plugins/semantic-ui/dist/components/shape.min.css +2 -2
  110. data/share/views/public/plugins/semantic-ui/dist/components/shape.min.js +1 -1
  111. data/share/views/public/plugins/semantic-ui/dist/components/sidebar.css +3 -5
  112. data/share/views/public/plugins/semantic-ui/dist/components/sidebar.js +2 -2
  113. data/share/views/public/plugins/semantic-ui/dist/components/sidebar.min.css +2 -2
  114. data/share/views/public/plugins/semantic-ui/dist/components/sidebar.min.js +1 -1
  115. data/share/views/public/plugins/semantic-ui/dist/components/site.css +1 -2
  116. data/share/views/public/plugins/semantic-ui/dist/components/site.js +1 -1
  117. data/share/views/public/plugins/semantic-ui/dist/components/site.min.css +2 -2
  118. data/share/views/public/plugins/semantic-ui/dist/components/site.min.js +1 -1
  119. data/share/views/public/plugins/semantic-ui/dist/components/state.js +708 -0
  120. data/share/views/public/plugins/semantic-ui/dist/components/state.min.js +1 -0
  121. data/share/views/public/plugins/semantic-ui/dist/components/statistic.css +26 -23
  122. data/share/views/public/plugins/semantic-ui/dist/components/statistic.min.css +2 -2
  123. data/share/views/public/plugins/semantic-ui/dist/components/step.css +11 -14
  124. data/share/views/public/plugins/semantic-ui/dist/components/step.min.css +2 -2
  125. data/share/views/public/plugins/semantic-ui/dist/components/sticky.css +1 -1
  126. data/share/views/public/plugins/semantic-ui/dist/components/sticky.js +2 -2
  127. data/share/views/public/plugins/semantic-ui/dist/components/sticky.min.css +1 -1
  128. data/share/views/public/plugins/semantic-ui/dist/components/sticky.min.js +1 -1
  129. data/share/views/public/plugins/semantic-ui/dist/components/tab.css +2 -3
  130. data/share/views/public/plugins/semantic-ui/dist/components/tab.js +2 -2
  131. data/share/views/public/plugins/semantic-ui/dist/components/tab.min.css +2 -2
  132. data/share/views/public/plugins/semantic-ui/dist/components/tab.min.js +1 -1
  133. data/share/views/public/plugins/semantic-ui/dist/components/table.css +26 -56
  134. data/share/views/public/plugins/semantic-ui/dist/components/table.min.css +2 -2
  135. data/share/views/public/plugins/semantic-ui/dist/components/transition.css +2 -97
  136. data/share/views/public/plugins/semantic-ui/dist/components/transition.js +2 -2
  137. data/share/views/public/plugins/semantic-ui/dist/components/transition.min.css +2 -2
  138. data/share/views/public/plugins/semantic-ui/dist/components/transition.min.js +1 -1
  139. data/share/views/public/plugins/semantic-ui/dist/components/visibility.js +5 -5
  140. data/share/views/public/plugins/semantic-ui/dist/components/visibility.min.js +1 -1
  141. data/share/views/public/plugins/semantic-ui/dist/components/visit.js +517 -0
  142. data/share/views/public/plugins/semantic-ui/dist/components/visit.min.js +11 -0
  143. data/share/views/public/plugins/semantic-ui/dist/semantic.css +2119 -5300
  144. data/share/views/public/plugins/semantic-ui/dist/semantic.js +873 -445
  145. data/share/views/public/plugins/semantic-ui/dist/semantic.min.css +82 -90
  146. data/share/views/public/plugins/semantic-ui/dist/semantic.min.js +10 -2
  147. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/icons.eot +0 -0
  148. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/icons.svg +2668 -1515
  149. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/icons.ttf +0 -0
  150. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/icons.woff +0 -0
  151. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/icons.woff2 +0 -0
  152. data/share/views/public/plugins/semantic-ui/examples/assets/library/iframe-content.js +326 -729
  153. data/share/views/public/plugins/semantic-ui/examples/assets/library/iframe.js +326 -736
  154. data/share/views/public/plugins/semantic-ui/examples/grid.html +1 -0
  155. data/share/views/public/plugins/semantic-ui/examples/responsive.html +4 -4
  156. data/share/views/public/plugins/semantic-ui/examples/sticky.html +1 -1
  157. data/share/views/public/plugins/semantic-ui/examples/theming.html +0 -1
  158. data/share/views/public/plugins/semantic-ui/package-lock.json +1604 -5604
  159. data/share/views/public/plugins/semantic-ui/package.json +24 -24
  160. data/share/views/public/plugins/semantic-ui/src/README.md +7 -9
  161. data/share/views/public/plugins/semantic-ui/src/definitions/behaviors/api.js +1 -1
  162. data/share/views/public/plugins/semantic-ui/src/definitions/behaviors/colorize.js +280 -0
  163. data/share/views/public/plugins/semantic-ui/src/definitions/behaviors/form.js +13 -13
  164. data/share/views/public/plugins/semantic-ui/src/definitions/behaviors/state.js +708 -0
  165. data/share/views/public/plugins/semantic-ui/src/definitions/behaviors/visibility.js +4 -4
  166. data/share/views/public/plugins/semantic-ui/src/definitions/behaviors/visit.js +525 -0
  167. data/share/views/public/plugins/semantic-ui/src/definitions/collections/form.less +2 -2
  168. data/share/views/public/plugins/semantic-ui/src/definitions/collections/grid.less +6 -6
  169. data/share/views/public/plugins/semantic-ui/src/definitions/collections/menu.less +6 -15
  170. data/share/views/public/plugins/semantic-ui/src/definitions/collections/table.less +2 -7
  171. data/share/views/public/plugins/semantic-ui/src/definitions/elements/button.less +2 -137
  172. data/share/views/public/plugins/semantic-ui/src/definitions/elements/header.less +1 -1
  173. data/share/views/public/plugins/semantic-ui/src/definitions/elements/icon.less +3 -3
  174. data/share/views/public/plugins/semantic-ui/src/definitions/elements/image.less +2 -6
  175. data/share/views/public/plugins/semantic-ui/src/definitions/elements/input.less +35 -35
  176. data/share/views/public/plugins/semantic-ui/src/definitions/elements/label.less +13 -14
  177. data/share/views/public/plugins/semantic-ui/src/definitions/elements/list.less +14 -16
  178. data/share/views/public/plugins/semantic-ui/src/definitions/elements/loader.less +1 -0
  179. data/share/views/public/plugins/semantic-ui/src/definitions/elements/reveal.less +0 -10
  180. data/share/views/public/plugins/semantic-ui/src/definitions/elements/segment.less +0 -54
  181. data/share/views/public/plugins/semantic-ui/src/definitions/globals/site.less +0 -1
  182. data/share/views/public/plugins/semantic-ui/src/definitions/modules/accordion.js +3 -6
  183. data/share/views/public/plugins/semantic-ui/src/definitions/modules/checkbox.js +1 -1
  184. data/share/views/public/plugins/semantic-ui/src/definitions/modules/dimmer.js +3 -28
  185. data/share/views/public/plugins/semantic-ui/src/definitions/modules/dimmer.less +9 -34
  186. data/share/views/public/plugins/semantic-ui/src/definitions/modules/dropdown.js +22 -98
  187. data/share/views/public/plugins/semantic-ui/src/definitions/modules/dropdown.less +2 -14
  188. data/share/views/public/plugins/semantic-ui/src/definitions/modules/embed.js +0 -10
  189. data/share/views/public/plugins/semantic-ui/src/definitions/modules/modal.js +49 -116
  190. data/share/views/public/plugins/semantic-ui/src/definitions/modules/modal.less +26 -46
  191. data/share/views/public/plugins/semantic-ui/src/definitions/modules/nag.js +1 -1
  192. data/share/views/public/plugins/semantic-ui/src/definitions/modules/popup.js +17 -63
  193. data/share/views/public/plugins/semantic-ui/src/definitions/modules/popup.less +1 -1
  194. data/share/views/public/plugins/semantic-ui/src/definitions/modules/progress.js +1 -1
  195. data/share/views/public/plugins/semantic-ui/src/definitions/modules/rating.js +1 -1
  196. data/share/views/public/plugins/semantic-ui/src/definitions/modules/rating.less +1 -1
  197. data/share/views/public/plugins/semantic-ui/src/definitions/modules/search.js +22 -76
  198. data/share/views/public/plugins/semantic-ui/src/definitions/modules/search.less +17 -48
  199. data/share/views/public/plugins/semantic-ui/src/definitions/modules/shape.js +1 -1
  200. data/share/views/public/plugins/semantic-ui/src/definitions/modules/sidebar.js +1 -1
  201. data/share/views/public/plugins/semantic-ui/src/definitions/modules/sticky.js +1 -1
  202. data/share/views/public/plugins/semantic-ui/src/definitions/modules/tab.js +1 -1
  203. data/share/views/public/plugins/semantic-ui/src/definitions/modules/transition.js +1 -1
  204. data/share/views/public/plugins/semantic-ui/src/definitions/views/statistic.less +3 -0
  205. data/share/views/public/plugins/semantic-ui/src/theme.config.example +47 -48
  206. data/share/views/public/plugins/semantic-ui/src/theme.less +1 -1
  207. data/share/views/public/plugins/semantic-ui/src/themes/basic/elements/button.variables +1 -1
  208. data/share/views/public/plugins/semantic-ui/src/themes/basic/modules/progress.variables +2 -2
  209. data/share/views/public/plugins/semantic-ui/src/themes/bookish/elements/header.variables +2 -2
  210. data/share/views/public/plugins/semantic-ui/src/themes/bootstrap3/elements/button.variables +2 -2
  211. data/share/views/public/plugins/semantic-ui/src/themes/chubby/elements/button.variables +1 -1
  212. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/icons.eot +0 -0
  213. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/icons.svg +2668 -1515
  214. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/icons.ttf +0 -0
  215. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/icons.woff +0 -0
  216. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/icons.woff2 +0 -0
  217. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/breadcrumb.variables +1 -1
  218. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/form.variables +1 -1
  219. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/menu.variables +22 -22
  220. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/message.variables +1 -1
  221. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/table.variables +7 -8
  222. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/button.variables +4 -6
  223. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/divider.variables +2 -2
  224. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/flag.overrides +0 -5
  225. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/header.variables +1 -1
  226. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/icon.overrides +907 -1632
  227. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/icon.variables +7 -39
  228. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/label.variables +10 -10
  229. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/list.variables +1 -1
  230. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/loader.variables +0 -1
  231. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/reveal.variables +1 -2
  232. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/segment.variables +13 -28
  233. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/step.variables +4 -4
  234. data/share/views/public/plugins/semantic-ui/src/themes/default/globals/site.variables +179 -192
  235. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/accordion.overrides +1 -1
  236. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/accordion.variables +1 -1
  237. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/checkbox.variables +2 -2
  238. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/dimmer.variables +5 -2
  239. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/dropdown.overrides +14 -11
  240. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/dropdown.variables +8 -12
  241. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/modal.variables +29 -33
  242. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/popup.variables +3 -4
  243. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/progress.variables +2 -2
  244. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/search.variables +5 -8
  245. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/transition.overrides +2 -54
  246. data/share/views/public/plugins/semantic-ui/src/themes/default/views/ad.variables +2 -2
  247. data/share/views/public/plugins/semantic-ui/src/themes/default/views/card.variables +1 -1
  248. data/share/views/public/plugins/semantic-ui/src/themes/default/views/comment.variables +1 -1
  249. data/share/views/public/plugins/semantic-ui/src/themes/default/views/feed.variables +4 -4
  250. data/share/views/public/plugins/semantic-ui/src/themes/default/views/item.variables +1 -1
  251. data/share/views/public/plugins/semantic-ui/src/themes/default/views/statistic.variables +7 -8
  252. data/share/views/public/plugins/semantic-ui/tasks/admin/components/create.js +1 -0
  253. data/share/views/public/plugins/semantic-ui/tasks/admin/components/init.js +2 -2
  254. data/share/views/public/plugins/semantic-ui/tasks/admin/components/update.js +1 -1
  255. data/share/views/public/plugins/semantic-ui/tasks/admin/distributions/update.js +1 -1
  256. data/share/views/public/plugins/semantic-ui/tasks/admin/register.js +1 -1
  257. data/share/views/public/plugins/semantic-ui/tasks/build/css.js +1 -1
  258. data/share/views/public/plugins/semantic-ui/tasks/build/javascript.js +2 -2
  259. data/share/views/public/plugins/semantic-ui/tasks/collections/internal.js +1 -1
  260. data/share/views/public/plugins/semantic-ui/tasks/config/admin/release.js +0 -1
  261. data/share/views/public/plugins/semantic-ui/tasks/config/defaults.js +0 -1
  262. data/share/views/public/plugins/semantic-ui/tasks/config/project/install.js +7 -2
  263. data/share/views/public/plugins/semantic-ui/tasks/config/tasks.js +2 -6
  264. data/share/views/public/plugins/semantic-ui/tasks/docs/build.js +2 -2
  265. data/share/views/public/plugins/semantic-ui/tasks/docs/serve.js +4 -4
  266. data/share/views/public/plugins/semantic-ui/tasks/install.js +2 -2
  267. data/share/views/public/plugins/semantic-ui/tasks/rtl/build.js +1 -1
  268. data/share/views/public/plugins/semantic-ui/tasks/rtl/watch.js +5 -5
  269. data/share/views/public/plugins/semantic-ui/tasks/watch.js +4 -4
  270. metadata +11 -27
  271. data/share/views/public/plugins/semantic-ui/dist/components/placeholder.css +0 -239
  272. data/share/views/public/plugins/semantic-ui/dist/components/placeholder.min.css +0 -9
  273. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/brand-icons.eot +0 -0
  274. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/brand-icons.svg +0 -1008
  275. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/brand-icons.ttf +0 -0
  276. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/brand-icons.woff +0 -0
  277. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/brand-icons.woff2 +0 -0
  278. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/outline-icons.eot +0 -0
  279. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/outline-icons.svg +0 -366
  280. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/outline-icons.ttf +0 -0
  281. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/outline-icons.woff +0 -0
  282. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/outline-icons.woff2 +0 -0
  283. data/share/views/public/plugins/semantic-ui/src/definitions/elements/placeholder.less +0 -232
  284. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/brand-icons.eot +0 -0
  285. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/brand-icons.svg +0 -1008
  286. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/brand-icons.ttf +0 -0
  287. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/brand-icons.woff +0 -0
  288. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/brand-icons.woff2 +0 -0
  289. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/outline-icons.eot +0 -0
  290. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/outline-icons.svg +0 -366
  291. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/outline-icons.ttf +0 -0
  292. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/outline-icons.woff +0 -0
  293. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/outline-icons.woff2 +0 -0
  294. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/placeholder.overrides +0 -3
  295. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/placeholder.variables +0 -55
@@ -3,195 +3,101 @@
3
3
  * Desc: Include this file in any page being loaded into an iframe
4
4
  * to force the iframe to resize to the content size.
5
5
  * Requires: iframeResizer.js on host page.
6
- * Doc: https://github.com/davidjbradshaw/iframe-resizer
7
6
  * Author: David J. Bradshaw - dave@bradshaw.net
8
7
  * Contributor: Jure Mav - jure.mav@gmail.com
9
8
  * Contributor: Ian Caunce - ian@hallnet.co.uk
10
9
  */
11
10
 
12
-
13
- ;(function(undefined) {
11
+ ;(function() {
14
12
  'use strict';
15
13
 
16
- if(typeof window === 'undefined') return; // don't run for server side render
17
-
18
14
  var
19
15
  autoResize = true,
20
16
  base = 10,
21
17
  bodyBackground = '',
22
18
  bodyMargin = 0,
23
19
  bodyMarginStr = '',
24
- bodyObserver = null,
25
20
  bodyPadding = '',
26
21
  calculateWidth = false,
27
22
  doubleEventList = {'resize':1,'click':1},
28
23
  eventCancelTimer = 128,
29
- firstRun = true,
30
24
  height = 1,
31
- heightCalcModeDefault = 'bodyOffset',
25
+ firstRun = true,
26
+ heightCalcModeDefault = 'offset',
32
27
  heightCalcMode = heightCalcModeDefault,
33
28
  initLock = true,
34
29
  initMsg = '',
35
30
  inPageLinks = {},
36
31
  interval = 32,
37
- intervalTimer = null,
38
32
  logging = false,
39
33
  msgID = '[iFrameSizer]', //Must match host page msg ID
40
34
  msgIdLen = msgID.length,
41
35
  myID = '',
42
- observer = null,
43
- resetRequiredMethods = {max:1,min:1,bodyScroll:1,documentElementScroll:1},
44
- resizeFrom = 'child',
45
- sendPermit = true,
46
- target = window.parent,
36
+ publicMethods = false,
37
+ resetRequiredMethods = {max:1,scroll:1,bodyScroll:1,documentElementScroll:1},
38
+ resizeFrom = 'parent',
47
39
  targetOriginDefault = '*',
40
+ target = window.parent,
48
41
  tolerance = 0,
49
42
  triggerLocked = false,
50
43
  triggerLockedTimer = null,
51
- throttledTimer = 16,
52
- width = 1,
53
- widthCalcModeDefault = 'scroll',
54
- widthCalcMode = widthCalcModeDefault,
55
- win = window,
56
- messageCallback = function() { warn('MessageCallback function not defined'); },
57
- readyCallback = function() {},
58
- pageInfoCallback = function() {},
59
- customCalcMethods = {
60
- height: function() {
61
- warn('Custom height calculation function not defined');
62
- return document.documentElement.offsetHeight;
63
- },
64
- width: function() {
65
- warn('Custom width calculation function not defined');
66
- return document.body.scrollWidth;
67
- }
68
- },
69
- eventHandlersByName = {};
44
+ width = 1;
70
45
 
71
46
 
72
- function addEventListener(el,evt,func) {
73
- /* istanbul ignore else */ // Not testable in phantonJS
74
- if ('addEventListener' in window) {
47
+ function addEventListener(el,evt,func){
48
+ if ('addEventListener' in window){
75
49
  el.addEventListener(evt,func, false);
76
- } else if ('attachEvent' in window) { //IE
50
+ } else if ('attachEvent' in window){ //IE
77
51
  el.attachEvent('on'+evt,func);
78
52
  }
79
53
  }
80
54
 
81
- function removeEventListener(el,evt,func) {
82
- /* istanbul ignore else */ // Not testable in phantonJS
83
- if ('removeEventListener' in window) {
84
- el.removeEventListener(evt,func, false);
85
- } else if ('detachEvent' in window) { //IE
86
- el.detachEvent('on'+evt,func);
87
- }
88
- }
89
-
90
- function capitalizeFirstLetter(string) {
91
- return string.charAt(0).toUpperCase() + string.slice(1);
92
- }
93
-
94
- //Based on underscore.js
95
- function throttle(func) {
96
- var
97
- context, args, result,
98
- timeout = null,
99
- previous = 0,
100
- later = function() {
101
- previous = getNow();
102
- timeout = null;
103
- result = func.apply(context, args);
104
- if (!timeout) {
105
- context = args = null;
106
- }
107
- };
108
-
109
- return function() {
110
- var now = getNow();
111
-
112
- if (!previous) {
113
- previous = now;
114
- }
115
-
116
- var remaining = throttledTimer - (now - previous);
117
-
118
- context = this;
119
- args = arguments;
120
-
121
- if (remaining <= 0 || remaining > throttledTimer) {
122
- if (timeout) {
123
- clearTimeout(timeout);
124
- timeout = null;
125
- }
126
-
127
- previous = now;
128
- result = func.apply(context, args);
129
-
130
- if (!timeout) {
131
- context = args = null;
132
- }
133
-
134
- } else if (!timeout) {
135
- timeout = setTimeout(later, remaining);
136
- }
137
-
138
- return result;
139
- };
140
- }
141
-
142
- var getNow = Date.now || function() {
143
- /* istanbul ignore next */ // Not testable in PhantonJS
144
- return new Date().getTime();
145
- };
146
-
147
- function formatLogMsg(msg) {
55
+ function formatLogMsg(msg){
148
56
  return msgID + '[' + myID + ']' + ' ' + msg;
149
57
  }
150
58
 
151
- function log(msg) {
152
- if (logging && ('object' === typeof window.console)) {
59
+ function log(msg){
60
+ if (logging && ('object' === typeof window.console)){
153
61
  console.log(formatLogMsg(msg));
154
62
  }
155
63
  }
156
64
 
157
- function warn(msg) {
158
- if ('object' === typeof window.console) {
65
+ function warn(msg){
66
+ if ('object' === typeof window.console){
159
67
  console.warn(formatLogMsg(msg));
160
68
  }
161
69
  }
162
70
 
163
71
 
164
- function init() {
165
- readDataFromParent();
166
- log('Initialising iFrame ('+location.href+')');
167
- readDataFromPage();
72
+ function init(){
73
+ log('Initializing iFrame');
74
+ readData();
168
75
  setMargin();
169
76
  setBodyStyle('background',bodyBackground);
170
77
  setBodyStyle('padding',bodyPadding);
171
78
  injectClearFixIntoBodyElement();
172
79
  checkHeightMode();
173
- checkWidthMode();
174
80
  stopInfiniteResizingOfIFrame();
175
81
  setupPublicMethods();
176
82
  startEventListeners();
177
83
  inPageLinks = setupInPageLinks();
178
84
  sendSize('init','Init message from host page');
179
- readyCallback();
180
85
  }
181
86
 
182
- function readDataFromParent() {
87
+ function readData(){
88
+
89
+ var data = initMsg.substr(msgIdLen).split(':');
183
90
 
184
- function strBool(str) {
91
+ function strBool(str){
185
92
  return 'true' === str ? true : false;
186
93
  }
187
94
 
188
- var data = initMsg.substr(msgIdLen).split(':');
189
-
190
95
  myID = data[0];
191
96
  bodyMargin = (undefined !== data[1]) ? Number(data[1]) : bodyMargin; //For V1 compatibility
192
97
  calculateWidth = (undefined !== data[2]) ? strBool(data[2]) : calculateWidth;
193
98
  logging = (undefined !== data[3]) ? strBool(data[3]) : logging;
194
99
  interval = (undefined !== data[4]) ? Number(data[4]) : interval;
100
+ publicMethods = (undefined !== data[5]) ? strBool(data[5]) : publicMethods;
195
101
  autoResize = (undefined !== data[6]) ? strBool(data[6]) : autoResize;
196
102
  bodyMarginStr = data[7];
197
103
  heightCalcMode = (undefined !== data[8]) ? data[8] : heightCalcMode;
@@ -199,148 +105,84 @@
199
105
  bodyPadding = data[10];
200
106
  tolerance = (undefined !== data[11]) ? Number(data[11]) : tolerance;
201
107
  inPageLinks.enable = (undefined !== data[12]) ? strBool(data[12]): false;
202
- resizeFrom = (undefined !== data[13]) ? data[13] : resizeFrom;
203
- widthCalcMode = (undefined !== data[14]) ? data[14] : widthCalcMode;
204
- }
205
-
206
- function readDataFromPage() {
207
- function readData() {
208
- var data = window.iFrameResizer;
209
-
210
- log('Reading data from page: ' + JSON.stringify(data));
211
-
212
- messageCallback = ('messageCallback' in data) ? data.messageCallback : messageCallback;
213
- readyCallback = ('readyCallback' in data) ? data.readyCallback : readyCallback;
214
- targetOriginDefault = ('targetOrigin' in data) ? data.targetOrigin : targetOriginDefault;
215
- heightCalcMode = ('heightCalculationMethod' in data) ? data.heightCalculationMethod : heightCalcMode;
216
- widthCalcMode = ('widthCalculationMethod' in data) ? data.widthCalculationMethod : widthCalcMode;
217
- }
218
-
219
- function setupCustomCalcMethods(calcMode, calcFunc) {
220
- if ('function' === typeof calcMode) {
221
- log('Setup custom ' + calcFunc + 'CalcMethod');
222
- customCalcMethods[calcFunc] = calcMode;
223
- calcMode = 'custom';
224
- }
225
-
226
- return calcMode;
227
- }
228
-
229
- if(('iFrameResizer' in window) && (Object === window.iFrameResizer.constructor)) {
230
- readData();
231
- heightCalcMode = setupCustomCalcMethods(heightCalcMode, 'height');
232
- widthCalcMode = setupCustomCalcMethods(widthCalcMode, 'width');
233
- }
234
-
235
- log('TargetOrigin for parent set to: ' + targetOriginDefault);
108
+ resizeFrom = data[13];
236
109
  }
237
110
 
238
-
239
- function chkCSS(attr,value) {
240
- if (-1 !== value.indexOf('-')) {
111
+ function chkCSS(attr,value){
112
+ if (-1 !== value.indexOf('-')){
241
113
  warn('Negative CSS value ignored for '+attr);
242
114
  value='';
243
115
  }
244
116
  return value;
245
117
  }
246
118
 
247
- function setBodyStyle(attr,value) {
248
- if ((undefined !== value) && ('' !== value) && ('null' !== value)) {
119
+ function setBodyStyle(attr,value){
120
+ if ((undefined !== value) && ('' !== value) && ('null' !== value)){
249
121
  document.body.style[attr] = value;
250
122
  log('Body '+attr+' set to "'+value+'"');
251
123
  }
252
124
  }
253
125
 
254
- function setMargin() {
126
+ function setMargin(){
255
127
  //If called via V1 script, convert bodyMargin from int to str
256
- if (undefined === bodyMarginStr) {
128
+ if (undefined === bodyMarginStr){
257
129
  bodyMarginStr = bodyMargin+'px';
258
130
  }
259
-
260
- setBodyStyle('margin',chkCSS('margin',bodyMarginStr));
131
+ chkCSS('margin',bodyMarginStr);
132
+ setBodyStyle('margin',bodyMarginStr);
261
133
  }
262
134
 
263
- function stopInfiniteResizingOfIFrame() {
135
+ function stopInfiniteResizingOfIFrame(){
264
136
  document.documentElement.style.height = '';
265
137
  document.body.style.height = '';
266
138
  log('HTML & body height set to "auto"');
267
139
  }
268
140
 
269
141
 
270
- function manageTriggerEvent(options) {
271
-
272
- var listener = {
273
- add: function(eventName) {
274
- function handleEvent() {
275
- sendSize(options.eventName,options.eventType);
276
- }
277
-
278
- eventHandlersByName[eventName] = handleEvent;
279
-
280
- addEventListener(window,eventName,handleEvent);
281
- },
282
- remove: function(eventName) {
283
- var handleEvent = eventHandlersByName[eventName];
284
- delete eventHandlersByName[eventName];
285
-
286
- removeEventListener(window,eventName,handleEvent);
287
- }
288
- };
142
+ function addTriggerEvent(options){
143
+ function addListener(eventName){
144
+ addEventListener(window,eventName,function(e){
145
+ sendSize(options.eventName,options.eventType);
146
+ });
147
+ }
289
148
 
290
- if(options.eventNames && Array.prototype.map) {
149
+ if(options.eventNames && Array.prototype.map){
291
150
  options.eventName = options.eventNames[0];
292
- options.eventNames.map(listener[options.method]);
151
+ options.eventNames.map(addListener);
293
152
  } else {
294
- listener[options.method](options.eventName);
153
+ addListener(options.eventName);
295
154
  }
296
155
 
297
- log(capitalizeFirstLetter(options.method) + ' event listener: ' + options.eventType);
156
+ log('Added event listener: ' + options.eventType);
298
157
  }
299
158
 
300
- function manageEventListeners(method) {
301
- manageTriggerEvent({method:method, eventType: 'Animation Start', eventNames: ['animationstart','webkitAnimationStart'] });
302
- manageTriggerEvent({method:method, eventType: 'Animation Iteration', eventNames: ['animationiteration','webkitAnimationIteration'] });
303
- manageTriggerEvent({method:method, eventType: 'Animation End', eventNames: ['animationend','webkitAnimationEnd'] });
304
- manageTriggerEvent({method:method, eventType: 'Input', eventName: 'input' });
305
- manageTriggerEvent({method:method, eventType: 'Mouse Up', eventName: 'mouseup' });
306
- manageTriggerEvent({method:method, eventType: 'Mouse Down', eventName: 'mousedown' });
307
- manageTriggerEvent({method:method, eventType: 'Orientation Change', eventName: 'orientationchange' });
308
- manageTriggerEvent({method:method, eventType: 'Print', eventName: ['afterprint', 'beforeprint'] });
309
- manageTriggerEvent({method:method, eventType: 'Ready State Change', eventName: 'readystatechange' });
310
- manageTriggerEvent({method:method, eventType: 'Touch Start', eventName: 'touchstart' });
311
- manageTriggerEvent({method:method, eventType: 'Touch End', eventName: 'touchend' });
312
- manageTriggerEvent({method:method, eventType: 'Touch Cancel', eventName: 'touchcancel' });
313
- manageTriggerEvent({method:method, eventType: 'Transition Start', eventNames: ['transitionstart','webkitTransitionStart','MSTransitionStart','oTransitionStart','otransitionstart'] });
314
- manageTriggerEvent({method:method, eventType: 'Transition Iteration', eventNames: ['transitioniteration','webkitTransitionIteration','MSTransitionIteration','oTransitionIteration','otransitioniteration'] });
315
- manageTriggerEvent({method:method, eventType: 'Transition End', eventNames: ['transitionend','webkitTransitionEnd','MSTransitionEnd','oTransitionEnd','otransitionend'] });
316
- if('child' === resizeFrom) {
317
- manageTriggerEvent({method:method, eventType: 'IFrame Resized', eventName: 'resize' });
159
+ function initEventListeners(){
160
+ addTriggerEvent({ eventType: 'Animation Start', eventNames: ['animationstart','webkitAnimationStart'] });
161
+ addTriggerEvent({ eventType: 'Animation Iteration', eventNames: ['animationiteration','webkitAnimationIteration'] });
162
+ addTriggerEvent({ eventType: 'Animation End', eventNames: ['animationend','webkitAnimationEnd'] });
163
+ addTriggerEvent({ eventType: 'Device Orientation Change', eventName: 'deviceorientation' });
164
+ addTriggerEvent({ eventType: 'Transition End', eventNames: ['transitionend','webkitTransitionEnd','MSTransitionEnd','oTransitionEnd','otransitionend'] });
165
+ addTriggerEvent({ eventType: 'Window Clicked', eventName: 'click' });
166
+ //addTriggerEvent({ eventType: 'Window Mouse Down', eventName: 'mousedown' });
167
+ //addTriggerEvent({ eventType: 'Window Mouse Up', eventName: 'mouseup' });
168
+ if('child' === resizeFrom){
169
+ addTriggerEvent({ eventType: 'IFrame Resized', eventName: 'resize' });
318
170
  }
319
171
  }
320
172
 
321
- function checkCalcMode(calcMode,calcModeDefault,modes,type) {
322
- if (calcModeDefault !== calcMode) {
323
- if (!(calcMode in modes)) {
324
- warn(calcMode + ' is not a valid option for '+type+'CalculationMethod.');
325
- calcMode=calcModeDefault;
173
+ function checkHeightMode(){
174
+ if (heightCalcModeDefault !== heightCalcMode){
175
+ if (!(heightCalcMode in getHeight)){
176
+ warn(heightCalcMode + ' is not a valid option for heightCalculationMethod.');
177
+ heightCalcMode='bodyScroll';
326
178
  }
327
- log(type+' calculation method set to "'+calcMode+'"');
179
+ log('Height calculation method set to "'+heightCalcMode+'"');
328
180
  }
329
-
330
- return calcMode;
331
- }
332
-
333
- function checkHeightMode() {
334
- heightCalcMode = checkCalcMode(heightCalcMode,heightCalcModeDefault,getHeight,'height');
335
- }
336
-
337
- function checkWidthMode() {
338
- widthCalcMode = checkCalcMode(widthCalcMode,widthCalcModeDefault,getWidth,'width');
339
181
  }
340
182
 
341
- function startEventListeners() {
183
+ function startEventListeners(){
342
184
  if ( true === autoResize ) {
343
- manageEventListeners('add');
185
+ initEventListeners();
344
186
  setupMutationObserver();
345
187
  }
346
188
  else {
@@ -348,52 +190,23 @@
348
190
  }
349
191
  }
350
192
 
351
- function stopMsgsToParent() {
352
- log('Disable outgoing messages');
353
- sendPermit = false;
354
- }
355
-
356
- function removeMsgListener() {
357
- log('Remove event listener: Message');
358
- removeEventListener(window, 'message', receiver);
359
- }
360
-
361
- function disconnectMutationObserver() {
362
- if (null !== bodyObserver) {
363
- /* istanbul ignore next */ // Not testable in PhantonJS
364
- bodyObserver.disconnect();
365
- }
366
- }
367
-
368
- function stopEventListeners() {
369
- manageEventListeners('remove');
370
- disconnectMutationObserver();
371
- clearInterval(intervalTimer);
372
- }
373
-
374
- function teardown() {
375
- stopMsgsToParent();
376
- removeMsgListener();
377
- if (true === autoResize) stopEventListeners();
378
- }
379
-
380
- function injectClearFixIntoBodyElement() {
193
+ function injectClearFixIntoBodyElement(){
381
194
  var clearFix = document.createElement('div');
382
- clearFix.style.clear = 'both';
195
+ clearFix.style.clear = 'both';
383
196
  clearFix.style.display = 'block'; //Guard against this having been globally redefined in CSS.
384
197
  document.body.appendChild(clearFix);
385
198
  }
386
199
 
387
- function setupInPageLinks() {
200
+ function setupInPageLinks(){
388
201
 
389
- function getPagePosition () {
202
+ function getPagePosition (){
390
203
  return {
391
204
  x: (window.pageXOffset !== undefined) ? window.pageXOffset : document.documentElement.scrollLeft,
392
205
  y: (window.pageYOffset !== undefined) ? window.pageYOffset : document.documentElement.scrollTop
393
206
  };
394
207
  }
395
208
 
396
- function getElementPosition(el) {
209
+ function getElementPosition(el){
397
210
  var
398
211
  elPosition = el.getBoundingClientRect(),
399
212
  pagePosition = getPagePosition();
@@ -404,20 +217,20 @@
404
217
  };
405
218
  }
406
219
 
407
- function findTarget(location) {
408
- function jumpToTarget(target) {
220
+ function findTarget(location){
221
+ var hash = location.split("#")[1] || "";
222
+ var hashData = decodeURIComponent(hash);
223
+
224
+ function jumpToTarget(target){
409
225
  var jumpPosition = getElementPosition(target);
410
226
 
411
227
  log('Moving to in page link (#'+hash+') at x: '+jumpPosition.x+' y: '+jumpPosition.y);
412
228
  sendMsg(jumpPosition.y, jumpPosition.x, 'scrollToOffset'); // X&Y reversed at sendMsg uses height/width
413
229
  }
414
230
 
415
- var
416
- hash = location.split('#')[1] || location, //Remove # if present
417
- hashData = decodeURIComponent(hash),
418
- target = document.getElementById(hashData) || document.getElementsByName(hashData)[0];
231
+ var target = document.getElementById(hashData) || document.getElementsByName(hashData)[0];
419
232
 
420
- if (undefined !== target) {
233
+ if (target){
421
234
  jumpToTarget(target);
422
235
  } else {
423
236
  log('In page link (#' + hash + ') not found in iFrame, so sending to parent');
@@ -425,22 +238,22 @@
425
238
  }
426
239
  }
427
240
 
428
- function checkLocationHash() {
429
- if ('' !== location.hash && '#' !== location.hash) {
241
+ function checkLocationHash(){
242
+ if ('' !== location.hash && '#' !== location.hash){
430
243
  findTarget(location.href);
431
244
  }
432
245
  }
433
246
 
434
- function bindAnchors() {
435
- function setupLink(el) {
436
- function linkClicked(e) {
247
+ function bindAnchors(){
248
+ function setupLink(el){
249
+ function linkClicked(e){
437
250
  e.preventDefault();
438
251
 
439
252
  /*jshint validthis:true */
440
253
  findTarget(this.getAttribute('href'));
441
254
  }
442
255
 
443
- if ('#' !== el.getAttribute('href')) {
256
+ if ('#' !== el.getAttribute('href')){
444
257
  addEventListener(el,'click',linkClicked);
445
258
  }
446
259
  }
@@ -448,17 +261,16 @@
448
261
  Array.prototype.forEach.call( document.querySelectorAll( 'a[href^="#"]' ), setupLink );
449
262
  }
450
263
 
451
- function bindLocationHash() {
264
+ function bindLocationHash(){
452
265
  addEventListener(window,'hashchange',checkLocationHash);
453
266
  }
454
267
 
455
- function initCheck() { //check if page loaded with location hash after init resize
268
+ function initCheck(){ //check if page loaded with location hash after init resize
456
269
  setTimeout(checkLocationHash,eventCancelTimer);
457
270
  }
458
271
 
459
- function enableInPageLinks() {
460
- /* istanbul ignore else */ // Not testable in phantonJS
461
- if(Array.prototype.forEach && document.querySelectorAll) {
272
+ function enableInPageLinks(){
273
+ if(Array.prototype.forEach && document.querySelectorAll){
462
274
  log('Setting up location.hash handlers');
463
275
  bindAnchors();
464
276
  bindLocationHash();
@@ -468,7 +280,7 @@
468
280
  }
469
281
  }
470
282
 
471
- if(inPageLinks.enable) {
283
+ if(inPageLinks.enable){
472
284
  enableInPageLinks();
473
285
  } else {
474
286
  log('In page linking not enabled');
@@ -479,149 +291,85 @@
479
291
  };
480
292
  }
481
293
 
482
- function setupPublicMethods() {
483
- log('Enable public methods');
484
-
485
- win.parentIFrame = {
486
-
487
- autoResize: function autoResizeF(resize) {
488
- if (true === resize && false === autoResize) {
489
- autoResize=true;
490
- startEventListeners();
491
- //sendSize('autoResize','Auto Resize enabled');
492
- } else if (false === resize && true === autoResize) {
493
- autoResize=false;
494
- stopEventListeners();
294
+ function setupPublicMethods(){
295
+ if (publicMethods) {
296
+ log('Enable public methods');
297
+
298
+ window.parentIFrame = {
299
+ close: function closeF(){
300
+ sendMsg(0,0,'close');
301
+ },
302
+ getId: function getIdF(){
303
+ return myID;
304
+ },
305
+ moveToAnchor: function moveToAnchorF(hash){
306
+ inPageLinks.findTarget(hash);
307
+ },
308
+ reset: function resetF(){
309
+ resetIFrame('parentIFrame.reset');
310
+ },
311
+ scrollTo: function scrollToF(x,y){
312
+ sendMsg(y,x,'scrollTo'); // X&Y reversed at sendMsg uses height/width
313
+ },
314
+ scrollToOffset: function scrollToF(x,y){
315
+ sendMsg(y,x,'scrollToOffset'); // X&Y reversed at sendMsg uses height/width
316
+ },
317
+ sendMessage: function sendMessageF(msg,targetOrigin){
318
+ sendMsg(0,0,'message',JSON.stringify(msg),targetOrigin);
319
+ },
320
+ setHeightCalculationMethod: function setHeightCalculationMethodF(heightCalculationMethod){
321
+ heightCalcMode = heightCalculationMethod;
322
+ checkHeightMode();
323
+ },
324
+ setTargetOrigin: function setTargetOriginF(targetOrigin){
325
+ log('Set targetOrigin: '+targetOrigin);
326
+ targetOriginDefault = targetOrigin;
327
+ },
328
+ size: function sizeF(customHeight, customWidth){
329
+ var valString = ''+(customHeight?customHeight:'')+(customWidth?','+customWidth:'');
330
+ lockTrigger();
331
+ sendSize('size','parentIFrame.size('+valString+')', customHeight, customWidth);
495
332
  }
496
-
497
- return autoResize;
498
- },
499
-
500
- close: function closeF() {
501
- sendMsg(0,0,'close');
502
- teardown();
503
- },
504
-
505
- getId: function getIdF() {
506
- return myID;
507
- },
508
-
509
- getPageInfo: function getPageInfoF(callback) {
510
- if ('function' === typeof callback) {
511
- pageInfoCallback = callback;
512
- sendMsg(0,0,'pageInfo');
513
- } else {
514
- pageInfoCallback = function() {};
515
- sendMsg(0,0,'pageInfoStop');
516
- }
517
- },
518
-
519
- moveToAnchor: function moveToAnchorF(hash) {
520
- inPageLinks.findTarget(hash);
521
- },
522
-
523
- reset: function resetF() {
524
- resetIFrame('parentIFrame.reset');
525
- },
526
-
527
- scrollTo: function scrollToF(x,y) {
528
- sendMsg(y,x,'scrollTo'); // X&Y reversed at sendMsg uses height/width
529
- },
530
-
531
- scrollToOffset: function scrollToF(x,y) {
532
- sendMsg(y,x,'scrollToOffset'); // X&Y reversed at sendMsg uses height/width
533
- },
534
-
535
- sendMessage: function sendMessageF(msg,targetOrigin) {
536
- sendMsg(0,0,'message',JSON.stringify(msg),targetOrigin);
537
- },
538
-
539
- setHeightCalculationMethod: function setHeightCalculationMethodF(heightCalculationMethod) {
540
- heightCalcMode = heightCalculationMethod;
541
- checkHeightMode();
542
- },
543
-
544
- setWidthCalculationMethod: function setWidthCalculationMethodF(widthCalculationMethod) {
545
- widthCalcMode = widthCalculationMethod;
546
- checkWidthMode();
547
- },
548
-
549
- setTargetOrigin: function setTargetOriginF(targetOrigin) {
550
- log('Set targetOrigin: '+targetOrigin);
551
- targetOriginDefault = targetOrigin;
552
- },
553
-
554
- size: function sizeF(customHeight, customWidth) {
555
- var valString = ''+(customHeight?customHeight:'')+(customWidth?','+customWidth:'');
556
- //lockTrigger();
557
- sendSize('size','parentIFrame.size('+valString+')', customHeight, customWidth);
558
- }
559
- };
333
+ };
334
+ }
560
335
  }
561
336
 
562
- function initInterval() {
563
- if ( 0 !== interval ) {
337
+ function initInterval(){
338
+ if ( 0 !== interval ){
564
339
  log('setInterval: '+interval+'ms');
565
- intervalTimer = setInterval(function() {
340
+ setInterval(function(){
566
341
  sendSize('interval','setInterval: '+interval);
567
342
  },Math.abs(interval));
568
343
  }
569
344
  }
570
345
 
571
- /* istanbul ignore next */ //Not testable in PhantomJS
572
- function setupBodyMutationObserver() {
573
- function addImageLoadListners(mutation) {
574
- function addImageLoadListener(element) {
575
- if (false === element.complete) {
576
- log('Attach listeners to ' + element.src);
577
- element.addEventListener('load', imageLoaded, false);
578
- element.addEventListener('error', imageError, false);
579
- elements.push(element);
580
- }
581
- }
582
-
583
- if (mutation.type === 'attributes' && mutation.attributeName === 'src') {
584
- addImageLoadListener(mutation.target);
585
- } else if (mutation.type === 'childList') {
586
- Array.prototype.forEach.call(
587
- mutation.target.querySelectorAll('img'),
588
- addImageLoadListener
589
- );
346
+ function setupInjectElementLoadListeners(mutations){
347
+ function addLoadListener(element){
348
+ if (element.height === undefined || element.width === undefined || 0 === element.height || 0 === element.width){
349
+ log('Attach listener to '+element.src);
350
+ addEventListener(element,'load', function imageLoaded(){
351
+ sendSize('imageLoad','Image loaded');
352
+ });
590
353
  }
591
354
  }
592
355
 
593
- function removeFromArray(element) {
594
- elements.splice(elements.indexOf(element),1);
595
- }
596
-
597
- function removeImageLoadListener(element) {
598
- log('Remove listeners from ' + element.src);
599
- element.removeEventListener('load', imageLoaded, false);
600
- element.removeEventListener('error', imageError, false);
601
- removeFromArray(element);
602
- }
603
-
604
- function imageEventTriggered(event,type,typeDesc) {
605
- removeImageLoadListener(event.target);
606
- sendSize(type, typeDesc + ': ' + event.target.src, undefined, undefined);
607
- }
608
-
609
- function imageLoaded(event) {
610
- imageEventTriggered(event,'imageLoad','Image loaded');
611
- }
612
-
613
- function imageError(event) {
614
- imageEventTriggered(event,'imageLoadFailed','Image load failed');
615
- }
356
+ mutations.forEach(function (mutation) {
357
+ if (mutation.type === 'attributes' && mutation.attributeName === 'src'){
358
+ addLoadListener(mutation.target);
359
+ } else if (mutation.type === 'childList'){
360
+ var images = mutation.target.querySelectorAll('img');
361
+ Array.prototype.forEach.call(images,function (image) {
362
+ addLoadListener(image);
363
+ });
364
+ }
365
+ });
366
+ }
616
367
 
617
- function mutationObserved(mutations) {
618
- sendSize('mutationObserver','mutationObserver: ' + mutations[0].target + ' ' + mutations[0].type);
368
+ function setupMutationObserver(){
619
369
 
620
- //Deal with WebKit asyncing image loading when tags are injected into the page
621
- mutations.forEach(addImageLoadListners);
622
- }
370
+ var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
623
371
 
624
- function createMutationObserver() {
372
+ function createMutationObserver(){
625
373
  var
626
374
  target = document.querySelector('body'),
627
375
 
@@ -632,44 +380,26 @@
632
380
  characterDataOldValue : false,
633
381
  childList : true,
634
382
  subtree : true
635
- };
383
+ },
636
384
 
637
- observer = new MutationObserver(mutationObserved);
385
+ observer = new MutationObserver(function(mutations) {
386
+ sendSize('mutationObserver','mutationObserver: ' + mutations[0].target + ' ' + mutations[0].type);
387
+ setupInjectElementLoadListeners(mutations); //Deal with WebKit asyncing image loading when tags are injected into the page
388
+ });
638
389
 
639
- log('Create body MutationObserver');
390
+ log('Enable MutationObserver');
640
391
  observer.observe(target, config);
641
-
642
- return observer;
643
392
  }
644
393
 
645
- var
646
- elements = [],
647
- MutationObserver = window.MutationObserver || window.WebKitMutationObserver,
648
- observer = createMutationObserver();
649
-
650
- return {
651
- disconnect: function () {
652
- if ('disconnect' in observer) {
653
- log('Disconnect body MutationObserver');
654
- observer.disconnect();
655
- elements.forEach(removeImageLoadListener);
656
- }
657
- }
658
- };
659
- }
660
-
661
- function setupMutationObserver() {
662
- var forceIntervalTimer = 0 > interval;
663
-
664
- /* istanbul ignore if */ // Not testable in PhantomJS
665
- if (window.MutationObserver || window.WebKitMutationObserver) {
666
- if (forceIntervalTimer) {
394
+ if (MutationObserver){
395
+ if (0 > interval) {
667
396
  initInterval();
668
397
  } else {
669
- bodyObserver = setupBodyMutationObserver();
398
+ createMutationObserver();
670
399
  }
671
- } else {
672
- log('MutationObserver not supported in this browser!');
400
+ }
401
+ else {
402
+ warn('MutationObserver not supported in this browser!');
673
403
  initInterval();
674
404
  }
675
405
  }
@@ -677,288 +407,211 @@
677
407
 
678
408
  // document.documentElement.offsetHeight is not reliable, so
679
409
  // we have to jump through hoops to get a better value.
680
- function getComputedStyle(prop,el) {
681
- /* istanbul ignore next */ //Not testable in PhantomJS
682
- function convertUnitsToPxForIE8(value) {
683
- var PIXEL = /^\d+(px)?$/i;
410
+ function getBodyOffsetHeight(){
411
+ function getComputedBodyStyle(prop) {
412
+ function convertUnitsToPxForIE8(value) {
413
+ var PIXEL = /^\d+(px)?$/i;
414
+
415
+ if (PIXEL.test(value)) {
416
+ return parseInt(value,base);
417
+ }
418
+
419
+ var
420
+ style = el.style.left,
421
+ runtimeStyle = el.runtimeStyle.left;
684
422
 
685
- if (PIXEL.test(value)) {
686
- return parseInt(value,base);
423
+ el.runtimeStyle.left = el.currentStyle.left;
424
+ el.style.left = value || 0;
425
+ value = el.style.pixelLeft;
426
+ el.style.left = style;
427
+ el.runtimeStyle.left = runtimeStyle;
428
+
429
+ return value;
687
430
  }
688
431
 
689
432
  var
690
- style = el.style.left,
691
- runtimeStyle = el.runtimeStyle.left;
692
-
693
- el.runtimeStyle.left = el.currentStyle.left;
694
- el.style.left = value || 0;
695
- value = el.style.pixelLeft;
696
- el.style.left = style;
697
- el.runtimeStyle.left = runtimeStyle;
433
+ el = document.body,
434
+ retVal = 0;
435
+
436
+ if (('defaultView' in document) && ('getComputedStyle' in document.defaultView)) {
437
+ retVal = document.defaultView.getComputedStyle(el, null);
438
+ retVal = (null !== retVal) ? retVal[prop] : 0;
439
+ } else {//IE8
440
+ retVal = convertUnitsToPxForIE8(el.currentStyle[prop]);
441
+ }
698
442
 
699
- return value;
443
+ return parseInt(retVal,base);
700
444
  }
701
445
 
702
- var retVal = 0;
703
- el = el || document.body;
446
+ return document.body.offsetHeight +
447
+ getComputedBodyStyle('marginTop') +
448
+ getComputedBodyStyle('marginBottom');
449
+ }
704
450
 
705
- /* istanbul ignore else */ // Not testable in phantonJS
706
- if (('defaultView' in document) && ('getComputedStyle' in document.defaultView)) {
707
- retVal = document.defaultView.getComputedStyle(el, null);
708
- retVal = (null !== retVal) ? retVal[prop] : 0;
709
- } else {//IE8
710
- retVal = convertUnitsToPxForIE8(el.currentStyle[prop]);
711
- }
451
+ function getBodyScrollHeight(){
452
+ return document.body.scrollHeight;
453
+ }
712
454
 
713
- return parseInt(retVal,base);
455
+ function getDEOffsetHeight(){
456
+ return document.documentElement.offsetHeight;
714
457
  }
715
458
 
716
- function chkEventThottle(timer) {
717
- if(timer > throttledTimer/2) {
718
- throttledTimer = 2*timer;
719
- log('Event throttle increased to ' + throttledTimer + 'ms');
720
- }
459
+ function getDEScrollHeight(){
460
+ return document.documentElement.scrollHeight;
721
461
  }
722
462
 
723
- //Idea from https://github.com/guardian/iframe-messenger
724
- function getMaxElement(side,elements) {
463
+ //From https://github.com/guardian/iframe-messenger
464
+ function getLowestElementHeight() {
725
465
  var
726
- elementsLength = elements.length,
727
- elVal = 0,
728
- maxVal = 0,
729
- Side = capitalizeFirstLetter(side),
730
- timer = getNow();
731
-
732
- for (var i = 0; i < elementsLength; i++) {
733
- elVal = elements[i].getBoundingClientRect()[side] + getComputedStyle('margin'+Side,elements[i]);
734
- if (elVal > maxVal) {
735
- maxVal = elVal;
466
+ allElements = document.querySelectorAll('body *'),
467
+ allElementsLength = allElements.length,
468
+ maxBottomVal = 0,
469
+ timer = new Date().getTime();
470
+
471
+ for (var i = 0; i < allElementsLength; i++) {
472
+ if (allElements[i].getBoundingClientRect().bottom > maxBottomVal) {
473
+ maxBottomVal = allElements[i].getBoundingClientRect().bottom;
736
474
  }
737
475
  }
738
476
 
739
- timer = getNow() - timer;
740
-
741
- log('Parsed '+elementsLength+' HTML elements');
742
- log('Element position calculated in ' + timer + 'ms');
477
+ timer = new Date().getTime() - timer;
743
478
 
744
- chkEventThottle(timer);
479
+ log('Parsed '+allElementsLength+' HTML elements');
480
+ log('LowestElement bottom position calculated in ' + timer + 'ms');
745
481
 
746
- return maxVal;
482
+ return maxBottomVal;
747
483
  }
748
484
 
749
- function getAllMeasurements(dimention) {
485
+ function getAllHeights(){
750
486
  return [
751
- dimention.bodyOffset(),
752
- dimention.bodyScroll(),
753
- dimention.documentElementOffset(),
754
- dimention.documentElementScroll()
487
+ getBodyOffsetHeight(),
488
+ getBodyScrollHeight(),
489
+ getDEOffsetHeight(),
490
+ getDEScrollHeight()
755
491
  ];
756
492
  }
757
493
 
758
- function getTaggedElements(side,tag) {
759
- function noTaggedElementsFound() {
760
- warn('No tagged elements ('+tag+') found on page');
761
- return document.querySelectorAll('body *');
762
- }
763
-
764
- var elements = document.querySelectorAll('['+tag+']');
765
-
766
- if (0 === elements.length) noTaggedElementsFound();
767
-
768
- return getMaxElement(side,elements);
494
+ function getMaxHeight(){
495
+ return Math.max.apply(null,getAllHeights());
769
496
  }
770
497
 
771
- function getAllElements() {
772
- return document.querySelectorAll('body *');
498
+ function getMinHeight(){
499
+ return Math.min.apply(null,getAllHeights());
773
500
  }
774
501
 
775
- var
776
- getHeight = {
777
- bodyOffset: function getBodyOffsetHeight() {
778
- return document.body.offsetHeight + getComputedStyle('marginTop') + getComputedStyle('marginBottom');
779
- },
780
-
781
- offset: function() {
782
- return getHeight.bodyOffset(); //Backwards compatability
783
- },
784
-
785
- bodyScroll: function getBodyScrollHeight() {
786
- return document.body.scrollHeight;
787
- },
788
-
789
- custom: function getCustomWidth() {
790
- return customCalcMethods.height();
791
- },
792
-
793
- documentElementOffset: function getDEOffsetHeight() {
794
- return document.documentElement.offsetHeight;
795
- },
796
-
797
- documentElementScroll: function getDEScrollHeight() {
798
- return document.documentElement.scrollHeight;
799
- },
800
-
801
- max: function getMaxHeight() {
802
- return Math.max.apply(null,getAllMeasurements(getHeight));
803
- },
804
-
805
- min: function getMinHeight() {
806
- return Math.min.apply(null,getAllMeasurements(getHeight));
807
- },
808
-
809
- grow: function growHeight() {
810
- return getHeight.max(); //Run max without the forced downsizing
811
- },
812
-
813
- lowestElement: function getBestHeight() {
814
- return Math.max(getHeight.bodyOffset(), getMaxElement('bottom',getAllElements()));
815
- },
816
-
817
- taggedElement: function getTaggedElementsHeight() {
818
- return getTaggedElements('bottom','data-iframe-height');
819
- }
820
- },
821
-
822
- getWidth = {
823
- bodyScroll: function getBodyScrollWidth() {
824
- return document.body.scrollWidth;
825
- },
826
-
827
- bodyOffset: function getBodyOffsetWidth() {
828
- return document.body.offsetWidth;
829
- },
830
-
831
- custom: function getCustomWidth() {
832
- return customCalcMethods.width();
833
- },
834
-
835
- documentElementScroll: function getDEScrollWidth() {
836
- return document.documentElement.scrollWidth;
837
- },
838
-
839
- documentElementOffset: function getDEOffsetWidth() {
840
- return document.documentElement.offsetWidth;
841
- },
502
+ function getBestHeight(){
503
+ return Math.max(getBodyOffsetHeight(),getLowestElementHeight());
504
+ }
842
505
 
843
- scroll: function getMaxWidth() {
844
- return Math.max(getWidth.bodyScroll(), getWidth.documentElementScroll());
845
- },
506
+ var getHeight = {
507
+ offset : getBodyOffsetHeight, //Backward compatability
508
+ bodyOffset : getBodyOffsetHeight,
509
+ bodyScroll : getBodyScrollHeight,
510
+ documentElementOffset : getDEOffsetHeight,
511
+ scroll : getDEScrollHeight, //Backward compatability
512
+ documentElementScroll : getDEScrollHeight,
513
+ max : getMaxHeight,
514
+ min : getMinHeight,
515
+ grow : getMaxHeight,
516
+ lowestElement : getBestHeight
517
+ };
846
518
 
847
- max: function getMaxWidth() {
848
- return Math.max.apply(null,getAllMeasurements(getWidth));
849
- },
519
+ function getWidth(){
520
+ return Math.max(
521
+ document.documentElement.scrollWidth,
522
+ document.body.scrollWidth
523
+ );
524
+ }
850
525
 
851
- min: function getMinWidth() {
852
- return Math.min.apply(null,getAllMeasurements(getWidth));
853
- },
526
+ function sendSize(triggerEvent, triggerEventDesc, customHeight, customWidth){
854
527
 
855
- rightMostElement: function rightMostElement() {
856
- return getMaxElement('right', getAllElements());
857
- },
528
+ var currentHeight,currentWidth;
858
529
 
859
- taggedElement: function getTaggedElementsWidth() {
860
- return getTaggedElements('right', 'data-iframe-width');
530
+ function recordTrigger(){
531
+ if (!(triggerEvent in {'reset':1,'resetPage':1,'init':1})){
532
+ log( 'Trigger event: ' + triggerEventDesc );
861
533
  }
862
- };
863
-
864
-
865
- function sizeIFrame(triggerEvent, triggerEventDesc, customHeight, customWidth) {
534
+ }
866
535
 
867
- function resizeIFrame() {
536
+ function resizeIFrame(){
868
537
  height = currentHeight;
869
538
  width = currentWidth;
870
539
 
871
540
  sendMsg(height,width,triggerEvent);
872
541
  }
873
542
 
874
- function isSizeChangeDetected() {
875
- function checkTolarance(a,b) {
543
+ function isDoubleFiredEvent(){
544
+ return triggerLocked && (triggerEvent in doubleEventList);
545
+ }
546
+
547
+ function isSizeChangeDetected(){
548
+ function checkTolerance(a,b){
876
549
  var retVal = Math.abs(a-b) <= tolerance;
877
550
  return !retVal;
878
551
  }
879
552
 
880
553
  currentHeight = (undefined !== customHeight) ? customHeight : getHeight[heightCalcMode]();
881
- currentWidth = (undefined !== customWidth ) ? customWidth : getWidth[widthCalcMode]();
554
+ currentWidth = (undefined !== customWidth ) ? customWidth : getWidth();
882
555
 
883
- return checkTolarance(height,currentHeight) || (calculateWidth && checkTolarance(width,currentWidth));
556
+ return checkTolerance(height,currentHeight) ||
557
+ (calculateWidth && checkTolerance(width,currentWidth));
884
558
  }
885
559
 
886
- function isForceResizableEvent() {
560
+ function isForceResizableEvent(){
887
561
  return !(triggerEvent in {'init':1,'interval':1,'size':1});
888
562
  }
889
563
 
890
- function isForceResizableCalcMode() {
891
- return (heightCalcMode in resetRequiredMethods) || (calculateWidth && widthCalcMode in resetRequiredMethods);
564
+ function isForceResizableHeightCalcMode(){
565
+ return (heightCalcMode in resetRequiredMethods);
892
566
  }
893
567
 
894
- function logIgnored() {
568
+ function logIgnored(){
895
569
  log('No change in size detected');
896
570
  }
897
571
 
898
- function checkDownSizing() {
899
- if (isForceResizableEvent() && isForceResizableCalcMode()) {
572
+ function checkDownSizing(){
573
+ if (isForceResizableEvent() && isForceResizableHeightCalcMode()){
900
574
  resetIFrame(triggerEventDesc);
901
- } else if (!(triggerEvent in {'interval':1})) {
575
+ } else if (!(triggerEvent in {'interval':1})){
576
+ recordTrigger();
902
577
  logIgnored();
903
578
  }
904
579
  }
905
580
 
906
- var currentHeight,currentWidth;
907
-
908
- if (isSizeChangeDetected() || 'init' === triggerEvent) {
909
- lockTrigger();
910
- resizeIFrame();
911
- } else {
912
- checkDownSizing();
913
- }
914
- }
915
-
916
- var sizeIFrameThrottled = throttle(sizeIFrame);
917
-
918
- function sendSize(triggerEvent, triggerEventDesc, customHeight, customWidth) {
919
- function recordTrigger() {
920
- if (!(triggerEvent in {'reset':1,'resetPage':1,'init':1})) {
921
- log( 'Trigger event: ' + triggerEventDesc );
922
- }
923
- }
924
-
925
- function isDoubleFiredEvent() {
926
- return triggerLocked && (triggerEvent in doubleEventList);
927
- }
928
-
929
- if (!isDoubleFiredEvent()) {
930
- recordTrigger();
931
- if (triggerEvent === 'init') {
932
- sizeIFrame(triggerEvent, triggerEventDesc, customHeight, customWidth);
581
+ if (!isDoubleFiredEvent()){
582
+ if (isSizeChangeDetected()){
583
+ recordTrigger();
584
+ lockTrigger();
585
+ resizeIFrame();
933
586
  } else {
934
- sizeIFrameThrottled(triggerEvent, triggerEventDesc, customHeight, customWidth);
587
+ checkDownSizing();
935
588
  }
936
589
  } else {
937
590
  log('Trigger event cancelled: '+triggerEvent);
938
591
  }
939
592
  }
940
593
 
941
- function lockTrigger() {
942
- if (!triggerLocked) {
594
+ function lockTrigger(){
595
+ if (!triggerLocked){
943
596
  triggerLocked = true;
944
597
  log('Trigger event lock on');
945
598
  }
946
599
  clearTimeout(triggerLockedTimer);
947
- triggerLockedTimer = setTimeout(function() {
600
+ triggerLockedTimer = setTimeout(function(){
948
601
  triggerLocked = false;
949
602
  log('Trigger event lock off');
950
603
  log('--');
951
604
  },eventCancelTimer);
952
605
  }
953
606
 
954
- function triggerReset(triggerEvent) {
607
+ function triggerReset(triggerEvent){
955
608
  height = getHeight[heightCalcMode]();
956
- width = getWidth[widthCalcMode]();
609
+ width = getWidth();
957
610
 
958
611
  sendMsg(height,width,triggerEvent);
959
612
  }
960
613
 
961
- function resetIFrame(triggerEventDesc) {
614
+ function resetIFrame(triggerEventDesc){
962
615
  var hcm = heightCalcMode;
963
616
  heightCalcMode = heightCalcModeDefault;
964
617
 
@@ -969,16 +622,16 @@
969
622
  heightCalcMode = hcm;
970
623
  }
971
624
 
972
- function sendMsg(height,width,triggerEvent,msg,targetOrigin) {
973
- function setTargetOrigin() {
974
- if (undefined === targetOrigin) {
625
+ function sendMsg(height,width,triggerEvent,msg,targetOrigin){
626
+ function setTargetOrigin(){
627
+ if (undefined === targetOrigin){
975
628
  targetOrigin = targetOriginDefault;
976
629
  } else {
977
630
  log('Message targetOrigin: '+targetOrigin);
978
631
  }
979
632
  }
980
633
 
981
- function sendToParent() {
634
+ function sendToParent(){
982
635
  var
983
636
  size = height + ':' + width,
984
637
  message = myID + ':' + size + ':' + triggerEvent + (undefined !== msg ? ':' + msg : '');
@@ -987,124 +640,68 @@
987
640
  target.postMessage( msgID + message, targetOrigin);
988
641
  }
989
642
 
990
- if(true === sendPermit) {
991
- setTargetOrigin();
992
- sendToParent();
993
- }
643
+ setTargetOrigin();
644
+ sendToParent();
994
645
  }
995
646
 
996
647
  function receiver(event) {
997
- var processRequestFromParent = {
998
- init: function initFromParent() {
999
- function fireInit() {
1000
- initMsg = event.data;
1001
- target = event.source;
1002
-
1003
- init();
1004
- firstRun = false;
1005
- setTimeout(function() { initLock = false;},eventCancelTimer);
1006
- }
1007
-
1008
- if (document.readyState === "interactive" || document.readyState === "complete") {
1009
- fireInit();
1010
- } else {
1011
- log('Waiting for page ready');
1012
- addEventListener(window,'readystatechange',processRequestFromParent.initFromParent);
1013
- }
1014
- },
1015
-
1016
- reset: function resetFromParent() {
1017
- if (!initLock) {
1018
- log('Page size reset by host page');
1019
- triggerReset('resetPage');
1020
- } else {
1021
- log('Page reset ignored by init');
1022
- }
1023
- },
1024
-
1025
- resize: function resizeFromParent() {
1026
- sendSize('resizeParent','Parent window requested size check');
1027
- },
1028
-
1029
- moveToAnchor: function moveToAnchorF() {
1030
- inPageLinks.findTarget(getData());
1031
- },
1032
- inPageLink: function inPageLinkF() {this.moveToAnchor();}, //Backward compatability
1033
-
1034
- pageInfo: function pageInfoFromParent() {
1035
- var msgBody = getData();
1036
- log('PageInfoFromParent called from parent: ' + msgBody );
1037
- pageInfoCallback(JSON.parse(msgBody));
1038
- log(' --');
1039
- },
1040
-
1041
- message: function messageFromParent() {
1042
- var msgBody = getData();
1043
-
1044
- log('MessageCallback called from parent: ' + msgBody );
1045
- messageCallback(JSON.parse(msgBody));
1046
- log(' --');
1047
- }
1048
- };
1049
-
1050
- function isMessageForUs() {
648
+ function isMessageForUs(){
1051
649
  return msgID === (''+event.data).substr(0,msgIdLen); //''+ Protects against non-string messages
1052
650
  }
1053
651
 
1054
- function getMessageType() {
1055
- return event.data.split(']')[1].split(':')[0];
652
+ function initFromParent(){
653
+ initMsg = event.data;
654
+ target = event.source;
655
+
656
+ init();
657
+ firstRun = false;
658
+ setTimeout(function(){ initLock = false;},eventCancelTimer);
1056
659
  }
1057
660
 
1058
- function getData() {
1059
- return event.data.substr(event.data.indexOf(':')+1);
661
+ function resetFromParent(){
662
+ if (!initLock){
663
+ log('Page size reset by host page');
664
+ triggerReset('resetPage');
665
+ } else {
666
+ log('Page reset ignored by init');
667
+ }
1060
668
  }
1061
669
 
1062
- function isMiddleTier() {
1063
- return !(typeof module !== 'undefined' && module.exports) && ('iFrameResize' in window);
670
+ function resizeFromParent(){
671
+ sendSize('resizeParent','Parent window resized');
1064
672
  }
1065
673
 
1066
- function isInitMsg() {
1067
- //Test if this message is from a child below us. This is an ugly test, however, updating
1068
- //the message format would break backwards compatibity.
1069
- return event.data.split(':')[2] in {'true':1,'false':1};
674
+ function getMessageType(){
675
+ return event.data.split(']')[1];
1070
676
  }
1071
677
 
1072
- function callFromParent() {
1073
- var messageType = getMessageType();
678
+ function isMiddleTier(){
679
+ return ('iFrameResize' in window);
680
+ }
1074
681
 
1075
- if (messageType in processRequestFromParent) {
1076
- processRequestFromParent[messageType]();
1077
- } else if (!isMiddleTier() && !isInitMsg()) {
1078
- warn('Unexpected message ('+event.data+')');
1079
- }
682
+ function isInitMsg(){
683
+ //test if this message is from a child below us. This is an ugly test, however, updating
684
+ //the message format would break backwards compatibility.
685
+ return event.data.split(':')[2] in {'true':1,'false':1};
1080
686
  }
1081
687
 
1082
- function processMessage() {
1083
- if (false === firstRun) {
1084
- callFromParent();
688
+ if (isMessageForUs()){
689
+ if (firstRun === false) {
690
+ if ('reset' === getMessageType()){
691
+ resetFromParent();
692
+ } else if ('resize' === getMessageType()){
693
+ resizeFromParent();
694
+ } else if (event.data !== initMsg && !isMiddleTier()){
695
+ warn('Unexpected message ('+event.data+')');
696
+ }
1085
697
  } else if (isInitMsg()) {
1086
- processRequestFromParent.init();
698
+ initFromParent();
1087
699
  } else {
1088
- log('Ignored message of type "' + getMessageType() + '". Received before initialization.');
700
+ warn('Received message of type ('+getMessageType()+') before initialization.');
1089
701
  }
1090
702
  }
1091
-
1092
- if (isMessageForUs()) {
1093
- processMessage();
1094
- }
1095
- }
1096
-
1097
- //Normally the parent kicks things off when it detects the iFrame has loaded.
1098
- //If this script is async-loaded, then tell parent page to retry init.
1099
- function chkLateLoaded() {
1100
- if('loading' !== document.readyState) {
1101
- window.parent.postMessage('[iFrameResizerChild]Ready','*');
1102
- }
1103
703
  }
1104
704
 
1105
705
  addEventListener(window, 'message', receiver);
1106
- chkLateLoaded();
1107
-
1108
-
1109
706
 
1110
- })();
707
+ })();