extjs-rails 4.1.0.alpha5 → 4.1.0.alpha6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (507) hide show
  1. data/app/assets/javascripts/extjs-rails.js +95613 -11000
  2. data/lib/extjs-rails/version.rb +1 -1
  3. metadata +2 -509
  4. data/app/assets/javascripts/src/AbstractComponent.js +0 -3290
  5. data/app/assets/javascripts/src/AbstractManager.js +0 -144
  6. data/app/assets/javascripts/src/AbstractPlugin.js +0 -72
  7. data/app/assets/javascripts/src/Action.js +0 -276
  8. data/app/assets/javascripts/src/Ajax.js +0 -99
  9. data/app/assets/javascripts/src/Component.js +0 -1344
  10. data/app/assets/javascripts/src/ComponentLoader.js +0 -202
  11. data/app/assets/javascripts/src/ComponentManager.js +0 -47
  12. data/app/assets/javascripts/src/ComponentQuery.js +0 -521
  13. data/app/assets/javascripts/src/Editor.js +0 -494
  14. data/app/assets/javascripts/src/ElementLoader.js +0 -404
  15. data/app/assets/javascripts/src/FocusManager.js +0 -712
  16. data/app/assets/javascripts/src/Img.js +0 -111
  17. data/app/assets/javascripts/src/Layer.js +0 -543
  18. data/app/assets/javascripts/src/LoadMask.js +0 -432
  19. data/app/assets/javascripts/src/ModelManager.js +0 -186
  20. data/app/assets/javascripts/src/PluginManager.js +0 -110
  21. data/app/assets/javascripts/src/ProgressBar.js +0 -336
  22. data/app/assets/javascripts/src/Shadow.js +0 -233
  23. data/app/assets/javascripts/src/ShadowPool.js +0 -43
  24. data/app/assets/javascripts/src/Template.js +0 -331
  25. data/app/assets/javascripts/src/XTemplate.js +0 -365
  26. data/app/assets/javascripts/src/XTemplateCompiler.js +0 -450
  27. data/app/assets/javascripts/src/XTemplateParser.js +0 -249
  28. data/app/assets/javascripts/src/ZIndexManager.js +0 -519
  29. data/app/assets/javascripts/src/app/Application.js +0 -271
  30. data/app/assets/javascripts/src/app/Controller.js +0 -458
  31. data/app/assets/javascripts/src/app/EventBus.js +0 -112
  32. data/app/assets/javascripts/src/button/Button.js +0 -1483
  33. data/app/assets/javascripts/src/button/Cycle.js +0 -215
  34. data/app/assets/javascripts/src/button/Split.js +0 -99
  35. data/app/assets/javascripts/src/chart/Callout.js +0 -140
  36. data/app/assets/javascripts/src/chart/Chart.js +0 -966
  37. data/app/assets/javascripts/src/chart/Highlight.js +0 -172
  38. data/app/assets/javascripts/src/chart/Label.js +0 -241
  39. data/app/assets/javascripts/src/chart/Legend.js +0 -474
  40. data/app/assets/javascripts/src/chart/LegendItem.js +0 -217
  41. data/app/assets/javascripts/src/chart/Mask.js +0 -230
  42. data/app/assets/javascripts/src/chart/MaskLayer.js +0 -48
  43. data/app/assets/javascripts/src/chart/Navigation.js +0 -79
  44. data/app/assets/javascripts/src/chart/Shape.js +0 -106
  45. data/app/assets/javascripts/src/chart/Tip.js +0 -98
  46. data/app/assets/javascripts/src/chart/TipSurface.js +0 -42
  47. data/app/assets/javascripts/src/chart/axis/Abstract.js +0 -73
  48. data/app/assets/javascripts/src/chart/axis/Axis.js +0 -961
  49. data/app/assets/javascripts/src/chart/axis/Category.js +0 -130
  50. data/app/assets/javascripts/src/chart/axis/Gauge.js +0 -203
  51. data/app/assets/javascripts/src/chart/axis/Numeric.js +0 -235
  52. data/app/assets/javascripts/src/chart/axis/Radial.js +0 -204
  53. data/app/assets/javascripts/src/chart/axis/Time.js +0 -135
  54. data/app/assets/javascripts/src/chart/series/Area.js +0 -803
  55. data/app/assets/javascripts/src/chart/series/Bar.js +0 -853
  56. data/app/assets/javascripts/src/chart/series/Cartesian.js +0 -328
  57. data/app/assets/javascripts/src/chart/series/Column.js +0 -104
  58. data/app/assets/javascripts/src/chart/series/Gauge.js +0 -490
  59. data/app/assets/javascripts/src/chart/series/Line.js +0 -1104
  60. data/app/assets/javascripts/src/chart/series/Pie.js +0 -1072
  61. data/app/assets/javascripts/src/chart/series/Radar.js +0 -440
  62. data/app/assets/javascripts/src/chart/series/Scatter.js +0 -668
  63. data/app/assets/javascripts/src/chart/series/Series.js +0 -443
  64. data/app/assets/javascripts/src/chart/theme/Base.js +0 -175
  65. data/app/assets/javascripts/src/chart/theme/Theme.js +0 -253
  66. data/app/assets/javascripts/src/container/AbstractContainer.js +0 -1062
  67. data/app/assets/javascripts/src/container/ButtonGroup.js +0 -143
  68. data/app/assets/javascripts/src/container/Container.js +0 -212
  69. data/app/assets/javascripts/src/container/DockingContainer.js +0 -265
  70. data/app/assets/javascripts/src/container/Viewport.js +0 -184
  71. data/app/assets/javascripts/src/core/dom/Element.form.js +0 -50
  72. data/app/assets/javascripts/src/core/dom/Element.static-more.js +0 -159
  73. data/app/assets/javascripts/src/core/examples/index.html +0 -321
  74. data/app/assets/javascripts/src/core/examples/index.js +0 -6
  75. data/app/assets/javascripts/src/core/examples/src/Sample/CTO.js +0 -25
  76. data/app/assets/javascripts/src/core/examples/src/Sample/CoolGuy.js +0 -20
  77. data/app/assets/javascripts/src/core/examples/src/Sample/Developer.js +0 -43
  78. data/app/assets/javascripts/src/core/examples/src/Sample/Gun.js +0 -3
  79. data/app/assets/javascripts/src/core/examples/src/Sample/HumanResource.js +0 -23
  80. data/app/assets/javascripts/src/core/examples/src/Sample/Musician.js +0 -20
  81. data/app/assets/javascripts/src/core/examples/src/Sample/Person.js +0 -50
  82. data/app/assets/javascripts/src/core/examples/src/Sample/ability/CanComposeSongs.js +0 -9
  83. data/app/assets/javascripts/src/core/examples/src/Sample/ability/CanPlayGuitar.js +0 -9
  84. data/app/assets/javascripts/src/core/examples/src/Sample/ability/CanSing.js +0 -18
  85. data/app/assets/javascripts/src/core/examples/src/Sample/deadlock/A.js +0 -3
  86. data/app/assets/javascripts/src/core/examples/src/Sample/deadlock/B.js +0 -3
  87. data/app/assets/javascripts/src/core/examples/src/Sample/deadlock/C.js +0 -3
  88. data/app/assets/javascripts/src/core/examples/src/Sample/deadlock/D.js +0 -3
  89. data/app/assets/javascripts/src/core/examples/src/Sample/deadlock/E.js +0 -3
  90. data/app/assets/javascripts/src/core/examples/src/Sample/notdeadlock/A.js +0 -3
  91. data/app/assets/javascripts/src/core/examples/src/Sample/notdeadlock/B.js +0 -4
  92. data/app/assets/javascripts/src/core/examples/src/Sample/notdeadlock/C.js +0 -3
  93. data/app/assets/javascripts/src/core/src/EventManager.js +0 -1167
  94. data/app/assets/javascripts/src/core/src/EventObject.js +0 -883
  95. data/app/assets/javascripts/src/core/src/Ext-more.js +0 -1283
  96. data/app/assets/javascripts/src/core/src/Ext.js +0 -736
  97. data/app/assets/javascripts/src/core/src/Support.js +0 -662
  98. data/app/assets/javascripts/src/core/src/class/Base.js +0 -1085
  99. data/app/assets/javascripts/src/core/src/class/Class.js +0 -676
  100. data/app/assets/javascripts/src/core/src/class/ClassManager.js +0 -1591
  101. data/app/assets/javascripts/src/core/src/class/Loader.js +0 -1423
  102. data/app/assets/javascripts/src/core/src/dom/AbstractElement.alignment.js +0 -173
  103. data/app/assets/javascripts/src/core/src/dom/AbstractElement.insertion.js +0 -193
  104. data/app/assets/javascripts/src/core/src/dom/AbstractElement.js +0 -681
  105. data/app/assets/javascripts/src/core/src/dom/AbstractElement.position.js +0 -356
  106. data/app/assets/javascripts/src/core/src/dom/AbstractElement.static.js +0 -474
  107. data/app/assets/javascripts/src/core/src/dom/AbstractElement.style.js +0 -851
  108. data/app/assets/javascripts/src/core/src/dom/AbstractElement.traversal.js +0 -180
  109. data/app/assets/javascripts/src/core/src/dom/AbstractHelper.js +0 -291
  110. data/app/assets/javascripts/src/core/src/dom/AbstractQuery.js +0 -72
  111. data/app/assets/javascripts/src/core/src/dom/CompositeElement.js +0 -75
  112. data/app/assets/javascripts/src/core/src/dom/CompositeElementLite.js +0 -436
  113. data/app/assets/javascripts/src/core/src/dom/DomQuery-aria.js +0 -1049
  114. data/app/assets/javascripts/src/core/src/env/Browser.js +0 -186
  115. data/app/assets/javascripts/src/core/src/env/FeatureDetector.js +0 -274
  116. data/app/assets/javascripts/src/core/src/env/OS.js +0 -141
  117. data/app/assets/javascripts/src/core/src/lang/Array.js +0 -1205
  118. data/app/assets/javascripts/src/core/src/lang/Date.js +0 -1463
  119. data/app/assets/javascripts/src/core/src/lang/Error.js +0 -326
  120. data/app/assets/javascripts/src/core/src/lang/Function.js +0 -485
  121. data/app/assets/javascripts/src/core/src/lang/Number.js +0 -175
  122. data/app/assets/javascripts/src/core/src/lang/Object.js +0 -606
  123. data/app/assets/javascripts/src/core/src/lang/String.js +0 -333
  124. data/app/assets/javascripts/src/core/src/misc/JSON.js +0 -236
  125. data/app/assets/javascripts/src/core/src/perf/Accumulator.js +0 -244
  126. data/app/assets/javascripts/src/core/src/perf/Monitor.js +0 -197
  127. data/app/assets/javascripts/src/core/src/util/DelayedTask.js +0 -71
  128. data/app/assets/javascripts/src/core/src/util/Event.js +0 -215
  129. data/app/assets/javascripts/src/core/src/util/Format.js +0 -551
  130. data/app/assets/javascripts/src/core/src/util/TaskManager.js +0 -417
  131. data/app/assets/javascripts/src/core/src/version/Version.js +0 -364
  132. data/app/assets/javascripts/src/core/test/unit/README.MD +0 -91
  133. data/app/assets/javascripts/src/core/test/unit/bootstrap.js +0 -39
  134. data/app/assets/javascripts/src/core/test/unit/build/build-data.js +0 -34
  135. data/app/assets/javascripts/src/core/test/unit/build/build.sh +0 -2
  136. data/app/assets/javascripts/src/core/test/unit/data.js +0 -27
  137. data/app/assets/javascripts/src/core/test/unit/index.html +0 -15
  138. data/app/assets/javascripts/src/core/test/unit/other_specs/dom.html +0 -40
  139. data/app/assets/javascripts/src/core/test/unit/other_specs/dom/extjs-api.js +0 -12
  140. data/app/assets/javascripts/src/core/test/unit/other_specs/dom/platform-api.js +0 -134
  141. data/app/assets/javascripts/src/core/test/unit/other_specs/dom/sanity.js +0 -4
  142. data/app/assets/javascripts/src/core/test/unit/other_specs/dom/touch-api-out.js +0 -128
  143. data/app/assets/javascripts/src/core/test/unit/other_specs/dom/touch-api.js +0 -89
  144. data/app/assets/javascripts/src/core/test/unit/other_specs/env/Environment.js +0 -357
  145. data/app/assets/javascripts/src/core/test/unit/resources/APITest.js +0 -37
  146. data/app/assets/javascripts/src/core/test/unit/resources/jsb3.js +0 -14
  147. data/app/assets/javascripts/src/core/test/unit/resources/test-setup.js +0 -137
  148. data/app/assets/javascripts/src/core/test/unit/spec/EventManager.js +0 -629
  149. data/app/assets/javascripts/src/core/test/unit/spec/Ext-mess.backup +0 -198
  150. data/app/assets/javascripts/src/core/test/unit/spec/Ext-more.js +0 -520
  151. data/app/assets/javascripts/src/core/test/unit/spec/Ext.js +0 -1550
  152. data/app/assets/javascripts/src/core/test/unit/spec/Support.js +0 -250
  153. data/app/assets/javascripts/src/core/test/unit/spec/class/Base.js +0 -47
  154. data/app/assets/javascripts/src/core/test/unit/spec/class/Class.js +0 -561
  155. data/app/assets/javascripts/src/core/test/unit/spec/class/ClassManager.js +0 -555
  156. data/app/assets/javascripts/src/core/test/unit/spec/dom/CompositeElementLite.js +0 -409
  157. data/app/assets/javascripts/src/core/test/unit/spec/dom/DomHelper.js +0 -444
  158. data/app/assets/javascripts/src/core/test/unit/spec/dom/Element.insertion.js +0 -342
  159. data/app/assets/javascripts/src/core/test/unit/spec/dom/Element.js +0 -731
  160. data/app/assets/javascripts/src/core/test/unit/spec/dom/Element.static.js +0 -201
  161. data/app/assets/javascripts/src/core/test/unit/spec/dom/Element.style.js +0 -118
  162. data/app/assets/javascripts/src/core/test/unit/spec/dom/Element.traversal.js +0 -336
  163. data/app/assets/javascripts/src/core/test/unit/spec/lang/Array.js +0 -1229
  164. data/app/assets/javascripts/src/core/test/unit/spec/lang/Date.js +0 -697
  165. data/app/assets/javascripts/src/core/test/unit/spec/lang/Error.js +0 -277
  166. data/app/assets/javascripts/src/core/test/unit/spec/lang/Function.js +0 -536
  167. data/app/assets/javascripts/src/core/test/unit/spec/lang/Number.js +0 -323
  168. data/app/assets/javascripts/src/core/test/unit/spec/lang/Object.js +0 -591
  169. data/app/assets/javascripts/src/core/test/unit/spec/lang/String.js +0 -451
  170. data/app/assets/javascripts/src/core/test/unit/spec/misc/JSON.js +0 -252
  171. data/app/assets/javascripts/src/core/test/unit/spec/util/Format.js +0 -521
  172. data/app/assets/javascripts/src/core/test/unit/spec/version/Version.js +0 -148
  173. data/app/assets/javascripts/src/core/test/unit/specs.html +0 -19
  174. data/app/assets/javascripts/src/data/AbstractStore.js +0 -887
  175. data/app/assets/javascripts/src/data/ArrayStore.js +0 -74
  176. data/app/assets/javascripts/src/data/Batch.js +0 -236
  177. data/app/assets/javascripts/src/data/BufferStore.js +0 -13
  178. data/app/assets/javascripts/src/data/Connection.js +0 -969
  179. data/app/assets/javascripts/src/data/DirectStore.js +0 -50
  180. data/app/assets/javascripts/src/data/Errors.js +0 -52
  181. data/app/assets/javascripts/src/data/Field.js +0 -341
  182. data/app/assets/javascripts/src/data/IdGenerator.js +0 -198
  183. data/app/assets/javascripts/src/data/JsonP.js +0 -253
  184. data/app/assets/javascripts/src/data/JsonPStore.js +0 -51
  185. data/app/assets/javascripts/src/data/JsonStore.js +0 -60
  186. data/app/assets/javascripts/src/data/Model.js +0 -1673
  187. data/app/assets/javascripts/src/data/NodeInterface.js +0 -1294
  188. data/app/assets/javascripts/src/data/NodeStore.js +0 -254
  189. data/app/assets/javascripts/src/data/Operation.js +0 -331
  190. data/app/assets/javascripts/src/data/Request.js +0 -40
  191. data/app/assets/javascripts/src/data/ResultSet.js +0 -56
  192. data/app/assets/javascripts/src/data/SequentialIdGenerator.js +0 -61
  193. data/app/assets/javascripts/src/data/SortTypes.js +0 -125
  194. data/app/assets/javascripts/src/data/Store.js +0 -2609
  195. data/app/assets/javascripts/src/data/StoreManager.js +0 -156
  196. data/app/assets/javascripts/src/data/Tree.js +0 -290
  197. data/app/assets/javascripts/src/data/TreeStore.js +0 -655
  198. data/app/assets/javascripts/src/data/Types.js +0 -190
  199. data/app/assets/javascripts/src/data/UuidGenerator.js +0 -215
  200. data/app/assets/javascripts/src/data/XmlStore.js +0 -76
  201. data/app/assets/javascripts/src/data/association/Association.js +0 -243
  202. data/app/assets/javascripts/src/data/association/BelongsTo.js +0 -291
  203. data/app/assets/javascripts/src/data/association/HasMany.js +0 -289
  204. data/app/assets/javascripts/src/data/association/HasOne.js +0 -304
  205. data/app/assets/javascripts/src/data/proxy/Ajax.js +0 -282
  206. data/app/assets/javascripts/src/data/proxy/Client.js +0 -21
  207. data/app/assets/javascripts/src/data/proxy/Direct.js +0 -181
  208. data/app/assets/javascripts/src/data/proxy/JsonP.js +0 -313
  209. data/app/assets/javascripts/src/data/proxy/LocalStorage.js +0 -69
  210. data/app/assets/javascripts/src/data/proxy/Memory.js +0 -156
  211. data/app/assets/javascripts/src/data/proxy/Proxy.js +0 -433
  212. data/app/assets/javascripts/src/data/proxy/Rest.js +0 -173
  213. data/app/assets/javascripts/src/data/proxy/Server.js +0 -460
  214. data/app/assets/javascripts/src/data/proxy/SessionStorage.js +0 -39
  215. data/app/assets/javascripts/src/data/proxy/WebStorage.js +0 -546
  216. data/app/assets/javascripts/src/data/reader/Array.js +0 -68
  217. data/app/assets/javascripts/src/data/reader/Json.js +0 -383
  218. data/app/assets/javascripts/src/data/reader/Reader.js +0 -735
  219. data/app/assets/javascripts/src/data/reader/Xml.js +0 -292
  220. data/app/assets/javascripts/src/data/validations.js +0 -149
  221. data/app/assets/javascripts/src/data/writer/Json.js +0 -81
  222. data/app/assets/javascripts/src/data/writer/Writer.js +0 -147
  223. data/app/assets/javascripts/src/data/writer/Xml.js +0 -88
  224. data/app/assets/javascripts/src/dd/DD.js +0 -300
  225. data/app/assets/javascripts/src/dd/DDProxy.js +0 -204
  226. data/app/assets/javascripts/src/dd/DDTarget.js +0 -171
  227. data/app/assets/javascripts/src/dd/DragDrop.js +0 -1101
  228. data/app/assets/javascripts/src/dd/DragDropManager.js +0 -1264
  229. data/app/assets/javascripts/src/dd/DragSource.js +0 -392
  230. data/app/assets/javascripts/src/dd/DragTracker.js +0 -562
  231. data/app/assets/javascripts/src/dd/DragZone.js +0 -137
  232. data/app/assets/javascripts/src/dd/DropTarget.js +0 -118
  233. data/app/assets/javascripts/src/dd/DropZone.js +0 -254
  234. data/app/assets/javascripts/src/dd/Registry.js +0 -117
  235. data/app/assets/javascripts/src/dd/ScrollManager.js +0 -218
  236. data/app/assets/javascripts/src/dd/StatusProxy.js +0 -179
  237. data/app/assets/javascripts/src/diag/layout/Context.js +0 -523
  238. data/app/assets/javascripts/src/diag/layout/ContextItem.js +0 -179
  239. data/app/assets/javascripts/src/direct/Event.js +0 -35
  240. data/app/assets/javascripts/src/direct/ExceptionEvent.js +0 -16
  241. data/app/assets/javascripts/src/direct/JsonProvider.js +0 -82
  242. data/app/assets/javascripts/src/direct/Manager.js +0 -263
  243. data/app/assets/javascripts/src/direct/PollingProvider.js +0 -156
  244. data/app/assets/javascripts/src/direct/Provider.js +0 -96
  245. data/app/assets/javascripts/src/direct/RemotingEvent.js +0 -24
  246. data/app/assets/javascripts/src/direct/RemotingMethod.js +0 -100
  247. data/app/assets/javascripts/src/direct/RemotingProvider.js +0 -510
  248. data/app/assets/javascripts/src/direct/Transaction.js +0 -41
  249. data/app/assets/javascripts/src/dom/Element.alignment.js +0 -378
  250. data/app/assets/javascripts/src/dom/Element.anim.js +0 -962
  251. data/app/assets/javascripts/src/dom/Element.dd.js +0 -40
  252. data/app/assets/javascripts/src/dom/Element.fx.js +0 -194
  253. data/app/assets/javascripts/src/dom/Element.js +0 -1407
  254. data/app/assets/javascripts/src/dom/Element.position.js +0 -501
  255. data/app/assets/javascripts/src/dom/Element.scroll.js +0 -214
  256. data/app/assets/javascripts/src/dom/Element.style.js +0 -792
  257. data/app/assets/javascripts/src/dom/Element.traversal.js +0 -8
  258. data/app/assets/javascripts/src/dom/Helper.js +0 -466
  259. data/app/assets/javascripts/src/dom/Query.js +0 -1067
  260. data/app/assets/javascripts/src/draw/Color.js +0 -303
  261. data/app/assets/javascripts/src/draw/Component.js +0 -245
  262. data/app/assets/javascripts/src/draw/CompositeSprite.js +0 -299
  263. data/app/assets/javascripts/src/draw/Draw.js +0 -1217
  264. data/app/assets/javascripts/src/draw/Matrix.js +0 -183
  265. data/app/assets/javascripts/src/draw/Sprite.js +0 -554
  266. data/app/assets/javascripts/src/draw/SpriteDD.js +0 -87
  267. data/app/assets/javascripts/src/draw/Surface.js +0 -1001
  268. data/app/assets/javascripts/src/draw/Text.js +0 -175
  269. data/app/assets/javascripts/src/draw/engine/ImageExporter.js +0 -106
  270. data/app/assets/javascripts/src/draw/engine/Svg.js +0 -734
  271. data/app/assets/javascripts/src/draw/engine/SvgExporter.js +0 -280
  272. data/app/assets/javascripts/src/draw/engine/Vml.js +0 -916
  273. data/app/assets/javascripts/src/flash/Component.js +0 -248
  274. data/app/assets/javascripts/src/form/Basic.js +0 -1018
  275. data/app/assets/javascripts/src/form/CheckboxGroup.js +0 -441
  276. data/app/assets/javascripts/src/form/CheckboxManager.js +0 -26
  277. data/app/assets/javascripts/src/form/FieldAncestor.js +0 -210
  278. data/app/assets/javascripts/src/form/FieldContainer.js +0 -290
  279. data/app/assets/javascripts/src/form/FieldSet.js +0 -506
  280. data/app/assets/javascripts/src/form/Label.js +0 -110
  281. data/app/assets/javascripts/src/form/Labelable.js +0 -764
  282. data/app/assets/javascripts/src/form/Panel.js +0 -335
  283. data/app/assets/javascripts/src/form/RadioGroup.js +0 -124
  284. data/app/assets/javascripts/src/form/RadioManager.js +0 -26
  285. data/app/assets/javascripts/src/form/action/Action.js +0 -307
  286. data/app/assets/javascripts/src/form/action/DirectLoad.js +0 -107
  287. data/app/assets/javascripts/src/form/action/DirectSubmit.js +0 -119
  288. data/app/assets/javascripts/src/form/action/Load.js +0 -120
  289. data/app/assets/javascripts/src/form/action/StandardSubmit.js +0 -34
  290. data/app/assets/javascripts/src/form/action/Submit.js +0 -257
  291. data/app/assets/javascripts/src/form/field/Base.js +0 -813
  292. data/app/assets/javascripts/src/form/field/Checkbox.js +0 -505
  293. data/app/assets/javascripts/src/form/field/ComboBox.js +0 -1427
  294. data/app/assets/javascripts/src/form/field/Date.js +0 -578
  295. data/app/assets/javascripts/src/form/field/Display.js +0 -155
  296. data/app/assets/javascripts/src/form/field/Field.js +0 -430
  297. data/app/assets/javascripts/src/form/field/File.js +0 -265
  298. data/app/assets/javascripts/src/form/field/Hidden.js +0 -75
  299. data/app/assets/javascripts/src/form/field/HtmlEditor.js +0 -1439
  300. data/app/assets/javascripts/src/form/field/Number.js +0 -380
  301. data/app/assets/javascripts/src/form/field/Picker.js +0 -321
  302. data/app/assets/javascripts/src/form/field/Radio.js +0 -279
  303. data/app/assets/javascripts/src/form/field/Spinner.js +0 -321
  304. data/app/assets/javascripts/src/form/field/Text.js +0 -727
  305. data/app/assets/javascripts/src/form/field/TextArea.js +0 -228
  306. data/app/assets/javascripts/src/form/field/Time.js +0 -459
  307. data/app/assets/javascripts/src/form/field/Trigger.js +0 -469
  308. data/app/assets/javascripts/src/form/field/VTypes.js +0 -172
  309. data/app/assets/javascripts/src/fx/Anim.js +0 -472
  310. data/app/assets/javascripts/src/fx/Animator.js +0 -410
  311. data/app/assets/javascripts/src/fx/CubicBezier.js +0 -77
  312. data/app/assets/javascripts/src/fx/Easing.js +0 -136
  313. data/app/assets/javascripts/src/fx/Manager.js +0 -353
  314. data/app/assets/javascripts/src/fx/PropertyHandler.js +0 -381
  315. data/app/assets/javascripts/src/fx/Queue.js +0 -123
  316. data/app/assets/javascripts/src/fx/target/Component.js +0 -118
  317. data/app/assets/javascripts/src/fx/target/CompositeElement.js +0 -46
  318. data/app/assets/javascripts/src/fx/target/CompositeElementCSS.js +0 -22
  319. data/app/assets/javascripts/src/fx/target/CompositeSprite.js +0 -34
  320. data/app/assets/javascripts/src/fx/target/Element.js +0 -83
  321. data/app/assets/javascripts/src/fx/target/ElementCSS.js +0 -77
  322. data/app/assets/javascripts/src/fx/target/Sprite.js +0 -128
  323. data/app/assets/javascripts/src/fx/target/Target.js +0 -36
  324. data/app/assets/javascripts/src/grid/CellEditor.js +0 -172
  325. data/app/assets/javascripts/src/grid/ColumnComponentLayout.js +0 -34
  326. data/app/assets/javascripts/src/grid/ColumnLayout.js +0 -201
  327. data/app/assets/javascripts/src/grid/Lockable.js +0 -863
  328. data/app/assets/javascripts/src/grid/LockingView.js +0 -169
  329. data/app/assets/javascripts/src/grid/PagingScroller.js +0 -539
  330. data/app/assets/javascripts/src/grid/Panel.js +0 -393
  331. data/app/assets/javascripts/src/grid/RowEditor.js +0 -731
  332. data/app/assets/javascripts/src/grid/RowNumberer.js +0 -76
  333. data/app/assets/javascripts/src/grid/Scroller.js +0 -5
  334. data/app/assets/javascripts/src/grid/View.js +0 -44
  335. data/app/assets/javascripts/src/grid/ViewDropZone.js +0 -41
  336. data/app/assets/javascripts/src/grid/column/Action.js +0 -318
  337. data/app/assets/javascripts/src/grid/column/Boolean.js +0 -82
  338. data/app/assets/javascripts/src/grid/column/Column.js +0 -835
  339. data/app/assets/javascripts/src/grid/column/Date.js +0 -63
  340. data/app/assets/javascripts/src/grid/column/Number.js +0 -52
  341. data/app/assets/javascripts/src/grid/column/Template.js +0 -58
  342. data/app/assets/javascripts/src/grid/feature/AbstractSummary.js +0 -154
  343. data/app/assets/javascripts/src/grid/feature/Chunking.js +0 -77
  344. data/app/assets/javascripts/src/grid/feature/Feature.js +0 -158
  345. data/app/assets/javascripts/src/grid/feature/Grouping.js +0 -822
  346. data/app/assets/javascripts/src/grid/feature/GroupingSummary.js +0 -243
  347. data/app/assets/javascripts/src/grid/feature/RowBody.js +0 -116
  348. data/app/assets/javascripts/src/grid/feature/RowWrap.js +0 -120
  349. data/app/assets/javascripts/src/grid/feature/Summary.js +0 -167
  350. data/app/assets/javascripts/src/grid/header/Container.js +0 -965
  351. data/app/assets/javascripts/src/grid/header/DragZone.js +0 -69
  352. data/app/assets/javascripts/src/grid/header/DropZone.js +0 -265
  353. data/app/assets/javascripts/src/grid/plugin/CellEditing.js +0 -453
  354. data/app/assets/javascripts/src/grid/plugin/DragDrop.js +0 -254
  355. data/app/assets/javascripts/src/grid/plugin/Editing.js +0 -561
  356. data/app/assets/javascripts/src/grid/plugin/HeaderReorderer.js +0 -49
  357. data/app/assets/javascripts/src/grid/plugin/HeaderResizer.js +0 -292
  358. data/app/assets/javascripts/src/grid/plugin/RowEditing.js +0 -339
  359. data/app/assets/javascripts/src/grid/property/Grid.js +0 -351
  360. data/app/assets/javascripts/src/grid/property/HeaderContainer.js +0 -109
  361. data/app/assets/javascripts/src/grid/property/Property.js +0 -36
  362. data/app/assets/javascripts/src/grid/property/Store.js +0 -141
  363. data/app/assets/javascripts/src/layout/ClassList.js +0 -90
  364. data/app/assets/javascripts/src/layout/Context.js +0 -1232
  365. data/app/assets/javascripts/src/layout/ContextItem.js +0 -1470
  366. data/app/assets/javascripts/src/layout/Layout.js +0 -761
  367. data/app/assets/javascripts/src/layout/component/Auto.js +0 -220
  368. data/app/assets/javascripts/src/layout/component/Body.js +0 -80
  369. data/app/assets/javascripts/src/layout/component/BoundList.js +0 -95
  370. data/app/assets/javascripts/src/layout/component/Button.js +0 -261
  371. data/app/assets/javascripts/src/layout/component/Component.js +0 -427
  372. data/app/assets/javascripts/src/layout/component/Dock.js +0 -1132
  373. data/app/assets/javascripts/src/layout/component/Draw.js +0 -79
  374. data/app/assets/javascripts/src/layout/component/FieldSet.js +0 -62
  375. data/app/assets/javascripts/src/layout/component/ProgressBar.js +0 -54
  376. data/app/assets/javascripts/src/layout/component/Tab.js +0 -23
  377. data/app/assets/javascripts/src/layout/component/field/ComboBox.js +0 -52
  378. data/app/assets/javascripts/src/layout/component/field/Field.js +0 -372
  379. data/app/assets/javascripts/src/layout/component/field/FieldContainer.js +0 -48
  380. data/app/assets/javascripts/src/layout/component/field/HtmlEditor.js +0 -54
  381. data/app/assets/javascripts/src/layout/component/field/Slider.js +0 -58
  382. data/app/assets/javascripts/src/layout/component/field/Text.js +0 -75
  383. data/app/assets/javascripts/src/layout/component/field/TextArea.js +0 -51
  384. data/app/assets/javascripts/src/layout/component/field/Trigger.js +0 -132
  385. data/app/assets/javascripts/src/layout/container/Absolute.js +0 -121
  386. data/app/assets/javascripts/src/layout/container/Accordion.js +0 -308
  387. data/app/assets/javascripts/src/layout/container/Anchor.js +0 -403
  388. data/app/assets/javascripts/src/layout/container/Auto.js +0 -70
  389. data/app/assets/javascripts/src/layout/container/Border-old-js +0 -1079
  390. data/app/assets/javascripts/src/layout/container/Border.js +0 -816
  391. data/app/assets/javascripts/src/layout/container/Box.js +0 -929
  392. data/app/assets/javascripts/src/layout/container/Card.js +0 -361
  393. data/app/assets/javascripts/src/layout/container/CheckboxGroup.js +0 -376
  394. data/app/assets/javascripts/src/layout/container/Column.js +0 -234
  395. data/app/assets/javascripts/src/layout/container/Container.js +0 -961
  396. data/app/assets/javascripts/src/layout/container/Editor.js +0 -74
  397. data/app/assets/javascripts/src/layout/container/Fit.js +0 -287
  398. data/app/assets/javascripts/src/layout/container/Form.js +0 -157
  399. data/app/assets/javascripts/src/layout/container/HBox.js +0 -134
  400. data/app/assets/javascripts/src/layout/container/Table.js +0 -412
  401. data/app/assets/javascripts/src/layout/container/VBox.js +0 -139
  402. data/app/assets/javascripts/src/layout/container/boxOverflow/Menu.js +0 -365
  403. data/app/assets/javascripts/src/layout/container/boxOverflow/None.js +0 -83
  404. data/app/assets/javascripts/src/layout/container/boxOverflow/Scroller.js +0 -475
  405. data/app/assets/javascripts/src/menu/CheckItem.js +0 -169
  406. data/app/assets/javascripts/src/menu/ColorPicker.js +0 -110
  407. data/app/assets/javascripts/src/menu/DatePicker.js +0 -100
  408. data/app/assets/javascripts/src/menu/Item.js +0 -553
  409. data/app/assets/javascripts/src/menu/KeyNav.js +0 -134
  410. data/app/assets/javascripts/src/menu/Manager.js +0 -219
  411. data/app/assets/javascripts/src/menu/Menu.js +0 -579
  412. data/app/assets/javascripts/src/menu/Separator.js +0 -126
  413. data/app/assets/javascripts/src/panel/AbstractPanel.js +0 -323
  414. data/app/assets/javascripts/src/panel/DD.js +0 -99
  415. data/app/assets/javascripts/src/panel/Header.js +0 -518
  416. data/app/assets/javascripts/src/panel/Panel.js +0 -2150
  417. data/app/assets/javascripts/src/panel/Proxy.js +0 -131
  418. data/app/assets/javascripts/src/panel/Table.js +0 -1018
  419. data/app/assets/javascripts/src/panel/Tool.js +0 -304
  420. data/app/assets/javascripts/src/picker/Color.js +0 -219
  421. data/app/assets/javascripts/src/picker/Date.js +0 -1140
  422. data/app/assets/javascripts/src/picker/Month.js +0 -490
  423. data/app/assets/javascripts/src/picker/Time.js +0 -165
  424. data/app/assets/javascripts/src/resizer/BorderSplitter.js +0 -22
  425. data/app/assets/javascripts/src/resizer/BorderSplitterTracker.js +0 -210
  426. data/app/assets/javascripts/src/resizer/Handle.js +0 -29
  427. data/app/assets/javascripts/src/resizer/ResizeTracker.js +0 -346
  428. data/app/assets/javascripts/src/resizer/Resizer.js +0 -477
  429. data/app/assets/javascripts/src/resizer/Splitter.js +0 -242
  430. data/app/assets/javascripts/src/resizer/SplitterTracker.js +0 -230
  431. data/app/assets/javascripts/src/selection/CellModel.js +0 -395
  432. data/app/assets/javascripts/src/selection/CheckboxModel.js +0 -234
  433. data/app/assets/javascripts/src/selection/DataViewModel.js +0 -160
  434. data/app/assets/javascripts/src/selection/Model.js +0 -646
  435. data/app/assets/javascripts/src/selection/RowModel.js +0 -499
  436. data/app/assets/javascripts/src/selection/TreeModel.js +0 -78
  437. data/app/assets/javascripts/src/slider/Multi.js +0 -835
  438. data/app/assets/javascripts/src/slider/Single.js +0 -56
  439. data/app/assets/javascripts/src/slider/Thumb.js +0 -259
  440. data/app/assets/javascripts/src/slider/Tip.js +0 -130
  441. data/app/assets/javascripts/src/state/CookieProvider.js +0 -120
  442. data/app/assets/javascripts/src/state/LocalStorageProvider.js +0 -72
  443. data/app/assets/javascripts/src/state/Manager.js +0 -70
  444. data/app/assets/javascripts/src/state/Provider.js +0 -182
  445. data/app/assets/javascripts/src/state/Stateful.js +0 -364
  446. data/app/assets/javascripts/src/tab/Bar.js +0 -258
  447. data/app/assets/javascripts/src/tab/Panel.js +0 -654
  448. data/app/assets/javascripts/src/tab/Tab.js +0 -358
  449. data/app/assets/javascripts/src/tail.js +0 -10
  450. data/app/assets/javascripts/src/tip/QuickTip.js +0 -335
  451. data/app/assets/javascripts/src/tip/QuickTipManager.js +0 -239
  452. data/app/assets/javascripts/src/tip/Tip.js +0 -160
  453. data/app/assets/javascripts/src/tip/ToolTip.js +0 -691
  454. data/app/assets/javascripts/src/toolbar/Fill.js +0 -28
  455. data/app/assets/javascripts/src/toolbar/Item.js +0 -16
  456. data/app/assets/javascripts/src/toolbar/Paging.js +0 -600
  457. data/app/assets/javascripts/src/toolbar/Separator.js +0 -23
  458. data/app/assets/javascripts/src/toolbar/Spacer.js +0 -33
  459. data/app/assets/javascripts/src/toolbar/TextItem.js +0 -57
  460. data/app/assets/javascripts/src/toolbar/Toolbar-legacy.js +0 -123
  461. data/app/assets/javascripts/src/toolbar/Toolbar.js +0 -447
  462. data/app/assets/javascripts/src/tree/Column.js +0 -90
  463. data/app/assets/javascripts/src/tree/Panel.js +0 -505
  464. data/app/assets/javascripts/src/tree/View.js +0 -658
  465. data/app/assets/javascripts/src/tree/ViewDragZone.js +0 -49
  466. data/app/assets/javascripts/src/tree/ViewDropZone.js +0 -287
  467. data/app/assets/javascripts/src/tree/plugin/TreeViewDragDrop.js +0 -244
  468. data/app/assets/javascripts/src/util/AbstractMixedCollection.js +0 -772
  469. data/app/assets/javascripts/src/util/Animate.js +0 -426
  470. data/app/assets/javascripts/src/util/Bindable.js +0 -102
  471. data/app/assets/javascripts/src/util/CSS.js +0 -185
  472. data/app/assets/javascripts/src/util/ClickRepeater.js +0 -238
  473. data/app/assets/javascripts/src/util/ComponentDragger.js +0 -126
  474. data/app/assets/javascripts/src/util/Cookies.js +0 -91
  475. data/app/assets/javascripts/src/util/ElementContainer.js +0 -293
  476. data/app/assets/javascripts/src/util/Filter.js +0 -159
  477. data/app/assets/javascripts/src/util/Floating.js +0 -321
  478. data/app/assets/javascripts/src/util/Grouper.js +0 -26
  479. data/app/assets/javascripts/src/util/HashMap.js +0 -356
  480. data/app/assets/javascripts/src/util/History.js +0 -285
  481. data/app/assets/javascripts/src/util/Inflector.js +0 -297
  482. data/app/assets/javascripts/src/util/KeyMap.js +0 -427
  483. data/app/assets/javascripts/src/util/KeyNav.js +0 -239
  484. data/app/assets/javascripts/src/util/LruCache.js +0 -257
  485. data/app/assets/javascripts/src/util/Memento.js +0 -131
  486. data/app/assets/javascripts/src/util/MixedCollection.js +0 -239
  487. data/app/assets/javascripts/src/util/Observable.js +0 -1003
  488. data/app/assets/javascripts/src/util/Offset.js +0 -60
  489. data/app/assets/javascripts/src/util/Point.js +0 -93
  490. data/app/assets/javascripts/src/util/ProtoElement.js +0 -205
  491. data/app/assets/javascripts/src/util/Queue.js +0 -76
  492. data/app/assets/javascripts/src/util/Region.js +0 -388
  493. data/app/assets/javascripts/src/util/Renderable.js +0 -1079
  494. data/app/assets/javascripts/src/util/Sortable.js +0 -248
  495. data/app/assets/javascripts/src/util/Sorter.js +0 -179
  496. data/app/assets/javascripts/src/util/TextMetrics.js +0 -148
  497. data/app/assets/javascripts/src/view/AbstractView.js +0 -1103
  498. data/app/assets/javascripts/src/view/BoundList.js +0 -207
  499. data/app/assets/javascripts/src/view/BoundListKeyNav.js +0 -92
  500. data/app/assets/javascripts/src/view/DragZone.js +0 -106
  501. data/app/assets/javascripts/src/view/DropZone.js +0 -240
  502. data/app/assets/javascripts/src/view/Table.js +0 -1229
  503. data/app/assets/javascripts/src/view/TableChunker.js +0 -139
  504. data/app/assets/javascripts/src/view/View.js +0 -636
  505. data/app/assets/javascripts/src/window/MessageBox.js +0 -880
  506. data/app/assets/javascripts/src/window/Window-legacy.js +0 -56
  507. data/app/assets/javascripts/src/window/Window.js +0 -793
