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,141 @@
1
+ /**
2
+ * @class Ext.env.OS
3
+ * Provides useful information about the current operating system environment.
4
+ * Access the global instance stored in {@link Ext#os}. Example:
5
+ *
6
+ * if (Ext.os.is.Windows) {
7
+ * // Windows specific code here
8
+ * }
9
+ *
10
+ * if (Ext.os.is.iOS) {
11
+ * // iPad, iPod, iPhone, etc.
12
+ * }
13
+ *
14
+ * console.log("Version " + Ext.os.version);
15
+ *
16
+ * For a full list of supported values, refer to: {@link Ext.env.OS#is}
17
+ */
18
+ Ext.define('Ext.env.OS', {
19
+
20
+ statics: {
21
+ osNames: {
22
+ ios: 'iOS',
23
+ android: 'Android',
24
+ webos: 'WebOS',
25
+ blackberry: 'BlackBerry',
26
+ mac: 'MacOSX',
27
+ win: 'Windows',
28
+ linux: 'Linux',
29
+ other: 'Other'
30
+ },
31
+ osPrefixes: {
32
+ ios: 'iPhone OS ',
33
+ android: 'Android ',
34
+ blackberry: 'BlackBerry ',
35
+ webos: 'webOS/'
36
+ }
37
+ },
38
+
39
+ /**
40
+ * A "hybrid" property, can be either accessed as a method call, i.e:
41
+ *
42
+ * if (Ext.os.is('Android')) { ... }
43
+ *
44
+ * or as an object with boolean properties, i.e:
45
+ *
46
+ * if (Ext.os.is.Android) { ... }
47
+ *
48
+ * Versions can be conveniently checked as well. For example:
49
+ *
50
+ * if (Ext.os.is.Android2) { ... } // Equivalent to (Ext.os.is.Android && Ext.os.version.equals(2))
51
+ *
52
+ * if (Ext.os.is.iOS32) { ... } // Equivalent to (Ext.os.is.iOS && Ext.os.version.equals(3.2))
53
+ *
54
+ * Note that only {@link Ext.Version#getMajor major component} and {@link Ext.Version#getShortVersion shortVersion}
55
+ * value of the version are available via direct property checking.
56
+ *
57
+ * Supported values are: iOS, iPad, iPhone, iPod, Android, WebOS, BlackBerry, MacOSX, Windows, Linux and Other
58
+ *
59
+ * @param {String} value The OS name to check
60
+ * @return {Boolean}
61
+ * @method
62
+ */
63
+ is: Ext.emptyFn,
64
+
65
+ /**
66
+ * @property {String} name
67
+ * The full name of the current operating system.
68
+ * Possible values are: iOS, Android, WebOS, BlackBerry, MacOSX, Windows, Linux and Other.
69
+ * @readonly
70
+ */
71
+ name: null,
72
+
73
+ /**
74
+ * @property {Ext.Version} version
75
+ * Refer to {@link Ext.Version}.
76
+ * @readonly
77
+ */
78
+ version: null,
79
+
80
+ constructor: function() {
81
+ var userAgent = Ext.global.navigator.userAgent,
82
+ platform = Ext.global.navigator.platform,
83
+ selfClass = this.statics(),
84
+ osMatch = userAgent.match(new RegExp('((?:' + Ext.Object.getValues(selfClass.osPrefixes).join(')|(?:') + '))([^\\s;]+)')),
85
+ name = 'other',
86
+ version = '',
87
+ actualVersionMatch,
88
+ key, osName;
89
+
90
+ if (osMatch) {
91
+ name = selfClass.osNames[Ext.Object.getKey(selfClass.osPrefixes, osMatch[1])];
92
+ version = osMatch[2];
93
+
94
+ if (name === 'BlackBerry') {
95
+ actualVersionMatch = userAgent.match(/Version\/([\d\._]+)/);
96
+
97
+ if (actualVersionMatch) {
98
+ version = actualVersionMatch[1];
99
+ }
100
+ }
101
+ }
102
+ else {
103
+ name = selfClass.osNames[(userAgent.toLowerCase().match(/mac|win|linux/i) || ['other'])[0]];
104
+ }
105
+
106
+ Ext.apply(this, {
107
+ name: name,
108
+ version: new Ext.Version(version)
109
+ });
110
+
111
+ this.is = function(name) {
112
+ return this.is[name] === true;
113
+ };
114
+
115
+ if (name === 'iOS') {
116
+ this.is[platform] = true;
117
+ }
118
+
119
+ this.is[this.name] = true;
120
+ this.is[this.name + (this.version.getMajor() || '')] = true;
121
+ this.is[this.name + this.version.getShortVersion()] = true;
122
+
123
+ for (key in selfClass.osNames) {
124
+ if (selfClass.osNames.hasOwnProperty(key)) {
125
+ osName = selfClass.osNames[key];
126
+ this.is[osName] = (this.name === osName);
127
+ }
128
+ }
129
+
130
+ return this;
131
+ }
132
+ }, function() {
133
+
134
+ /**
135
+ * @property {Ext.env.OS} os
136
+ * @member Ext
137
+ * Global convenient instance of {@link Ext.env.OS}.
138
+ */
139
+ Ext.os = new Ext.env.OS();
140
+
141
+ });
@@ -0,0 +1,1205 @@
1
+ /**
2
+ * @class Ext.Array
3
+ * @singleton
4
+ * @author Jacky Nguyen <jacky@sencha.com>
5
+ * @docauthor Jacky Nguyen <jacky@sencha.com>
6
+ *
7
+ * A set of useful static methods to deal with arrays; provide missing methods for older browsers.
8
+ */
9
+ (function() {
10
+
11
+ var arrayPrototype = Array.prototype,
12
+ slice = arrayPrototype.slice,
13
+ supportsSplice = (function () {
14
+ var array = [],
15
+ lengthBefore,
16
+ j = 20;
17
+
18
+ if (!array.splice) {
19
+ return false;
20
+ }
21
+
22
+ // This detects a bug in IE8 splice method:
23
+ // see http://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/6e946d03-e09f-4b22-a4dd-cd5e276bf05a/
24
+
25
+ while (j--) {
26
+ array.push("A");
27
+ }
28
+
29
+ array.splice(15, 0, "F", "F", "F", "F", "F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F");
30
+
31
+ lengthBefore = array.length; //41
32
+ array.splice(13, 0, "XXX"); // add one element
33
+
34
+ if (lengthBefore+1 != array.length) {
35
+ return false;
36
+ }
37
+ // end IE8 bug
38
+
39
+ return true;
40
+ }()),
41
+ supportsForEach = 'forEach' in arrayPrototype,
42
+ supportsMap = 'map' in arrayPrototype,
43
+ supportsIndexOf = 'indexOf' in arrayPrototype,
44
+ supportsEvery = 'every' in arrayPrototype,
45
+ supportsSome = 'some' in arrayPrototype,
46
+ supportsFilter = 'filter' in arrayPrototype,
47
+ supportsSort = (function() {
48
+ var a = [1,2,3,4,5].sort(function(){ return 0; });
49
+ return a[0] === 1 && a[1] === 2 && a[2] === 3 && a[3] === 4 && a[4] === 5;
50
+ }()),
51
+ supportsSliceOnNodeList = true,
52
+ ExtArray,
53
+ erase,
54
+ replace,
55
+ splice;
56
+
57
+ try {
58
+ // IE 6 - 8 will throw an error when using Array.prototype.slice on NodeList
59
+ if (typeof document !== 'undefined') {
60
+ slice.call(document.getElementsByTagName('body'));
61
+ }
62
+ } catch (e) {
63
+ supportsSliceOnNodeList = false;
64
+ }
65
+
66
+ function fixArrayIndex (array, index) {
67
+ return (index < 0) ? Math.max(0, array.length + index)
68
+ : Math.min(array.length, index);
69
+ }
70
+
71
+ /*
72
+ Does the same work as splice, but with a slightly more convenient signature. The splice
73
+ method has bugs in IE8, so this is the implementation we use on that platform.
74
+
75
+ The rippling of items in the array can be tricky. Consider two use cases:
76
+
77
+ index=2
78
+ removeCount=2
79
+ /=====\
80
+ +---+---+---+---+---+---+---+---+
81
+ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
82
+ +---+---+---+---+---+---+---+---+
83
+ / \/ \/ \/ \
84
+ / /\ /\ /\ \
85
+ / / \/ \/ \ +--------------------------+
86
+ / / /\ /\ +--------------------------+ \
87
+ / / / \/ +--------------------------+ \ \
88
+ / / / /+--------------------------+ \ \ \
89
+ / / / / \ \ \ \
90
+ v v v v v v v v
91
+ +---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+---+
92
+ | 0 | 1 | 4 | 5 | 6 | 7 | | 0 | 1 | a | b | c | 4 | 5 | 6 | 7 |
93
+ +---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+---+
94
+ A B \=========/
95
+ insert=[a,b,c]
96
+
97
+ In case A, it is obvious that copying of [4,5,6,7] must be left-to-right so
98
+ that we don't end up with [0,1,6,7,6,7]. In case B, we have the opposite; we
99
+ must go right-to-left or else we would end up with [0,1,a,b,c,4,4,4,4].
100
+ */
101
+ function replaceSim (array, index, removeCount, insert) {
102
+ var add = insert ? insert.length : 0,
103
+ length = array.length,
104
+ pos = fixArrayIndex(array, index),
105
+ remove,
106
+ tailOldPos,
107
+ tailNewPos,
108
+ tailCount,
109
+ lengthAfterRemove,
110
+ i;
111
+
112
+ // we try to use Array.push when we can for efficiency...
113
+ if (pos === length) {
114
+ if (add) {
115
+ array.push.apply(array, insert);
116
+ }
117
+ } else {
118
+ remove = Math.min(removeCount, length - pos);
119
+ tailOldPos = pos + remove;
120
+ tailNewPos = tailOldPos + add - remove;
121
+ tailCount = length - tailOldPos;
122
+ lengthAfterRemove = length - remove;
123
+
124
+ if (tailNewPos < tailOldPos) { // case A
125
+ for (i = 0; i < tailCount; ++i) {
126
+ array[tailNewPos+i] = array[tailOldPos+i];
127
+ }
128
+ } else if (tailNewPos > tailOldPos) { // case B
129
+ for (i = tailCount; i--; ) {
130
+ array[tailNewPos+i] = array[tailOldPos+i];
131
+ }
132
+ } // else, add == remove (nothing to do)
133
+
134
+ if (add && pos === lengthAfterRemove) {
135
+ array.length = lengthAfterRemove; // truncate array
136
+ array.push.apply(array, insert);
137
+ } else {
138
+ array.length = lengthAfterRemove + add; // reserves space
139
+ for (i = 0; i < add; ++i) {
140
+ array[pos+i] = insert[i];
141
+ }
142
+ }
143
+ }
144
+
145
+ return array;
146
+ }
147
+
148
+ function replaceNative (array, index, removeCount, insert) {
149
+ if (insert && insert.length) {
150
+ if (index < array.length) {
151
+ array.splice.apply(array, [index, removeCount].concat(insert));
152
+ } else {
153
+ array.push.apply(array, insert);
154
+ }
155
+ } else {
156
+ array.splice(index, removeCount);
157
+ }
158
+ return array;
159
+ }
160
+
161
+ function eraseSim (array, index, removeCount) {
162
+ return replaceSim(array, index, removeCount);
163
+ }
164
+
165
+ function eraseNative (array, index, removeCount) {
166
+ array.splice(index, removeCount);
167
+ return array;
168
+ }
169
+
170
+ function spliceSim (array, index, removeCount) {
171
+ var pos = fixArrayIndex(array, index),
172
+ removed = array.slice(index, fixArrayIndex(array, pos+removeCount));
173
+
174
+ if (arguments.length < 4) {
175
+ replaceSim(array, pos, removeCount);
176
+ } else {
177
+ replaceSim(array, pos, removeCount, slice.call(arguments, 3));
178
+ }
179
+
180
+ return removed;
181
+ }
182
+
183
+ function spliceNative (array) {
184
+ return array.splice.apply(array, slice.call(arguments, 1));
185
+ }
186
+
187
+ erase = supportsSplice ? eraseNative : eraseSim;
188
+ replace = supportsSplice ? replaceNative : replaceSim;
189
+ splice = supportsSplice ? spliceNative : spliceSim;
190
+
191
+ // NOTE: from here on, use erase, replace or splice (not native methods)...
192
+
193
+ ExtArray = Ext.Array = {
194
+ /**
195
+ * Iterates an array or an iterable value and invoke the given callback function for each item.
196
+ *
197
+ * var countries = ['Vietnam', 'Singapore', 'United States', 'Russia'];
198
+ *
199
+ * Ext.Array.each(countries, function(name, index, countriesItSelf) {
200
+ * console.log(name);
201
+ * });
202
+ *
203
+ * var sum = function() {
204
+ * var sum = 0;
205
+ *
206
+ * Ext.Array.each(arguments, function(value) {
207
+ * sum += value;
208
+ * });
209
+ *
210
+ * return sum;
211
+ * };
212
+ *
213
+ * sum(1, 2, 3); // returns 6
214
+ *
215
+ * The iteration can be stopped by returning false in the function callback.
216
+ *
217
+ * Ext.Array.each(countries, function(name, index, countriesItSelf) {
218
+ * if (name === 'Singapore') {
219
+ * return false; // break here
220
+ * }
221
+ * });
222
+ *
223
+ * {@link Ext#each Ext.each} is alias for {@link Ext.Array#each Ext.Array.each}
224
+ *
225
+ * @param {Array/NodeList/Object} iterable The value to be iterated. If this
226
+ * argument is not iterable, the callback function is called once.
227
+ * @param {Function} fn The callback function. If it returns false, the iteration stops and this method returns
228
+ * the current `index`.
229
+ * @param {Object} fn.item The item at the current `index` in the passed `array`
230
+ * @param {Number} fn.index The current `index` within the `array`
231
+ * @param {Array} fn.allItems The `array` itself which was passed as the first argument
232
+ * @param {Boolean} fn.return Return false to stop iteration.
233
+ * @param {Object} scope (Optional) The scope (`this` reference) in which the specified function is executed.
234
+ * @param {Boolean} reverse (Optional) Reverse the iteration order (loop from the end to the beginning)
235
+ * Defaults false
236
+ * @return {Boolean} See description for the `fn` parameter.
237
+ */
238
+ each: function(array, fn, scope, reverse) {
239
+ array = ExtArray.from(array);
240
+
241
+ var i,
242
+ ln = array.length;
243
+
244
+ if (reverse !== true) {
245
+ for (i = 0; i < ln; i++) {
246
+ if (fn.call(scope || array[i], array[i], i, array) === false) {
247
+ return i;
248
+ }
249
+ }
250
+ }
251
+ else {
252
+ for (i = ln - 1; i > -1; i--) {
253
+ if (fn.call(scope || array[i], array[i], i, array) === false) {
254
+ return i;
255
+ }
256
+ }
257
+ }
258
+
259
+ return true;
260
+ },
261
+
262
+ /**
263
+ * Iterates an array and invoke the given callback function for each item. Note that this will simply
264
+ * delegate to the native Array.prototype.forEach method if supported. It doesn't support stopping the
265
+ * iteration by returning false in the callback function like {@link Ext.Array#each}. However, performance
266
+ * could be much better in modern browsers comparing with {@link Ext.Array#each}
267
+ *
268
+ * @param {Array} array The array to iterate
269
+ * @param {Function} fn The callback function.
270
+ * @param {Object} fn.item The item at the current `index` in the passed `array`
271
+ * @param {Number} fn.index The current `index` within the `array`
272
+ * @param {Array} fn.allItems The `array` itself which was passed as the first argument
273
+ * @param {Object} scope (Optional) The execution scope (`this`) in which the specified function is executed.
274
+ */
275
+ forEach: supportsForEach ? function(array, fn, scope) {
276
+ return array.forEach(fn, scope);
277
+ } : function(array, fn, scope) {
278
+ var i = 0,
279
+ ln = array.length;
280
+
281
+ for (; i < ln; i++) {
282
+ fn.call(scope, array[i], i, array);
283
+ }
284
+ },
285
+
286
+ /**
287
+ * Get the index of the provided `item` in the given `array`, a supplement for the
288
+ * missing arrayPrototype.indexOf in Internet Explorer.
289
+ *
290
+ * @param {Array} array The array to check
291
+ * @param {Object} item The item to look for
292
+ * @param {Number} from (Optional) The index at which to begin the search
293
+ * @return {Number} The index of item in the array (or -1 if it is not found)
294
+ */
295
+ indexOf: supportsIndexOf ? function(array, item, from) {
296
+ return array.indexOf(item, from);
297
+ } : function(array, item, from) {
298
+ var i, length = array.length;
299
+
300
+ for (i = (from < 0) ? Math.max(0, length + from) : from || 0; i < length; i++) {
301
+ if (array[i] === item) {
302
+ return i;
303
+ }
304
+ }
305
+
306
+ return -1;
307
+ },
308
+
309
+ /**
310
+ * Checks whether or not the given `array` contains the specified `item`
311
+ *
312
+ * @param {Array} array The array to check
313
+ * @param {Object} item The item to look for
314
+ * @return {Boolean} True if the array contains the item, false otherwise
315
+ */
316
+ contains: supportsIndexOf ? function(array, item) {
317
+ return array.indexOf(item) !== -1;
318
+ } : function(array, item) {
319
+ var i, ln;
320
+
321
+ for (i = 0, ln = array.length; i < ln; i++) {
322
+ if (array[i] === item) {
323
+ return true;
324
+ }
325
+ }
326
+
327
+ return false;
328
+ },
329
+
330
+ /**
331
+ * Converts any iterable (numeric indices and a length property) into a true array.
332
+ *
333
+ * function test() {
334
+ * var args = Ext.Array.toArray(arguments),
335
+ * fromSecondToLastArgs = Ext.Array.toArray(arguments, 1);
336
+ *
337
+ * alert(args.join(' '));
338
+ * alert(fromSecondToLastArgs.join(' '));
339
+ * }
340
+ *
341
+ * test('just', 'testing', 'here'); // alerts 'just testing here';
342
+ * // alerts 'testing here';
343
+ *
344
+ * Ext.Array.toArray(document.getElementsByTagName('div')); // will convert the NodeList into an array
345
+ * Ext.Array.toArray('splitted'); // returns ['s', 'p', 'l', 'i', 't', 't', 'e', 'd']
346
+ * Ext.Array.toArray('splitted', 0, 3); // returns ['s', 'p', 'l']
347
+ *
348
+ * {@link Ext#toArray Ext.toArray} is alias for {@link Ext.Array#toArray Ext.Array.toArray}
349
+ *
350
+ * @param {Object} iterable the iterable object to be turned into a true Array.
351
+ * @param {Number} start (Optional) a zero-based index that specifies the start of extraction. Defaults to 0
352
+ * @param {Number} end (Optional) a 1-based index that specifies the end of extraction. Defaults to the last
353
+ * index of the iterable value
354
+ * @return {Array} array
355
+ */
356
+ toArray: function(iterable, start, end){
357
+ if (!iterable || !iterable.length) {
358
+ return [];
359
+ }
360
+
361
+ if (typeof iterable === 'string') {
362
+ iterable = iterable.split('');
363
+ }
364
+
365
+ if (supportsSliceOnNodeList) {
366
+ return slice.call(iterable, start || 0, end || iterable.length);
367
+ }
368
+
369
+ var array = [],
370
+ i;
371
+
372
+ start = start || 0;
373
+ end = end ? ((end < 0) ? iterable.length + end : end) : iterable.length;
374
+
375
+ for (i = start; i < end; i++) {
376
+ array.push(iterable[i]);
377
+ }
378
+
379
+ return array;
380
+ },
381
+
382
+ /**
383
+ * Plucks the value of a property from each item in the Array. Example:
384
+ *
385
+ * Ext.Array.pluck(Ext.query("p"), "className"); // [el1.className, el2.className, ..., elN.className]
386
+ *
387
+ * @param {Array/NodeList} array The Array of items to pluck the value from.
388
+ * @param {String} propertyName The property name to pluck from each element.
389
+ * @return {Array} The value from each item in the Array.
390
+ */
391
+ pluck: function(array, propertyName) {
392
+ var ret = [],
393
+ i, ln, item;
394
+
395
+ for (i = 0, ln = array.length; i < ln; i++) {
396
+ item = array[i];
397
+
398
+ ret.push(item[propertyName]);
399
+ }
400
+
401
+ return ret;
402
+ },
403
+
404
+ /**
405
+ * Creates a new array with the results of calling a provided function on every element in this array.
406
+ *
407
+ * @param {Array} array
408
+ * @param {Function} fn Callback function for each item
409
+ * @param {Object} scope Callback function scope
410
+ * @return {Array} results
411
+ */
412
+ map: supportsMap ? function(array, fn, scope) {
413
+ //<debug>
414
+ if (!fn) {
415
+ Ext.Error.raise('Ext.Array.map must have a callback function passed as second argument.');
416
+ }
417
+ //</debug>
418
+ return array.map(fn, scope);
419
+ } : function(array, fn, scope) {
420
+ //<debug>
421
+ if (!fn) {
422
+ Ext.Error.raise('Ext.Array.map must have a callback function passed as second argument.');
423
+ }
424
+ //</debug>
425
+ var results = [],
426
+ i = 0,
427
+ len = array.length;
428
+
429
+ for (; i < len; i++) {
430
+ results[i] = fn.call(scope, array[i], i, array);
431
+ }
432
+
433
+ return results;
434
+ },
435
+
436
+ /**
437
+ * Executes the specified function for each array element until the function returns a falsy value.
438
+ * If such an item is found, the function will return false immediately.
439
+ * Otherwise, it will return true.
440
+ *
441
+ * @param {Array} array
442
+ * @param {Function} fn Callback function for each item
443
+ * @param {Object} scope Callback function scope
444
+ * @return {Boolean} True if no false value is returned by the callback function.
445
+ */
446
+ every: supportsEvery ? function(array, fn, scope) {
447
+ //<debug>
448
+ if (!fn) {
449
+ Ext.Error.raise('Ext.Array.every must have a callback function passed as second argument.');
450
+ }
451
+ //</debug>
452
+ return array.every(fn, scope);
453
+ } : function(array, fn, scope) {
454
+ //<debug>
455
+ if (!fn) {
456
+ Ext.Error.raise('Ext.Array.every must have a callback function passed as second argument.');
457
+ }
458
+ //</debug>
459
+ var i = 0,
460
+ ln = array.length;
461
+
462
+ for (; i < ln; ++i) {
463
+ if (!fn.call(scope, array[i], i, array)) {
464
+ return false;
465
+ }
466
+ }
467
+
468
+ return true;
469
+ },
470
+
471
+ /**
472
+ * Executes the specified function for each array element until the function returns a truthy value.
473
+ * If such an item is found, the function will return true immediately. Otherwise, it will return false.
474
+ *
475
+ * @param {Array} array
476
+ * @param {Function} fn Callback function for each item
477
+ * @param {Object} scope Callback function scope
478
+ * @return {Boolean} True if the callback function returns a truthy value.
479
+ */
480
+ some: supportsSome ? function(array, fn, scope) {
481
+ //<debug>
482
+ if (!fn) {
483
+ Ext.Error.raise('Ext.Array.some must have a callback function passed as second argument.');
484
+ }
485
+ //</debug>
486
+ return array.some(fn, scope);
487
+ } : function(array, fn, scope) {
488
+ //<debug>
489
+ if (!fn) {
490
+ Ext.Error.raise('Ext.Array.some must have a callback function passed as second argument.');
491
+ }
492
+ //</debug>
493
+ var i = 0,
494
+ ln = array.length;
495
+
496
+ for (; i < ln; ++i) {
497
+ if (fn.call(scope, array[i], i, array)) {
498
+ return true;
499
+ }
500
+ }
501
+
502
+ return false;
503
+ },
504
+
505
+ /**
506
+ * Filter through an array and remove empty item as defined in {@link Ext#isEmpty Ext.isEmpty}
507
+ *
508
+ * See {@link Ext.Array#filter}
509
+ *
510
+ * @param {Array} array
511
+ * @return {Array} results
512
+ */
513
+ clean: function(array) {
514
+ var results = [],
515
+ i = 0,
516
+ ln = array.length,
517
+ item;
518
+
519
+ for (; i < ln; i++) {
520
+ item = array[i];
521
+
522
+ if (!Ext.isEmpty(item)) {
523
+ results.push(item);
524
+ }
525
+ }
526
+
527
+ return results;
528
+ },
529
+
530
+ /**
531
+ * Returns a new array with unique items
532
+ *
533
+ * @param {Array} array
534
+ * @return {Array} results
535
+ */
536
+ unique: function(array) {
537
+ var clone = [],
538
+ i = 0,
539
+ ln = array.length,
540
+ item;
541
+
542
+ for (; i < ln; i++) {
543
+ item = array[i];
544
+
545
+ if (ExtArray.indexOf(clone, item) === -1) {
546
+ clone.push(item);
547
+ }
548
+ }
549
+
550
+ return clone;
551
+ },
552
+
553
+ /**
554
+ * Creates a new array with all of the elements of this array for which
555
+ * the provided filtering function returns true.
556
+ *
557
+ * @param {Array} array
558
+ * @param {Function} fn Callback function for each item
559
+ * @param {Object} scope Callback function scope
560
+ * @return {Array} results
561
+ */
562
+ filter: supportsFilter ? function(array, fn, scope) {
563
+ //<debug>
564
+ if (!fn) {
565
+ Ext.Error.raise('Ext.Array.filter must have a callback function passed as second argument.');
566
+ }
567
+ //</debug>
568
+ return array.filter(fn, scope);
569
+ } : function(array, fn, scope) {
570
+ //<debug>
571
+ if (!fn) {
572
+ Ext.Error.raise('Ext.Array.filter must have a callback function passed as second argument.');
573
+ }
574
+ //</debug>
575
+ var results = [],
576
+ i = 0,
577
+ ln = array.length;
578
+
579
+ for (; i < ln; i++) {
580
+ if (fn.call(scope, array[i], i, array)) {
581
+ results.push(array[i]);
582
+ }
583
+ }
584
+
585
+ return results;
586
+ },
587
+
588
+ /**
589
+ * Converts a value to an array if it's not already an array; returns:
590
+ *
591
+ * - An empty array if given value is `undefined` or `null`
592
+ * - Itself if given value is already an array
593
+ * - An array copy if given value is {@link Ext#isIterable iterable} (arguments, NodeList and alike)
594
+ * - An array with one item which is the given value, otherwise
595
+ *
596
+ * @param {Object} value The value to convert to an array if it's not already is an array
597
+ * @param {Boolean} newReference (Optional) True to clone the given array and return a new reference if necessary,
598
+ * defaults to false
599
+ * @return {Array} array
600
+ */
601
+ from: function(value, newReference) {
602
+ if (value === undefined || value === null) {
603
+ return [];
604
+ }
605
+
606
+ if (Ext.isArray(value)) {
607
+ return (newReference) ? slice.call(value) : value;
608
+ }
609
+
610
+ var type = typeof value;
611
+ // Both strings and functions will have a length property. In phantomJS, NodeList
612
+ // instances report typeof=='function' but don't have an apply method...
613
+ if (value && value.length !== undefined && type !== 'string' && (type !== 'function' || !value.apply)) {
614
+ return ExtArray.toArray(value);
615
+ }
616
+
617
+ return [value];
618
+ },
619
+
620
+ /**
621
+ * Removes the specified item from the array if it exists
622
+ *
623
+ * @param {Array} array The array
624
+ * @param {Object} item The item to remove
625
+ * @return {Array} The passed array itself
626
+ */
627
+ remove: function(array, item) {
628
+ var index = ExtArray.indexOf(array, item);
629
+
630
+ if (index !== -1) {
631
+ erase(array, index, 1);
632
+ }
633
+
634
+ return array;
635
+ },
636
+
637
+ /**
638
+ * Push an item into the array only if the array doesn't contain it yet
639
+ *
640
+ * @param {Array} array The array
641
+ * @param {Object} item The item to include
642
+ */
643
+ include: function(array, item) {
644
+ if (!ExtArray.contains(array, item)) {
645
+ array.push(item);
646
+ }
647
+ },
648
+
649
+ /**
650
+ * Clone a flat array without referencing the previous one. Note that this is different
651
+ * from Ext.clone since it doesn't handle recursive cloning. It's simply a convenient, easy-to-remember method
652
+ * for Array.prototype.slice.call(array)
653
+ *
654
+ * @param {Array} array The array
655
+ * @return {Array} The clone array
656
+ */
657
+ clone: function(array) {
658
+ return slice.call(array);
659
+ },
660
+
661
+ /**
662
+ * Merge multiple arrays into one with unique items.
663
+ *
664
+ * {@link Ext.Array#union} is alias for {@link Ext.Array#merge}
665
+ *
666
+ * @param {Array} array1
667
+ * @param {Array} array2
668
+ * @param {Array} etc
669
+ * @return {Array} merged
670
+ */
671
+ merge: function() {
672
+ var args = slice.call(arguments),
673
+ array = [],
674
+ i, ln;
675
+
676
+ for (i = 0, ln = args.length; i < ln; i++) {
677
+ array = array.concat(args[i]);
678
+ }
679
+
680
+ return ExtArray.unique(array);
681
+ },
682
+
683
+ /**
684
+ * Merge multiple arrays into one with unique items that exist in all of the arrays.
685
+ *
686
+ * @param {Array} array1
687
+ * @param {Array} array2
688
+ * @param {Array} etc
689
+ * @return {Array} intersect
690
+ */
691
+ intersect: function() {
692
+ var intersection = [],
693
+ arrays = slice.call(arguments),
694
+ arraysLength,
695
+ array,
696
+ arrayLength,
697
+ minArray,
698
+ minArrayIndex,
699
+ minArrayCandidate,
700
+ minArrayLength,
701
+ element,
702
+ elementCandidate,
703
+ elementCount,
704
+ i, j, k;
705
+
706
+ if (!arrays.length) {
707
+ return intersection;
708
+ }
709
+
710
+ // Find the smallest array
711
+ arraysLength = arrays.length;
712
+ for (i = minArrayIndex = 0; i < arraysLength; i++) {
713
+ minArrayCandidate = arrays[i];
714
+ if (!minArray || minArrayCandidate.length < minArray.length) {
715
+ minArray = minArrayCandidate;
716
+ minArrayIndex = i;
717
+ }
718
+ }
719
+
720
+ minArray = ExtArray.unique(minArray);
721
+ erase(arrays, minArrayIndex, 1);
722
+
723
+ // Use the smallest unique'd array as the anchor loop. If the other array(s) do contain
724
+ // an item in the small array, we're likely to find it before reaching the end
725
+ // of the inner loop and can terminate the search early.
726
+ minArrayLength = minArray.length;
727
+ arraysLength = arrays.length;
728
+ for (i = 0; i < minArrayLength; i++) {
729
+ element = minArray[i];
730
+ elementCount = 0;
731
+
732
+ for (j = 0; j < arraysLength; j++) {
733
+ array = arrays[j];
734
+ arrayLength = array.length;
735
+ for (k = 0; k < arrayLength; k++) {
736
+ elementCandidate = array[k];
737
+ if (element === elementCandidate) {
738
+ elementCount++;
739
+ break;
740
+ }
741
+ }
742
+ }
743
+
744
+ if (elementCount === arraysLength) {
745
+ intersection.push(element);
746
+ }
747
+ }
748
+
749
+ return intersection;
750
+ },
751
+
752
+ /**
753
+ * Perform a set difference A-B by subtracting all items in array B from array A.
754
+ *
755
+ * @param {Array} arrayA
756
+ * @param {Array} arrayB
757
+ * @return {Array} difference
758
+ */
759
+ difference: function(arrayA, arrayB) {
760
+ var clone = slice.call(arrayA),
761
+ ln = clone.length,
762
+ i, j, lnB;
763
+
764
+ for (i = 0,lnB = arrayB.length; i < lnB; i++) {
765
+ for (j = 0; j < ln; j++) {
766
+ if (clone[j] === arrayB[i]) {
767
+ erase(clone, j, 1);
768
+ j--;
769
+ ln--;
770
+ }
771
+ }
772
+ }
773
+
774
+ return clone;
775
+ },
776
+
777
+ /**
778
+ * Returns a shallow copy of a part of an array. This is equivalent to the native
779
+ * call "Array.prototype.slice.call(array, begin, end)". This is often used when "array"
780
+ * is "arguments" since the arguments object does not supply a slice method but can
781
+ * be the context object to Array.prototype.slice.
782
+ *
783
+ * @param {Array} array The array (or arguments object).
784
+ * @param {Number} begin The index at which to begin. Negative values are offsets from
785
+ * the end of the array.
786
+ * @param {Number} end The index at which to end. The copied items do not include
787
+ * end. Negative values are offsets from the end of the array. If end is omitted,
788
+ * all items up to the end of the array are copied.
789
+ * @return {Array} The copied piece of the array.
790
+ * @method slice
791
+ */
792
+ // Note: IE6 will return [] on slice.call(x, undefined).
793
+ slice: ([1,2].slice(1, undefined).length ?
794
+ function (array, begin, end) {
795
+ return slice.call(array, begin, end);
796
+ } :
797
+ // at least IE6 uses arguments.length for variadic signature
798
+ function (array, begin, end) {
799
+ // After tested for IE 6, the one below is of the best performance
800
+ // see http://jsperf.com/slice-fix
801
+ if (typeof begin === 'undefined') {
802
+ return slice.call(array);
803
+ }
804
+ if (typeof end === 'undefined') {
805
+ return slice.call(array, begin);
806
+ }
807
+ return slice.call(array, begin, end);
808
+ }
809
+ ),
810
+
811
+ /**
812
+ * Sorts the elements of an Array.
813
+ * By default, this method sorts the elements alphabetically and ascending.
814
+ *
815
+ * @param {Array} array The array to sort.
816
+ * @param {Function} sortFn (optional) The comparison function.
817
+ * @return {Array} The sorted array.
818
+ */
819
+ sort: supportsSort ? function(array, sortFn) {
820
+ if (sortFn) {
821
+ return array.sort(sortFn);
822
+ } else {
823
+ return array.sort();
824
+ }
825
+ } : function(array, sortFn) {
826
+ var length = array.length,
827
+ i = 0,
828
+ comparison,
829
+ j, min, tmp;
830
+
831
+ for (; i < length; i++) {
832
+ min = i;
833
+ for (j = i + 1; j < length; j++) {
834
+ if (sortFn) {
835
+ comparison = sortFn(array[j], array[min]);
836
+ if (comparison < 0) {
837
+ min = j;
838
+ }
839
+ } else if (array[j] < array[min]) {
840
+ min = j;
841
+ }
842
+ }
843
+ if (min !== i) {
844
+ tmp = array[i];
845
+ array[i] = array[min];
846
+ array[min] = tmp;
847
+ }
848
+ }
849
+
850
+ return array;
851
+ },
852
+
853
+ /**
854
+ * Recursively flattens into 1-d Array. Injects Arrays inline.
855
+ *
856
+ * @param {Array} array The array to flatten
857
+ * @return {Array} The 1-d array.
858
+ */
859
+ flatten: function(array) {
860
+ var worker = [];
861
+
862
+ function rFlatten(a) {
863
+ var i, ln, v;
864
+
865
+ for (i = 0, ln = a.length; i < ln; i++) {
866
+ v = a[i];
867
+
868
+ if (Ext.isArray(v)) {
869
+ rFlatten(v);
870
+ } else {
871
+ worker.push(v);
872
+ }
873
+ }
874
+
875
+ return worker;
876
+ }
877
+
878
+ return rFlatten(array);
879
+ },
880
+
881
+ /**
882
+ * Returns the minimum value in the Array.
883
+ *
884
+ * @param {Array/NodeList} array The Array from which to select the minimum value.
885
+ * @param {Function} comparisonFn (optional) a function to perform the comparision which determines minimization.
886
+ * If omitted the "<" operator will be used. Note: gt = 1; eq = 0; lt = -1
887
+ * @return {Object} minValue The minimum value
888
+ */
889
+ min: function(array, comparisonFn) {
890
+ var min = array[0],
891
+ i, ln, item;
892
+
893
+ for (i = 0, ln = array.length; i < ln; i++) {
894
+ item = array[i];
895
+
896
+ if (comparisonFn) {
897
+ if (comparisonFn(min, item) === 1) {
898
+ min = item;
899
+ }
900
+ }
901
+ else {
902
+ if (item < min) {
903
+ min = item;
904
+ }
905
+ }
906
+ }
907
+
908
+ return min;
909
+ },
910
+
911
+ /**
912
+ * Returns the maximum value in the Array.
913
+ *
914
+ * @param {Array/NodeList} array The Array from which to select the maximum value.
915
+ * @param {Function} comparisonFn (optional) a function to perform the comparision which determines maximization.
916
+ * If omitted the ">" operator will be used. Note: gt = 1; eq = 0; lt = -1
917
+ * @return {Object} maxValue The maximum value
918
+ */
919
+ max: function(array, comparisonFn) {
920
+ var max = array[0],
921
+ i, ln, item;
922
+
923
+ for (i = 0, ln = array.length; i < ln; i++) {
924
+ item = array[i];
925
+
926
+ if (comparisonFn) {
927
+ if (comparisonFn(max, item) === -1) {
928
+ max = item;
929
+ }
930
+ }
931
+ else {
932
+ if (item > max) {
933
+ max = item;
934
+ }
935
+ }
936
+ }
937
+
938
+ return max;
939
+ },
940
+
941
+ /**
942
+ * Calculates the mean of all items in the array.
943
+ *
944
+ * @param {Array} array The Array to calculate the mean value of.
945
+ * @return {Number} The mean.
946
+ */
947
+ mean: function(array) {
948
+ return array.length > 0 ? ExtArray.sum(array) / array.length : undefined;
949
+ },
950
+
951
+ /**
952
+ * Calculates the sum of all items in the given array.
953
+ *
954
+ * @param {Array} array The Array to calculate the sum value of.
955
+ * @return {Number} The sum.
956
+ */
957
+ sum: function(array) {
958
+ var sum = 0,
959
+ i, ln, item;
960
+
961
+ for (i = 0,ln = array.length; i < ln; i++) {
962
+ item = array[i];
963
+
964
+ sum += item;
965
+ }
966
+
967
+ return sum;
968
+ },
969
+
970
+ /**
971
+ * Creates a map (object) keyed by the elements of the given array. The values in
972
+ * the map are the index+1 of the array element. For example:
973
+ *
974
+ * var map = Ext.Array.toMap(['a','b','c']);
975
+ *
976
+ * // map = { a: 1, b: 2, c: 3 };
977
+ *
978
+ * Or a key property can be specified:
979
+ *
980
+ * var map = Ext.Array.toMap([
981
+ * { name: 'a' },
982
+ * { name: 'b' },
983
+ * { name: 'c' }
984
+ * ], 'name');
985
+ *
986
+ * // map = { a: 1, b: 2, c: 3 };
987
+ *
988
+ * Lastly, a key extractor can be provided:
989
+ *
990
+ * var map = Ext.Array.toMap([
991
+ * { name: 'a' },
992
+ * { name: 'b' },
993
+ * { name: 'c' }
994
+ * ], function (obj) { return obj.name.toUpperCase(); });
995
+ *
996
+ * // map = { A: 1, B: 2, C: 3 };
997
+ */
998
+ toMap: function(array, getKey, scope) {
999
+ var map = {},
1000
+ i = array.length;
1001
+
1002
+ if (!getKey) {
1003
+ while (i--) {
1004
+ map[array[i]] = i+1;
1005
+ }
1006
+ } else if (typeof getKey == 'string') {
1007
+ while (i--) {
1008
+ map[array[i][getKey]] = i+1;
1009
+ }
1010
+ } else {
1011
+ while (i--) {
1012
+ map[getKey.call(scope, array[i])] = i+1;
1013
+ }
1014
+ }
1015
+
1016
+ return map;
1017
+ },
1018
+
1019
+ //<debug>
1020
+ _replaceSim: replaceSim, // for unit testing
1021
+ _spliceSim: spliceSim,
1022
+ //</debug>
1023
+
1024
+ /**
1025
+ * Removes items from an array. This is functionally equivalent to the splice method
1026
+ * of Array, but works around bugs in IE8's splice method and does not copy the
1027
+ * removed elements in order to return them (because very often they are ignored).
1028
+ *
1029
+ * @param {Array} array The Array on which to replace.
1030
+ * @param {Number} index The index in the array at which to operate.
1031
+ * @param {Number} removeCount The number of items to remove at index.
1032
+ * @return {Array} The array passed.
1033
+ * @method
1034
+ */
1035
+ erase: erase,
1036
+
1037
+ /**
1038
+ * Inserts items in to an array.
1039
+ *
1040
+ * @param {Array} array The Array in which to insert.
1041
+ * @param {Number} index The index in the array at which to operate.
1042
+ * @param {Array} items The array of items to insert at index.
1043
+ * @return {Array} The array passed.
1044
+ */
1045
+ insert: function (array, index, items) {
1046
+ return replace(array, index, 0, items);
1047
+ },
1048
+
1049
+ /**
1050
+ * Replaces items in an array. This is functionally equivalent to the splice method
1051
+ * of Array, but works around bugs in IE8's splice method and is often more convenient
1052
+ * to call because it accepts an array of items to insert rather than use a variadic
1053
+ * argument list.
1054
+ *
1055
+ * @param {Array} array The Array on which to replace.
1056
+ * @param {Number} index The index in the array at which to operate.
1057
+ * @param {Number} removeCount The number of items to remove at index (can be 0).
1058
+ * @param {Array} insert (optional) An array of items to insert at index.
1059
+ * @return {Array} The array passed.
1060
+ * @method
1061
+ */
1062
+ replace: replace,
1063
+
1064
+ /**
1065
+ * Replaces items in an array. This is equivalent to the splice method of Array, but
1066
+ * works around bugs in IE8's splice method. The signature is exactly the same as the
1067
+ * splice method except that the array is the first argument. All arguments following
1068
+ * removeCount are inserted in the array at index.
1069
+ *
1070
+ * @param {Array} array The Array on which to replace.
1071
+ * @param {Number} index The index in the array at which to operate.
1072
+ * @param {Number} removeCount The number of items to remove at index (can be 0).
1073
+ * @param {Object...} elements The elements to add to the array. If you don't specify
1074
+ * any elements, splice simply removes elements from the array.
1075
+ * @return {Array} An array containing the removed items.
1076
+ * @method
1077
+ */
1078
+ splice: splice,
1079
+
1080
+ /**
1081
+ * Pushes new items onto the end of an Array.
1082
+ *
1083
+ * Passed parameters may be single items, or arrays of items. If an Array is found in the argument list, all its
1084
+ * elements are pushed into the end of the target Array.
1085
+ *
1086
+ * @param {Array} target The Array onto which to push new items
1087
+ * @param {Object...} elements The elements to add to the array. Each parameter may
1088
+ * be an Array, in which case all the elements of that Array will be pushed into the end of the
1089
+ * destination Array.
1090
+ * @return {Array} An array containing all the new items push onto the end.
1091
+ *
1092
+ */
1093
+ push: function(array) {
1094
+ var len = arguments.length,
1095
+ i = 1,
1096
+ newItem;
1097
+
1098
+ if (array === undefined) {
1099
+ array = [];
1100
+ } else if (!Ext.isArray(array)) {
1101
+ array = [array];
1102
+ }
1103
+ for (; i < len; i++) {
1104
+ newItem = arguments[i];
1105
+ Array.prototype.push[Ext.isArray(newItem) ? 'apply' : 'call'](array, newItem);
1106
+ }
1107
+ return array;
1108
+ }
1109
+ };
1110
+
1111
+ /**
1112
+ * @method
1113
+ * @member Ext
1114
+ * @inheritdoc Ext.Array#each
1115
+ */
1116
+ Ext.each = ExtArray.each;
1117
+
1118
+ /**
1119
+ * @method
1120
+ * @member Ext.Array
1121
+ * @inheritdoc Ext.Array#merge
1122
+ */
1123
+ ExtArray.union = ExtArray.merge;
1124
+
1125
+ /**
1126
+ * Old alias to {@link Ext.Array#min}
1127
+ * @deprecated 4.0.0 Use {@link Ext.Array#min} instead
1128
+ * @method
1129
+ * @member Ext
1130
+ * @inheritdoc Ext.Array#min
1131
+ */
1132
+ Ext.min = ExtArray.min;
1133
+
1134
+ /**
1135
+ * Old alias to {@link Ext.Array#max}
1136
+ * @deprecated 4.0.0 Use {@link Ext.Array#max} instead
1137
+ * @method
1138
+ * @member Ext
1139
+ * @inheritdoc Ext.Array#max
1140
+ */
1141
+ Ext.max = ExtArray.max;
1142
+
1143
+ /**
1144
+ * Old alias to {@link Ext.Array#sum}
1145
+ * @deprecated 4.0.0 Use {@link Ext.Array#sum} instead
1146
+ * @method
1147
+ * @member Ext
1148
+ * @inheritdoc Ext.Array#sum
1149
+ */
1150
+ Ext.sum = ExtArray.sum;
1151
+
1152
+ /**
1153
+ * Old alias to {@link Ext.Array#mean}
1154
+ * @deprecated 4.0.0 Use {@link Ext.Array#mean} instead
1155
+ * @method
1156
+ * @member Ext
1157
+ * @inheritdoc Ext.Array#mean
1158
+ */
1159
+ Ext.mean = ExtArray.mean;
1160
+
1161
+ /**
1162
+ * Old alias to {@link Ext.Array#flatten}
1163
+ * @deprecated 4.0.0 Use {@link Ext.Array#flatten} instead
1164
+ * @method
1165
+ * @member Ext
1166
+ * @inheritdoc Ext.Array#flatten
1167
+ */
1168
+ Ext.flatten = ExtArray.flatten;
1169
+
1170
+ /**
1171
+ * Old alias to {@link Ext.Array#clean}
1172
+ * @deprecated 4.0.0 Use {@link Ext.Array#clean} instead
1173
+ * @method
1174
+ * @member Ext
1175
+ * @inheritdoc Ext.Array#clean
1176
+ */
1177
+ Ext.clean = ExtArray.clean;
1178
+
1179
+ /**
1180
+ * Old alias to {@link Ext.Array#unique}
1181
+ * @deprecated 4.0.0 Use {@link Ext.Array#unique} instead
1182
+ * @method
1183
+ * @member Ext
1184
+ * @inheritdoc Ext.Array#unique
1185
+ */
1186
+ Ext.unique = ExtArray.unique;
1187
+
1188
+ /**
1189
+ * Old alias to {@link Ext.Array#pluck Ext.Array.pluck}
1190
+ * @deprecated 4.0.0 Use {@link Ext.Array#pluck Ext.Array.pluck} instead
1191
+ * @method
1192
+ * @member Ext
1193
+ * @inheritdoc Ext.Array#pluck
1194
+ */
1195
+ Ext.pluck = ExtArray.pluck;
1196
+
1197
+ /**
1198
+ * @method
1199
+ * @member Ext
1200
+ * @inheritdoc Ext.Array#toArray
1201
+ */
1202
+ Ext.toArray = function() {
1203
+ return ExtArray.toArray.apply(ExtArray, arguments);
1204
+ };
1205
+ }());