extjs-rails 4.1.0.alpha1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. data/.gitignore +18 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +36 -0
  4. data/README.md +29 -0
  5. data/Rakefile +2 -0
  6. data/app/assets/javascripts/extjs-rails/extjs-rails.js +1 -0
  7. data/app/assets/javascripts/extjs-rails/index.js.erb +9 -0
  8. data/app/assets/javascripts/extjs-rails/sdk.jsb3 +2017 -0
  9. data/app/assets/javascripts/extjs-rails/src/AbstractComponent.js +3290 -0
  10. data/app/assets/javascripts/extjs-rails/src/AbstractManager.js +144 -0
  11. data/app/assets/javascripts/extjs-rails/src/AbstractPlugin.js +72 -0
  12. data/app/assets/javascripts/extjs-rails/src/Action.js +276 -0
  13. data/app/assets/javascripts/extjs-rails/src/Ajax.js +99 -0
  14. data/app/assets/javascripts/extjs-rails/src/Component.js +1344 -0
  15. data/app/assets/javascripts/extjs-rails/src/ComponentLoader.js +202 -0
  16. data/app/assets/javascripts/extjs-rails/src/ComponentManager.js +47 -0
  17. data/app/assets/javascripts/extjs-rails/src/ComponentQuery.js +521 -0
  18. data/app/assets/javascripts/extjs-rails/src/Editor.js +494 -0
  19. data/app/assets/javascripts/extjs-rails/src/ElementLoader.js +404 -0
  20. data/app/assets/javascripts/extjs-rails/src/FocusManager.js +712 -0
  21. data/app/assets/javascripts/extjs-rails/src/Img.js +111 -0
  22. data/app/assets/javascripts/extjs-rails/src/Layer.js +543 -0
  23. data/app/assets/javascripts/extjs-rails/src/LoadMask.js +432 -0
  24. data/app/assets/javascripts/extjs-rails/src/ModelManager.js +186 -0
  25. data/app/assets/javascripts/extjs-rails/src/PluginManager.js +110 -0
  26. data/app/assets/javascripts/extjs-rails/src/ProgressBar.js +336 -0
  27. data/app/assets/javascripts/extjs-rails/src/Shadow.js +233 -0
  28. data/app/assets/javascripts/extjs-rails/src/ShadowPool.js +43 -0
  29. data/app/assets/javascripts/extjs-rails/src/Template.js +331 -0
  30. data/app/assets/javascripts/extjs-rails/src/XTemplate.js +365 -0
  31. data/app/assets/javascripts/extjs-rails/src/XTemplateCompiler.js +450 -0
  32. data/app/assets/javascripts/extjs-rails/src/XTemplateParser.js +249 -0
  33. data/app/assets/javascripts/extjs-rails/src/ZIndexManager.js +519 -0
  34. data/app/assets/javascripts/extjs-rails/src/app/Application.js +271 -0
  35. data/app/assets/javascripts/extjs-rails/src/app/Controller.js +458 -0
  36. data/app/assets/javascripts/extjs-rails/src/app/EventBus.js +112 -0
  37. data/app/assets/javascripts/extjs-rails/src/button/Button.js +1483 -0
  38. data/app/assets/javascripts/extjs-rails/src/button/Cycle.js +215 -0
  39. data/app/assets/javascripts/extjs-rails/src/button/Split.js +99 -0
  40. data/app/assets/javascripts/extjs-rails/src/chart/Callout.js +140 -0
  41. data/app/assets/javascripts/extjs-rails/src/chart/Chart.js +966 -0
  42. data/app/assets/javascripts/extjs-rails/src/chart/Highlight.js +172 -0
  43. data/app/assets/javascripts/extjs-rails/src/chart/Label.js +241 -0
  44. data/app/assets/javascripts/extjs-rails/src/chart/Legend.js +474 -0
  45. data/app/assets/javascripts/extjs-rails/src/chart/LegendItem.js +217 -0
  46. data/app/assets/javascripts/extjs-rails/src/chart/Mask.js +230 -0
  47. data/app/assets/javascripts/extjs-rails/src/chart/MaskLayer.js +48 -0
  48. data/app/assets/javascripts/extjs-rails/src/chart/Navigation.js +79 -0
  49. data/app/assets/javascripts/extjs-rails/src/chart/Shape.js +106 -0
  50. data/app/assets/javascripts/extjs-rails/src/chart/Tip.js +98 -0
  51. data/app/assets/javascripts/extjs-rails/src/chart/TipSurface.js +42 -0
  52. data/app/assets/javascripts/extjs-rails/src/chart/axis/Abstract.js +73 -0
  53. data/app/assets/javascripts/extjs-rails/src/chart/axis/Axis.js +961 -0
  54. data/app/assets/javascripts/extjs-rails/src/chart/axis/Category.js +130 -0
  55. data/app/assets/javascripts/extjs-rails/src/chart/axis/Gauge.js +203 -0
  56. data/app/assets/javascripts/extjs-rails/src/chart/axis/Numeric.js +235 -0
  57. data/app/assets/javascripts/extjs-rails/src/chart/axis/Radial.js +204 -0
  58. data/app/assets/javascripts/extjs-rails/src/chart/axis/Time.js +135 -0
  59. data/app/assets/javascripts/extjs-rails/src/chart/series/Area.js +803 -0
  60. data/app/assets/javascripts/extjs-rails/src/chart/series/Bar.js +853 -0
  61. data/app/assets/javascripts/extjs-rails/src/chart/series/Cartesian.js +328 -0
  62. data/app/assets/javascripts/extjs-rails/src/chart/series/Column.js +104 -0
  63. data/app/assets/javascripts/extjs-rails/src/chart/series/Gauge.js +490 -0
  64. data/app/assets/javascripts/extjs-rails/src/chart/series/Line.js +1104 -0
  65. data/app/assets/javascripts/extjs-rails/src/chart/series/Pie.js +1072 -0
  66. data/app/assets/javascripts/extjs-rails/src/chart/series/Radar.js +440 -0
  67. data/app/assets/javascripts/extjs-rails/src/chart/series/Scatter.js +668 -0
  68. data/app/assets/javascripts/extjs-rails/src/chart/series/Series.js +443 -0
  69. data/app/assets/javascripts/extjs-rails/src/chart/theme/Base.js +175 -0
  70. data/app/assets/javascripts/extjs-rails/src/chart/theme/Theme.js +253 -0
  71. data/app/assets/javascripts/extjs-rails/src/container/AbstractContainer.js +1062 -0
  72. data/app/assets/javascripts/extjs-rails/src/container/ButtonGroup.js +143 -0
  73. data/app/assets/javascripts/extjs-rails/src/container/Container.js +212 -0
  74. data/app/assets/javascripts/extjs-rails/src/container/DockingContainer.js +265 -0
  75. data/app/assets/javascripts/extjs-rails/src/container/Viewport.js +184 -0
  76. data/app/assets/javascripts/extjs-rails/src/core/dom/Element.form.js +50 -0
  77. data/app/assets/javascripts/extjs-rails/src/core/dom/Element.static-more.js +159 -0
  78. data/app/assets/javascripts/extjs-rails/src/core/examples/index.html +321 -0
  79. data/app/assets/javascripts/extjs-rails/src/core/examples/index.js +6 -0
  80. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/CTO.js +25 -0
  81. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/CoolGuy.js +20 -0
  82. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Developer.js +43 -0
  83. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Gun.js +3 -0
  84. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/HumanResource.js +23 -0
  85. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Musician.js +20 -0
  86. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Person.js +50 -0
  87. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/ability/CanComposeSongs.js +9 -0
  88. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/ability/CanPlayGuitar.js +9 -0
  89. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/ability/CanSing.js +18 -0
  90. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/A.js +3 -0
  91. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/B.js +3 -0
  92. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/C.js +3 -0
  93. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/D.js +3 -0
  94. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/E.js +3 -0
  95. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/notdeadlock/A.js +3 -0
  96. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/notdeadlock/B.js +4 -0
  97. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/notdeadlock/C.js +3 -0
  98. data/app/assets/javascripts/extjs-rails/src/core/src/EventManager.js +1167 -0
  99. data/app/assets/javascripts/extjs-rails/src/core/src/EventObject.js +883 -0
  100. data/app/assets/javascripts/extjs-rails/src/core/src/Ext-more.js +1283 -0
  101. data/app/assets/javascripts/extjs-rails/src/core/src/Ext.js +736 -0
  102. data/app/assets/javascripts/extjs-rails/src/core/src/Support.js +662 -0
  103. data/app/assets/javascripts/extjs-rails/src/core/src/class/Base.js +1085 -0
  104. data/app/assets/javascripts/extjs-rails/src/core/src/class/Class.js +676 -0
  105. data/app/assets/javascripts/extjs-rails/src/core/src/class/ClassManager.js +1591 -0
  106. data/app/assets/javascripts/extjs-rails/src/core/src/class/Loader.js +1423 -0
  107. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.alignment.js +173 -0
  108. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.insertion.js +193 -0
  109. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.js +681 -0
  110. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.position.js +356 -0
  111. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.static.js +474 -0
  112. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.style.js +851 -0
  113. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.traversal.js +180 -0
  114. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractHelper.js +291 -0
  115. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractQuery.js +72 -0
  116. data/app/assets/javascripts/extjs-rails/src/core/src/dom/CompositeElement.js +75 -0
  117. data/app/assets/javascripts/extjs-rails/src/core/src/dom/CompositeElementLite.js +436 -0
  118. data/app/assets/javascripts/extjs-rails/src/core/src/dom/DomQuery-aria.js +1049 -0
  119. data/app/assets/javascripts/extjs-rails/src/core/src/env/Browser.js +186 -0
  120. data/app/assets/javascripts/extjs-rails/src/core/src/env/FeatureDetector.js +274 -0
  121. data/app/assets/javascripts/extjs-rails/src/core/src/env/OS.js +141 -0
  122. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Array.js +1205 -0
  123. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Date.js +1463 -0
  124. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Error.js +326 -0
  125. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Function.js +485 -0
  126. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Number.js +175 -0
  127. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Object.js +606 -0
  128. data/app/assets/javascripts/extjs-rails/src/core/src/lang/String.js +333 -0
  129. data/app/assets/javascripts/extjs-rails/src/core/src/misc/JSON.js +236 -0
  130. data/app/assets/javascripts/extjs-rails/src/core/src/perf/Accumulator.js +244 -0
  131. data/app/assets/javascripts/extjs-rails/src/core/src/perf/Monitor.js +197 -0
  132. data/app/assets/javascripts/extjs-rails/src/core/src/util/DelayedTask.js +71 -0
  133. data/app/assets/javascripts/extjs-rails/src/core/src/util/Event.js +215 -0
  134. data/app/assets/javascripts/extjs-rails/src/core/src/util/Format.js +551 -0
  135. data/app/assets/javascripts/extjs-rails/src/core/src/util/TaskManager.js +417 -0
  136. data/app/assets/javascripts/extjs-rails/src/core/src/version/Version.js +364 -0
  137. data/app/assets/javascripts/extjs-rails/src/core/test/unit/README.MD +91 -0
  138. data/app/assets/javascripts/extjs-rails/src/core/test/unit/bootstrap.js +39 -0
  139. data/app/assets/javascripts/extjs-rails/src/core/test/unit/build/build-data.js +34 -0
  140. data/app/assets/javascripts/extjs-rails/src/core/test/unit/build/build.sh +2 -0
  141. data/app/assets/javascripts/extjs-rails/src/core/test/unit/data.js +27 -0
  142. data/app/assets/javascripts/extjs-rails/src/core/test/unit/index.html +15 -0
  143. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom.html +40 -0
  144. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/extjs-api.js +12 -0
  145. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/platform-api.js +134 -0
  146. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/sanity.js +4 -0
  147. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/touch-api-out.js +128 -0
  148. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/touch-api.js +89 -0
  149. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/env/Environment.js +357 -0
  150. data/app/assets/javascripts/extjs-rails/src/core/test/unit/resources/APITest.js +37 -0
  151. data/app/assets/javascripts/extjs-rails/src/core/test/unit/resources/jsb3.js +14 -0
  152. data/app/assets/javascripts/extjs-rails/src/core/test/unit/resources/test-setup.js +137 -0
  153. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/EventManager.js +629 -0
  154. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Ext-mess.backup +198 -0
  155. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Ext-more.js +520 -0
  156. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Ext.js +1550 -0
  157. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Support.js +250 -0
  158. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/class/Base.js +47 -0
  159. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/class/Class.js +561 -0
  160. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/class/ClassManager.js +555 -0
  161. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/CompositeElementLite.js +409 -0
  162. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/DomHelper.js +444 -0
  163. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.insertion.js +342 -0
  164. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.js +731 -0
  165. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.static.js +201 -0
  166. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.style.js +118 -0
  167. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.traversal.js +336 -0
  168. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Array.js +1229 -0
  169. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Date.js +697 -0
  170. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Error.js +277 -0
  171. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Function.js +536 -0
  172. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Number.js +323 -0
  173. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Object.js +591 -0
  174. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/String.js +451 -0
  175. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/misc/JSON.js +252 -0
  176. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/util/Format.js +521 -0
  177. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/version/Version.js +148 -0
  178. data/app/assets/javascripts/extjs-rails/src/core/test/unit/specs.html +19 -0
  179. data/app/assets/javascripts/extjs-rails/src/data/AbstractStore.js +887 -0
  180. data/app/assets/javascripts/extjs-rails/src/data/ArrayStore.js +74 -0
  181. data/app/assets/javascripts/extjs-rails/src/data/Batch.js +236 -0
  182. data/app/assets/javascripts/extjs-rails/src/data/BufferStore.js +13 -0
  183. data/app/assets/javascripts/extjs-rails/src/data/Connection.js +969 -0
  184. data/app/assets/javascripts/extjs-rails/src/data/DirectStore.js +50 -0
  185. data/app/assets/javascripts/extjs-rails/src/data/Errors.js +52 -0
  186. data/app/assets/javascripts/extjs-rails/src/data/Field.js +341 -0
  187. data/app/assets/javascripts/extjs-rails/src/data/IdGenerator.js +198 -0
  188. data/app/assets/javascripts/extjs-rails/src/data/JsonP.js +253 -0
  189. data/app/assets/javascripts/extjs-rails/src/data/JsonPStore.js +51 -0
  190. data/app/assets/javascripts/extjs-rails/src/data/JsonStore.js +60 -0
  191. data/app/assets/javascripts/extjs-rails/src/data/Model.js +1673 -0
  192. data/app/assets/javascripts/extjs-rails/src/data/NodeInterface.js +1294 -0
  193. data/app/assets/javascripts/extjs-rails/src/data/NodeStore.js +254 -0
  194. data/app/assets/javascripts/extjs-rails/src/data/Operation.js +331 -0
  195. data/app/assets/javascripts/extjs-rails/src/data/Request.js +40 -0
  196. data/app/assets/javascripts/extjs-rails/src/data/ResultSet.js +56 -0
  197. data/app/assets/javascripts/extjs-rails/src/data/SequentialIdGenerator.js +61 -0
  198. data/app/assets/javascripts/extjs-rails/src/data/SortTypes.js +125 -0
  199. data/app/assets/javascripts/extjs-rails/src/data/Store.js +2609 -0
  200. data/app/assets/javascripts/extjs-rails/src/data/StoreManager.js +156 -0
  201. data/app/assets/javascripts/extjs-rails/src/data/Tree.js +290 -0
  202. data/app/assets/javascripts/extjs-rails/src/data/TreeStore.js +655 -0
  203. data/app/assets/javascripts/extjs-rails/src/data/Types.js +190 -0
  204. data/app/assets/javascripts/extjs-rails/src/data/UuidGenerator.js +215 -0
  205. data/app/assets/javascripts/extjs-rails/src/data/XmlStore.js +76 -0
  206. data/app/assets/javascripts/extjs-rails/src/data/association/Association.js +243 -0
  207. data/app/assets/javascripts/extjs-rails/src/data/association/BelongsTo.js +291 -0
  208. data/app/assets/javascripts/extjs-rails/src/data/association/HasMany.js +289 -0
  209. data/app/assets/javascripts/extjs-rails/src/data/association/HasOne.js +304 -0
  210. data/app/assets/javascripts/extjs-rails/src/data/proxy/Ajax.js +282 -0
  211. data/app/assets/javascripts/extjs-rails/src/data/proxy/Client.js +21 -0
  212. data/app/assets/javascripts/extjs-rails/src/data/proxy/Direct.js +181 -0
  213. data/app/assets/javascripts/extjs-rails/src/data/proxy/JsonP.js +313 -0
  214. data/app/assets/javascripts/extjs-rails/src/data/proxy/LocalStorage.js +69 -0
  215. data/app/assets/javascripts/extjs-rails/src/data/proxy/Memory.js +156 -0
  216. data/app/assets/javascripts/extjs-rails/src/data/proxy/Proxy.js +433 -0
  217. data/app/assets/javascripts/extjs-rails/src/data/proxy/Rest.js +173 -0
  218. data/app/assets/javascripts/extjs-rails/src/data/proxy/Server.js +460 -0
  219. data/app/assets/javascripts/extjs-rails/src/data/proxy/SessionStorage.js +39 -0
  220. data/app/assets/javascripts/extjs-rails/src/data/proxy/WebStorage.js +546 -0
  221. data/app/assets/javascripts/extjs-rails/src/data/reader/Array.js +68 -0
  222. data/app/assets/javascripts/extjs-rails/src/data/reader/Json.js +383 -0
  223. data/app/assets/javascripts/extjs-rails/src/data/reader/Reader.js +735 -0
  224. data/app/assets/javascripts/extjs-rails/src/data/reader/Xml.js +292 -0
  225. data/app/assets/javascripts/extjs-rails/src/data/validations.js +149 -0
  226. data/app/assets/javascripts/extjs-rails/src/data/writer/Json.js +81 -0
  227. data/app/assets/javascripts/extjs-rails/src/data/writer/Writer.js +147 -0
  228. data/app/assets/javascripts/extjs-rails/src/data/writer/Xml.js +88 -0
  229. data/app/assets/javascripts/extjs-rails/src/dd/DD.js +300 -0
  230. data/app/assets/javascripts/extjs-rails/src/dd/DDProxy.js +204 -0
  231. data/app/assets/javascripts/extjs-rails/src/dd/DDTarget.js +171 -0
  232. data/app/assets/javascripts/extjs-rails/src/dd/DragDrop.js +1101 -0
  233. data/app/assets/javascripts/extjs-rails/src/dd/DragDropManager.js +1264 -0
  234. data/app/assets/javascripts/extjs-rails/src/dd/DragSource.js +392 -0
  235. data/app/assets/javascripts/extjs-rails/src/dd/DragTracker.js +562 -0
  236. data/app/assets/javascripts/extjs-rails/src/dd/DragZone.js +137 -0
  237. data/app/assets/javascripts/extjs-rails/src/dd/DropTarget.js +118 -0
  238. data/app/assets/javascripts/extjs-rails/src/dd/DropZone.js +254 -0
  239. data/app/assets/javascripts/extjs-rails/src/dd/Registry.js +117 -0
  240. data/app/assets/javascripts/extjs-rails/src/dd/ScrollManager.js +218 -0
  241. data/app/assets/javascripts/extjs-rails/src/dd/StatusProxy.js +179 -0
  242. data/app/assets/javascripts/extjs-rails/src/diag/layout/Context.js +523 -0
  243. data/app/assets/javascripts/extjs-rails/src/diag/layout/ContextItem.js +179 -0
  244. data/app/assets/javascripts/extjs-rails/src/direct/Event.js +35 -0
  245. data/app/assets/javascripts/extjs-rails/src/direct/ExceptionEvent.js +16 -0
  246. data/app/assets/javascripts/extjs-rails/src/direct/JsonProvider.js +82 -0
  247. data/app/assets/javascripts/extjs-rails/src/direct/Manager.js +263 -0
  248. data/app/assets/javascripts/extjs-rails/src/direct/PollingProvider.js +156 -0
  249. data/app/assets/javascripts/extjs-rails/src/direct/Provider.js +96 -0
  250. data/app/assets/javascripts/extjs-rails/src/direct/RemotingEvent.js +24 -0
  251. data/app/assets/javascripts/extjs-rails/src/direct/RemotingMethod.js +100 -0
  252. data/app/assets/javascripts/extjs-rails/src/direct/RemotingProvider.js +510 -0
  253. data/app/assets/javascripts/extjs-rails/src/direct/Transaction.js +41 -0
  254. data/app/assets/javascripts/extjs-rails/src/dom/Element.alignment.js +378 -0
  255. data/app/assets/javascripts/extjs-rails/src/dom/Element.anim.js +962 -0
  256. data/app/assets/javascripts/extjs-rails/src/dom/Element.dd.js +40 -0
  257. data/app/assets/javascripts/extjs-rails/src/dom/Element.fx.js +194 -0
  258. data/app/assets/javascripts/extjs-rails/src/dom/Element.js +1407 -0
  259. data/app/assets/javascripts/extjs-rails/src/dom/Element.position.js +501 -0
  260. data/app/assets/javascripts/extjs-rails/src/dom/Element.scroll.js +214 -0
  261. data/app/assets/javascripts/extjs-rails/src/dom/Element.style.js +792 -0
  262. data/app/assets/javascripts/extjs-rails/src/dom/Element.traversal.js +8 -0
  263. data/app/assets/javascripts/extjs-rails/src/dom/Helper.js +466 -0
  264. data/app/assets/javascripts/extjs-rails/src/dom/Query.js +1067 -0
  265. data/app/assets/javascripts/extjs-rails/src/draw/Color.js +303 -0
  266. data/app/assets/javascripts/extjs-rails/src/draw/Component.js +245 -0
  267. data/app/assets/javascripts/extjs-rails/src/draw/CompositeSprite.js +299 -0
  268. data/app/assets/javascripts/extjs-rails/src/draw/Draw.js +1217 -0
  269. data/app/assets/javascripts/extjs-rails/src/draw/Matrix.js +183 -0
  270. data/app/assets/javascripts/extjs-rails/src/draw/Sprite.js +554 -0
  271. data/app/assets/javascripts/extjs-rails/src/draw/SpriteDD.js +87 -0
  272. data/app/assets/javascripts/extjs-rails/src/draw/Surface.js +1001 -0
  273. data/app/assets/javascripts/extjs-rails/src/draw/Text.js +175 -0
  274. data/app/assets/javascripts/extjs-rails/src/draw/engine/ImageExporter.js +106 -0
  275. data/app/assets/javascripts/extjs-rails/src/draw/engine/Svg.js +734 -0
  276. data/app/assets/javascripts/extjs-rails/src/draw/engine/SvgExporter.js +280 -0
  277. data/app/assets/javascripts/extjs-rails/src/draw/engine/Vml.js +916 -0
  278. data/app/assets/javascripts/extjs-rails/src/flash/Component.js +248 -0
  279. data/app/assets/javascripts/extjs-rails/src/form/Basic.js +1018 -0
  280. data/app/assets/javascripts/extjs-rails/src/form/CheckboxGroup.js +441 -0
  281. data/app/assets/javascripts/extjs-rails/src/form/CheckboxManager.js +26 -0
  282. data/app/assets/javascripts/extjs-rails/src/form/FieldAncestor.js +210 -0
  283. data/app/assets/javascripts/extjs-rails/src/form/FieldContainer.js +290 -0
  284. data/app/assets/javascripts/extjs-rails/src/form/FieldSet.js +506 -0
  285. data/app/assets/javascripts/extjs-rails/src/form/Label.js +110 -0
  286. data/app/assets/javascripts/extjs-rails/src/form/Labelable.js +764 -0
  287. data/app/assets/javascripts/extjs-rails/src/form/Panel.js +335 -0
  288. data/app/assets/javascripts/extjs-rails/src/form/RadioGroup.js +124 -0
  289. data/app/assets/javascripts/extjs-rails/src/form/RadioManager.js +26 -0
  290. data/app/assets/javascripts/extjs-rails/src/form/action/Action.js +307 -0
  291. data/app/assets/javascripts/extjs-rails/src/form/action/DirectLoad.js +107 -0
  292. data/app/assets/javascripts/extjs-rails/src/form/action/DirectSubmit.js +119 -0
  293. data/app/assets/javascripts/extjs-rails/src/form/action/Load.js +120 -0
  294. data/app/assets/javascripts/extjs-rails/src/form/action/StandardSubmit.js +34 -0
  295. data/app/assets/javascripts/extjs-rails/src/form/action/Submit.js +257 -0
  296. data/app/assets/javascripts/extjs-rails/src/form/field/Base.js +813 -0
  297. data/app/assets/javascripts/extjs-rails/src/form/field/Checkbox.js +505 -0
  298. data/app/assets/javascripts/extjs-rails/src/form/field/ComboBox.js +1427 -0
  299. data/app/assets/javascripts/extjs-rails/src/form/field/Date.js +578 -0
  300. data/app/assets/javascripts/extjs-rails/src/form/field/Display.js +155 -0
  301. data/app/assets/javascripts/extjs-rails/src/form/field/Field.js +430 -0
  302. data/app/assets/javascripts/extjs-rails/src/form/field/File.js +265 -0
  303. data/app/assets/javascripts/extjs-rails/src/form/field/Hidden.js +75 -0
  304. data/app/assets/javascripts/extjs-rails/src/form/field/HtmlEditor.js +1439 -0
  305. data/app/assets/javascripts/extjs-rails/src/form/field/Number.js +380 -0
  306. data/app/assets/javascripts/extjs-rails/src/form/field/Picker.js +321 -0
  307. data/app/assets/javascripts/extjs-rails/src/form/field/Radio.js +279 -0
  308. data/app/assets/javascripts/extjs-rails/src/form/field/Spinner.js +321 -0
  309. data/app/assets/javascripts/extjs-rails/src/form/field/Text.js +727 -0
  310. data/app/assets/javascripts/extjs-rails/src/form/field/TextArea.js +228 -0
  311. data/app/assets/javascripts/extjs-rails/src/form/field/Time.js +459 -0
  312. data/app/assets/javascripts/extjs-rails/src/form/field/Trigger.js +469 -0
  313. data/app/assets/javascripts/extjs-rails/src/form/field/VTypes.js +172 -0
  314. data/app/assets/javascripts/extjs-rails/src/fx/Anim.js +472 -0
  315. data/app/assets/javascripts/extjs-rails/src/fx/Animator.js +410 -0
  316. data/app/assets/javascripts/extjs-rails/src/fx/CubicBezier.js +77 -0
  317. data/app/assets/javascripts/extjs-rails/src/fx/Easing.js +136 -0
  318. data/app/assets/javascripts/extjs-rails/src/fx/Manager.js +353 -0
  319. data/app/assets/javascripts/extjs-rails/src/fx/PropertyHandler.js +381 -0
  320. data/app/assets/javascripts/extjs-rails/src/fx/Queue.js +123 -0
  321. data/app/assets/javascripts/extjs-rails/src/fx/target/Component.js +118 -0
  322. data/app/assets/javascripts/extjs-rails/src/fx/target/CompositeElement.js +46 -0
  323. data/app/assets/javascripts/extjs-rails/src/fx/target/CompositeElementCSS.js +22 -0
  324. data/app/assets/javascripts/extjs-rails/src/fx/target/CompositeSprite.js +34 -0
  325. data/app/assets/javascripts/extjs-rails/src/fx/target/Element.js +83 -0
  326. data/app/assets/javascripts/extjs-rails/src/fx/target/ElementCSS.js +77 -0
  327. data/app/assets/javascripts/extjs-rails/src/fx/target/Sprite.js +128 -0
  328. data/app/assets/javascripts/extjs-rails/src/fx/target/Target.js +36 -0
  329. data/app/assets/javascripts/extjs-rails/src/grid/CellEditor.js +172 -0
  330. data/app/assets/javascripts/extjs-rails/src/grid/ColumnComponentLayout.js +34 -0
  331. data/app/assets/javascripts/extjs-rails/src/grid/ColumnLayout.js +201 -0
  332. data/app/assets/javascripts/extjs-rails/src/grid/Lockable.js +863 -0
  333. data/app/assets/javascripts/extjs-rails/src/grid/LockingView.js +169 -0
  334. data/app/assets/javascripts/extjs-rails/src/grid/PagingScroller.js +539 -0
  335. data/app/assets/javascripts/extjs-rails/src/grid/Panel.js +393 -0
  336. data/app/assets/javascripts/extjs-rails/src/grid/RowEditor.js +731 -0
  337. data/app/assets/javascripts/extjs-rails/src/grid/RowNumberer.js +76 -0
  338. data/app/assets/javascripts/extjs-rails/src/grid/Scroller.js +5 -0
  339. data/app/assets/javascripts/extjs-rails/src/grid/View.js +44 -0
  340. data/app/assets/javascripts/extjs-rails/src/grid/ViewDropZone.js +41 -0
  341. data/app/assets/javascripts/extjs-rails/src/grid/column/Action.js +318 -0
  342. data/app/assets/javascripts/extjs-rails/src/grid/column/Boolean.js +82 -0
  343. data/app/assets/javascripts/extjs-rails/src/grid/column/Column.js +835 -0
  344. data/app/assets/javascripts/extjs-rails/src/grid/column/Date.js +63 -0
  345. data/app/assets/javascripts/extjs-rails/src/grid/column/Number.js +52 -0
  346. data/app/assets/javascripts/extjs-rails/src/grid/column/Template.js +58 -0
  347. data/app/assets/javascripts/extjs-rails/src/grid/feature/AbstractSummary.js +154 -0
  348. data/app/assets/javascripts/extjs-rails/src/grid/feature/Chunking.js +77 -0
  349. data/app/assets/javascripts/extjs-rails/src/grid/feature/Feature.js +158 -0
  350. data/app/assets/javascripts/extjs-rails/src/grid/feature/Grouping.js +822 -0
  351. data/app/assets/javascripts/extjs-rails/src/grid/feature/GroupingSummary.js +243 -0
  352. data/app/assets/javascripts/extjs-rails/src/grid/feature/RowBody.js +116 -0
  353. data/app/assets/javascripts/extjs-rails/src/grid/feature/RowWrap.js +120 -0
  354. data/app/assets/javascripts/extjs-rails/src/grid/feature/Summary.js +167 -0
  355. data/app/assets/javascripts/extjs-rails/src/grid/header/Container.js +965 -0
  356. data/app/assets/javascripts/extjs-rails/src/grid/header/DragZone.js +69 -0
  357. data/app/assets/javascripts/extjs-rails/src/grid/header/DropZone.js +265 -0
  358. data/app/assets/javascripts/extjs-rails/src/grid/plugin/CellEditing.js +453 -0
  359. data/app/assets/javascripts/extjs-rails/src/grid/plugin/DragDrop.js +254 -0
  360. data/app/assets/javascripts/extjs-rails/src/grid/plugin/Editing.js +561 -0
  361. data/app/assets/javascripts/extjs-rails/src/grid/plugin/HeaderReorderer.js +49 -0
  362. data/app/assets/javascripts/extjs-rails/src/grid/plugin/HeaderResizer.js +292 -0
  363. data/app/assets/javascripts/extjs-rails/src/grid/plugin/RowEditing.js +339 -0
  364. data/app/assets/javascripts/extjs-rails/src/grid/property/Grid.js +351 -0
  365. data/app/assets/javascripts/extjs-rails/src/grid/property/HeaderContainer.js +109 -0
  366. data/app/assets/javascripts/extjs-rails/src/grid/property/Property.js +36 -0
  367. data/app/assets/javascripts/extjs-rails/src/grid/property/Store.js +141 -0
  368. data/app/assets/javascripts/extjs-rails/src/layout/ClassList.js +90 -0
  369. data/app/assets/javascripts/extjs-rails/src/layout/Context.js +1232 -0
  370. data/app/assets/javascripts/extjs-rails/src/layout/ContextItem.js +1470 -0
  371. data/app/assets/javascripts/extjs-rails/src/layout/Layout.js +761 -0
  372. data/app/assets/javascripts/extjs-rails/src/layout/component/Auto.js +220 -0
  373. data/app/assets/javascripts/extjs-rails/src/layout/component/Body.js +80 -0
  374. data/app/assets/javascripts/extjs-rails/src/layout/component/BoundList.js +95 -0
  375. data/app/assets/javascripts/extjs-rails/src/layout/component/Button.js +261 -0
  376. data/app/assets/javascripts/extjs-rails/src/layout/component/Component.js +427 -0
  377. data/app/assets/javascripts/extjs-rails/src/layout/component/Dock.js +1132 -0
  378. data/app/assets/javascripts/extjs-rails/src/layout/component/Draw.js +79 -0
  379. data/app/assets/javascripts/extjs-rails/src/layout/component/FieldSet.js +62 -0
  380. data/app/assets/javascripts/extjs-rails/src/layout/component/ProgressBar.js +54 -0
  381. data/app/assets/javascripts/extjs-rails/src/layout/component/Tab.js +23 -0
  382. data/app/assets/javascripts/extjs-rails/src/layout/component/field/ComboBox.js +52 -0
  383. data/app/assets/javascripts/extjs-rails/src/layout/component/field/Field.js +372 -0
  384. data/app/assets/javascripts/extjs-rails/src/layout/component/field/FieldContainer.js +48 -0
  385. data/app/assets/javascripts/extjs-rails/src/layout/component/field/HtmlEditor.js +54 -0
  386. data/app/assets/javascripts/extjs-rails/src/layout/component/field/Slider.js +58 -0
  387. data/app/assets/javascripts/extjs-rails/src/layout/component/field/Text.js +75 -0
  388. data/app/assets/javascripts/extjs-rails/src/layout/component/field/TextArea.js +51 -0
  389. data/app/assets/javascripts/extjs-rails/src/layout/component/field/Trigger.js +132 -0
  390. data/app/assets/javascripts/extjs-rails/src/layout/container/Absolute.js +121 -0
  391. data/app/assets/javascripts/extjs-rails/src/layout/container/Accordion.js +308 -0
  392. data/app/assets/javascripts/extjs-rails/src/layout/container/Anchor.js +403 -0
  393. data/app/assets/javascripts/extjs-rails/src/layout/container/Auto.js +70 -0
  394. data/app/assets/javascripts/extjs-rails/src/layout/container/Border-old-js +1079 -0
  395. data/app/assets/javascripts/extjs-rails/src/layout/container/Border.js +816 -0
  396. data/app/assets/javascripts/extjs-rails/src/layout/container/Box.js +929 -0
  397. data/app/assets/javascripts/extjs-rails/src/layout/container/Card.js +361 -0
  398. data/app/assets/javascripts/extjs-rails/src/layout/container/CheckboxGroup.js +376 -0
  399. data/app/assets/javascripts/extjs-rails/src/layout/container/Column.js +234 -0
  400. data/app/assets/javascripts/extjs-rails/src/layout/container/Container.js +961 -0
  401. data/app/assets/javascripts/extjs-rails/src/layout/container/Editor.js +74 -0
  402. data/app/assets/javascripts/extjs-rails/src/layout/container/Fit.js +287 -0
  403. data/app/assets/javascripts/extjs-rails/src/layout/container/Form.js +157 -0
  404. data/app/assets/javascripts/extjs-rails/src/layout/container/HBox.js +134 -0
  405. data/app/assets/javascripts/extjs-rails/src/layout/container/Table.js +412 -0
  406. data/app/assets/javascripts/extjs-rails/src/layout/container/VBox.js +139 -0
  407. data/app/assets/javascripts/extjs-rails/src/layout/container/boxOverflow/Menu.js +365 -0
  408. data/app/assets/javascripts/extjs-rails/src/layout/container/boxOverflow/None.js +83 -0
  409. data/app/assets/javascripts/extjs-rails/src/layout/container/boxOverflow/Scroller.js +475 -0
  410. data/app/assets/javascripts/extjs-rails/src/menu/CheckItem.js +169 -0
  411. data/app/assets/javascripts/extjs-rails/src/menu/ColorPicker.js +110 -0
  412. data/app/assets/javascripts/extjs-rails/src/menu/DatePicker.js +100 -0
  413. data/app/assets/javascripts/extjs-rails/src/menu/Item.js +553 -0
  414. data/app/assets/javascripts/extjs-rails/src/menu/KeyNav.js +134 -0
  415. data/app/assets/javascripts/extjs-rails/src/menu/Manager.js +219 -0
  416. data/app/assets/javascripts/extjs-rails/src/menu/Menu.js +579 -0
  417. data/app/assets/javascripts/extjs-rails/src/menu/Separator.js +126 -0
  418. data/app/assets/javascripts/extjs-rails/src/panel/AbstractPanel.js +323 -0
  419. data/app/assets/javascripts/extjs-rails/src/panel/DD.js +99 -0
  420. data/app/assets/javascripts/extjs-rails/src/panel/Header.js +518 -0
  421. data/app/assets/javascripts/extjs-rails/src/panel/Panel.js +2150 -0
  422. data/app/assets/javascripts/extjs-rails/src/panel/Proxy.js +131 -0
  423. data/app/assets/javascripts/extjs-rails/src/panel/Table.js +1018 -0
  424. data/app/assets/javascripts/extjs-rails/src/panel/Tool.js +304 -0
  425. data/app/assets/javascripts/extjs-rails/src/picker/Color.js +219 -0
  426. data/app/assets/javascripts/extjs-rails/src/picker/Date.js +1140 -0
  427. data/app/assets/javascripts/extjs-rails/src/picker/Month.js +490 -0
  428. data/app/assets/javascripts/extjs-rails/src/picker/Time.js +165 -0
  429. data/app/assets/javascripts/extjs-rails/src/resizer/BorderSplitter.js +22 -0
  430. data/app/assets/javascripts/extjs-rails/src/resizer/BorderSplitterTracker.js +210 -0
  431. data/app/assets/javascripts/extjs-rails/src/resizer/Handle.js +29 -0
  432. data/app/assets/javascripts/extjs-rails/src/resizer/ResizeTracker.js +346 -0
  433. data/app/assets/javascripts/extjs-rails/src/resizer/Resizer.js +477 -0
  434. data/app/assets/javascripts/extjs-rails/src/resizer/Splitter.js +242 -0
  435. data/app/assets/javascripts/extjs-rails/src/resizer/SplitterTracker.js +230 -0
  436. data/app/assets/javascripts/extjs-rails/src/selection/CellModel.js +395 -0
  437. data/app/assets/javascripts/extjs-rails/src/selection/CheckboxModel.js +234 -0
  438. data/app/assets/javascripts/extjs-rails/src/selection/DataViewModel.js +160 -0
  439. data/app/assets/javascripts/extjs-rails/src/selection/Model.js +646 -0
  440. data/app/assets/javascripts/extjs-rails/src/selection/RowModel.js +499 -0
  441. data/app/assets/javascripts/extjs-rails/src/selection/TreeModel.js +78 -0
  442. data/app/assets/javascripts/extjs-rails/src/slider/Multi.js +835 -0
  443. data/app/assets/javascripts/extjs-rails/src/slider/Single.js +56 -0
  444. data/app/assets/javascripts/extjs-rails/src/slider/Thumb.js +259 -0
  445. data/app/assets/javascripts/extjs-rails/src/slider/Tip.js +130 -0
  446. data/app/assets/javascripts/extjs-rails/src/state/CookieProvider.js +120 -0
  447. data/app/assets/javascripts/extjs-rails/src/state/LocalStorageProvider.js +72 -0
  448. data/app/assets/javascripts/extjs-rails/src/state/Manager.js +70 -0
  449. data/app/assets/javascripts/extjs-rails/src/state/Provider.js +182 -0
  450. data/app/assets/javascripts/extjs-rails/src/state/Stateful.js +364 -0
  451. data/app/assets/javascripts/extjs-rails/src/tab/Bar.js +258 -0
  452. data/app/assets/javascripts/extjs-rails/src/tab/Panel.js +654 -0
  453. data/app/assets/javascripts/extjs-rails/src/tab/Tab.js +358 -0
  454. data/app/assets/javascripts/extjs-rails/src/tail.js +10 -0
  455. data/app/assets/javascripts/extjs-rails/src/tip/QuickTip.js +335 -0
  456. data/app/assets/javascripts/extjs-rails/src/tip/QuickTipManager.js +239 -0
  457. data/app/assets/javascripts/extjs-rails/src/tip/Tip.js +160 -0
  458. data/app/assets/javascripts/extjs-rails/src/tip/ToolTip.js +691 -0
  459. data/app/assets/javascripts/extjs-rails/src/toolbar/Fill.js +28 -0
  460. data/app/assets/javascripts/extjs-rails/src/toolbar/Item.js +16 -0
  461. data/app/assets/javascripts/extjs-rails/src/toolbar/Paging.js +600 -0
  462. data/app/assets/javascripts/extjs-rails/src/toolbar/Separator.js +23 -0
  463. data/app/assets/javascripts/extjs-rails/src/toolbar/Spacer.js +33 -0
  464. data/app/assets/javascripts/extjs-rails/src/toolbar/TextItem.js +57 -0
  465. data/app/assets/javascripts/extjs-rails/src/toolbar/Toolbar-legacy.js +123 -0
  466. data/app/assets/javascripts/extjs-rails/src/toolbar/Toolbar.js +447 -0
  467. data/app/assets/javascripts/extjs-rails/src/tree/Column.js +90 -0
  468. data/app/assets/javascripts/extjs-rails/src/tree/Panel.js +505 -0
  469. data/app/assets/javascripts/extjs-rails/src/tree/View.js +658 -0
  470. data/app/assets/javascripts/extjs-rails/src/tree/ViewDragZone.js +49 -0
  471. data/app/assets/javascripts/extjs-rails/src/tree/ViewDropZone.js +287 -0
  472. data/app/assets/javascripts/extjs-rails/src/tree/plugin/TreeViewDragDrop.js +244 -0
  473. data/app/assets/javascripts/extjs-rails/src/util/AbstractMixedCollection.js +772 -0
  474. data/app/assets/javascripts/extjs-rails/src/util/Animate.js +426 -0
  475. data/app/assets/javascripts/extjs-rails/src/util/Bindable.js +102 -0
  476. data/app/assets/javascripts/extjs-rails/src/util/CSS.js +185 -0
  477. data/app/assets/javascripts/extjs-rails/src/util/ClickRepeater.js +238 -0
  478. data/app/assets/javascripts/extjs-rails/src/util/ComponentDragger.js +126 -0
  479. data/app/assets/javascripts/extjs-rails/src/util/Cookies.js +91 -0
  480. data/app/assets/javascripts/extjs-rails/src/util/ElementContainer.js +293 -0
  481. data/app/assets/javascripts/extjs-rails/src/util/Filter.js +159 -0
  482. data/app/assets/javascripts/extjs-rails/src/util/Floating.js +321 -0
  483. data/app/assets/javascripts/extjs-rails/src/util/Grouper.js +26 -0
  484. data/app/assets/javascripts/extjs-rails/src/util/HashMap.js +356 -0
  485. data/app/assets/javascripts/extjs-rails/src/util/History.js +285 -0
  486. data/app/assets/javascripts/extjs-rails/src/util/Inflector.js +297 -0
  487. data/app/assets/javascripts/extjs-rails/src/util/KeyMap.js +427 -0
  488. data/app/assets/javascripts/extjs-rails/src/util/KeyNav.js +239 -0
  489. data/app/assets/javascripts/extjs-rails/src/util/LruCache.js +257 -0
  490. data/app/assets/javascripts/extjs-rails/src/util/Memento.js +131 -0
  491. data/app/assets/javascripts/extjs-rails/src/util/MixedCollection.js +239 -0
  492. data/app/assets/javascripts/extjs-rails/src/util/Observable.js +1003 -0
  493. data/app/assets/javascripts/extjs-rails/src/util/Offset.js +60 -0
  494. data/app/assets/javascripts/extjs-rails/src/util/Point.js +93 -0
  495. data/app/assets/javascripts/extjs-rails/src/util/ProtoElement.js +205 -0
  496. data/app/assets/javascripts/extjs-rails/src/util/Queue.js +76 -0
  497. data/app/assets/javascripts/extjs-rails/src/util/Region.js +388 -0
  498. data/app/assets/javascripts/extjs-rails/src/util/Renderable.js +1079 -0
  499. data/app/assets/javascripts/extjs-rails/src/util/Sortable.js +248 -0
  500. data/app/assets/javascripts/extjs-rails/src/util/Sorter.js +179 -0
  501. data/app/assets/javascripts/extjs-rails/src/util/TextMetrics.js +148 -0
  502. data/app/assets/javascripts/extjs-rails/src/view/AbstractView.js +1103 -0
  503. data/app/assets/javascripts/extjs-rails/src/view/BoundList.js +207 -0
  504. data/app/assets/javascripts/extjs-rails/src/view/BoundListKeyNav.js +92 -0
  505. data/app/assets/javascripts/extjs-rails/src/view/DragZone.js +106 -0
  506. data/app/assets/javascripts/extjs-rails/src/view/DropZone.js +240 -0
  507. data/app/assets/javascripts/extjs-rails/src/view/Table.js +1229 -0
  508. data/app/assets/javascripts/extjs-rails/src/view/TableChunker.js +139 -0
  509. data/app/assets/javascripts/extjs-rails/src/view/View.js +636 -0
  510. data/app/assets/javascripts/extjs-rails/src/window/MessageBox.js +880 -0
  511. data/app/assets/javascripts/extjs-rails/src/window/Window-legacy.js +56 -0
  512. data/app/assets/javascripts/extjs-rails/src/window/Window.js +793 -0
  513. data/extjs-rails.gemspec +24 -0
  514. data/lib/extjs-rails.rb +7 -0
  515. data/lib/extjs-rails/engine.rb +7 -0
  516. data/lib/extjs-rails/version.rb +5 -0
  517. metadata +660 -0