@@ -1,280 +0,0 @@
1
- /**
2
- * @private
3
- */
4
- Ext.define('Ext.draw.engine.SvgExporter', {
5
- singleton: true,
6
-
7
- statics: (function(){
8
- var surface, len, width,
9
- height,
10
- init = function(s){
11
- surface = s;
12
- len = surface.length;
13
- width = surface.width;
14
- height = surface.height;
15
- },
16
- spriteProcessor = {
17
- path: function(sprite){
18
-
19
- var attr = sprite.attr,
20
- path = attr.path,
21
- pathString = '',
22
- props, p, pLen;
23
-
24
- if(Ext.isArray(path[0])){
25
- pLen = path.length;
26
- for (p = 0; p < pLen; p++) {
27
- pathString += path[p].join(' ');
28
- }
29
- }else if(Ext.isArray(path)){
30
- pathString = path.join(' ');
31
- }else{
32
- pathString = path.replace(/,/g,' ');
33
- }
34
-
35
- props = toPropertyString({
36
- d: pathString,
37
- fill: attr.fill || 'none',
38
- stroke: attr.stroke,
39
- 'fill-opacity': attr.opacity,
40
- 'stroke-width': attr['stroke-width'],
41
- 'stroke-opacity': attr['stroke-opacity'],
42
- "z-index": attr.zIndex,
43
- transform: sprite.matrix.toSvg()
44
- });
45
-
46
- return '<path ' + props + '/>';
47
- },
48
- text: function(sprite){
49
-
50
- // TODO
51
- // implement multi line support (@see Svg.js tuneText)
52
-
53
- var attr = sprite.attr,
54
- fontRegex = /(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)\s('*.*'*)/,
55
- match = fontRegex.exec(attr.font),
56
- size = (match && match[1]) || "12",
57
- // default font family is Arial
58
- family = (match && match[3]) || 'Arial',
59
- text = attr.text,
60
- factor = (Ext.isFF3_0 || Ext.isFF3_5) ? 2 : 4,
61
- tspanString = '',
62
- props;
63
-
64
- sprite.getBBox();
65
- tspanString += '<tspan x="' + (attr.x || '') + '" dy="';
66
- tspanString += (size/factor)+'">';
67
- tspanString += Ext.htmlEncode(text) + '</tspan>';
68
-
69
-
70
- props = toPropertyString({
71
- x: attr.x,
72
- y: attr.y,
73
- 'font-size': size,
74
- 'font-family': family,
75
- 'font-weight': attr['font-weight'],
76
- 'text-anchor': attr['text-anchor'],
77
- // if no fill property is set it will be black
78
- fill: attr.fill || '#000',
79
- 'fill-opacity': attr.opacity,
80
- transform: sprite.matrix.toSvg()
81
- });
82
-
83
-
84
-
85
- return '<text '+ props + '>' + tspanString + '</text>';
86
- },
87
- rect: function(sprite){
88
-
89
- var attr = sprite.attr,
90
- props = toPropertyString({
91
- x: attr.x,
92
- y: attr.y,
93
- rx: attr.rx,
94
- ry: attr.ry,
95
- width: attr.width,
96
- height: attr.height,
97
- fill: attr.fill || 'none',
98
- 'fill-opacity': attr.opacity,
99
- stroke: attr.stroke,
100
- 'stroke-opacity': attr['stroke-opacity'],
101
- 'stroke-width':attr['stroke-width'],
102
- transform: sprite.matrix && sprite.matrix.toSvg()
103
- });
104
-
105
- return '<rect ' + props + '/>';
106
- },
107
- circle: function(sprite){
108
-
109
- var attr = sprite.attr,
110
- props = toPropertyString({
111
- cx: attr.x,
112
- cy: attr.y,
113
- r: attr.radius,
114
- fill: attr.translation.fill || attr.fill || 'none',
115
- 'fill-opacity': attr.opacity,
116
- stroke: attr.stroke,
117
- 'stroke-opacity': attr['stroke-opacity'],
118
- 'stroke-width':attr['stroke-width'],
119
- transform: sprite.matrix.toSvg()
120
- });
121
-
122
- return '<circle ' + props + ' />';
123
- },
124
- image: function(sprite){
125
-
126
- var attr = sprite.attr,
127
- props = toPropertyString({
128
- x: attr.x - (attr.width/2 >> 0),
129
- y: attr.y - (attr.height/2 >> 0),
130
- width: attr.width,
131
- height: attr.height,
132
- 'xlink:href': attr.src,
133
- transform: sprite.matrix.toSvg()
134
- });
135
-
136
- return '<image ' + props + ' />';
137
- }
138
- },
139
- svgHeader = function(){
140
- var svg = '<?xml version="1.0" standalone="yes"?>';
141
- svg += '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">';
142
- return svg;
143
- },
144
- svgContent = function(){
145
- var svg = '<svg width="'+width+'px" height="'+height+'px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">',
146
- defs = '', item, itemsLen, items, gradient,
147
- getSvgString, colorstops, stop,
148
- coll, keys, colls, k, kLen, key, collI, i, j, stopsLen, sortedItems, za, zb;
149
-
150
- items = surface.items.items;
151
- itemsLen = items.length;
152
-
153
-
154
- getSvgString = function(node){
155
-
156
- var childs = node.childNodes,
157
- childLength = childs.length,
158
- i = 0,
159
- attrLength,
160
- j,
161
- svgString = '', child, attr, tagName, attrItem;
162
-
163
- for(; i < childLength; i++){
164
- child = childs[i];
165
- attr = child.attributes;
166
- tagName = child.tagName;
167
-
168
- svgString += '<' +tagName;
169
-
170
- for(j = 0, attrLength = attr.length; j < attrLength; j++){
171
- attrItem = attr.item(j);
172
- svgString += ' '+attrItem.name+'="'+attrItem.value+'"';
173
- }
174
-
175
- svgString += '>';
176
-
177
- if(child.childNodes.length > 0){
178
- svgString += getSvgString(child);
179
- }
180
-
181
- svgString += '</' + tagName + '>';
182
-
183
- }
184
- return svgString;
185
- };
186
-
187
-
188
- if(surface.getDefs){
189
- defs = getSvgString(surface.getDefs());
190
- }else{
191
- // IE
192
- coll = surface.gradientsColl;
193
- if (coll) {
194
- keys = coll.keys;
195
- colls = coll.items;
196
- k = 0;
197
- kLen = keys.length;
198
- }
199
-
200
- for (; k < kLen; k++) {
201
- key = keys[k];
202
- collI = colls[k];
203
-
204
- gradient = surface.gradientsColl.getByKey(key);
205
- defs += '<linearGradient id="' + key + '" x1="0" y1="0" x2="1" y2="1">';
206
-
207
- var color = gradient.colors.replace(/rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g, 'rgb($1|$2|$3)');
208
- color = color.replace(/rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,([\d\.]+)\)/g, 'rgba($1|$2|$3|$4)')
209
- colorstops = color.split(',');
210
- for(i=0, stopsLen = colorstops.length; i < stopsLen; i++){
211
- stop = colorstops[i].split(' ');
212
- color = Ext.draw.Color.fromString(stop[1].replace(/\|/g,','));
213
- defs += '<stop offset="'+stop[0]+'" stop-color="' + color.toString() + '" stop-opacity="1"></stop>';
214
- }
215
- defs += '</linearGradient>';
216
- }
217
- }
218
-
219
- svg += '<defs>' + defs + '</defs>';
220
-
221
- // thats the background rectangle
222
- svg += spriteProcessor.rect({
223
- attr: {
224
- width: '100%',
225
- height: '100%',
226
- fill: '#fff',
227
- stroke: 'none',
228
- opacity: '0'
229
- }
230
- });
231
-
232
- // Sort the items (stable sort guaranteed)
233
- sortedItems = new Array(itemsLen);
234
- for(i = 0; i < itemsLen; i++){
235
- sortedItems[i] = i;
236
- }
237
- sortedItems.sort(function (a, b) {
238
- za = items[a].attr.zIndex || 0;
239
- zb = items[b].attr.zIndex || 0;
240
- if (za == zb) {
241
- return a - b;
242
- }
243
- return za - zb;
244
- });
245
-
246
- for(i = 0; i < itemsLen; i++){
247
- item = items[sortedItems[i]];
248
- if(!item.attr.hidden){
249
- svg += spriteProcessor[item.type](item);
250
- }
251
- }
252
-
253
- svg += '</svg>';
254
-
255
- return svg;
256
- },
257
- toPropertyString = function(obj){
258
- var propString = '',
259
- key;
260
-
261
- for(key in obj){
262
-
263
- if(obj.hasOwnProperty(key) && obj[key] != null){
264
- propString += key +'="'+ obj[key]+'" ';
265
- }
266
-
267
- }
268
-
269
- return propString;
270
- };
271
-
272
- return {
273
- generate: function(config, surface){
274
- init(surface);
275
- return svgHeader() + svgContent();
276
- }
277
- };
278
- }())
279
-
280
- });
@@ -1,916 +0,0 @@
1
- /**
2
- * @class Ext.draw.engine.Vml
3
- * Provides specific methods to draw with VML.
4
- */
5
-
6
- Ext.define('Ext.draw.engine.Vml', {
7
-
8
- /* Begin Definitions */
9
-
10
- extend: 'Ext.draw.Surface',
11
-
12
- requires: ['Ext.draw.Draw', 'Ext.draw.Color', 'Ext.draw.Sprite', 'Ext.draw.Matrix', 'Ext.Element'],
13
-
14
- /* End Definitions */
15
-
16
- engine: 'Vml',
17
-
18
- map: {M: "m", L: "l", C: "c", Z: "x", m: "t", l: "r", c: "v", z: "x"},
19
- bitesRe: /([clmz]),?([^clmz]*)/gi,
20
- valRe: /-?[^,\s\-]+/g,
21
- fillUrlRe: /^url\(\s*['"]?([^\)]+?)['"]?\s*\)$/i,
22
- pathlike: /^(path|rect)$/,
23
- NonVmlPathRe: /[ahqstv]/ig, // Non-VML Pathing ops
24
- partialPathRe: /[clmz]/g,
25
- fontFamilyRe: /^['"]+|['"]+$/g,
26
- baseVmlCls: Ext.baseCSSPrefix + 'vml-base',
27
- vmlGroupCls: Ext.baseCSSPrefix + 'vml-group',
28
- spriteCls: Ext.baseCSSPrefix + 'vml-sprite',
29
- measureSpanCls: Ext.baseCSSPrefix + 'vml-measure-span',
30
- zoom: 21600,
31
- coordsize: 1000,
32
- coordorigin: '0 0',
33
- zIndexShift: 0,
34
- // VML uses CSS z-index and therefore doesn't need sprites to be kept in zIndex order
35
- orderSpritesByZIndex: false,
36
-
37
- // @private
38
- // Convert an SVG standard path into a VML path
39
- path2vml: function (path) {
40
- var me = this,
41
- nonVML = me.NonVmlPathRe,
42
- map = me.map,
43
- val = me.valRe,
44
- zoom = me.zoom,
45
- bites = me.bitesRe,
46
- command = Ext.Function.bind(Ext.draw.Draw.pathToAbsolute, Ext.draw.Draw),
47
- res, pa, p, r, i, ii, j, jj;
48
- if (String(path).match(nonVML)) {
49
- command = Ext.Function.bind(Ext.draw.Draw.path2curve, Ext.draw.Draw);
50
- } else if (!String(path).match(me.partialPathRe)) {
51
- res = String(path).replace(bites, function (all, command, args) {
52
- var vals = [],
53
- isMove = command.toLowerCase() == "m",
54
- res = map[command];
55
- args.replace(val, function (value) {
56
- if (isMove && vals.length === 2) {
57
- res += vals + map[command == "m" ? "l" : "L"];
58
- vals = [];
59
- }
60
- vals.push(Math.round(value * zoom));
61
- });
62
- return res + vals;
63
- });
64
- return res;
65
- }
66
- pa = command(path);
67
- res = [];
68
- for (i = 0, ii = pa.length; i < ii; i++) {
69
- p = pa[i];
70
- r = pa[i][0].toLowerCase();
71
- if (r == "z") {
72
- r = "x";
73
- }
74
- for (j = 1, jj = p.length; j < jj; j++) {
75
- r += Math.round(p[j] * me.zoom) + (j != jj - 1 ? "," : "");
76
- }
77
- res.push(r);
78
- }
79
- return res.join(" ");
80
- },
81
-
82
- // @private - set of attributes which need to be translated from the sprite API to the native browser API
83
- translateAttrs: {
84
- radius: "r",
85
- radiusX: "rx",
86
- radiusY: "ry",
87
- lineWidth: "stroke-width",
88
- fillOpacity: "fill-opacity",
89
- strokeOpacity: "stroke-opacity",
90
- strokeLinejoin: "stroke-linejoin"
91
- },
92
-
93
- // @private - Minimun set of defaults for different types of sprites.
94
- minDefaults: {
95
- circle: {
96
- fill: "none",
97
- stroke: null,
98
- "stroke-width": null,
99
- opacity: null,
100
- "fill-opacity": null,
101
- "stroke-opacity": null
102
- },
103
- ellipse: {
104
- cx: 0,
105
- cy: 0,
106
- rx: 0,
107
- ry: 0,
108
- fill: "none",
109
- stroke: null,
110
- "stroke-width": null,
111
- opacity: null,
112
- "fill-opacity": null,
113
- "stroke-opacity": null
114
- },
115
- rect: {
116
- x: 0,
117
- y: 0,
118
- width: 0,
119
- height: 0,
120
- rx: 0,
121
- ry: 0,
122
- fill: "none",
123
- stroke: null,
124
- "stroke-width": null,
125
- opacity: null,
126
- "fill-opacity": null,
127
- "stroke-opacity": null
128
- },
129
- text: {
130
- x: 0,
131
- y: 0,
132
- "text-anchor": "start",
133
- font: '10px "Arial"',
134
- fill: "#000",
135
- stroke: null,
136
- "stroke-width": null,
137
- opacity: null,
138
- "fill-opacity": null,
139
- "stroke-opacity": null
140
- },
141
- path: {
142
- d: "M0,0",
143
- fill: "none",
144
- stroke: null,
145
- "stroke-width": null,
146
- opacity: null,
147
- "fill-opacity": null,
148
- "stroke-opacity": null
149
- },
150
- image: {
151
- x: 0,
152
- y: 0,
153
- width: 0,
154
- height: 0,
155
- preserveAspectRatio: "none",
156
- opacity: null
157
- }
158
- },
159
-
160
- // private
161
- onMouseEnter: function (e) {
162
- this.fireEvent("mouseenter", e);
163
- },
164
-
165
- // private
166
- onMouseLeave: function (e) {
167
- this.fireEvent("mouseleave", e);
168
- },
169
-
170
- // @private - Normalize a delegated single event from the main container to each sprite and sprite group
171
- processEvent: function (name, e) {
172
- var target = e.getTarget(),
173
- surface = this.surface,
174
- sprite;
175
- this.fireEvent(name, e);
176
- sprite = this.items.get(target.id);
177
- if (sprite) {
178
- sprite.fireEvent(name, sprite, e);
179
- }
180
- },
181
-
182
- // Create the VML element/elements and append them to the DOM
183
- createSpriteElement: function (sprite) {
184
- var me = this,
185
- attr = sprite.attr,
186
- type = sprite.type,
187
- zoom = me.zoom,
188
- vml = sprite.vml || (sprite.vml = {}),
189
- round = Math.round,
190
- el = (type === 'image') ? me.createNode('image') : me.createNode('shape'),
191
- path, skew, textPath;
192
-
193
- el.coordsize = zoom + ' ' + zoom;
194
- el.coordorigin = attr.coordorigin || "0 0";
195
- Ext.get(el).addCls(me.spriteCls);
196
- if (type == "text") {
197
- vml.path = path = me.createNode("path");
198
- path.textpathok = true;
199
- vml.textpath = textPath = me.createNode("textpath");
200
- textPath.on = true;
201
- el.appendChild(textPath);
202
- el.appendChild(path);
203
- }
204
- el.id = sprite.id;
205
- sprite.el = Ext.get(el);
206
- sprite.el.setStyle('zIndex', -me.zIndexShift);
207
- me.el.appendChild(el);
208
- if (type !== 'image') {
209
- skew = me.createNode("skew");
210
- skew.on = true;
211
- el.appendChild(skew);
212
- sprite.skew = skew;
213
- }
214
- sprite.matrix = new Ext.draw.Matrix();
215
- sprite.bbox = {
216
- plain: null,
217
- transform: null
218
- };
219
-
220
- this.applyAttrs(sprite);
221
- this.applyTransformations(sprite);
222
- sprite.fireEvent("render", sprite);
223
- return sprite.el;
224
- },
225
-
226
- getBBoxText: function (sprite) {
227
- var vml = sprite.vml;
228
- return {
229
- x: vml.X + (vml.bbx || 0) - vml.W / 2,
230
- y: vml.Y - vml.H / 2,
231
- width: vml.W,
232
- height: vml.H
233
- };
234
- },
235
-
236
- applyAttrs: function (sprite) {
237
- var me = this,
238
- vml = sprite.vml,
239
- group = sprite.group,
240
- spriteAttr = sprite.attr,
241
- el = sprite.el,
242
- dom = el.dom,
243
- style, name, groups, i, ln, scrubbedAttrs, font, key,
244
- cx, cy, rx, ry;
245
-
246
- if (group) {
247
- groups = [].concat(group);
248
- ln = groups.length;
249
- for (i = 0; i < ln; i++) {
250
- group = groups[i];
251
- me.getGroup(group).add(sprite);
252
- }
253
- delete sprite.group;
254
- }
255
- scrubbedAttrs = me.scrubAttrs(sprite) || {};
256
-
257
- if (sprite.zIndexDirty) {
258
- me.setZIndex(sprite);
259
- }
260
-
261
- // Apply minimum default attributes
262
- Ext.applyIf(scrubbedAttrs, me.minDefaults[sprite.type]);
263
-
264
- if (sprite.type == 'image') {
265
- Ext.apply(sprite.attr, {
266
- x: scrubbedAttrs.x,
267
- y: scrubbedAttrs.y,
268
- width: scrubbedAttrs.width,
269
- height: scrubbedAttrs.height
270
- });
271
- el.setStyle({
272
- width: scrubbedAttrs.width + 'px',
273
- height: scrubbedAttrs.height + 'px'
274
- });
275
- dom.src = scrubbedAttrs.src;
276
- }
277
-
278
- if (dom.href) {
279
- dom.href = scrubbedAttrs.href;
280
- }
281
- if (dom.title) {
282
- dom.title = scrubbedAttrs.title;
283
- }
284
- if (dom.target) {
285
- dom.target = scrubbedAttrs.target;
286
- }
287
- if (dom.cursor) {
288
- dom.cursor = scrubbedAttrs.cursor;
289
- }
290
-
291
- // Change visibility
292
- if (sprite.dirtyHidden) {
293
- (scrubbedAttrs.hidden) ? me.hidePrim(sprite) : me.showPrim(sprite);
294
- sprite.dirtyHidden = false;
295
- }
296
-
297
- // Update path
298
- if (sprite.dirtyPath) {
299
- if (sprite.type == "circle" || sprite.type == "ellipse") {
300
- cx = scrubbedAttrs.x;
301
- cy = scrubbedAttrs.y;
302
- rx = scrubbedAttrs.rx || scrubbedAttrs.r || 0;
303
- ry = scrubbedAttrs.ry || scrubbedAttrs.r || 0;
304
- dom.path = Ext.String.format("ar{0},{1},{2},{3},{4},{1},{4},{1}",
305
- Math.round((cx - rx) * me.zoom),
306
- Math.round((cy - ry) * me.zoom),
307
- Math.round((cx + rx) * me.zoom),
308
- Math.round((cy + ry) * me.zoom),
309
- Math.round(cx * me.zoom));
310
- sprite.dirtyPath = false;
311
- }
312
- else if (sprite.type !== "text" && sprite.type !== 'image') {
313
- sprite.attr.path = scrubbedAttrs.path = me.setPaths(sprite, scrubbedAttrs) || scrubbedAttrs.path;
314
- dom.path = me.path2vml(scrubbedAttrs.path);
315
- sprite.dirtyPath = false;
316
- }
317
- }
318
-
319
- // Apply clipping
320
- if ("clip-rect" in scrubbedAttrs) {
321
- me.setClip(sprite, scrubbedAttrs);
322
- }
323
-
324
- // Handle text (special handling required)
325
- if (sprite.type == "text") {
326
- me.setTextAttributes(sprite, scrubbedAttrs);
327
- }
328
-
329
- // Handle fill and opacity
330
- if (scrubbedAttrs.opacity || scrubbedAttrs['stroke-opacity'] || scrubbedAttrs.fill) {
331
- me.setFill(sprite, scrubbedAttrs);
332
- }
333
-
334
- // Handle stroke (all fills require a stroke element)
335
- if (scrubbedAttrs.stroke || scrubbedAttrs['stroke-opacity'] || scrubbedAttrs.fill) {
336
- me.setStroke(sprite, scrubbedAttrs);
337
- }
338
-
339
- //set styles
340
- style = spriteAttr.style;
341
- if (style) {
342
- el.setStyle(style);
343
- }
344
-
345
- sprite.dirty = false;
346
- },
347
-
348
- setZIndex: function (sprite) {
349
- var me = this,
350
- zIndex = sprite.attr.zIndex,
351
- shift = me.zIndexShift,
352
- items, iLen, item, i;
353
-
354
- if (zIndex < shift) {
355
- // This means bad thing happened.
356
- // The algorithm below will guarantee O(n) time.
357
- items = me.items.items;
358
- iLen = items.length;
359
-
360
- for (i = 0; i < iLen; i++) {
361
- if ((zIndex = items[i].attr.zIndex) && zIndex < shift) { // zIndex is no longer useful this case
362
- shift = zIndex;
363
- }
364
- }
365
-
366
- me.zIndexShift = shift;
367
- for (i = 0; i < iLen; i++) {
368
- item = items[i];
369
- if (item.el) {
370
- item.el.setStyle('zIndex', item.attr.zIndex - shift);
371
- }
372
- item.zIndexDirty = false;
373
- }
374
- } else if (sprite.el) {
375
- sprite.el.setStyle('zIndex', zIndex - shift);
376
- sprite.zIndexDirty = false;
377
- }
378
- },
379
-
380
- // Normalize all virtualized types into paths.
381
- setPaths: function (sprite, params) {
382
- var spriteAttr = sprite.attr, thickness = sprite.attr['stroke-width'] || 1;
383
- // Clear bbox cache
384
- sprite.bbox.plain = null;
385
- sprite.bbox.transform = null;
386
- if (sprite.type == 'circle') {
387
- spriteAttr.rx = spriteAttr.ry = params.r;
388
- return Ext.draw.Draw.ellipsePath(sprite);
389
- }
390
- else if (sprite.type == 'ellipse') {
391
- spriteAttr.rx = params.rx;
392
- spriteAttr.ry = params.ry;
393
- return Ext.draw.Draw.ellipsePath(sprite);
394
- }
395
- else if (sprite.type == 'rect') {
396
- spriteAttr.rx = spriteAttr.ry = params.r;
397
- return Ext.draw.Draw.rectPath(sprite);
398
- }
399
- else if (sprite.type == 'path' && spriteAttr.path) {
400
- return Ext.draw.Draw.pathToAbsolute(spriteAttr.path);
401
- }
402
- return false;
403
- },
404
-
405
- setFill: function (sprite, params) {
406
- var me = this,
407
- el = sprite.el.dom,
408
- fillEl = el.fill,
409
- newfill = false,
410
- opacity, gradient, fillUrl, rotation, angle;
411
-
412
- if (!fillEl) {
413
- // NOT an expando (but it sure looks like one)...
414
- fillEl = el.fill = me.createNode("fill");
415
- newfill = true;
416
- }
417
- if (Ext.isArray(params.fill)) {
418
- params.fill = params.fill[0];
419
- }
420
- if (params.fill == "none") {
421
- fillEl.on = false;
422
- }
423
- else {
424
- if (typeof params.opacity == "number") {
425
- fillEl.opacity = params.opacity;
426
- }
427
- if (typeof params["fill-opacity"] == "number") {
428
- fillEl.opacity = params["fill-opacity"];
429
- }
430
- fillEl.on = true;
431
- if (typeof params.fill == "string") {
432
- fillUrl = params.fill.match(me.fillUrlRe);
433
- if (fillUrl) {
434
- fillUrl = fillUrl[1];
435
- // If the URL matches one of the registered gradients, render that gradient
436
- if (fillUrl.charAt(0) == "#") {
437
- gradient = me.gradientsColl.getByKey(fillUrl.substring(1));
438
- }
439
- if (gradient) {
440
- // VML angle is offset and inverted from standard, and must be adjusted to match rotation transform
441
- rotation = params.rotation;
442
- angle = -(gradient.angle + 270 + (rotation ? rotation.degrees : 0)) % 360;
443
- // IE will flip the angle at 0 degrees...
444
- if (angle === 0) {
445
- angle = 180;
446
- }
447
- fillEl.angle = angle;
448
- fillEl.type = "gradient";
449
- fillEl.method = "sigma";
450
- if (fillEl.colors) {
451
- fillEl.colors.value = gradient.colors;
452
- } else {
453
- fillEl.colors = gradient.colors;
454
- }
455
- }
456
- // Otherwise treat it as an image
457
- else {
458
- fillEl.src = fillUrl;
459
- fillEl.type = "tile";
460
- }
461
- }
462
- else {
463
- fillEl.color = Ext.draw.Color.toHex(params.fill);
464
- fillEl.src = "";
465
- fillEl.type = "solid";
466
- }
467
- }
468
- }
469
- if (newfill) {
470
- el.appendChild(fillEl);
471
- }
472
- },
473
-
474
- setStroke: function (sprite, params) {
475
- var me = this,
476
- el = sprite.el.dom,
477
- strokeEl = sprite.strokeEl,
478
- newStroke = false,
479
- width, opacity;
480
-
481
- if (!strokeEl) {
482
- strokeEl = sprite.strokeEl = me.createNode("stroke");
483
- newStroke = true;
484
- }
485
- if (Ext.isArray(params.stroke)) {
486
- params.stroke = params.stroke[0];
487
- }
488
- if (!params.stroke || params.stroke == "none" || params.stroke == 0 || params["stroke-width"] == 0) {
489
- strokeEl.on = false;
490
- }
491
- else {
492
- strokeEl.on = true;
493
- if (params.stroke && !params.stroke.match(me.fillUrlRe)) {
494
- // VML does NOT support a gradient stroke :(
495
- strokeEl.color = Ext.draw.Color.toHex(params.stroke);
496
- }
497
- strokeEl.dashstyle = params["stroke-dasharray"] ? "dash" : "solid";
498
- strokeEl.joinstyle = params["stroke-linejoin"];
499
- strokeEl.endcap = params["stroke-linecap"] || "round";
500
- strokeEl.miterlimit = params["stroke-miterlimit"] || 8;
501
- width = parseFloat(params["stroke-width"] || 1) * 0.75;
502
- opacity = params["stroke-opacity"] || 1;
503
- // VML Does not support stroke widths under 1, so we're going to fiddle with stroke-opacity instead.
504
- if (Ext.isNumber(width) && width < 1) {
505
- strokeEl.weight = 1;
506
- strokeEl.opacity = opacity * width;
507
- }
508
- else {
509
- strokeEl.weight = width;
510
- strokeEl.opacity = opacity;
511
- }
512
- }
513
- if (newStroke) {
514
- el.appendChild(strokeEl);
515
- }
516
- },
517
-
518
- setClip: function (sprite, params) {
519
- var me = this,
520
- el = sprite.el,
521
- clipEl = sprite.clipEl,
522
- rect = String(params["clip-rect"]).split(me.separatorRe);
523
- if (!clipEl) {
524
- clipEl = sprite.clipEl = me.el.insertFirst(Ext.getDoc().dom.createElement("div"));
525
- clipEl.addCls(Ext.baseCSSPrefix + 'vml-sprite');
526
- }
527
- if (rect.length == 4) {
528
- rect[2] = +rect[2] + (+rect[0]);
529
- rect[3] = +rect[3] + (+rect[1]);
530
- clipEl.setStyle("clip", Ext.String.format("rect({1}px {2}px {3}px {0}px)", rect[0], rect[1], rect[2], rect[3]));
531
- clipEl.setSize(me.el.width, me.el.height);
532
- }
533
- else {
534
- clipEl.setStyle("clip", "");
535
- }
536
- },
537
-
538
- setTextAttributes: function (sprite, params) {
539
- var me = this,
540
- vml = sprite.vml,
541
- textStyle = vml.textpath.style,
542
- spanCacheStyle = me.span.style,
543
- zoom = me.zoom,
544
- round = Math.round,
545
- fontObj = {
546
- fontSize: "font-size",
547
- fontWeight: "font-weight",
548
- fontStyle: "font-style"
549
- },
550
- fontProp,
551
- paramProp;
552
- if (sprite.dirtyFont) {
553
- if (params.font) {
554
- textStyle.font = spanCacheStyle.font = params.font;
555
- }
556
- if (params["font-family"]) {
557
- textStyle.fontFamily = '"' + params["font-family"].split(",")[0].replace(me.fontFamilyRe, "") + '"';
558
- spanCacheStyle.fontFamily = params["font-family"];
559
- }
560
-
561
- for (fontProp in fontObj) {
562
- paramProp = params[fontObj[fontProp]];
563
- if (paramProp) {
564
- textStyle[fontProp] = spanCacheStyle[fontProp] = paramProp;
565
- }
566
- }
567
-
568
- me.setText(sprite, params.text);
569
-
570
- if (vml.textpath.string) {
571
- me.span.innerHTML = String(vml.textpath.string).replace(/</g, "&#60;").replace(/&/g, "&#38;").replace(/\n/g, "<br/>");
572
- }
573
- vml.W = me.span.offsetWidth;
574
- vml.H = me.span.offsetHeight + 2; // TODO handle baseline differences and offset in VML Textpath
575
-
576
- // text-anchor emulation
577
- if (params["text-anchor"] == "middle") {
578
- textStyle["v-text-align"] = "center";
579
- }
580
- else if (params["text-anchor"] == "end") {
581
- textStyle["v-text-align"] = "right";
582
- vml.bbx = -Math.round(vml.W / 2);
583
- }
584
- else {
585
- textStyle["v-text-align"] = "left";
586
- vml.bbx = Math.round(vml.W / 2);
587
- }
588
- }
589
- vml.X = params.x;
590
- vml.Y = params.y;
591
- vml.path.v = Ext.String.format("m{0},{1}l{2},{1}", Math.round(vml.X * zoom), Math.round(vml.Y * zoom), Math.round(vml.X * zoom) + 1);
592
- // Clear bbox cache
593
- sprite.bbox.plain = null;
594
- sprite.bbox.transform = null;
595
- sprite.dirtyFont = false;
596
- },
597
-
598
- setText: function (sprite, text) {
599
- sprite.vml.textpath.string = Ext.htmlDecode(text);
600
- },
601
-
602
- hide: function () {
603
- this.el.hide();
604
- },
605
-
606
- show: function () {
607
- this.el.show();
608
- },
609
-
610
- hidePrim: function (sprite) {
611
- sprite.el.addCls(Ext.baseCSSPrefix + 'hide-visibility');
612
- },
613
-
614
- showPrim: function (sprite) {
615
- sprite.el.removeCls(Ext.baseCSSPrefix + 'hide-visibility');
616
- },
617
-
618
- setSize: function (width, height) {
619
- var me = this;
620
- width = width || me.width;
621
- height = height || me.height;
622
- me.width = width;
623
- me.height = height;
624
-
625
- if (me.el) {
626
- // Size outer div
627
- if (width != undefined) {
628
- me.el.setWidth(width);
629
- }
630
- if (height != undefined) {
631
- me.el.setHeight(height);
632
- }
633
- }
634
-
635
- me.callParent(arguments);
636
- },
637
-
638
- /**
639
- * @private Using the current viewBox property and the surface's width and height, calculate the
640
- * appropriate viewBoxShift that will be applied as a persistent transform to all sprites.
641
- */
642
- applyViewBox: function () {
643
- var me = this,
644
- viewBox = me.viewBox,
645
- width = me.width,
646
- height = me.height,
647
- items,
648
- iLen,
649
- i;
650
-
651
- me.callParent();
652
-
653
- if (viewBox && (width || height)) {
654
- items = me.items.items;
655
- iLen = items.length;
656
-
657
- for (i = 0; i < iLen; i++) {
658
- me.applyTransformations(items[i]);
659
- }
660
- }
661
- },
662
-
663
- onAdd: function (item) {
664
- this.callParent(arguments);
665
- if (this.el) {
666
- this.renderItem(item);
667
- }
668
- },
669
-
670
- onRemove: function (sprite) {
671
- if (sprite.el) {
672
- sprite.el.remove();
673
- delete sprite.el;
674
- }
675
- this.callParent(arguments);
676
- },
677
-
678
- render: function (container) {
679
- var me = this,
680
- doc = Ext.getDoc().dom,
681
- el;
682
- // VML Node factory method (createNode)
683
- if (!me.createNode) {
684
- try {
685
- if (!doc.namespaces.rvml) {
686
- doc.namespaces.add("rvml", "urn:schemas-microsoft-com:vml");
687
- }
688
- me.createNode = function (tagName) {
689
- return doc.createElement("<rvml:" + tagName + ' class="rvml">');
690
- };
691
- } catch (e) {
692
- me.createNode = function (tagName) {
693
- return doc.createElement("<" + tagName + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');
694
- };
695
- }
696
- }
697
-
698
- if (!me.el) {
699
- el = doc.createElement("div");
700
- me.el = Ext.get(el);
701
- me.el.addCls(me.baseVmlCls);
702
-
703
- // Measuring span (offscrren)
704
- me.span = doc.createElement("span");
705
- Ext.get(me.span).addCls(me.measureSpanCls);
706
- el.appendChild(me.span);
707
- me.el.setSize(me.width || 0, me.height || 0);
708
- container.appendChild(el);
709
- me.el.on({
710
- scope: me,
711
- mouseup: me.onMouseUp,
712
- mousedown: me.onMouseDown,
713
- mouseover: me.onMouseOver,
714
- mouseout: me.onMouseOut,
715
- mousemove: me.onMouseMove,
716
- mouseenter: me.onMouseEnter,
717
- mouseleave: me.onMouseLeave,
718
- click: me.onClick,
719
- dblclick: me.onDblClick
720
- });
721
- }
722
- me.renderAll();
723
- },
724
-
725
- renderAll: function () {
726
- this.items.each(this.renderItem, this);
727
- },
728
-
729
- redraw: function (sprite) {
730
- sprite.dirty = true;
731
- this.renderItem(sprite);
732
- },
733
-
734
- renderItem: function (sprite) {
735
- // Does the surface element exist?
736
- if (!this.el) {
737
- return;
738
- }
739
-
740
- // Create sprite element if necessary
741
- if (!sprite.el) {
742
- this.createSpriteElement(sprite);
743
- }
744
-
745
- if (sprite.dirty) {
746
- this.applyAttrs(sprite);
747
- if (sprite.dirtyTransform) {
748
- this.applyTransformations(sprite);
749
- }
750
- }
751
- },
752
-
753
- rotationCompensation: function (deg, dx, dy) {
754
- var matrix = new Ext.draw.Matrix();
755
- matrix.rotate(-deg, 0.5, 0.5);
756
- return {
757
- x: matrix.x(dx, dy),
758
- y: matrix.y(dx, dy)
759
- };
760
- },
761
-
762
- transform: function (sprite, matrixOnly) {
763
- var me = this,
764
- bbox = me.getBBox(sprite, true),
765
- cx = bbox.x + bbox.width * 0.5,
766
- cy = bbox.y + bbox.height * 0.5,
767
- matrix = new Ext.draw.Matrix(),
768
- transforms = sprite.transformations,
769
- transformsLength = transforms.length,
770
- i = 0,
771
- deltaDegrees = 0,
772
- deltaScaleX = 1,
773
- deltaScaleY = 1,
774
- flip = "",
775
- el = sprite.el,
776
- dom = el.dom,
777
- domStyle = dom.style,
778
- zoom = me.zoom,
779
- skew = sprite.skew,
780
- shift = me.viewBoxShift,
781
- deltaX, deltaY, transform, type, compensate, y, fill, newAngle, zoomScaleX, zoomScaleY, newOrigin, offset;
782
-
783
-
784
- for (; i < transformsLength; i++) {
785
- transform = transforms[i];
786
- type = transform.type;
787
- if (type == "translate") {
788
- matrix.translate(transform.x, transform.y);
789
- }
790
- else if (type == "rotate") {
791
- matrix.rotate(transform.degrees, transform.x, transform.y);
792
- deltaDegrees += transform.degrees;
793
- }
794
- else if (type == "scale") {
795
- matrix.scale(transform.x, transform.y, transform.centerX, transform.centerY);
796
- deltaScaleX *= transform.x;
797
- deltaScaleY *= transform.y;
798
- }
799
- }
800
-
801
- sprite.matrix = matrix.clone();
802
-
803
- if (matrixOnly) {
804
- return;
805
- }
806
-
807
- if (shift) {
808
- matrix.prepend(shift.scale, 0, 0, shift.scale, shift.dx * shift.scale, shift.dy * shift.scale);
809
- }
810
-
811
- // Hide element while we transform
812
- if (sprite.type != "image" && skew) {
813
- skew.origin = "0,0";
814
- // matrix transform via VML skew
815
- skew.matrix = matrix.toString();
816
- // skew.offset = '32767,1' OK
817
- // skew.offset = '32768,1' Crash
818
- // M$, R U kidding??
819
- offset = matrix.offset();
820
- if (offset[0] > 32767) {
821
- offset[0] = 32767;
822
- } else if (offset[0] < -32768) {
823
- offset[0] = -32768;
824
- }
825
- if (offset[1] > 32767) {
826
- offset[1] = 32767;
827
- } else if (offset[1] < -32768) {
828
- offset[1] = -32768;
829
- }
830
- skew.offset = offset;
831
- }
832
- else {
833
- domStyle.filter = matrix.toFilter();
834
- domStyle.left = Math.min(
835
- matrix.x(bbox.x, bbox.y),
836
- matrix.x(bbox.x + bbox.width, bbox.y),
837
- matrix.x(bbox.x, bbox.y + bbox.height),
838
- matrix.x(bbox.x + bbox.width, bbox.y + bbox.height)) + 'px';
839
- domStyle.top = Math.min(
840
- matrix.y(bbox.x, bbox.y),
841
- matrix.y(bbox.x + bbox.width, bbox.y),
842
- matrix.y(bbox.x, bbox.y + bbox.height),
843
- matrix.y(bbox.x + bbox.width, bbox.y + bbox.height)) + 'px';
844
- }
845
- },
846
-
847
- createItem: function (config) {
848
- return Ext.create('Ext.draw.Sprite', config);
849
- },
850
-
851
- getRegion: function () {
852
- return this.el.getRegion();
853
- },
854
-
855
- addCls: function (sprite, className) {
856
- if (sprite && sprite.el) {
857
- sprite.el.addCls(className);
858
- }
859
- },
860
-
861
- removeCls: function (sprite, className) {
862
- if (sprite && sprite.el) {
863
- sprite.el.removeCls(className);
864
- }
865
- },
866
-
867
- /**
868
- * Adds a definition to this Surface for a linear gradient. We convert the gradient definition
869
- * to its corresponding VML attributes and store it for later use by individual sprites.
870
- * @param {Object} gradient
871
- */
872
- addGradient: function (gradient) {
873
- var gradients = this.gradientsColl || (this.gradientsColl = Ext.create('Ext.util.MixedCollection')),
874
- colors = [],
875
- stops = Ext.create('Ext.util.MixedCollection'),
876
- keys,
877
- items,
878
- iLen,
879
- key,
880
- item,
881
- i;
882
-
883
- // Build colors string
884
- stops.addAll(gradient.stops);
885
- stops.sortByKey("ASC", function (a, b) {
886
- a = parseInt(a, 10);
887
- b = parseInt(b, 10);
888
- return a > b ? 1 : (a < b ? -1 : 0);
889
- });
890
-
891
- keys = stops.keys;
892
- items = stops.items;
893
- iLen = keys.length;
894
-
895
- for (i = 0; i < iLen; i++) {
896
- key = keys[i];
897
- item = items[i];
898
- colors.push(key + '% ' + item.color);
899
- }
900
-
901
- gradients.add(gradient.id, {
902
- colors: colors.join(","),
903
- angle: gradient.angle
904
- });
905
- },
906
-
907
- destroy: function () {
908
- var me = this;
909
-
910
- me.callParent(arguments);
911
- if (me.el) {
912
- me.el.remove();
913
- }
914
- delete me.el;
915
- }
916
- });