@@ -0,0 +1,173 @@
1
+ /**
2
+ * @class Ext.dom.AbstractElement
3
+ */
4
+ Ext.dom.AbstractElement.override({
5
+
6
+ /**
7
+ * Gets the x,y coordinates specified by the anchor position on the element.
8
+ * @param {String} [anchor] The specified anchor position (defaults to "c"). See {@link Ext.dom.Element#alignTo}
9
+ * for details on supported anchor positions.
10
+ * @param {Boolean} [local] True to get the local (element top/left-relative) anchor position instead
11
+ * of page coordinates
12
+ * @param {Object} [size] An object containing the size to use for calculating anchor position
13
+ * {width: (target width), height: (target height)} (defaults to the element's current size)
14
+ * @return {Array} [x, y] An array containing the element's x and y coordinates
15
+ */
16
+ getAnchorXY: function(anchor, local, size) {
17
+ //Passing a different size is useful for pre-calculating anchors,
18
+ //especially for anchored animations that change the el size.
19
+ anchor = (anchor || "tl").toLowerCase();
20
+ size = size || {};
21
+
22
+ var me = this,
23
+ vp = me.dom == document.body || me.dom == document,
24
+ width = size.width || vp ? window.innerWidth: me.getWidth(),
25
+ height = size.height || vp ? window.innerHeight: me.getHeight(),
26
+ xy,
27
+ rnd = Math.round,
28
+ myXY = me.getXY(),
29
+ extraX = vp ? 0: !local ? myXY[0] : 0,
30
+ extraY = vp ? 0: !local ? myXY[1] : 0,
31
+ hash = {
32
+ c: [rnd(width * 0.5), rnd(height * 0.5)],
33
+ t: [rnd(width * 0.5), 0],
34
+ l: [0, rnd(height * 0.5)],
35
+ r: [width, rnd(height * 0.5)],
36
+ b: [rnd(width * 0.5), height],
37
+ tl: [0, 0],
38
+ bl: [0, height],
39
+ br: [width, height],
40
+ tr: [width, 0]
41
+ };
42
+
43
+ xy = hash[anchor];
44
+ return [xy[0] + extraX, xy[1] + extraY];
45
+ },
46
+
47
+ alignToRe: /^([a-z]+)-([a-z]+)(\?)?$/,
48
+
49
+ /**
50
+ * Gets the x,y coordinates to align this element with another element. See {@link Ext.dom.Element#alignTo} for more info on the
51
+ * supported position values.
52
+ * @param {Ext.Element/HTMLElement/String} element The element to align to.
53
+ * @param {String} [position="tl-bl?"] The position to align to.
54
+ * @param {Array} [offsets=[0,0]] Offset the positioning by [x, y]
55
+ * @return {Array} [x, y]
56
+ */
57
+ getAlignToXY: function(el, position, offsets, local) {
58
+ local = !!local;
59
+ el = Ext.get(el);
60
+
61
+ //<debug>
62
+ if (!el || !el.dom) {
63
+ throw new Error("Element.alignToXY with an element that doesn't exist");
64
+ }
65
+ //</debug>
66
+ offsets = offsets || [0, 0];
67
+
68
+ if (!position || position == '?') {
69
+ position = 'tl-bl?';
70
+ }
71
+ else if (! (/-/).test(position) && position !== "") {
72
+ position = 'tl-' + position;
73
+ }
74
+ position = position.toLowerCase();
75
+
76
+ var me = this,
77
+ matches = position.match(this.alignToRe),
78
+ dw = window.innerWidth,
79
+ dh = window.innerHeight,
80
+ p1 = "",
81
+ p2 = "",
82
+ a1,
83
+ a2,
84
+ x,
85
+ y,
86
+ swapX,
87
+ swapY,
88
+ p1x,
89
+ p1y,
90
+ p2x,
91
+ p2y,
92
+ width,
93
+ height,
94
+ region,
95
+ constrain;
96
+
97
+ if (!matches) {
98
+ throw "Element.alignTo with an invalid alignment " + position;
99
+ }
100
+
101
+ p1 = matches[1];
102
+ p2 = matches[2];
103
+ constrain = !!matches[3];
104
+
105
+ //Subtract the aligned el's internal xy from the target's offset xy
106
+ //plus custom offset to get the aligned el's new offset xy
107
+ a1 = me.getAnchorXY(p1, true);
108
+ a2 = el.getAnchorXY(p2, local);
109
+
110
+ x = a2[0] - a1[0] + offsets[0];
111
+ y = a2[1] - a1[1] + offsets[1];
112
+
113
+ if (constrain) {
114
+ width = me.getWidth();
115
+ height = me.getHeight();
116
+
117
+ region = el.getPageBox();
118
+
119
+ //If we are at a viewport boundary and the aligned el is anchored on a target border that is
120
+ //perpendicular to the vp border, allow the aligned el to slide on that border,
121
+ //otherwise swap the aligned el to the opposite border of the target.
122
+ p1y = p1.charAt(0);
123
+ p1x = p1.charAt(p1.length - 1);
124
+ p2y = p2.charAt(0);
125
+ p2x = p2.charAt(p2.length - 1);
126
+
127
+ swapY = ((p1y == "t" && p2y == "b") || (p1y == "b" && p2y == "t"));
128
+ swapX = ((p1x == "r" && p2x == "l") || (p1x == "l" && p2x == "r"));
129
+
130
+ if (x + width > dw) {
131
+ x = swapX ? region.left - width: dw - width;
132
+ }
133
+ if (x < 0) {
134
+ x = swapX ? region.right: 0;
135
+ }
136
+ if (y + height > dh) {
137
+ y = swapY ? region.top - height: dh - height;
138
+ }
139
+ if (y < 0) {
140
+ y = swapY ? region.bottom: 0;
141
+ }
142
+ }
143
+
144
+ return [x, y];
145
+ },
146
+
147
+ // private
148
+ getAnchor: function(){
149
+ var data = (this.$cache || this.getCache()).data,
150
+ anchor;
151
+
152
+ if (!this.dom) {
153
+ return;
154
+ }
155
+ anchor = data._anchor;
156
+
157
+ if(!anchor){
158
+ anchor = data._anchor = {};
159
+ }
160
+ return anchor;
161
+ },
162
+
163
+ // private ==> used outside of core
164
+ adjustForConstraints: function(xy, parent) {
165
+ var vector = this.getConstrainVector(parent, xy);
166
+ if (vector) {
167
+ xy[0] += vector[0];
168
+ xy[1] += vector[1];
169
+ }
170
+ return xy;
171
+ }
172
+
173
+ });
@@ -0,0 +1,193 @@
1
+ /**
2
+ * @class Ext.dom.AbstractElement
3
+ */
4
+ Ext.dom.AbstractElement.addMethods({
5
+ /**
6
+ * Appends the passed element(s) to this element
7
+ * @param {String/HTMLElement/Ext.dom.AbstractElement} el
8
+ * The id of the node, a DOM Node or an existing Element.
9
+ * @return {Ext.dom.AbstractElement} This element
10
+ */
11
+ appendChild: function(el) {
12
+ return Ext.get(el).appendTo(this);
13
+ },
14
+
15
+ /**
16
+ * Appends this element to the passed element
17
+ * @param {String/HTMLElement/Ext.dom.AbstractElement} el The new parent element.
18
+ * The id of the node, a DOM Node or an existing Element.
19
+ * @return {Ext.dom.AbstractElement} This element
20
+ */
21
+ appendTo: function(el) {
22
+ Ext.getDom(el).appendChild(this.dom);
23
+ return this;
24
+ },
25
+
26
+ /**
27
+ * Inserts this element before the passed element in the DOM
28
+ * @param {String/HTMLElement/Ext.dom.AbstractElement} el The element before which this element will be inserted.
29
+ * The id of the node, a DOM Node or an existing Element.
30
+ * @return {Ext.dom.AbstractElement} This element
31
+ */
32
+ insertBefore: function(el) {
33
+ el = Ext.getDom(el);
34
+ el.parentNode.insertBefore(this.dom, el);
35
+ return this;
36
+ },
37
+
38
+ /**
39
+ * Inserts this element after the passed element in the DOM
40
+ * @param {String/HTMLElement/Ext.dom.AbstractElement} el The element to insert after.
41
+ * The id of the node, a DOM Node or an existing Element.
42
+ * @return {Ext.dom.AbstractElement} This element
43
+ */
44
+ insertAfter: function(el) {
45
+ el = Ext.getDom(el);
46
+ el.parentNode.insertBefore(this.dom, el.nextSibling);
47
+ return this;
48
+ },
49
+
50
+ /**
51
+ * Inserts (or creates) an element (or DomHelper config) as the first child of this element
52
+ * @param {String/HTMLElement/Ext.dom.AbstractElement/Object} el The id or element to insert or a DomHelper config
53
+ * to create and insert
54
+ * @return {Ext.dom.AbstractElement} The new child
55
+ */
56
+ insertFirst: function(el, returnDom) {
57
+ el = el || {};
58
+ if (el.nodeType || el.dom || typeof el == 'string') { // element
59
+ el = Ext.getDom(el);
60
+ this.dom.insertBefore(el, this.dom.firstChild);
61
+ return !returnDom ? Ext.get(el) : el;
62
+ }
63
+ else { // dh config
64
+ return this.createChild(el, this.dom.firstChild, returnDom);
65
+ }
66
+ },
67
+
68
+ /**
69
+ * Inserts (or creates) the passed element (or DomHelper config) as a sibling of this element
70
+ * @param {String/HTMLElement/Ext.dom.AbstractElement/Object/Array} el The id, element to insert or a DomHelper config
71
+ * to create and insert *or* an array of any of those.
72
+ * @param {String} [where='before'] 'before' or 'after'
73
+ * @param {Boolean} [returnDom=false] True to return the .;ll;l,raw DOM element instead of Ext.dom.AbstractElement
74
+ * @return {Ext.dom.AbstractElement} The inserted Element. If an array is passed, the last inserted element is returned.
75
+ */
76
+ insertSibling: function(el, where, returnDom){
77
+ var me = this,
78
+ isAfter = (where || 'before').toLowerCase() == 'after',
79
+ rt, insertEl, eLen, e;
80
+
81
+ if (Ext.isArray(el)) {
82
+ insertEl = me;
83
+ eLen = el.length;
84
+
85
+ for (e = 0; e < eLen; e++) {
86
+ rt = Ext.fly(insertEl, '_internal').insertSibling(el[e], where, returnDom);
87
+
88
+ if (isAfter) {
89
+ insertEl = rt;
90
+ }
91
+ }
92
+
93
+ return rt;
94
+ }
95
+
96
+ el = el || {};
97
+
98
+ if(el.nodeType || el.dom){
99
+ rt = me.dom.parentNode.insertBefore(Ext.getDom(el), isAfter ? me.dom.nextSibling : me.dom);
100
+ if (!returnDom) {
101
+ rt = Ext.get(rt);
102
+ }
103
+ }else{
104
+ if (isAfter && !me.dom.nextSibling) {
105
+ rt = Ext.core.DomHelper.append(me.dom.parentNode, el, !returnDom);
106
+ } else {
107
+ rt = Ext.core.DomHelper[isAfter ? 'insertAfter' : 'insertBefore'](me.dom, el, !returnDom);
108
+ }
109
+ }
110
+ return rt;
111
+ },
112
+
113
+ /**
114
+ * Replaces the passed element with this element
115
+ * @param {String/HTMLElement/Ext.dom.AbstractElement} el The element to replace.
116
+ * The id of the node, a DOM Node or an existing Element.
117
+ * @return {Ext.dom.AbstractElement} This element
118
+ */
119
+ replace: function(el) {
120
+ el = Ext.get(el);
121
+ this.insertBefore(el);
122
+ el.remove();
123
+ return this;
124
+ },
125
+
126
+ /**
127
+ * Replaces this element with the passed element
128
+ * @param {String/HTMLElement/Ext.dom.AbstractElement/Object} el The new element (id of the node, a DOM Node
129
+ * or an existing Element) or a DomHelper config of an element to create
130
+ * @return {Ext.dom.AbstractElement} This element
131
+ */
132
+ replaceWith: function(el){
133
+ var me = this;
134
+
135
+ if(el.nodeType || el.dom || typeof el == 'string'){
136
+ el = Ext.get(el);
137
+ me.dom.parentNode.insertBefore(el, me.dom);
138
+ }else{
139
+ el = Ext.core.DomHelper.insertBefore(me.dom, el);
140
+ }
141
+
142
+ delete Ext.cache[me.id];
143
+ Ext.removeNode(me.dom);
144
+ me.id = Ext.id(me.dom = el);
145
+ Ext.dom.AbstractElement.addToCache(me.isFlyweight ? new Ext.dom.AbstractElement(me.dom) : me);
146
+ return me;
147
+ },
148
+
149
+ /**
150
+ * Creates the passed DomHelper config and appends it to this element or optionally inserts it before the passed child element.
151
+ * @param {Object} config DomHelper element config object. If no tag is specified (e.g., {tag:'input'}) then a div will be
152
+ * automatically generated with the specified attributes.
153
+ * @param {HTMLElement} [insertBefore] a child element of this element
154
+ * @param {Boolean} [returnDom=false] true to return the dom node instead of creating an Element
155
+ * @return {Ext.dom.AbstractElement} The new child element
156
+ */
157
+ createChild: function(config, insertBefore, returnDom) {
158
+ config = config || {tag:'div'};
159
+ if (insertBefore) {
160
+ return Ext.core.DomHelper.insertBefore(insertBefore, config, returnDom !== true);
161
+ }
162
+ else {
163
+ return Ext.core.DomHelper[!this.dom.firstChild ? 'insertFirst' : 'append'](this.dom, config, returnDom !== true);
164
+ }
165
+ },
166
+
167
+ /**
168
+ * Creates and wraps this element with another element
169
+ * @param {Object} [config] DomHelper element config object for the wrapper element or null for an empty div
170
+ * @param {Boolean} [returnDom=false] True to return the raw DOM element instead of Ext.dom.AbstractElement
171
+ * @return {HTMLElement/Ext.dom.AbstractElement} The newly created wrapper element
172
+ */
173
+ wrap: function(config, returnDom) {
174
+ var newEl = Ext.core.DomHelper.insertBefore(this.dom, config || {tag: "div"}, !returnDom),
175
+ d = newEl.dom || newEl;
176
+
177
+ d.appendChild(this.dom);
178
+ return newEl;
179
+ },
180
+
181
+ /**
182
+ * Inserts an html fragment into this element
183
+ * @param {String} where Where to insert the html in relation to this element - beforeBegin, afterBegin, beforeEnd, afterEnd.
184
+ * See {@link Ext.dom.Helper#insertHtml} for details.
185
+ * @param {String} html The HTML fragment
186
+ * @param {Boolean} [returnEl=false] True to return an Ext.dom.AbstractElement
187
+ * @return {HTMLElement/Ext.dom.AbstractElement} The inserted node (or nearest related if more than 1 inserted)
188
+ */
189
+ insertHtml: function(where, html, returnEl) {
190
+ var el = Ext.core.DomHelper.insertHtml(where, this.dom, html);
191
+ return returnEl ? Ext.get(el) : el;
192
+ }
193
+ });
@@ -0,0 +1,681 @@
1
+ /**
2
+ * @class Ext.dom.AbstractElement
3
+ * @extend Ext.Base
4
+ * @private
5
+ */
6
+ (function() {
7
+
8
+ var document = window.document,
9
+ trimRe = /^\s+|\s+$/g,
10
+ whitespaceRe = /\s/;
11
+
12
+ if (!Ext.cache){
13
+ Ext.cache = {};
14
+ }
15
+
16
+ Ext.define('Ext.dom.AbstractElement', {
17
+
18
+ inheritableStatics: {
19
+
20
+ /**
21
+ * Retrieves Ext.dom.Element objects. {@link Ext#get} is alias for {@link Ext.dom.Element#get}.
22
+ *
23
+ * **This method does not retrieve {@link Ext.Component Component}s.** This method retrieves Ext.dom.Element
24
+ * objects which encapsulate DOM elements. To retrieve a Component by its ID, use {@link Ext.ComponentManager#get}.
25
+ *
26
+ * Uses simple caching to consistently return the same object. Automatically fixes if an object was recreated with
27
+ * the same id via AJAX or DOM.
28
+ *
29
+ * @param {String/HTMLElement/Ext.Element} el The id of the node, a DOM Node or an existing Element.
30
+ * @return {Ext.dom.Element} The Element object (or null if no matching element was found)
31
+ * @static
32
+ * @inheritable
33
+ */
34
+ get: function(el) {
35
+ var me = this,
36
+ El = Ext.dom.Element,
37
+ cache,
38
+ extEl,
39
+ dom,
40
+ id;
41
+
42
+ if (!el) {
43
+ return null;
44
+ }
45
+
46
+ if (typeof el == "string") { // element id
47
+ if (el == Ext.windowId) {
48
+ return El.get(window);
49
+ } else if (el == Ext.documentId) {
50
+ return El.get(document);
51
+ }
52
+
53
+ cache = Ext.cache[el];
54
+ // This code is here to catch the case where we've got a reference to a document of an iframe
55
+ // It getElementById will fail because it's not part of the document, so if we're skipping
56
+ // GC it means it's a window/document object that isn't the default window/document, which we have
57
+ // already handled above
58
+ if (cache && cache.skipGarbageCollection) {
59
+ extEl = cache.el;
60
+ return extEl;
61
+ }
62
+
63
+ if (!(dom = document.getElementById(el))) {
64
+ return null;
65
+ }
66
+
67
+ if (cache && cache.el) {
68
+ extEl = cache.el;
69
+ extEl.dom = dom;
70
+ } else {
71
+ // Force new element if there's a cache but no el attached
72
+ extEl = new El(dom, !!cache);
73
+ }
74
+ return extEl;
75
+ } else if (el.tagName) { // dom element
76
+ if (!(id = el.id)) {
77
+ id = Ext.id(el);
78
+ }
79
+ cache = Ext.cache[id];
80
+ if (cache && cache.el) {
81
+ extEl = Ext.cache[id].el;
82
+ extEl.dom = el;
83
+ } else {
84
+ // Force new element if there's a cache but no el attached
85
+ extEl = new El(el, !!cache);
86
+ }
87
+ return extEl;
88
+ } else if (el instanceof me) {
89
+ if (el != me.docEl && el != me.winEl) {
90
+ // refresh dom element in case no longer valid,
91
+ // catch case where it hasn't been appended
92
+ el.dom = document.getElementById(el.id) || el.dom;
93
+ }
94
+ return el;
95
+ } else if (el.isComposite) {
96
+ return el;
97
+ } else if (Ext.isArray(el)) {
98
+ return me.select(el);
99
+ } else if (el === document) {
100
+ // create a bogus element object representing the document object
101
+ if (!me.docEl) {
102
+ me.docEl = Ext.Object.chain(El.prototype);
103
+ me.docEl.dom = document;
104
+ me.docEl.id = Ext.id(document);
105
+ me.addToCache(me.docEl);
106
+ }
107
+ return me.docEl;
108
+ } else if (el === window) {
109
+ if (!me.winEl) {
110
+ me.winEl = Ext.Object.chain(El.prototype);
111
+ me.winEl.dom = window;
112
+ me.winEl.id = Ext.id(window);
113
+ me.addToCache(me.winEl);
114
+ }
115
+ return me.winEl;
116
+ }
117
+ return null;
118
+ },
119
+
120
+ addToCache: function(el, id) {
121
+ if (el) {
122
+ Ext.addCacheEntry(id, el);
123
+ }
124
+ return el;
125
+ },
126
+
127
+ addMethods: function() {
128
+ this.override.apply(this, arguments);
129
+ },
130
+
131
+ /**
132
+ * <p>Returns an array of unique class names based upon the input strings, or string arrays.</p>
133
+ * <p>The number of parameters is unlimited.</p>
134
+ * <p>Example</p><code><pre>
135
+ // Add x-invalid and x-mandatory classes, do not duplicate
136
+ myElement.dom.className = Ext.core.Element.mergeClsList(this.initialClasses, 'x-invalid x-mandatory');
137
+ </pre></code>
138
+ * @param {Mixed} clsList1 A string of class names, or an array of class names.
139
+ * @param {Mixed} clsList2 A string of class names, or an array of class names.
140
+ * @return {Array} An array of strings representing remaining unique, merged class names. If class names were added to the first list, the <code>changed</code> property will be <code>true</code>.
141
+ * @static
142
+ * @inheritable
143
+ */
144
+ mergeClsList: function() {
145
+ var clsList, clsHash = {},
146
+ i, length, j, listLength, clsName, result = [],
147
+ changed = false;
148
+
149
+ for (i = 0, length = arguments.length; i < length; i++) {
150
+ clsList = arguments[i];
151
+ if (Ext.isString(clsList)) {
152
+ clsList = clsList.replace(trimRe, '').split(whitespaceRe);
153
+ }
154
+ if (clsList) {
155
+ for (j = 0, listLength = clsList.length; j < listLength; j++) {
156
+ clsName = clsList[j];
157
+ if (!clsHash[clsName]) {
158
+ if (i) {
159
+ changed = true;
160
+ }
161
+ clsHash[clsName] = true;
162
+ }
163
+ }
164
+ }
165
+ }
166
+
167
+ for (clsName in clsHash) {
168
+ result.push(clsName);
169
+ }
170
+ result.changed = changed;
171
+ return result;
172
+ },
173
+
174
+ /**
175
+ * <p>Returns an array of unique class names deom the first parameter with all class names
176
+ * from the second parameter removed.</p>
177
+ * <p>Example</p><code><pre>
178
+ // Remove x-invalid and x-mandatory classes if present.
179
+ myElement.dom.className = Ext.core.Element.removeCls(this.initialClasses, 'x-invalid x-mandatory');
180
+ </pre></code>
181
+ * @param {Mixed} existingClsList A string of class names, or an array of class names.
182
+ * @param {Mixed} removeClsList A string of class names, or an array of class names to remove from <code>existingClsList</code>.
183
+ * @return {Array} An array of strings representing remaining class names. If class names were removed, the <code>changed</code> property will be <code>true</code>.
184
+ * @static
185
+ * @inheritable
186
+ */
187
+ removeCls: function(existingClsList, removeClsList) {
188
+ var clsHash = {},
189
+ i, length, clsName, result = [],
190
+ changed = false;
191
+
192
+ if (existingClsList) {
193
+ if (Ext.isString(existingClsList)) {
194
+ existingClsList = existingClsList.replace(trimRe, '').split(whitespaceRe);
195
+ }
196
+ for (i = 0, length = existingClsList.length; i < length; i++) {
197
+ clsHash[existingClsList[i]] = true;
198
+ }
199
+ }
200
+ if (removeClsList) {
201
+ if (Ext.isString(removeClsList)) {
202
+ removeClsList = removeClsList.split(whitespaceRe);
203
+ }
204
+ for (i = 0, length = removeClsList.length; i < length; i++) {
205
+ clsName = removeClsList[i];
206
+ if (clsHash[clsName]) {
207
+ changed = true;
208
+ delete clsHash[clsName];
209
+ }
210
+ }
211
+ }
212
+ for (clsName in clsHash) {
213
+ result.push(clsName);
214
+ }
215
+ result.changed = changed;
216
+ return result;
217
+ },
218
+
219
+ /**
220
+ * @property
221
+ * Visibility mode constant for use with {@link Ext.dom.Element#setVisibilityMode}.
222
+ * Use the CSS 'visibility' property to hide the element.
223
+ *
224
+ * Note that in this mode, {@link #isVisible} may return true for an element even though
225
+ * it actually has a parent element that is hidden. For this reason, and in most cases,
226
+ * using the {@link #OFFSETS} mode is a better choice.
227
+ * @static
228
+ * @inheritable
229
+ */
230
+ VISIBILITY: 1,
231
+
232
+ /**
233
+ * @property
234
+ * Visibility mode constant for use with {@link Ext.dom.Element#setVisibilityMode}.
235
+ * Use the CSS 'display' property to hide the element.
236
+ * @static
237
+ * @inheritable
238
+ */
239
+ DISPLAY: 2,
240
+
241
+ /**
242
+ * @property
243
+ * Visibility mode constant for use with {@link Ext.dom.Element#setVisibilityMode}.
244
+ * Use CSS absolute positioning and top/left offsets to hide the element.
245
+ * @static
246
+ * @inheritable
247
+ */
248
+ OFFSETS: 3,
249
+
250
+ /**
251
+ * @property
252
+ * Visibility mode constant for use with {@link Ext.dom.Element#setVisibilityMode}.
253
+ * Add or remove the {@link Ext.Layer#visibilityCls} class to hide the element.
254
+ * @static
255
+ * @inheritable
256
+ */
257
+ ASCLASS: 4
258
+ },
259
+
260
+ constructor: function(element, forceNew) {
261
+ var me = this,
262
+ dom = typeof element == 'string'
263
+ ? document.getElementById(element)
264
+ : element,
265
+ id;
266
+
267
+ if (!dom) {
268
+ return null;
269
+ }
270
+
271
+ id = dom.id;
272
+ if (!forceNew && id && Ext.cache[id]) {
273
+ // element object already exists
274
+ return Ext.cache[id].el;
275
+ }
276
+
277
+ /**
278
+ * @property {HTMLElement} dom
279
+ * The DOM element
280
+ */
281
+ me.dom = dom;
282
+
283
+ /**
284
+ * @property {String} id
285
+ * The DOM element ID
286
+ */
287
+ me.id = id || Ext.id(dom);
288
+
289
+ me.self.addToCache(me);
290
+ },
291
+
292
+ /**
293
+ * Sets the passed attributes as attributes of this element (a style attribute can be a string, object or function)
294
+ * @param {Object} o The object with the attributes
295
+ * @param {Boolean} [useSet=true] false to override the default setAttribute to use expandos.
296
+ * @return {Ext.dom.Element} this
297
+ */
298
+ set: function(o, useSet) {
299
+ var el = this.dom,
300
+ attr,
301
+ value;
302
+
303
+ for (attr in o) {
304
+ if (o.hasOwnProperty(attr)) {
305
+ value = o[attr];
306
+ if (attr == 'style') {
307
+ this.applyStyles(value);
308
+ }
309
+ else if (attr == 'cls') {
310
+ el.className = value;
311
+ }
312
+ else if (useSet !== false) {
313
+ if (value === undefined) {
314
+ el.removeAttribute(attr);
315
+ } else {
316
+ el.setAttribute(attr, value);
317
+ }
318
+ }
319
+ else {
320
+ el[attr] = value;
321
+ }
322
+ }
323
+ }
324
+ return this;
325
+ },
326
+
327
+ /**
328
+ * @property {String} defaultUnit
329
+ * The default unit to append to CSS values where a unit isn't provided.
330
+ */
331
+ defaultUnit: "px",
332
+
333
+ /**
334
+ * Returns true if this element matches the passed simple selector (e.g. div.some-class or span:first-child)
335
+ * @param {String} selector The simple selector to test
336
+ * @return {Boolean} True if this element matches the selector, else false
337
+ */
338
+ is: function(simpleSelector) {
339
+ return Ext.DomQuery.is(this.dom, simpleSelector);
340
+ },
341
+
342
+ /**
343
+ * Returns the value of the "value" attribute
344
+ * @param {Boolean} asNumber true to parse the value as a number
345
+ * @return {String/Number}
346
+ */
347
+ getValue: function(asNumber) {
348
+ var val = this.dom.value;
349
+ return asNumber ? parseInt(val, 10) : val;
350
+ },
351
+
352
+ /**
353
+ * Removes this element's dom reference. Note that event and cache removal is handled at {@link Ext#removeNode
354
+ * Ext.removeNode}
355
+ */
356
+ remove: function() {
357
+ var me = this,
358
+ dom = me.dom;
359
+
360
+ if (dom) {
361
+ Ext.removeNode(dom);
362
+ delete me.dom;
363
+ }
364
+ },
365
+
366
+ /**
367
+ * Returns true if this element is an ancestor of the passed element
368
+ * @param {HTMLElement/String} el The element to check
369
+ * @return {Boolean} True if this element is an ancestor of el, else false
370
+ */
371
+ contains: function(el) {
372
+ if (!el) {
373
+ return false;
374
+ }
375
+
376
+ var me = this,
377
+ dom = el.dom || el;
378
+
379
+ // we need el-contains-itself logic here because isAncestor does not do that:
380
+ return (dom === me.dom) || Ext.dom.AbstractElement.isAncestor(me.dom, dom);
381
+ },
382
+
383
+ /**
384
+ * Returns the value of an attribute from the element's underlying DOM node.
385
+ * @param {String} name The attribute name
386
+ * @param {String} [namespace] The namespace in which to look for the attribute
387
+ * @return {String} The attribute value
388
+ */
389
+ getAttribute: function(name, ns) {
390
+ var dom = this.dom;
391
+ return dom.getAttributeNS(ns, name) || dom.getAttribute(ns + ":" + name) || dom.getAttribute(name) || dom[name];
392
+ },
393
+
394
+ /**
395
+ * Update the innerHTML of this element
396
+ * @param {String} html The new HTML
397
+ * @return {Ext.dom.Element} this
398
+ */
399
+ update: function(html) {
400
+ if (this.dom) {
401
+ this.dom.innerHTML = html;
402
+ }
403
+ return this;
404
+ },
405
+
406
+
407
+ /**
408
+ * Set the innerHTML of this element
409
+ * @param {String} html The new HTML
410
+ * @return {Ext.Element} this
411
+ */
412
+ setHTML: function(html) {
413
+ if(this.dom) {
414
+ this.dom.innerHTML = html;
415
+ }
416
+ return this;
417
+ },
418
+
419
+ /**
420
+ * Returns the innerHTML of an Element or an empty string if the element's
421
+ * dom no longer exists.
422
+ */
423
+ getHTML: function() {
424
+ return this.dom ? this.dom.innerHTML : '';
425
+ },
426
+
427
+ /**
428
+ * Hide this element - Uses display mode to determine whether to use "display" or "visibility". See {@link #setVisible}.
429
+ * @param {Boolean/Object} animate (optional) true for the default animation or a standard Element animation config object
430
+ * @return {Ext.Element} this
431
+ */
432
+ hide: function() {
433
+ this.setVisible(false);
434
+ return this;
435
+ },
436
+
437
+ /**
438
+ * Show this element - Uses display mode to determine whether to use "display" or "visibility". See {@link #setVisible}.
439
+ * @param {Boolean/Object} animate (optional) true for the default animation or a standard Element animation config object
440
+ * @return {Ext.Element} this
441
+ */
442
+ show: function() {
443
+ this.setVisible(true);
444
+ return this;
445
+ },
446
+
447
+ /**
448
+ * Sets the visibility of the element (see details). If the visibilityMode is set to Element.DISPLAY, it will use
449
+ * the display property to hide the element, otherwise it uses visibility. The default is to hide and show using the visibility property.
450
+ * @param {Boolean} visible Whether the element is visible
451
+ * @param {Boolean/Object} animate (optional) True for the default animation, or a standard Element animation config object
452
+ * @return {Ext.Element} this
453
+ */
454
+ setVisible: function(visible, animate) {
455
+ var me = this,
456
+ statics = me.self,
457
+ mode = me.getVisibilityMode(),
458
+ prefix = Ext.baseCSSPrefix;
459
+
460
+ switch (mode) {
461
+ case statics.VISIBILITY:
462
+ me.removeCls([prefix + 'hidden-display', prefix + 'hidden-offsets']);
463
+ me[visible ? 'removeCls' : 'addCls'](prefix + 'hidden-visibility');
464
+ break;
465
+
466
+ case statics.DISPLAY:
467
+ me.removeCls([prefix + 'hidden-visibility', prefix + 'hidden-offsets']);
468
+ me[visible ? 'removeCls' : 'addCls'](prefix + 'hidden-display');
469
+ break;
470
+
471
+ case statics.OFFSETS:
472
+ me.removeCls([prefix + 'hidden-visibility', prefix + 'hidden-display']);
473
+ me[visible ? 'removeCls' : 'addCls'](prefix + 'hidden-offsets');
474
+ break;
475
+ }
476
+
477
+ return me;
478
+ },
479
+
480
+ getVisibilityMode: function() {
481
+ // Only flyweights won't have a $cache object, by calling getCache the cache
482
+ // will be created for future accesses. As such, we're eliminating the method
483
+ // call since it's mostly redundant
484
+ var data = (this.$cache || this.getCache()).data,
485
+ visMode = data.visibilityMode;
486
+
487
+ if (visMode === undefined) {
488
+ data.visibilityMode = visMode = this.self.DISPLAY;
489
+ }
490
+
491
+ return visMode;
492
+ },
493
+
494
+ /**
495
+ * Use this to change the visibility mode between {@link #VISIBILITY}, {@link #DISPLAY}, {@link #OFFSETS} or {@link #ASCLASS}.
496
+ */
497
+ setVisibilityMode: function(mode) {
498
+ (this.$cache || this.getCache()).data.visibilityMode = mode;
499
+ return this;
500
+ },
501
+
502
+ getCache: function() {
503
+ var me = this,
504
+ id = me.dom.id || Ext.id(me.dom);
505
+
506
+ // Note that we do not assign an ID to the calling object here.
507
+ // An Ext.dom.Element will have one assigned at construction, and an Ext.dom.AbstractElement.Fly must not have one.
508
+ // We assign an ID to the DOM element if it does not have one.
509
+ me.$cache = Ext.cache[id] || Ext.addCacheEntry(id, null, me.dom);
510
+
511
+ return me.$cache;
512
+ }
513
+
514
+ }, function() {
515
+ var AbstractElement = this;
516
+
517
+ Ext.getDetachedBody = function () {
518
+ var detachedEl = AbstractElement.detachedBodyEl;
519
+
520
+ if (!detachedEl) {
521
+ detachedEl = document.createElement('div');
522
+ AbstractElement.detachedBodyEl = detachedEl = new AbstractElement.Fly(detachedEl);
523
+ detachedEl.isDetachedBody = true;
524
+ }
525
+
526
+ return detachedEl;
527
+ };
528
+
529
+ Ext.getElementById = function (id) {
530
+ var el = document.getElementById(id),
531
+ detachedBodyEl;
532
+
533
+ if (!el && (detachedBodyEl = AbstractElement.detachedBodyEl)) {
534
+ el = detachedBodyEl.dom.querySelector('#' + Ext.escapeId(id));
535
+ }
536
+
537
+ return el;
538
+ };
539
+
540
+ /**
541
+ * @member Ext
542
+ * @method get
543
+ * @inheritdoc Ext.dom.Element#get
544
+ */
545
+ Ext.get = function(el) {
546
+ return Ext.dom.Element.get(el);
547
+ };
548
+
549
+ this.addStatics({
550
+ /**
551
+ * @class Ext.dom.AbstractElement.Fly
552
+ * @extends Ext.dom.AbstractElement
553
+ *
554
+ * A non-persistent wrapper for a DOM element which may be used to execute methods of {@link Ext.dom.Element}
555
+ * upon a DOM element without creating an instance of {@link Ext.dom.Element}.
556
+ *
557
+ * A **singleton** instance of this class is returned when you use {@link Ext#fly}
558
+ *
559
+ * Because it is a singleton, this Flyweight does not have an ID, and must be used and discarded in a single line.
560
+ * You should not keep and use the reference to this singleton over multiple lines because methods that you call
561
+ * may themselves make use of {@link Ext#fly} and may change the DOM element to which the instance refers.
562
+ */
563
+ Fly: new Ext.Class({
564
+ extend: AbstractElement,
565
+
566
+ /**
567
+ * @property {Boolean} isFly
568
+ * This is `true` to identify Element flyweights
569
+ */
570
+ isFly: true,
571
+
572
+ constructor: function(dom) {
573
+ this.dom = dom;
574
+ },
575
+
576
+ /**
577
+ * @private
578
+ * Attach this fliyweight instance to the passed DOM element.
579
+ *
580
+ * Note that a flightweight does **not** have an ID, and does not acquire the ID of the DOM element.
581
+ */
582
+ attach: function (dom) {
583
+
584
+ // Attach to the passed DOM element. The same code as in Ext.Fly
585
+ this.dom = dom;
586
+ // Use cached data if there is existing cached data for the referenced DOM element,
587
+ // otherwise it will be created when needed by getCache.
588
+ this.$cache = dom.id ? Ext.cache[dom.id] : null;
589
+ return this;
590
+ }
591
+ }),
592
+
593
+ _flyweights: {},
594
+
595
+ /**
596
+ * Gets the singleton {@link Ext.dom.AbstractElement.Fly flyweight} element, with the passed node as the active element.
597
+ *
598
+ * Because it is a singleton, this Flyweight does not have an ID, and must be used and discarded in a single line.
599
+ * You may not keep and use the reference to this singleton over multiple lines because methods that you call
600
+ * may themselves make use of {@link Ext#fly} and may change the DOM element to which the instance refers.
601
+ *
602
+ * {@link Ext#fly} is alias for {@link Ext.dom.AbstractElement#fly}.
603
+ *
604
+ * Use this to make one-time references to DOM elements which are not going to be accessed again either by
605
+ * application code, or by Ext's classes. If accessing an element which will be processed regularly, then {@link
606
+ * Ext#get Ext.get} will be more appropriate to take advantage of the caching provided by the Ext.dom.Element
607
+ * class.
608
+ *
609
+ * @param {String/HTMLElement} dom The dom node or id
610
+ * @param {String} [named] Allows for creation of named reusable flyweights to prevent conflicts (e.g.
611
+ * internally Ext uses "_global")
612
+ * @return {Ext.dom.AbstractElement.Fly} The singleton flyweight object (or null if no matching element was found)
613
+ * @static
614
+ * @member Ext.dom.AbstractElement
615
+ */
616
+ fly: function(dom, named) {
617
+ var fly = null,
618
+ _flyweights = AbstractElement._flyweights;
619
+
620
+ named = named || '_global';
621
+
622
+ dom = Ext.getDom(dom);
623
+
624
+ if (dom) {
625
+ fly = _flyweights[named] || (_flyweights[named] = new AbstractElement.Fly());
626
+
627
+ // Attach to the passed DOM element.
628
+ // This code performs the same function as Fly.attach, but inline it for efficiency
629
+ fly.dom = dom;
630
+ // Use cached data if there is existing cached data for the referenced DOM element,
631
+ // otherwise it will be created when needed by getCache.
632
+ fly.$cache = dom.id ? Ext.cache[dom.id] : null;
633
+ }
634
+ return fly;
635
+ }
636
+ });
637
+
638
+ /**
639
+ * @member Ext
640
+ * @method fly
641
+ * @inheritdoc Ext.dom.AbstractElement#fly
642
+ */
643
+ Ext.fly = function() {
644
+ return AbstractElement.fly.apply(AbstractElement, arguments);
645
+ };
646
+
647
+ (function (proto) {
648
+ /**
649
+ * @method destroy
650
+ * @member Ext.dom.AbstractElement
651
+ * @inheritdoc Ext.dom.AbstractElement#remove
652
+ * Alias to {@link #remove}.
653
+ */
654
+ proto.destroy = proto.remove;
655
+
656
+ /**
657
+ * Returns a child element of this element given its `id`.
658
+ * @method getById
659
+ * @member Ext.dom.AbstractElement
660
+ * @param {String} id The id of the desired child element.
661
+ * @param {Boolean} [asDom=false] True to return the DOM element, false to return a
662
+ * wrapped Element object.
663
+ */
664
+ if (document.querySelector) {
665
+ proto.getById = function (id, asDom) {
666
+ // for normal elements getElementById is the best solution, but if the el is
667
+ // not part of the document.body, we have to resort to querySelector
668
+ var dom = document.getElementById(id) ||
669
+ this.dom.querySelector('#'+Ext.escapeId(id));
670
+ return asDom ? dom : (dom ? Ext.get(dom) : null);
671
+ };
672
+ } else {
673
+ proto.getById = function (id, asDom) {
674
+ var dom = document.getElementById(id);
675
+ return asDom ? dom : (dom ? Ext.get(dom) : null);
676
+ };
677
+ }
678
+ }(this.prototype));
679
+ });
680
+
681
+ }());