tocco-admin 1.0.7 → 1.0.8

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 (438) hide show
  1. package/changelog.md +10 -0
  2. package/dist/010d0560a00a032c33da819e3c86596a.js +1 -368
  3. package/dist/029ed9161a8d24a9c2ba97124020989d.js +1 -9
  4. package/dist/02d5c4961ca855a88b1cd3e1b7fa7aa2.js +1 -113
  5. package/dist/03371bf1d5cbb1eab58e3a0130d1e9c2.js +1 -15001
  6. package/dist/03487ba89c7b63069d63c1b3802a472c.js +1 -24
  7. package/dist/03748243ac7148ca150ba06c2919ff81.js +1 -271
  8. package/dist/03980cb12dacd26148c22bb61fce440f.js +1 -9
  9. package/dist/03aae8272914723a7bf85b984385032c.js +1 -9
  10. package/dist/04770a551c5b6daa744be9b180a8d0fe.js +1 -13311
  11. package/dist/06d958315fc6cdbb28576b03e43203aa.js +1 -9
  12. package/dist/07101530302fe1d03dcd731992f7a899.js +1 -869
  13. package/dist/0731d7568a06d2e28351781370bc52bb.js +1 -445
  14. package/dist/0794fa2b9c882c72fa7d586069b61055.js +1 -3608
  15. package/dist/0872e65446d05c1c443180c6280b015f.js +1 -214
  16. package/dist/08b9f3e305b5e3e0b81f7848fa7f3b6b.js +1 -105
  17. package/dist/09563004132aabcfcc186943555a92a1.js +1 -263
  18. package/dist/0a1d9862d917663419ac2dd2e8193267.js +1 -9
  19. package/dist/0a858573915ab9b03fe79f98f8c51a04.js +1 -271
  20. package/dist/0a9cd3d62e7f1cd404606c50d9da86fb.js +1 -229
  21. package/dist/0beea7b55cf3b8c9f9b0bd46170bb30e.js +1 -238
  22. package/dist/0ec4bf56a876c2bf34ea174c584ce628.js +1 -97
  23. package/dist/0f418117fac55a859631143ad7d0e833.js +1 -1038
  24. package/dist/10132993df2cf9c9423b53a8a44379ab.js +1 -9
  25. package/dist/1034e3807d1bcf55cb564491950237ab.js +1 -9
  26. package/dist/104959bdb953a3792a203e98d2bf530f.js +1 -895
  27. package/dist/114c58e47951fe3f6d25f683e0cd54e7.js +1 -381
  28. package/dist/11b2d52156942feeb87b7c608276c49b.js +1 -119
  29. package/dist/11dc77ef2ea3a04834945a52f7de2072.js +1 -3208
  30. package/dist/12b520593765ef7e714d7fb3764633ed.js +1 -167
  31. package/dist/130340e2c62b9e858f186dab5f491e55.js +1 -9
  32. package/dist/1324f89bd8db0bae85b79b7f90f6c119.js +1 -418
  33. package/dist/13eda3507db9cbfb400f46b9b3ff6553.js +1 -9
  34. package/dist/1441681e52f3ae9ab33afbc5517359a0.js +1 -45
  35. package/dist/1533058f0ce13acdaa8d5bdc7d147bef.js +1 -9
  36. package/dist/1549fe09fd6b44aca96e2b1b7cbd93d0.js +1 -111
  37. package/dist/15f3800d33b854ba476c9daf1b9e0326.js +1 -9
  38. package/dist/16563bfaf4741097d38cc6ce3ccc1a2d.js +1 -2644
  39. package/dist/170487867de05784a96608617bdd544d.js +1 -9
  40. package/dist/179a93d3148b7edb72581279c3787d0c.js +1 -353
  41. package/dist/17dc98279d24649d3ca77cbce8c44e83.js +1 -9
  42. package/dist/1850762f1bfaf1a1044765b02b243ed4.js +1 -262
  43. package/dist/18cfa6de2de3832aa10439fbf963217a.js +1 -3035
  44. package/dist/18e63e724098792b95b076412a860636.js +1 -116
  45. package/dist/191feb6103c36b202bc01ba262916cdf.js +1 -9
  46. package/dist/19e684db1b08c82963634abc8b2c989f.js +1 -422
  47. package/dist/1abc9efccf77fd4527d1c2fc85d87e04.js +1 -647
  48. package/dist/1b15b9f88acaf59b96e59c6b5f32da12.js +1 -9
  49. package/dist/1b64f97eed4a3837a93f8bdd363295fb.js +1 -1873
  50. package/dist/1c02ec6ec024eee3ebb6b34fa8ff316f.js +1 -103
  51. package/dist/1c57b3481f295105588972ffa1305521.js +1 -9
  52. package/dist/1cc82820c232a82b5d8b6cb9e4152af3.js +1 -514
  53. package/dist/1cd3d09b5303cc37fa337225ed6a9132.js +1 -137
  54. package/dist/1e029a7f1f64457da4f54254d50ac59b.js +1 -95
  55. package/dist/1e26167b5f75d5b94add34f1f4d8b044.js +1 -380
  56. package/dist/1e4131e1241a5b81d54c7d9cb66b0e87.js +1 -254
  57. package/dist/1fe2d583da5f073431d81a6ea13ffc0c.js +1 -275
  58. package/dist/1fee62e3e043728a265935971fa26200.js +1 -981
  59. package/dist/211511e7b374f57ad31acaf49dbdccb1.js +1 -9
  60. package/dist/2183252fe9e1b88fcf2bc454d6fd9273.js +1 -115
  61. package/dist/222d52530e9db0a0ec565c6306c5db35.js +1 -104
  62. package/dist/2267d20fd89c81a461e38abecdb8fcdc.js +1 -282
  63. package/dist/2272c6632c52c3e402ab27b8045ab8f1.js +1 -9
  64. package/dist/23bb1a9f279e7a732bfd405350aab114.js +1 -9
  65. package/dist/23da8ba64540ff4aa68a34d3445db680.js +1 -232
  66. package/dist/243c0c0572ab9866e02e18821558a1c5.js +1 -89
  67. package/dist/244b1a234ec1728d0268214de601449d.js +1 -343
  68. package/dist/24a3ff38afde257888d755ece9bfd704.js +1 -9
  69. package/dist/25718a469574ade47e23567d8c543169.js +1 -9
  70. package/dist/25c99a71d30112583893bc5277402c46.js +1 -329
  71. package/dist/25eda4bb98e40a82cfd5b4bf9fbc06ec.js +1 -9
  72. package/dist/263f7107e9357b1c91997e1a21b59ff5.js +1 -2025
  73. package/dist/26fb247a2e0630e1f435cb4d91ec51fd.js +1 -397
  74. package/dist/27730a0bdc6f430cc85049a46a73a029.js +1 -9
  75. package/dist/27ccb71fa24357a0919a861351d5b82d.js +1 -2806
  76. package/dist/28474eb7ee45a125e49cc5cbe69e336f.js +1 -1193
  77. package/dist/28785bea435918d49b290d27bf660baa.js +1 -9
  78. package/dist/28acb3b48578dfd30dd555fff7c822f7.js +1 -312
  79. package/dist/291611f874a2bc54dbc291b52d74c512.js +1 -501
  80. package/dist/2b2fe1a34cdf81c656a47e493ca9d658.js +1 -257
  81. package/dist/2bcf741e1f2cb07989a722a6ba9c2ea7.js +1 -128
  82. package/dist/2d2a42eeeeec801ab35f2fff7d900e43.js +1 -330
  83. package/dist/2dd82c65030101b60dffccedd8741c6e.js +1 -9
  84. package/dist/2ddd0346681f9f12fd3a191245aa41df.js +1 -797
  85. package/dist/2f055ac4066041b9008dd6aebf9df34b.js +1 -9
  86. package/dist/2f5be3e3e9ab852d217168220854ea9b.js +1 -102
  87. package/dist/2f7c864f08b00c01f04ac22375f7ddd9.js +1 -520
  88. package/dist/2fc0239242a898632ca8aa451cb930c2.js +1 -9
  89. package/dist/2ff54aa3c655216f360438bc7f5b181a.js +1 -2742
  90. package/dist/30e80558090a09477e4466af8af4c40e.js +1 -135
  91. package/dist/34791bf31a4236531bc887b48f872c1c.js +1 -1090
  92. package/dist/34b3249d58303435b894a43d3776a5c3.js +1 -1433
  93. package/dist/3567d1ea443427e944a6f189a0898819.js +1 -9
  94. package/dist/3646668820dc96864fbed7746f805947.js +1 -452
  95. package/dist/36474100e81ab63c4ddbc94ab2cc8667.js +1 -799
  96. package/dist/365b89ceec577ebec0a39c938c2363f0.js +1 -263
  97. package/dist/367ad31e6d99d0021d05133b85bb9faf.js +1 -93
  98. package/dist/37172facd8a534a38f378ca2a9c7c11b.js +1 -9
  99. package/dist/37afa466cdb7fa8fc2e043164d48f29e.js +1 -13110
  100. package/dist/37ee3b5201ae2e2dc5dc8b1b20ad900e.js +1 -9
  101. package/dist/38270ad5088729f40c461c4a5a6bad5d.js +1 -248
  102. package/dist/3b190e5159c72fb7e27271956772bcba.js +1 -9
  103. package/dist/3b544bb2c5a4e7b225a4b50235a0fd6d.js +1 -9
  104. package/dist/3b6e7dc98c47eeafd851ca5072db4be6.js +1 -9
  105. package/dist/3bbf0faa999b08584dc971eab820113a.js +1 -1169
  106. package/dist/3c5b59a666c5d39d9ba9cc054d36a410.js +1 -9
  107. package/dist/3c71a5c0e85afc5486ee9ac29099843d.js +1 -230
  108. package/dist/3dcc18a5dee46b57ad7f85c0bee86802.js +1 -508
  109. package/dist/3df92508d7112d83474f31fe9590e289.js +1 -1015
  110. package/dist/3e277a4ce5486a806a00497aea8ecdd3.js +1 -502
  111. package/dist/3e3e2243675fa4fb4b320dc57daf2d4f.js +1 -346
  112. package/dist/3f55ba1c6515db2f98bb996c1a5bc9e3.js +1 -76
  113. package/dist/3f758ea78954547fed0a8d999691dd7c.js +1 -292
  114. package/dist/406884d5525e864955e9f5058526aa02.js +1 -101
  115. package/dist/40dc555a17f1c85020333a41f01dd9ba.js +1 -106
  116. package/dist/40e6f6cb52a24a747b1046614db3b164.js +1 -213
  117. package/dist/41d8a58fd52b6a06e8d3fb06cdabf67a.js +1 -989
  118. package/dist/42b4ce6de00994aa6bf7db7ff2f931a8.js +1 -1331
  119. package/dist/43a0e099f8283dc1c1c6bbd39148d98d.js +1 -867
  120. package/dist/440f4d477b586c7a6ba4c1c966ca79fc.js +1 -147
  121. package/dist/444ababf8edc26948943fbb45bd06a19.js +1 -259
  122. package/dist/44701e25bb6f2ab9ff18343f2357d1b0.js +1 -171
  123. package/dist/44ac2a2398075299754707d4bac7c276.js +1 -59
  124. package/dist/460c67d8fe31ef229704bd5ab6d1dd26.js +1 -942
  125. package/dist/4639c30a609d986a255ccc684404527e.js +1 -676
  126. package/dist/4700af84801dbda8a3880e3469c21130.js +1 -413
  127. package/dist/4736a562251eeaea46dd06892b489f35.js +1 -46
  128. package/dist/47541c23870e955fff15de4be490ba74.js +1 -112
  129. package/dist/47f0fbf038314894ac52f2d67466b5e9.js +1 -2848
  130. package/dist/4860a6a7c59b9ed5c779f7201dc1f591.js +1 -349
  131. package/dist/48e9351c5623d4da657ce7d5d0267ea6.js +1 -9
  132. package/dist/4a1dab236c2844d28f73c5c128afe299.js +1 -193
  133. package/dist/4b425eb8188febc5a89674b89a72d296.js +1 -798
  134. package/dist/4b61fe945e9e73aba22717e5d6f080df.js +1 -642
  135. package/dist/4bf3bc1fbdd26ac698fef1bdf26e3ff4.js +1 -9
  136. package/dist/4c2816c26725f7aae5b490142e31112f.js +1 -352
  137. package/dist/4ceabd28d8dc751f41002ebf2b6fed88.js +1 -539
  138. package/dist/4d143a2d103a9e376a9e3b55e680eef7.js +1 -310
  139. package/dist/4d8cb7033879cb7fcc7a43798e2bde22.js +1 -9
  140. package/dist/4e389cce6fb8f78845fab249bce43c0b.js +1 -9
  141. package/dist/4eed3725a00fc2bab78accdb014b7826.js +1 -325
  142. package/dist/4ef80ee74467e0297eec3cc03092da01.js +1 -9
  143. package/dist/506d44d8712a22011ce2bec8adbb19b2.js +1 -210
  144. package/dist/50c073327491a2ed3bfa2ebb466c4204.js +1 -25
  145. package/dist/51f903c5ce5284a63196247cffb5ca40.js +1 -9
  146. package/dist/5352ecd8e5f1a2637b48e18cc406edb1.js +1 -9
  147. package/dist/53e3600928916423671f3388e2d67844.js +1 -9
  148. package/dist/54b3396acd2c700969248de4b20cbf7c.js +1 -109
  149. package/dist/55892adefebc0d53993fb108151ed150.js +1 -207
  150. package/dist/57f4109bd1f06be4dc2bcb8ff7eaf1e5.js +1 -9
  151. package/dist/57f9654d8ecdebfb02c636e1889af2e4.js +1 -2698
  152. package/dist/582e24f5ba929e358fadfc7be4c18025.js +1 -9
  153. package/dist/58598705e7012f4ca1eb1dd21d3c59a5.js +1 -9
  154. package/dist/5861dfe4f2c7823623e82d0619c5bf06.js +1 -9
  155. package/dist/58aab872dbdb5e1607076e1935130e03.js +1 -9
  156. package/dist/595aef8d8b0a2017e2fc27db5703e0d1.js +1 -167
  157. package/dist/59cc05504a1c823b6d4796bf6b430822.js +1 -9
  158. package/dist/5a496ae20cc576bef1d35972548207cf.js +1 -9
  159. package/dist/5a67fdd5293af0a35defd2574c05cd04.js +1 -1803
  160. package/dist/5ada4185d70a1852b578b2063de58e37.js +1 -221
  161. package/dist/5b6a626249d0bc43e412fffa6a9ee177.js +1 -9
  162. package/dist/5bad2df0e3bfd8fdc1a332fb6276cb39.js +1 -360
  163. package/dist/5c53d90bf4029cfd1b6a0945d1cae142.js +1 -3550
  164. package/dist/5c96efcfd419a70a93c96557979bc66d.js +1 -371
  165. package/dist/5d3314103b00c8ea165c6f9f6757f794.js +1 -9
  166. package/dist/5d46734b57c7408a41473abcd515b64c.js +1 -387
  167. package/dist/5da9145440d57c9b84d469253e84898d.js +1 -154
  168. package/dist/5e37c1ef17a219449c8c6aa37a87a941.js +1 -101
  169. package/dist/5e3f006db26e9b277b1bdbc130611a14.js +1 -400
  170. package/dist/5e55b301888460bd06c8e26d1011e01a.js +1 -9
  171. package/dist/5e6c2744429a8fac6e536b179c1f31d0.js +1 -293
  172. package/dist/5ebdef8c548fca6c51280e915d6f4c3f.js +1 -168
  173. package/dist/5ede1aebde9d4e5f5cce2db3044495c7.js +1 -148
  174. package/dist/5f3ce6efab3c679ec1ad25ab0b3f6b2f.js +1 -9
  175. package/dist/5fb6059ab5d7abab7a74eb73028a3aeb.js +1 -361
  176. package/dist/5fc5c77d4df4f5d77f8530f6b23ecd1e.js +1 -135
  177. package/dist/5fedbf948ed123687f77167fac1faf8b.js +1 -9
  178. package/dist/60340be8eea1d704a17f399b3c3f9577.js +1 -200
  179. package/dist/621b99ed1a029c36b4e91ec35f36c344.js +1 -44
  180. package/dist/6292be0125d3720498496eaa7f541618.js +1 -56
  181. package/dist/63b15fb6fc8f897b22a4bf72b7e8452a.js +1 -57668
  182. package/dist/64a5f4d62507d032038dcd76d15188e1.js +1 -9
  183. package/dist/64c45b6610e353ba59a58afc6dd090ca.js +1 -450
  184. package/dist/64d6924350bd7706850cdc0dcc76ccf6.js +1 -9
  185. package/dist/6511453710d760c2682567b40ddb3301.js +1 -593
  186. package/dist/656f53e1b4c6e37a31799737faf6d639.js +1 -209
  187. package/dist/663234c150f2097f3812c6065491497c.js +1 -254
  188. package/dist/6903d8ef977a1424c4e2eb22b96feb77.js +1 -118
  189. package/dist/6a7bf4fb4484f6f48d8e4337f126a61d.js +1 -1246
  190. package/dist/6abb884bd4f1a54529c00b58c14741cc.js +1 -128
  191. package/dist/6bb61adbbc13088ee1c32d88b5c7e754.js +1 -1743
  192. package/dist/6c0a75dc5671c3f237a79f6e45b9891c.js +1 -9
  193. package/dist/6c67587c2093ac3a19da9f2196e040b7.js +1 -9
  194. package/dist/6d38cef4a006e6cfe54a6117aba7b600.js +1 -9
  195. package/dist/6f09754fd684f82e6c06ae526d15ac80.js +1 -740
  196. package/dist/6f64da239140d00b81d8b6c523e86daf.js +1 -116
  197. package/dist/6faa9e5f2a0122d2333fa450337a09b0.js +1 -9
  198. package/dist/6fd6a6ddbcbbebe735c9d21e594203ec.js +1 -145
  199. package/dist/6fe3f0823e345813c2084b243cb6650b.js +1 -6198
  200. package/dist/70074e0c785c9a808dea76c7c7d17af3.js +1 -9
  201. package/dist/70286c33cab463fd576766adecd2d5d9.js +1 -9
  202. package/dist/707fa1de4d2096da1951c4bc9d21cb6d.js +1 -75
  203. package/dist/7080d2a1db1608264a6d9d9fbaf2cce8.js +1 -9
  204. package/dist/716879b6ef8945d579595d88534ae402.js +1 -417
  205. package/dist/725da29f1643c2263a437c08a1454aea.js +1 -9
  206. package/dist/73c78b067c792ea8c737746e4671d3e0.js +1 -120
  207. package/dist/740f4264cd757fcf28331fd30daf295e.js +1 -18
  208. package/dist/7493f0c3c9bf268d6ad785019d993dd7.js +1 -150
  209. package/dist/74fa46809aba9625071aa51bc0a71561.js +1 -122
  210. package/dist/755114145e5b97e5571a160a39e716db.js +1 -9
  211. package/dist/75bffda9455d77087f34708ac4e85371.js +1 -2640
  212. package/dist/75d2dae20d7bac5ecfa9dafc48ec04eb.js +1 -277
  213. package/dist/760eb6458a048f3cba7bc3ae52ef2ba4.js +1 -137
  214. package/dist/7735af777659608bcd8cd6525e3bbe58.js +1 -135
  215. package/dist/77aaca51c1c32acaf32656d45f4dc017.js +1 -9
  216. package/dist/77dd68f6396b8ab4ce2c238d6ddb5354.js +1 -331
  217. package/dist/788819e459cdd8c4c1ef565fd303f519.js +1 -113
  218. package/dist/7a9a1dced0e327dc9cb1728bef25641d.js +1 -114
  219. package/dist/7bd84be066027e61c84c9c2aa9543c2a.js +1 -888
  220. package/dist/7c1cd1223bd45600763f8c152ad167d5.js +1 -873
  221. package/dist/7c27341a2599ffb713c8fb7beced7601.js +1 -306
  222. package/dist/7c317e61789b17749dfe6ea294c89b6b.js +1 -193
  223. package/dist/7c9c55eb1a1e5c1dfd63631511d9a1f0.js +1 -720
  224. package/dist/7dead8e2fcacc316bbfa632cd9f1c9bb.js +1 -163
  225. package/dist/7e4099fc2d04c7c1cf96892b962ba4ec.js +1 -9
  226. package/dist/7ef082035f74b3d7324f95a7498ea656.js +1 -2632
  227. package/dist/7f12d133c88ce53d0837a6c4c0287a37.js +1 -360
  228. package/dist/7f407a1006eb830d6f0aaad96c133d26.js +1 -430
  229. package/dist/805cb6232d7a9fa46025d48a43622ecf.js +1 -9
  230. package/dist/80a171b7595d1161735e23dec8efddd6.js +1 -363
  231. package/dist/82fed7ec74be91e0db61c500d9c6d7ee.js +1 -303
  232. package/dist/83387cb17a7680f59240e7b399e3ac2b.js +1 -9
  233. package/dist/8361542d34c46713c9aff6c4ce65a9a3.js +1 -2693
  234. package/dist/85a977f41a907dba8c672f9bf4943da0.js +1 -3028
  235. package/dist/866bf6ca5057dcb24503761af061d486.js +1 -478
  236. package/dist/870184211838006214be1c23c98672fc.js +1 -17
  237. package/dist/8707a7b49421dbbb842506674ff87fa3.js +1 -59
  238. package/dist/875e553a27bee88a73df34a90b3058e4.js +1 -2564
  239. package/dist/8772719d0f76ecabded160e32dc5eb77.js +1 -503
  240. package/dist/87932c8321c9985ed3b6979e86d2a50e.js +1 -96
  241. package/dist/87d6bf8becf2d5ebe2f71fda95a313ea.js +1 -83
  242. package/dist/88bbfb9fdb8730ffc23f546b42d8d620.js +1 -395
  243. package/dist/88e2feda80ac8cfb28f1dc0ec833b40d.js +1 -9
  244. package/dist/894720f1519e5eb34e1b4f33fca7a9dd.js +1 -185
  245. package/dist/894edcaf39c3c95818e3949d737ed459.js +1 -9
  246. package/dist/89d3c35a5ef97a600927b477a9ba06b4.js +1 -414
  247. package/dist/8ba6618773c9d8d0b4f6ecb785651e2c.js +1 -121
  248. package/dist/8bf75743fb14fea7cf02a5da1bda79d4.js +1 -73
  249. package/dist/8cb83aa3fea85e950c29450b8237fb72.js +1 -14
  250. package/dist/8d9bb1799d9b98db107e84f10132e17f.js +1 -9
  251. package/dist/8ed58ed9c7e1cb1ae1f2830d29011ffb.js +1 -9
  252. package/dist/909adc4a16e0f97d869e3dd16d561430.js +1 -122
  253. package/dist/90bafd962205e96c3285d27cbf95c55c.js +1 -68
  254. package/dist/91bd2b106800bd7812e2ab5a5fea985b.js +1 -110
  255. package/dist/92f4aab5c66f6269c7054c8fbcb3de13.js +1 -9
  256. package/dist/957970f69802c38a9092b9b6264cc1b9.js +1 -112
  257. package/dist/9600fed6a4508afbbcd2c75923d953c3.js +1 -125
  258. package/dist/962969a46fefcace3305abd4d6e14a2e.js +1 -9
  259. package/dist/964646d64dd3196a9c27fe302511414a.js +1 -10922
  260. package/dist/9671c350e11f1569edb5066cbfeb3334.js +1 -98
  261. package/dist/9696a4229fb787eeb25b26f1274b75ee.js +1 -9
  262. package/dist/97e72973d750ecb3bc2e75b75bf63c5b.js +1 -9000
  263. package/dist/9807cf1e443a7440371904b6525f37eb.js +1 -9
  264. package/dist/985d6749688c18f94994794f88492444.js +1 -278
  265. package/dist/99ade8b6895e3a1c3d6eb70583cb924e.js +1 -115
  266. package/dist/9b1fd9cf4206cc32e84150c49707d811.js +1 -9
  267. package/dist/9b8e2282f60f104ff3ace5b905af4d62.js +1 -64
  268. package/dist/9ff6d4a6592c0cb7d0b939113c3a6b31.js +1 -95
  269. package/dist/a164d0e40c4dfa485dcf8e6d5258d767.js +1 -122
  270. package/dist/a1c8660c5bcc6b6a43a7fb3c351174d9.js +1 -9
  271. package/dist/a2a705f6bc3a6827d6c94c5978aec36d.js +1 -243
  272. package/dist/a2c0fcb443c396b30a11fc1682a29c13.js +1 -115
  273. package/dist/a4306aa43824ec1a4ee422b59a851e6f.js +1 -2622
  274. package/dist/a4bedde07e392f8ebf64341b61f75df2.js +1 -9
  275. package/dist/a533e643002830be2da76c9527265860.js +1 -9
  276. package/dist/a5d364d12a8f7691339c497b2e725bcf.js +1 -145
  277. package/dist/a7824ec1ab22aeb22bb35ab8bf1ddc4a.js +1 -715
  278. package/dist/a934b622dd8bdcdcdc1dde985a07ac14.js +1 -36
  279. package/dist/a98ead014d010899b35ee25c7c225542.js +1 -411
  280. package/dist/aa0eee504d52a12d3a30bbd523afcc34.js +1 -9
  281. package/dist/aa5623ec68d23fedb9c9c115c7d99063.js +1 -9
  282. package/dist/aaddd877950d1e3bf1b3ef0fc0ff596e.js +1 -449
  283. package/dist/aaf5c3a4f1a188fd051577cea7b87209.js +1 -457
  284. package/dist/ab4b314445b23359319c14cce9a0e321.js +1 -3687
  285. package/dist/abb40a9a6ef0b2fe14c66dcadc9857a2.js +1 -248
  286. package/dist/ad215d7ba317c941cdcc96ae78e86666.js +1 -67
  287. package/dist/adc5e81257ed3f8d70d03cf79150eec1.js +1 -320
  288. package/dist/aedbf3a3ece39aab8c9f3b3a3779e79b.js +1 -115
  289. package/dist/af959c2a870f08dd8abccae97c9b9bae.js +1 -35
  290. package/dist/b0071564b0854c39e3de8b99d66e4dfd.js +1 -298
  291. package/dist/b02d982ccb1011197a5a24800b178a0a.js +1 -9
  292. package/dist/b0803f33b602bd3b26be70f259e38cee.js +1 -102
  293. package/dist/b1170472ae4b50e3b0070eb991e502fe.js +1 -9
  294. package/dist/b1ac30076824f72cdff7ea29ae0b6801.js +1 -489
  295. package/dist/b1f3f77a9279cdb38846ebe13c3438bc.js +1 -9
  296. package/dist/b20056c149af6b50c851ecfff90e0ccb.js +1 -2792
  297. package/dist/b20cd9acf45420fcacfd923754185663.js +1 -9
  298. package/dist/b25188cf2652d63136d5e54c38abf84e.js +1 -500
  299. package/dist/b2742fab9568b63c2274698af5d381fc.js +1 -135
  300. package/dist/b2ff96fbe6501ff45c37491b94c96c5f.js +1 -315
  301. package/dist/b33ef9b4202539d3690251cb8213a034.js +1 -9
  302. package/dist/b3bb2c8deddd8c2afcf73f6f5d711596.js +1 -61
  303. package/dist/b402b938ca2da72e0984a1360eda5897.js +1 -40
  304. package/dist/b460e24d77f9c0d8b21e65d899840adb.js +1 -363
  305. package/dist/b6a6a4adaab4f09a7835ff64a5096198.js +1 -80
  306. package/dist/b6df2278bd475169749bab512944b7ec.js +1 -207
  307. package/dist/b7b7be8216519adf62d75f123f9c6423.js +1 -1470
  308. package/dist/b808fb222140a85b23ebbe0fffa906d9.js +1 -9
  309. package/dist/b8197742452dd2e77090dde34cb2dc4d.js +1 -4105
  310. package/dist/b881dca9d9a80f61d87374b4bd5a2dd5.js +1 -9
  311. package/dist/b98206b2175363f1150c074608603942.js +1 -592
  312. package/dist/ba6b8b3e06cd9d0aee9c69278ee84647.js +1 -9
  313. package/dist/baa5bf4cfefed057a4657a1b02cfa114.js +1 -32
  314. package/dist/bb4d542cb170b3f7b27a42c69262975b.js +1 -1421
  315. package/dist/bb5bab7a675544fe31ddb7f4a77dffb9.js +1 -9
  316. package/dist/bc0551f89df16ee262a67c0431544a9e.js +1 -128
  317. package/dist/c0736a7477d7aac4c669bb94ccae25d9.js +1 -381
  318. package/dist/c0780e66c6b1ade0fa22283ce1f9c402.js +1 -1582
  319. package/dist/c1bc72d79cc6161590fc01c6b139fccd.js +1 -296
  320. package/dist/c32ec7d45ccd947b98fe458a8ca1405b.js +1 -412
  321. package/dist/c40023acde0f3d5f4806f5fccbb4284b.js +1 -160
  322. package/dist/c45445ab45defa960329c6f8e6224e57.js +1 -317
  323. package/dist/c51840077c684be0e7e13339f85cd4a9.js +1 -9
  324. package/dist/c530988d2b1966fd10a4d99fa3877e1b.js +1 -9
  325. package/dist/c631c95d9019218dfd22d028f215e1d1.js +1 -312
  326. package/dist/c728b4ef87cfd5f561d1601f0867c39d.js +1 -2509
  327. package/dist/c733414555a126e689832ffb55cc203f.js +1 -820
  328. package/dist/c797511423f91a877e7fdffa74d015cb.js +1 -914
  329. package/dist/c7ca9dccbac3af7ebc82b271dd2aa570.js +1 -400
  330. package/dist/c80e89199aef31e48addb2b35ea96365.js +1 -9
  331. package/dist/cb4175466ea600940f2927fa03a217e8.js +1 -472
  332. package/dist/cb652f200fc3dd740b2e7f678a9272ea.js +1 -9
  333. package/dist/cbdbd623038183a8c068dd24ecd90682.js +1 -9
  334. package/dist/cbdc4ca43a8c940a6c3f59a8b6f17df5.js +1 -9
  335. package/dist/ccde58de5468dd353dbee74d631ebdf0.js +1 -34
  336. package/dist/cd358d9acaaa7049d85b15ac766fc314.js +1 -311
  337. package/dist/cd9a17f94a922c7c88000b1b3cdd67df.js +1 -9
  338. package/dist/cda6c5c52fa5d595982da0fac9da25a5.js +1 -984
  339. package/dist/cf188b3f83735389d47bb12fc9f7069a.js +1 -9
  340. package/dist/cf3f6b1c74c72cb5d02870022dbc9f94.js +1 -9
  341. package/dist/cf90a39d245bf7e6c1b41c7a9a28f0a1.js +1 -681
  342. package/dist/chunk-207.cc1646ee6c7a19f6220b.js +2 -0
  343. package/dist/chunk-207.cc1646ee6c7a19f6220b.js.map +1 -0
  344. package/dist/chunk-404.e573ba4c4c7cedc843f3.js +2 -0
  345. package/dist/chunk-404.e573ba4c4c7cedc843f3.js.map +1 -0
  346. package/dist/chunk-actions.c7efc5f5036d72d3b972.js +2 -0
  347. package/dist/chunk-actions.c7efc5f5036d72d3b972.js.map +1 -0
  348. package/dist/chunk-code-editor.4932fdbfef27989069a5.js +2 -0
  349. package/dist/chunk-code-editor.4932fdbfef27989069a5.js.map +1 -0
  350. package/dist/{chunk-docs-actions.8a808416a2d69710472e.js → chunk-docs-actions.fe615fd8e3c8ff68c449.js} +2 -2
  351. package/dist/chunk-docs-actions.fe615fd8e3c8ff68c449.js.map +1 -0
  352. package/dist/chunk-vendor-icons.aae1dc235d12dd74b38e.js +1 -0
  353. package/dist/d04707d65591e86810ebc56d48b10810.js +1 -296
  354. package/dist/d1a58542777d072396d7cee5487304f9.js +1 -141
  355. package/dist/d1efdca26800423a363b769b1834cfcf.js +1 -223
  356. package/dist/d2a00e1726c71ca10fbaf4b9c4374458.js +1 -1003
  357. package/dist/d2fe7592ff2fdda099b2b6355abe8c06.js +1 -5240
  358. package/dist/d30fa4070abd6929228505790744e180.js +1 -279
  359. package/dist/d43ad5f9bad9a042b49b2592c7639c28.js +1 -9
  360. package/dist/d542dda7308361c34af2afb9b70d755a.js +1 -9
  361. package/dist/d5a6140d581e5c4eb200259ce372f40b.js +1 -9
  362. package/dist/d5f79987405c2169278f8de37bcc9d05.js +1 -9
  363. package/dist/d78d3b050ea95b068380d975fd413fd7.js +1 -9
  364. package/dist/d79b3962938d65fb85c6f844e86d92d9.js +1 -172
  365. package/dist/d7b57d5ebdcade0ce5e047509e06861a.js +1 -580
  366. package/dist/d7d616d4aa8fd3f51d681242853dcde9.js +1 -9
  367. package/dist/d83f2acd25388452582e5a4c727255b0.js +1 -174
  368. package/dist/da1c1b1569c4d5872c9a18c29f0b5c90.js +1 -3088
  369. package/dist/da55f4fe3daed3f79fc4565668ecf7dd.js +1 -97
  370. package/dist/db8ca5cfb6fe4aaef215f116f6991784.js +1 -9
  371. package/dist/dbc87324ecf271d088a2ab0823de9c5d.js +1 -75
  372. package/dist/dbd05051a3ecf6b10e2f7b8904153f2d.js +1 -3194
  373. package/dist/dc1eb6c1c92d7067c72b82b2833a7d2c.js +1 -2595
  374. package/dist/dcb197c0214e800da9d9436dfc9437d6.js +1 -162
  375. package/dist/ddbc961769cd2ff4d4a7a136168ebf4c.js +1 -9
  376. package/dist/de0fd4fd7c2d7a4887cbc99eed91f797.js +1 -9
  377. package/dist/df37029cdf8359ecac0aebdf4f257d03.js +1 -386
  378. package/dist/df5710d97a899b672060afaa8c4891c2.js +1 -316
  379. package/dist/dfb7dd1fab06b2403f76c23f80b15738.js +1 -1718
  380. package/dist/e07a0b284934d3a0e8c02c508edc9df1.js +1 -115
  381. package/dist/e0adad8a8579bf99f3e22f7c214a5c64.js +1 -9
  382. package/dist/e0e32c3798e8895695ce5b372a0c989f.js +1 -2166
  383. package/dist/e2b38a8393be2cf23f3894ace3efb1c3.js +1 -9
  384. package/dist/e3ba4b654313ae98884a6c9044197e09.js +1 -103
  385. package/dist/e4565878df49fd4ce3edd3f1022c1695.js +1 -244
  386. package/dist/e4917fa7632b01d28e99304d32d989f7.js +1 -9
  387. package/dist/e4968d8264b40c14f123f28419eb456d.js +1 -23
  388. package/dist/e6070e43daf8a9e5f13f515a5a03e66c.js +1 -498
  389. package/dist/e61779df91186b23e7adf2d1968b2708.js +1 -9
  390. package/dist/e6ad50b520736b595970c9e07029c3f1.js +1 -9
  391. package/dist/e6cf8898b285b71e2abe832717ac7060.js +1 -153
  392. package/dist/e6fae0b04a3000a57f22bb25325c8afe.js +1 -2635
  393. package/dist/e6fb5287a46e030336c006e3f50ade3a.js +1 -529
  394. package/dist/e7e1a807af3160b342e0a3550cf8f7c5.js +1 -9
  395. package/dist/e874d975c9128dc6eb9a513d088bed9f.js +1 -9
  396. package/dist/e8fa659263d5ca9e0d1be69c048133a8.js +1 -297
  397. package/dist/e97cfa120fde26da0359ca29afaf3171.js +1 -43
  398. package/dist/eaa55a522fb2cb2f0287711f42344984.js +1 -9
  399. package/dist/eba5ee3fb1f3e92af88c69e50b2a8fd1.js +1 -102
  400. package/dist/ec2d138afc9cc9e81c4c6ef36ed55228.js +1 -103
  401. package/dist/ec32839f8f3353e66b85450525fa3114.js +1 -2808
  402. package/dist/ecd02712f5a40fcdaa3bfa8190470024.js +1 -2596
  403. package/dist/ecd37b343c4dcc8dac849b1c680dcbef.js +1 -1010
  404. package/dist/ecdb4966f685f3e44b1f28fae46827a3.js +1 -9
  405. package/dist/ee694c1bcbdc9439e50f816c39fd1023.js +1 -2875
  406. package/dist/efc14cdf19554635e477781704353ec2.js +1 -9
  407. package/dist/f0548260c0ac6b0e7cdb8909df1a5333.js +1 -421
  408. package/dist/f0878cc386a608146dbc8fb3b6745c42.js +1 -422
  409. package/dist/f326f2f263b1498fedbe1d07d7254d10.js +1 -9
  410. package/dist/f3c7b9d832aa442df3d140f7697b4f62.js +1 -98
  411. package/dist/f42342b39da2c42adc65ebcf52839f90.js +1 -102
  412. package/dist/f4c53706e1721b08e8b2f650c8bd35c4.js +1 -166
  413. package/dist/f582d9feb91d31036d3dae4cdaea865f.js +1 -3533
  414. package/dist/f5bea0e1099339b99b21ee2d3c0fc489.js +1 -23
  415. package/dist/f7186078e00d958aa2b316483dfc7e1c.js +1 -1715
  416. package/dist/f79630d85284a7f6dadc25c1d256af0a.js +1 -33
  417. package/dist/f80efec9a63094f19edae0480a0f2cd8.js +1 -635
  418. package/dist/f90003058d7087f15baa27b80bf08c1d.js +1 -839
  419. package/dist/f980fd09c34c277299e2d3f83aebdba5.js +1 -102
  420. package/dist/fb59a7c154104a421146ab9e5bd71540.js +1 -462
  421. package/dist/fd40b62490e412d27bc67e660aacae19.js +1 -430
  422. package/dist/fd5bc50b18c9f46380cbe5ec1ac2127b.js +1 -9
  423. package/dist/fd5e2efd3b2d047abe8473f99c650a35.js +1 -677
  424. package/dist/fdf4d851b44839d8fdfa77b3419bce19.js +1 -204
  425. package/dist/ffd3b83e8b5878f4785591ff54b1dfff.js +1 -9
  426. package/dist/index.js +9 -9
  427. package/dist/index.js.map +1 -1
  428. package/package.json +1 -1
  429. package/dist/chunk-207.a88d16e56962fd4d2978.js +0 -2
  430. package/dist/chunk-207.a88d16e56962fd4d2978.js.map +0 -1
  431. package/dist/chunk-404.0ea933a6d9513f2665cf.js +0 -2
  432. package/dist/chunk-404.0ea933a6d9513f2665cf.js.map +0 -1
  433. package/dist/chunk-actions.1ad5d759ef5d8509c532.js +0 -2
  434. package/dist/chunk-actions.1ad5d759ef5d8509c532.js.map +0 -1
  435. package/dist/chunk-code-editor.c86cda6aae761ec82d57.js +0 -2
  436. package/dist/chunk-code-editor.c86cda6aae761ec82d57.js.map +0 -1
  437. package/dist/chunk-docs-actions.8a808416a2d69710472e.js.map +0 -1
  438. package/dist/chunk-vendor-icons.7f0d1996a77d090b3d9c.js +0 -1
@@ -1,3533 +1 @@
1
- ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) {
2
- "use strict";
3
-
4
- var oop = require("../lib/oop");
5
- var lang = require("../lib/lang");
6
- var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
7
- var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index";
8
- var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters";
9
- var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom";
10
- var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen";
11
- var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace";
12
-
13
- var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))";
14
- var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b";
15
- var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b";
16
-
17
- var CssHighlightRules = function() {
18
-
19
- var keywordMapper = this.createKeywordMapper({
20
- "support.function": supportFunction,
21
- "support.constant": supportConstant,
22
- "support.type": supportType,
23
- "support.constant.color": supportConstantColor,
24
- "support.constant.fonts": supportConstantFonts
25
- }, "text", true);
26
-
27
- this.$rules = {
28
- "start" : [{
29
- include : ["strings", "url", "comments"]
30
- }, {
31
- token: "paren.lparen",
32
- regex: "\\{",
33
- next: "ruleset"
34
- }, {
35
- token: "paren.rparen",
36
- regex: "\\}"
37
- }, {
38
- token: "string",
39
- regex: "@(?!viewport)",
40
- next: "media"
41
- }, {
42
- token: "keyword",
43
- regex: "#[a-z0-9-_]+"
44
- }, {
45
- token: "keyword",
46
- regex: "%"
47
- }, {
48
- token: "variable",
49
- regex: "\\.[a-z0-9-_]+"
50
- }, {
51
- token: "string",
52
- regex: ":[a-z0-9-_]+"
53
- }, {
54
- token : "constant.numeric",
55
- regex : numRe
56
- }, {
57
- token: "constant",
58
- regex: "[a-z0-9-_]+"
59
- }, {
60
- caseInsensitive: true
61
- }],
62
-
63
- "media": [{
64
- include : ["strings", "url", "comments"]
65
- }, {
66
- token: "paren.lparen",
67
- regex: "\\{",
68
- next: "start"
69
- }, {
70
- token: "paren.rparen",
71
- regex: "\\}",
72
- next: "start"
73
- }, {
74
- token: "string",
75
- regex: ";",
76
- next: "start"
77
- }, {
78
- token: "keyword",
79
- regex: "(?:media|supports|document|charset|import|namespace|media|supports|document"
80
- + "|page|font|keyframes|viewport|counter-style|font-feature-values"
81
- + "|swash|ornaments|annotation|stylistic|styleset|character-variant)"
82
- }],
83
-
84
- "comments" : [{
85
- token: "comment", // multi line comment
86
- regex: "\\/\\*",
87
- push: [{
88
- token : "comment",
89
- regex : "\\*\\/",
90
- next : "pop"
91
- }, {
92
- defaultToken : "comment"
93
- }]
94
- }],
95
-
96
- "ruleset" : [{
97
- regex : "-(webkit|ms|moz|o)-",
98
- token : "text"
99
- }, {
100
- token : "punctuation.operator",
101
- regex : "[:;]"
102
- }, {
103
- token : "paren.rparen",
104
- regex : "\\}",
105
- next : "start"
106
- }, {
107
- include : ["strings", "url", "comments"]
108
- }, {
109
- token : ["constant.numeric", "keyword"],
110
- regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
111
- }, {
112
- token : "constant.numeric",
113
- regex : numRe
114
- }, {
115
- token : "constant.numeric", // hex6 color
116
- regex : "#[a-f0-9]{6}"
117
- }, {
118
- token : "constant.numeric", // hex3 color
119
- regex : "#[a-f0-9]{3}"
120
- }, {
121
- token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
122
- regex : pseudoElements
123
- }, {
124
- token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
125
- regex : pseudoClasses
126
- }, {
127
- include: "url"
128
- }, {
129
- token : keywordMapper,
130
- regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
131
- }, {
132
- caseInsensitive: true
133
- }],
134
-
135
- url: [{
136
- token : "support.function",
137
- regex : "(?:url(:?-prefix)?|domain|regexp)\\(",
138
- push: [{
139
- token : "support.function",
140
- regex : "\\)",
141
- next : "pop"
142
- }, {
143
- defaultToken: "string"
144
- }]
145
- }],
146
-
147
- strings: [{
148
- token : "string.start",
149
- regex : "'",
150
- push : [{
151
- token : "string.end",
152
- regex : "'|$",
153
- next: "pop"
154
- }, {
155
- include : "escapes"
156
- }, {
157
- token : "constant.language.escape",
158
- regex : /\\$/,
159
- consumeLineEnd: true
160
- }, {
161
- defaultToken: "string"
162
- }]
163
- }, {
164
- token : "string.start",
165
- regex : '"',
166
- push : [{
167
- token : "string.end",
168
- regex : '"|$',
169
- next: "pop"
170
- }, {
171
- include : "escapes"
172
- }, {
173
- token : "constant.language.escape",
174
- regex : /\\$/,
175
- consumeLineEnd: true
176
- }, {
177
- defaultToken: "string"
178
- }]
179
- }],
180
- escapes: [{
181
- token : "constant.language.escape",
182
- regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
183
- }]
184
-
185
- };
186
-
187
- this.normalizeRules();
188
- };
189
-
190
- oop.inherits(CssHighlightRules, TextHighlightRules);
191
-
192
- exports.CssHighlightRules = CssHighlightRules;
193
-
194
- });
195
-
196
- ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
197
- "use strict";
198
-
199
- var oop = require("../lib/oop");
200
- var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
201
-
202
- var DocCommentHighlightRules = function() {
203
- this.$rules = {
204
- "start" : [ {
205
- token : "comment.doc.tag",
206
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
207
- },
208
- DocCommentHighlightRules.getTagRule(),
209
- {
210
- defaultToken : "comment.doc",
211
- caseInsensitive: true
212
- }]
213
- };
214
- };
215
-
216
- oop.inherits(DocCommentHighlightRules, TextHighlightRules);
217
-
218
- DocCommentHighlightRules.getTagRule = function(start) {
219
- return {
220
- token : "comment.doc.tag.storage.type",
221
- regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b"
222
- };
223
- };
224
-
225
- DocCommentHighlightRules.getStartRule = function(start) {
226
- return {
227
- token : "comment.doc", // doc comment
228
- regex : "\\/\\*(?=\\*)",
229
- next : start
230
- };
231
- };
232
-
233
- DocCommentHighlightRules.getEndRule = function (start) {
234
- return {
235
- token : "comment.doc", // closing comment
236
- regex : "\\*\\/",
237
- next : start
238
- };
239
- };
240
-
241
-
242
- exports.DocCommentHighlightRules = DocCommentHighlightRules;
243
-
244
- });
245
-
246
- ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) {
247
- "use strict";
248
-
249
- var oop = require("../lib/oop");
250
- var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
251
- var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
252
- var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*";
253
-
254
- var JavaScriptHighlightRules = function(options) {
255
- var keywordMapper = this.createKeywordMapper({
256
- "variable.language":
257
- "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors
258
- "Namespace|QName|XML|XMLList|" + // E4X
259
- "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
260
- "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
261
- "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
262
- "SyntaxError|TypeError|URIError|" +
263
- "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions
264
- "isNaN|parseFloat|parseInt|" +
265
- "JSON|Math|" + // Other
266
- "this|arguments|prototype|window|document" , // Pseudo
267
- "keyword":
268
- "const|yield|import|get|set|async|await|" +
269
- "break|case|catch|continue|default|delete|do|else|finally|for|function|" +
270
- "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" +
271
- "__parent__|__count__|escape|unescape|with|__proto__|" +
272
- "class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
273
- "storage.type":
274
- "const|let|var|function",
275
- "constant.language":
276
- "null|Infinity|NaN|undefined",
277
- "support.function":
278
- "alert",
279
- "constant.language.boolean": "true|false"
280
- }, "identifier");
281
- var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void";
282
-
283
- var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
284
- "u[0-9a-fA-F]{4}|" + // unicode
285
- "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode
286
- "[0-2][0-7]{0,2}|" + // oct
287
- "3[0-7][0-7]?|" + // oct
288
- "[4-7][0-7]?|" + //oct
289
- ".)";
290
-
291
- this.$rules = {
292
- "no_regex" : [
293
- DocCommentHighlightRules.getStartRule("doc-start"),
294
- comments("no_regex"),
295
- {
296
- token : "string",
297
- regex : "'(?=.)",
298
- next : "qstring"
299
- }, {
300
- token : "string",
301
- regex : '"(?=.)',
302
- next : "qqstring"
303
- }, {
304
- token : "constant.numeric", // hexadecimal, octal and binary
305
- regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
306
- }, {
307
- token : "constant.numeric", // decimal integers and floats
308
- regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
309
- }, {
310
- token : [
311
- "storage.type", "punctuation.operator", "support.function",
312
- "punctuation.operator", "entity.name.function", "text","keyword.operator"
313
- ],
314
- regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)",
315
- next: "function_arguments"
316
- }, {
317
- token : [
318
- "storage.type", "punctuation.operator", "entity.name.function", "text",
319
- "keyword.operator", "text", "storage.type", "text", "paren.lparen"
320
- ],
321
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
322
- next: "function_arguments"
323
- }, {
324
- token : [
325
- "entity.name.function", "text", "keyword.operator", "text", "storage.type",
326
- "text", "paren.lparen"
327
- ],
328
- regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
329
- next: "function_arguments"
330
- }, {
331
- token : [
332
- "storage.type", "punctuation.operator", "entity.name.function", "text",
333
- "keyword.operator", "text",
334
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
335
- ],
336
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
337
- next: "function_arguments"
338
- }, {
339
- token : [
340
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
341
- ],
342
- regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
343
- next: "function_arguments"
344
- }, {
345
- token : [
346
- "entity.name.function", "text", "punctuation.operator",
347
- "text", "storage.type", "text", "paren.lparen"
348
- ],
349
- regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
350
- next: "function_arguments"
351
- }, {
352
- token : [
353
- "text", "text", "storage.type", "text", "paren.lparen"
354
- ],
355
- regex : "(:)(\\s*)(function)(\\s*)(\\()",
356
- next: "function_arguments"
357
- }, {
358
- token : "keyword",
359
- regex : "from(?=\\s*('|\"))"
360
- }, {
361
- token : "keyword",
362
- regex : "(?:" + kwBeforeRe + ")\\b",
363
- next : "start"
364
- }, {
365
- token : ["support.constant"],
366
- regex : /that\b/
367
- }, {
368
- token : ["storage.type", "punctuation.operator", "support.function.firebug"],
369
- regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
370
- }, {
371
- token : keywordMapper,
372
- regex : identifierRe
373
- }, {
374
- token : "punctuation.operator",
375
- regex : /[.](?![.])/,
376
- next : "property"
377
- }, {
378
- token : "storage.type",
379
- regex : /=>/,
380
- next : "start"
381
- }, {
382
- token : "keyword.operator",
383
- regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
384
- next : "start"
385
- }, {
386
- token : "punctuation.operator",
387
- regex : /[?:,;.]/,
388
- next : "start"
389
- }, {
390
- token : "paren.lparen",
391
- regex : /[\[({]/,
392
- next : "start"
393
- }, {
394
- token : "paren.rparen",
395
- regex : /[\])}]/
396
- }, {
397
- token: "comment",
398
- regex: /^#!.*$/
399
- }
400
- ],
401
- property: [{
402
- token : "text",
403
- regex : "\\s+"
404
- }, {
405
- token : [
406
- "storage.type", "punctuation.operator", "entity.name.function", "text",
407
- "keyword.operator", "text",
408
- "storage.type", "text", "entity.name.function", "text", "paren.lparen"
409
- ],
410
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
411
- next: "function_arguments"
412
- }, {
413
- token : "punctuation.operator",
414
- regex : /[.](?![.])/
415
- }, {
416
- token : "support.function",
417
- regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
418
- }, {
419
- token : "support.function.dom",
420
- regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
421
- }, {
422
- token : "support.constant",
423
- regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
424
- }, {
425
- token : "identifier",
426
- regex : identifierRe
427
- }, {
428
- regex: "",
429
- token: "empty",
430
- next: "no_regex"
431
- }
432
- ],
433
- "start": [
434
- DocCommentHighlightRules.getStartRule("doc-start"),
435
- comments("start"),
436
- {
437
- token: "string.regexp",
438
- regex: "\\/",
439
- next: "regex"
440
- }, {
441
- token : "text",
442
- regex : "\\s+|^$",
443
- next : "start"
444
- }, {
445
- token: "empty",
446
- regex: "",
447
- next: "no_regex"
448
- }
449
- ],
450
- "regex": [
451
- {
452
- token: "regexp.keyword.operator",
453
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
454
- }, {
455
- token: "string.regexp",
456
- regex: "/[sxngimy]*",
457
- next: "no_regex"
458
- }, {
459
- token : "invalid",
460
- regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
461
- }, {
462
- token : "constant.language.escape",
463
- regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
464
- }, {
465
- token : "constant.language.delimiter",
466
- regex: /\|/
467
- }, {
468
- token: "constant.language.escape",
469
- regex: /\[\^?/,
470
- next: "regex_character_class"
471
- }, {
472
- token: "empty",
473
- regex: "$",
474
- next: "no_regex"
475
- }, {
476
- defaultToken: "string.regexp"
477
- }
478
- ],
479
- "regex_character_class": [
480
- {
481
- token: "regexp.charclass.keyword.operator",
482
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
483
- }, {
484
- token: "constant.language.escape",
485
- regex: "]",
486
- next: "regex"
487
- }, {
488
- token: "constant.language.escape",
489
- regex: "-"
490
- }, {
491
- token: "empty",
492
- regex: "$",
493
- next: "no_regex"
494
- }, {
495
- defaultToken: "string.regexp.charachterclass"
496
- }
497
- ],
498
- "function_arguments": [
499
- {
500
- token: "variable.parameter",
501
- regex: identifierRe
502
- }, {
503
- token: "punctuation.operator",
504
- regex: "[, ]+"
505
- }, {
506
- token: "punctuation.operator",
507
- regex: "$"
508
- }, {
509
- token: "empty",
510
- regex: "",
511
- next: "no_regex"
512
- }
513
- ],
514
- "qqstring" : [
515
- {
516
- token : "constant.language.escape",
517
- regex : escapedRe
518
- }, {
519
- token : "string",
520
- regex : "\\\\$",
521
- consumeLineEnd : true
522
- }, {
523
- token : "string",
524
- regex : '"|$',
525
- next : "no_regex"
526
- }, {
527
- defaultToken: "string"
528
- }
529
- ],
530
- "qstring" : [
531
- {
532
- token : "constant.language.escape",
533
- regex : escapedRe
534
- }, {
535
- token : "string",
536
- regex : "\\\\$",
537
- consumeLineEnd : true
538
- }, {
539
- token : "string",
540
- regex : "'|$",
541
- next : "no_regex"
542
- }, {
543
- defaultToken: "string"
544
- }
545
- ]
546
- };
547
-
548
-
549
- if (!options || !options.noES6) {
550
- this.$rules.no_regex.unshift({
551
- regex: "[{}]", onMatch: function(val, state, stack) {
552
- this.next = val == "{" ? this.nextState : "";
553
- if (val == "{" && stack.length) {
554
- stack.unshift("start", state);
555
- }
556
- else if (val == "}" && stack.length) {
557
- stack.shift();
558
- this.next = stack.shift();
559
- if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1)
560
- return "paren.quasi.end";
561
- }
562
- return val == "{" ? "paren.lparen" : "paren.rparen";
563
- },
564
- nextState: "start"
565
- }, {
566
- token : "string.quasi.start",
567
- regex : /`/,
568
- push : [{
569
- token : "constant.language.escape",
570
- regex : escapedRe
571
- }, {
572
- token : "paren.quasi.start",
573
- regex : /\${/,
574
- push : "start"
575
- }, {
576
- token : "string.quasi.end",
577
- regex : /`/,
578
- next : "pop"
579
- }, {
580
- defaultToken: "string.quasi"
581
- }]
582
- });
583
-
584
- if (!options || options.jsx != false)
585
- JSX.call(this);
586
- }
587
-
588
- this.embedRules(DocCommentHighlightRules, "doc-",
589
- [ DocCommentHighlightRules.getEndRule("no_regex") ]);
590
-
591
- this.normalizeRules();
592
- };
593
-
594
- oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
595
-
596
- function JSX() {
597
- var tagRegex = identifierRe.replace("\\d", "\\d\\-");
598
- var jsxTag = {
599
- onMatch : function(val, state, stack) {
600
- var offset = val.charAt(1) == "/" ? 2 : 1;
601
- if (offset == 1) {
602
- if (state != this.nextState)
603
- stack.unshift(this.next, this.nextState, 0);
604
- else
605
- stack.unshift(this.next);
606
- stack[2]++;
607
- } else if (offset == 2) {
608
- if (state == this.nextState) {
609
- stack[1]--;
610
- if (!stack[1] || stack[1] < 0) {
611
- stack.shift();
612
- stack.shift();
613
- }
614
- }
615
- }
616
- return [{
617
- type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml",
618
- value: val.slice(0, offset)
619
- }, {
620
- type: "meta.tag.tag-name.xml",
621
- value: val.substr(offset)
622
- }];
623
- },
624
- regex : "</?" + tagRegex + "",
625
- next: "jsxAttributes",
626
- nextState: "jsx"
627
- };
628
- this.$rules.start.unshift(jsxTag);
629
- var jsxJsRule = {
630
- regex: "{",
631
- token: "paren.quasi.start",
632
- push: "start"
633
- };
634
- this.$rules.jsx = [
635
- jsxJsRule,
636
- jsxTag,
637
- {include : "reference"},
638
- {defaultToken: "string"}
639
- ];
640
- this.$rules.jsxAttributes = [{
641
- token : "meta.tag.punctuation.tag-close.xml",
642
- regex : "/?>",
643
- onMatch : function(value, currentState, stack) {
644
- if (currentState == stack[0])
645
- stack.shift();
646
- if (value.length == 2) {
647
- if (stack[0] == this.nextState)
648
- stack[1]--;
649
- if (!stack[1] || stack[1] < 0) {
650
- stack.splice(0, 2);
651
- }
652
- }
653
- this.next = stack[0] || "start";
654
- return [{type: this.token, value: value}];
655
- },
656
- nextState: "jsx"
657
- },
658
- jsxJsRule,
659
- comments("jsxAttributes"),
660
- {
661
- token : "entity.other.attribute-name.xml",
662
- regex : tagRegex
663
- }, {
664
- token : "keyword.operator.attribute-equals.xml",
665
- regex : "="
666
- }, {
667
- token : "text.tag-whitespace.xml",
668
- regex : "\\s+"
669
- }, {
670
- token : "string.attribute-value.xml",
671
- regex : "'",
672
- stateName : "jsx_attr_q",
673
- push : [
674
- {token : "string.attribute-value.xml", regex: "'", next: "pop"},
675
- {include : "reference"},
676
- {defaultToken : "string.attribute-value.xml"}
677
- ]
678
- }, {
679
- token : "string.attribute-value.xml",
680
- regex : '"',
681
- stateName : "jsx_attr_qq",
682
- push : [
683
- {token : "string.attribute-value.xml", regex: '"', next: "pop"},
684
- {include : "reference"},
685
- {defaultToken : "string.attribute-value.xml"}
686
- ]
687
- },
688
- jsxTag
689
- ];
690
- this.$rules.reference = [{
691
- token : "constant.language.escape.reference.xml",
692
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
693
- }];
694
- }
695
-
696
- function comments(next) {
697
- return [
698
- {
699
- token : "comment", // multi line comment
700
- regex : /\/\*/,
701
- next: [
702
- DocCommentHighlightRules.getTagRule(),
703
- {token : "comment", regex : "\\*\\/", next : next || "pop"},
704
- {defaultToken : "comment", caseInsensitive: true}
705
- ]
706
- }, {
707
- token : "comment",
708
- regex : "\\/\\/",
709
- next: [
710
- DocCommentHighlightRules.getTagRule(),
711
- {token : "comment", regex : "$|^", next : next || "pop"},
712
- {defaultToken : "comment", caseInsensitive: true}
713
- ]
714
- }
715
- ];
716
- }
717
- exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
718
- });
719
-
720
- ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
721
- "use strict";
722
-
723
- var oop = require("../lib/oop");
724
- var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
725
-
726
- var XmlHighlightRules = function(normalize) {
727
- var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*";
728
-
729
- this.$rules = {
730
- start : [
731
- {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"},
732
- {
733
- token : ["punctuation.instruction.xml", "keyword.instruction.xml"],
734
- regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction"
735
- },
736
- {token : "comment.start.xml", regex : "<\\!--", next : "comment"},
737
- {
738
- token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
739
- regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true
740
- },
741
- {include : "tag"},
742
- {token : "text.end-tag-open.xml", regex: "</"},
743
- {token : "text.tag-open.xml", regex: "<"},
744
- {include : "reference"},
745
- {defaultToken : "text.xml"}
746
- ],
747
-
748
- processing_instruction : [{
749
- token : "entity.other.attribute-name.decl-attribute-name.xml",
750
- regex : tagRegex
751
- }, {
752
- token : "keyword.operator.decl-attribute-equals.xml",
753
- regex : "="
754
- }, {
755
- include: "whitespace"
756
- }, {
757
- include: "string"
758
- }, {
759
- token : "punctuation.xml-decl.xml",
760
- regex : "\\?>",
761
- next : "start"
762
- }],
763
-
764
- doctype : [
765
- {include : "whitespace"},
766
- {include : "string"},
767
- {token : "xml-pe.doctype.xml", regex : ">", next : "start"},
768
- {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"},
769
- {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"}
770
- ],
771
-
772
- int_subset : [{
773
- token : "text.xml",
774
- regex : "\\s+"
775
- }, {
776
- token: "punctuation.int-subset.xml",
777
- regex: "]",
778
- next: "pop"
779
- }, {
780
- token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
781
- regex : "(<\\!)(" + tagRegex + ")",
782
- push : [{
783
- token : "text",
784
- regex : "\\s+"
785
- },
786
- {
787
- token : "punctuation.markup-decl.xml",
788
- regex : ">",
789
- next : "pop"
790
- },
791
- {include : "string"}]
792
- }],
793
-
794
- cdata : [
795
- {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"},
796
- {token : "text.xml", regex : "\\s+"},
797
- {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"}
798
- ],
799
-
800
- comment : [
801
- {token : "comment.end.xml", regex : "-->", next : "start"},
802
- {defaultToken : "comment.xml"}
803
- ],
804
-
805
- reference : [{
806
- token : "constant.language.escape.reference.xml",
807
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
808
- }],
809
-
810
- attr_reference : [{
811
- token : "constant.language.escape.reference.attribute-value.xml",
812
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
813
- }],
814
-
815
- tag : [{
816
- token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
817
- regex : "(?:(<)|(</))((?:" + tagRegex + ":)?" + tagRegex + ")",
818
- next: [
819
- {include : "attributes"},
820
- {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : "start"}
821
- ]
822
- }],
823
-
824
- tag_whitespace : [
825
- {token : "text.tag-whitespace.xml", regex : "\\s+"}
826
- ],
827
- whitespace : [
828
- {token : "text.whitespace.xml", regex : "\\s+"}
829
- ],
830
- string: [{
831
- token : "string.xml",
832
- regex : "'",
833
- push : [
834
- {token : "string.xml", regex: "'", next: "pop"},
835
- {defaultToken : "string.xml"}
836
- ]
837
- }, {
838
- token : "string.xml",
839
- regex : '"',
840
- push : [
841
- {token : "string.xml", regex: '"', next: "pop"},
842
- {defaultToken : "string.xml"}
843
- ]
844
- }],
845
-
846
- attributes: [{
847
- token : "entity.other.attribute-name.xml",
848
- regex : tagRegex
849
- }, {
850
- token : "keyword.operator.attribute-equals.xml",
851
- regex : "="
852
- }, {
853
- include: "tag_whitespace"
854
- }, {
855
- include: "attribute_value"
856
- }],
857
-
858
- attribute_value: [{
859
- token : "string.attribute-value.xml",
860
- regex : "'",
861
- push : [
862
- {token : "string.attribute-value.xml", regex: "'", next: "pop"},
863
- {include : "attr_reference"},
864
- {defaultToken : "string.attribute-value.xml"}
865
- ]
866
- }, {
867
- token : "string.attribute-value.xml",
868
- regex : '"',
869
- push : [
870
- {token : "string.attribute-value.xml", regex: '"', next: "pop"},
871
- {include : "attr_reference"},
872
- {defaultToken : "string.attribute-value.xml"}
873
- ]
874
- }]
875
- };
876
-
877
- if (this.constructor === XmlHighlightRules)
878
- this.normalizeRules();
879
- };
880
-
881
-
882
- (function() {
883
-
884
- this.embedTagRules = function(HighlightRules, prefix, tag){
885
- this.$rules.tag.unshift({
886
- token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"],
887
- regex : "(<)(" + tag + "(?=\\s|>|$))",
888
- next: [
889
- {include : "attributes"},
890
- {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"}
891
- ]
892
- });
893
-
894
- this.$rules[tag + "-end"] = [
895
- {include : "attributes"},
896
- {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start",
897
- onMatch : function(value, currentState, stack) {
898
- stack.splice(0);
899
- return this.token;
900
- }}
901
- ];
902
-
903
- this.embedRules(HighlightRules, prefix, [{
904
- token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"],
905
- regex : "(</)(" + tag + "(?=\\s|>|$))",
906
- next: tag + "-end"
907
- }, {
908
- token: "string.cdata.xml",
909
- regex : "<\\!\\[CDATA\\["
910
- }, {
911
- token: "string.cdata.xml",
912
- regex : "\\]\\]>"
913
- }]);
914
- };
915
-
916
- }).call(TextHighlightRules.prototype);
917
-
918
- oop.inherits(XmlHighlightRules, TextHighlightRules);
919
-
920
- exports.XmlHighlightRules = XmlHighlightRules;
921
- });
922
-
923
- ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) {
924
- "use strict";
925
-
926
- var oop = require("../lib/oop");
927
- var lang = require("../lib/lang");
928
- var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
929
- var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
930
- var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules;
931
-
932
- var tagMap = lang.createMap({
933
- a : 'anchor',
934
- button : 'form',
935
- form : 'form',
936
- img : 'image',
937
- input : 'form',
938
- label : 'form',
939
- option : 'form',
940
- script : 'script',
941
- select : 'form',
942
- textarea : 'form',
943
- style : 'style',
944
- table : 'table',
945
- tbody : 'table',
946
- td : 'table',
947
- tfoot : 'table',
948
- th : 'table',
949
- tr : 'table'
950
- });
951
-
952
- var HtmlHighlightRules = function() {
953
- XmlHighlightRules.call(this);
954
-
955
- this.addRules({
956
- attributes: [{
957
- include : "tag_whitespace"
958
- }, {
959
- token : "entity.other.attribute-name.xml",
960
- regex : "[-_a-zA-Z0-9:.]+"
961
- }, {
962
- token : "keyword.operator.attribute-equals.xml",
963
- regex : "=",
964
- push : [{
965
- include: "tag_whitespace"
966
- }, {
967
- token : "string.unquoted.attribute-value.html",
968
- regex : "[^<>='\"`\\s]+",
969
- next : "pop"
970
- }, {
971
- token : "empty",
972
- regex : "",
973
- next : "pop"
974
- }]
975
- }, {
976
- include : "attribute_value"
977
- }],
978
- tag: [{
979
- token : function(start, tag) {
980
- var group = tagMap[tag];
981
- return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml",
982
- "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"];
983
- },
984
- regex : "(</?)([-_a-zA-Z0-9:.]+)",
985
- next: "tag_stuff"
986
- }],
987
- tag_stuff: [
988
- {include : "attributes"},
989
- {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : "start"}
990
- ]
991
- });
992
-
993
- this.embedTagRules(CssHighlightRules, "css-", "style");
994
- this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script");
995
-
996
- if (this.constructor === HtmlHighlightRules)
997
- this.normalizeRules();
998
- };
999
-
1000
- oop.inherits(HtmlHighlightRules, XmlHighlightRules);
1001
-
1002
- exports.HtmlHighlightRules = HtmlHighlightRules;
1003
- });
1004
-
1005
- ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) {
1006
- "use strict";
1007
-
1008
- var Range = require("../range").Range;
1009
-
1010
- var MatchingBraceOutdent = function() {};
1011
-
1012
- (function() {
1013
-
1014
- this.checkOutdent = function(line, input) {
1015
- if (! /^\s+$/.test(line))
1016
- return false;
1017
-
1018
- return /^\s*\}/.test(input);
1019
- };
1020
-
1021
- this.autoOutdent = function(doc, row) {
1022
- var line = doc.getLine(row);
1023
- var match = line.match(/^(\s*\})/);
1024
-
1025
- if (!match) return 0;
1026
-
1027
- var column = match[1].length;
1028
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
1029
-
1030
- if (!openBracePos || openBracePos.row == row) return 0;
1031
-
1032
- var indent = this.$getIndent(doc.getLine(openBracePos.row));
1033
- doc.replace(new Range(row, 0, row, column-1), indent);
1034
- };
1035
-
1036
- this.$getIndent = function(line) {
1037
- return line.match(/^\s*/)[0];
1038
- };
1039
-
1040
- }).call(MatchingBraceOutdent.prototype);
1041
-
1042
- exports.MatchingBraceOutdent = MatchingBraceOutdent;
1043
- });
1044
-
1045
- ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) {
1046
- "use strict";
1047
-
1048
- var oop = require("../../lib/oop");
1049
- var Range = require("../../range").Range;
1050
- var BaseFoldMode = require("./fold_mode").FoldMode;
1051
-
1052
- var FoldMode = exports.FoldMode = function(commentRegex) {
1053
- if (commentRegex) {
1054
- this.foldingStartMarker = new RegExp(
1055
- this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)
1056
- );
1057
- this.foldingStopMarker = new RegExp(
1058
- this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)
1059
- );
1060
- }
1061
- };
1062
- oop.inherits(FoldMode, BaseFoldMode);
1063
-
1064
- (function() {
1065
-
1066
- this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/;
1067
- this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/;
1068
- this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/;
1069
- this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/;
1070
- this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/;
1071
- this._getFoldWidgetBase = this.getFoldWidget;
1072
- this.getFoldWidget = function(session, foldStyle, row) {
1073
- var line = session.getLine(row);
1074
-
1075
- if (this.singleLineBlockCommentRe.test(line)) {
1076
- if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))
1077
- return "";
1078
- }
1079
-
1080
- var fw = this._getFoldWidgetBase(session, foldStyle, row);
1081
-
1082
- if (!fw && this.startRegionRe.test(line))
1083
- return "start"; // lineCommentRegionStart
1084
-
1085
- return fw;
1086
- };
1087
-
1088
- this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {
1089
- var line = session.getLine(row);
1090
-
1091
- if (this.startRegionRe.test(line))
1092
- return this.getCommentRegionBlock(session, line, row);
1093
-
1094
- var match = line.match(this.foldingStartMarker);
1095
- if (match) {
1096
- var i = match.index;
1097
-
1098
- if (match[1])
1099
- return this.openingBracketBlock(session, match[1], row, i);
1100
-
1101
- var range = session.getCommentFoldRange(row, i + match[0].length, 1);
1102
-
1103
- if (range && !range.isMultiLine()) {
1104
- if (forceMultiline) {
1105
- range = this.getSectionRange(session, row);
1106
- } else if (foldStyle != "all")
1107
- range = null;
1108
- }
1109
-
1110
- return range;
1111
- }
1112
-
1113
- if (foldStyle === "markbegin")
1114
- return;
1115
-
1116
- var match = line.match(this.foldingStopMarker);
1117
- if (match) {
1118
- var i = match.index + match[0].length;
1119
-
1120
- if (match[1])
1121
- return this.closingBracketBlock(session, match[1], row, i);
1122
-
1123
- return session.getCommentFoldRange(row, i, -1);
1124
- }
1125
- };
1126
-
1127
- this.getSectionRange = function(session, row) {
1128
- var line = session.getLine(row);
1129
- var startIndent = line.search(/\S/);
1130
- var startRow = row;
1131
- var startColumn = line.length;
1132
- row = row + 1;
1133
- var endRow = row;
1134
- var maxRow = session.getLength();
1135
- while (++row < maxRow) {
1136
- line = session.getLine(row);
1137
- var indent = line.search(/\S/);
1138
- if (indent === -1)
1139
- continue;
1140
- if (startIndent > indent)
1141
- break;
1142
- var subRange = this.getFoldWidgetRange(session, "all", row);
1143
-
1144
- if (subRange) {
1145
- if (subRange.start.row <= startRow) {
1146
- break;
1147
- } else if (subRange.isMultiLine()) {
1148
- row = subRange.end.row;
1149
- } else if (startIndent == indent) {
1150
- break;
1151
- }
1152
- }
1153
- endRow = row;
1154
- }
1155
-
1156
- return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);
1157
- };
1158
- this.getCommentRegionBlock = function(session, line, row) {
1159
- var startColumn = line.search(/\s*$/);
1160
- var maxRow = session.getLength();
1161
- var startRow = row;
1162
-
1163
- var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;
1164
- var depth = 1;
1165
- while (++row < maxRow) {
1166
- line = session.getLine(row);
1167
- var m = re.exec(line);
1168
- if (!m) continue;
1169
- if (m[1]) depth--;
1170
- else depth++;
1171
-
1172
- if (!depth) break;
1173
- }
1174
-
1175
- var endRow = row;
1176
- if (endRow > startRow) {
1177
- return new Range(startRow, startColumn, endRow, line.length);
1178
- }
1179
- };
1180
-
1181
- }).call(FoldMode.prototype);
1182
-
1183
- });
1184
-
1185
- ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) {
1186
- "use strict";
1187
-
1188
- var oop = require("../lib/oop");
1189
- var TextMode = require("./text").Mode;
1190
- var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
1191
- var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
1192
- var WorkerClient = require("../worker/worker_client").WorkerClient;
1193
- var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
1194
- var CStyleFoldMode = require("./folding/cstyle").FoldMode;
1195
-
1196
- var Mode = function() {
1197
- this.HighlightRules = JavaScriptHighlightRules;
1198
-
1199
- this.$outdent = new MatchingBraceOutdent();
1200
- this.$behaviour = new CstyleBehaviour();
1201
- this.foldingRules = new CStyleFoldMode();
1202
- };
1203
- oop.inherits(Mode, TextMode);
1204
-
1205
- (function() {
1206
-
1207
- this.lineCommentStart = "//";
1208
- this.blockComment = {start: "/*", end: "*/"};
1209
- this.$quotes = {'"': '"', "'": "'", "`": "`"};
1210
-
1211
- this.getNextLineIndent = function(state, line, tab) {
1212
- var indent = this.$getIndent(line);
1213
-
1214
- var tokenizedLine = this.getTokenizer().getLineTokens(line, state);
1215
- var tokens = tokenizedLine.tokens;
1216
- var endState = tokenizedLine.state;
1217
-
1218
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
1219
- return indent;
1220
- }
1221
-
1222
- if (state == "start" || state == "no_regex") {
1223
- var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
1224
- if (match) {
1225
- indent += tab;
1226
- }
1227
- } else if (state == "doc-start") {
1228
- if (endState == "start" || endState == "no_regex") {
1229
- return "";
1230
- }
1231
- var match = line.match(/^\s*(\/?)\*/);
1232
- if (match) {
1233
- if (match[1]) {
1234
- indent += " ";
1235
- }
1236
- indent += "* ";
1237
- }
1238
- }
1239
-
1240
- return indent;
1241
- };
1242
-
1243
- this.checkOutdent = function(state, line, input) {
1244
- return this.$outdent.checkOutdent(line, input);
1245
- };
1246
-
1247
- this.autoOutdent = function(state, doc, row) {
1248
- this.$outdent.autoOutdent(doc, row);
1249
- };
1250
-
1251
- this.createWorker = function(session) {
1252
- var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
1253
- worker.attachToDocument(session.getDocument());
1254
-
1255
- worker.on("annotate", function(results) {
1256
- session.setAnnotations(results.data);
1257
- });
1258
-
1259
- worker.on("terminate", function() {
1260
- session.clearAnnotations();
1261
- });
1262
-
1263
- return worker;
1264
- };
1265
-
1266
- this.$id = "ace/mode/javascript";
1267
- this.snippetFileId = "ace/snippets/javascript";
1268
- }).call(Mode.prototype);
1269
-
1270
- exports.Mode = Mode;
1271
- });
1272
-
1273
- ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) {
1274
- "use strict";
1275
-
1276
- var propertyMap = {
1277
- "background": {"#$0": 1},
1278
- "background-color": {"#$0": 1, "transparent": 1, "fixed": 1},
1279
- "background-image": {"url('/$0')": 1},
1280
- "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1},
1281
- "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2},
1282
- "background-attachment": {"scroll": 1, "fixed": 1},
1283
- "background-size": {"cover": 1, "contain": 1},
1284
- "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1},
1285
- "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1},
1286
- "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1},
1287
- "border-color": {"#$0": 1},
1288
- "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2},
1289
- "border-collapse": {"collapse": 1, "separate": 1},
1290
- "bottom": {"px": 1, "em": 1, "%": 1},
1291
- "clear": {"left": 1, "right": 1, "both": 1, "none": 1},
1292
- "color": {"#$0": 1, "rgb(#$00,0,0)": 1},
1293
- "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1},
1294
- "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1},
1295
- "empty-cells": {"show": 1, "hide": 1},
1296
- "float": {"left": 1, "right": 1, "none": 1},
1297
- "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1},
1298
- "font-size": {"px": 1, "em": 1, "%": 1},
1299
- "font-weight": {"bold": 1, "normal": 1},
1300
- "font-style": {"italic": 1, "normal": 1},
1301
- "font-variant": {"normal": 1, "small-caps": 1},
1302
- "height": {"px": 1, "em": 1, "%": 1},
1303
- "left": {"px": 1, "em": 1, "%": 1},
1304
- "letter-spacing": {"normal": 1},
1305
- "line-height": {"normal": 1},
1306
- "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1},
1307
- "margin": {"px": 1, "em": 1, "%": 1},
1308
- "margin-right": {"px": 1, "em": 1, "%": 1},
1309
- "margin-left": {"px": 1, "em": 1, "%": 1},
1310
- "margin-top": {"px": 1, "em": 1, "%": 1},
1311
- "margin-bottom": {"px": 1, "em": 1, "%": 1},
1312
- "max-height": {"px": 1, "em": 1, "%": 1},
1313
- "max-width": {"px": 1, "em": 1, "%": 1},
1314
- "min-height": {"px": 1, "em": 1, "%": 1},
1315
- "min-width": {"px": 1, "em": 1, "%": 1},
1316
- "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1},
1317
- "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1},
1318
- "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1},
1319
- "padding": {"px": 1, "em": 1, "%": 1},
1320
- "padding-top": {"px": 1, "em": 1, "%": 1},
1321
- "padding-right": {"px": 1, "em": 1, "%": 1},
1322
- "padding-bottom": {"px": 1, "em": 1, "%": 1},
1323
- "padding-left": {"px": 1, "em": 1, "%": 1},
1324
- "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1},
1325
- "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1},
1326
- "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1},
1327
- "right": {"px": 1, "em": 1, "%": 1},
1328
- "table-layout": {"fixed": 1, "auto": 1},
1329
- "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1},
1330
- "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1},
1331
- "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1},
1332
- "top": {"px": 1, "em": 1, "%": 1},
1333
- "vertical-align": {"top": 1, "bottom": 1},
1334
- "visibility": {"hidden": 1, "visible": 1},
1335
- "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1},
1336
- "width": {"px": 1, "em": 1, "%": 1},
1337
- "word-spacing": {"normal": 1},
1338
- "filter": {"alpha(opacity=$0100)": 1},
1339
-
1340
- "text-shadow": {"$02px 2px 2px #777": 1},
1341
- "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1},
1342
- "-moz-border-radius": 1,
1343
- "-moz-border-radius-topright": 1,
1344
- "-moz-border-radius-bottomright": 1,
1345
- "-moz-border-radius-topleft": 1,
1346
- "-moz-border-radius-bottomleft": 1,
1347
- "-webkit-border-radius": 1,
1348
- "-webkit-border-top-right-radius": 1,
1349
- "-webkit-border-top-left-radius": 1,
1350
- "-webkit-border-bottom-right-radius": 1,
1351
- "-webkit-border-bottom-left-radius": 1,
1352
- "-moz-box-shadow": 1,
1353
- "-webkit-box-shadow": 1,
1354
- "transform": {"rotate($00deg)": 1, "skew($00deg)": 1},
1355
- "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1},
1356
- "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 }
1357
- };
1358
-
1359
- var CssCompletions = function() {
1360
-
1361
- };
1362
-
1363
- (function() {
1364
-
1365
- this.completionsDefined = false;
1366
-
1367
- this.defineCompletions = function() {
1368
- if (document) {
1369
- var style = document.createElement('c').style;
1370
-
1371
- for (var i in style) {
1372
- if (typeof style[i] !== 'string')
1373
- continue;
1374
-
1375
- var name = i.replace(/[A-Z]/g, function(x) {
1376
- return '-' + x.toLowerCase();
1377
- });
1378
-
1379
- if (!propertyMap.hasOwnProperty(name))
1380
- propertyMap[name] = 1;
1381
- }
1382
- }
1383
-
1384
- this.completionsDefined = true;
1385
- };
1386
-
1387
- this.getCompletions = function(state, session, pos, prefix) {
1388
- if (!this.completionsDefined) {
1389
- this.defineCompletions();
1390
- }
1391
-
1392
- if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") {
1393
- var line = session.getLine(pos.row).substr(0, pos.column);
1394
- if (/:[^;]+$/.test(line)) {
1395
- /([\w\-]+):[^:]*$/.test(line);
1396
-
1397
- return this.getPropertyValueCompletions(state, session, pos, prefix);
1398
- } else {
1399
- return this.getPropertyCompletions(state, session, pos, prefix);
1400
- }
1401
- }
1402
-
1403
- return [];
1404
- };
1405
-
1406
- this.getPropertyCompletions = function(state, session, pos, prefix) {
1407
- var properties = Object.keys(propertyMap);
1408
- return properties.map(function(property){
1409
- return {
1410
- caption: property,
1411
- snippet: property + ': $0;',
1412
- meta: "property",
1413
- score: 1000000
1414
- };
1415
- });
1416
- };
1417
-
1418
- this.getPropertyValueCompletions = function(state, session, pos, prefix) {
1419
- var line = session.getLine(pos.row).substr(0, pos.column);
1420
- var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1];
1421
-
1422
- if (!property)
1423
- return [];
1424
- var values = [];
1425
- if (property in propertyMap && typeof propertyMap[property] === "object") {
1426
- values = Object.keys(propertyMap[property]);
1427
- }
1428
- return values.map(function(value){
1429
- return {
1430
- caption: value,
1431
- snippet: value,
1432
- meta: "property value",
1433
- score: 1000000
1434
- };
1435
- });
1436
- };
1437
-
1438
- }).call(CssCompletions.prototype);
1439
-
1440
- exports.CssCompletions = CssCompletions;
1441
- });
1442
-
1443
- ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) {
1444
- "use strict";
1445
-
1446
- var oop = require("../../lib/oop");
1447
- var Behaviour = require("../behaviour").Behaviour;
1448
- var CstyleBehaviour = require("./cstyle").CstyleBehaviour;
1449
- var TokenIterator = require("../../token_iterator").TokenIterator;
1450
-
1451
- var CssBehaviour = function () {
1452
-
1453
- this.inherit(CstyleBehaviour);
1454
-
1455
- this.add("colon", "insertion", function (state, action, editor, session, text) {
1456
- if (text === ':' && editor.selection.isEmpty()) {
1457
- var cursor = editor.getCursorPosition();
1458
- var iterator = new TokenIterator(session, cursor.row, cursor.column);
1459
- var token = iterator.getCurrentToken();
1460
- if (token && token.value.match(/\s+/)) {
1461
- token = iterator.stepBackward();
1462
- }
1463
- if (token && token.type === 'support.type') {
1464
- var line = session.doc.getLine(cursor.row);
1465
- var rightChar = line.substring(cursor.column, cursor.column + 1);
1466
- if (rightChar === ':') {
1467
- return {
1468
- text: '',
1469
- selection: [1, 1]
1470
- };
1471
- }
1472
- if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) {
1473
- return {
1474
- text: ':;',
1475
- selection: [1, 1]
1476
- };
1477
- }
1478
- }
1479
- }
1480
- });
1481
-
1482
- this.add("colon", "deletion", function (state, action, editor, session, range) {
1483
- var selected = session.doc.getTextRange(range);
1484
- if (!range.isMultiLine() && selected === ':') {
1485
- var cursor = editor.getCursorPosition();
1486
- var iterator = new TokenIterator(session, cursor.row, cursor.column);
1487
- var token = iterator.getCurrentToken();
1488
- if (token && token.value.match(/\s+/)) {
1489
- token = iterator.stepBackward();
1490
- }
1491
- if (token && token.type === 'support.type') {
1492
- var line = session.doc.getLine(range.start.row);
1493
- var rightChar = line.substring(range.end.column, range.end.column + 1);
1494
- if (rightChar === ';') {
1495
- range.end.column ++;
1496
- return range;
1497
- }
1498
- }
1499
- }
1500
- });
1501
-
1502
- this.add("semicolon", "insertion", function (state, action, editor, session, text) {
1503
- if (text === ';' && editor.selection.isEmpty()) {
1504
- var cursor = editor.getCursorPosition();
1505
- var line = session.doc.getLine(cursor.row);
1506
- var rightChar = line.substring(cursor.column, cursor.column + 1);
1507
- if (rightChar === ';') {
1508
- return {
1509
- text: '',
1510
- selection: [1, 1]
1511
- };
1512
- }
1513
- }
1514
- });
1515
-
1516
- this.add("!important", "insertion", function (state, action, editor, session, text) {
1517
- if (text === '!' && editor.selection.isEmpty()) {
1518
- var cursor = editor.getCursorPosition();
1519
- var line = session.doc.getLine(cursor.row);
1520
-
1521
- if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) {
1522
- return {
1523
- text: '!important',
1524
- selection: [10, 10]
1525
- };
1526
- }
1527
- }
1528
- });
1529
-
1530
- };
1531
- oop.inherits(CssBehaviour, CstyleBehaviour);
1532
-
1533
- exports.CssBehaviour = CssBehaviour;
1534
- });
1535
-
1536
- ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) {
1537
- "use strict";
1538
-
1539
- var oop = require("../lib/oop");
1540
- var TextMode = require("./text").Mode;
1541
- var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
1542
- var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
1543
- var WorkerClient = require("../worker/worker_client").WorkerClient;
1544
- var CssCompletions = require("./css_completions").CssCompletions;
1545
- var CssBehaviour = require("./behaviour/css").CssBehaviour;
1546
- var CStyleFoldMode = require("./folding/cstyle").FoldMode;
1547
-
1548
- var Mode = function() {
1549
- this.HighlightRules = CssHighlightRules;
1550
- this.$outdent = new MatchingBraceOutdent();
1551
- this.$behaviour = new CssBehaviour();
1552
- this.$completer = new CssCompletions();
1553
- this.foldingRules = new CStyleFoldMode();
1554
- };
1555
- oop.inherits(Mode, TextMode);
1556
-
1557
- (function() {
1558
-
1559
- this.foldingRules = "cStyle";
1560
- this.blockComment = {start: "/*", end: "*/"};
1561
-
1562
- this.getNextLineIndent = function(state, line, tab) {
1563
- var indent = this.$getIndent(line);
1564
- var tokens = this.getTokenizer().getLineTokens(line, state).tokens;
1565
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
1566
- return indent;
1567
- }
1568
-
1569
- var match = line.match(/^.*\{\s*$/);
1570
- if (match) {
1571
- indent += tab;
1572
- }
1573
-
1574
- return indent;
1575
- };
1576
-
1577
- this.checkOutdent = function(state, line, input) {
1578
- return this.$outdent.checkOutdent(line, input);
1579
- };
1580
-
1581
- this.autoOutdent = function(state, doc, row) {
1582
- this.$outdent.autoOutdent(doc, row);
1583
- };
1584
-
1585
- this.getCompletions = function(state, session, pos, prefix) {
1586
- return this.$completer.getCompletions(state, session, pos, prefix);
1587
- };
1588
-
1589
- this.createWorker = function(session) {
1590
- var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker");
1591
- worker.attachToDocument(session.getDocument());
1592
-
1593
- worker.on("annotate", function(e) {
1594
- session.setAnnotations(e.data);
1595
- });
1596
-
1597
- worker.on("terminate", function() {
1598
- session.clearAnnotations();
1599
- });
1600
-
1601
- return worker;
1602
- };
1603
-
1604
- this.$id = "ace/mode/css";
1605
- this.snippetFileId = "ace/snippets/css";
1606
- }).call(Mode.prototype);
1607
-
1608
- exports.Mode = Mode;
1609
-
1610
- });
1611
-
1612
- ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) {
1613
- "use strict";
1614
-
1615
- var oop = require("../../lib/oop");
1616
- var Behaviour = require("../behaviour").Behaviour;
1617
- var TokenIterator = require("../../token_iterator").TokenIterator;
1618
- var lang = require("../../lib/lang");
1619
-
1620
- function is(token, type) {
1621
- return token && token.type.lastIndexOf(type + ".xml") > -1;
1622
- }
1623
-
1624
- var XmlBehaviour = function () {
1625
-
1626
- this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
1627
- if (text == '"' || text == "'") {
1628
- var quote = text;
1629
- var selected = session.doc.getTextRange(editor.getSelectionRange());
1630
- if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) {
1631
- return {
1632
- text: quote + selected + quote,
1633
- selection: false
1634
- };
1635
- }
1636
-
1637
- var cursor = editor.getCursorPosition();
1638
- var line = session.doc.getLine(cursor.row);
1639
- var rightChar = line.substring(cursor.column, cursor.column + 1);
1640
- var iterator = new TokenIterator(session, cursor.row, cursor.column);
1641
- var token = iterator.getCurrentToken();
1642
-
1643
- if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) {
1644
- return {
1645
- text: "",
1646
- selection: [1, 1]
1647
- };
1648
- }
1649
-
1650
- if (!token)
1651
- token = iterator.stepBackward();
1652
-
1653
- if (!token)
1654
- return;
1655
-
1656
- while (is(token, "tag-whitespace") || is(token, "whitespace")) {
1657
- token = iterator.stepBackward();
1658
- }
1659
- var rightSpace = !rightChar || rightChar.match(/\s/);
1660
- if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) {
1661
- return {
1662
- text: quote + quote,
1663
- selection: [1, 1]
1664
- };
1665
- }
1666
- }
1667
- });
1668
-
1669
- this.add("string_dquotes", "deletion", function(state, action, editor, session, range) {
1670
- var selected = session.doc.getTextRange(range);
1671
- if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
1672
- var line = session.doc.getLine(range.start.row);
1673
- var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
1674
- if (rightChar == selected) {
1675
- range.end.column++;
1676
- return range;
1677
- }
1678
- }
1679
- });
1680
-
1681
- this.add("autoclosing", "insertion", function (state, action, editor, session, text) {
1682
- if (text == '>') {
1683
- var position = editor.getSelectionRange().start;
1684
- var iterator = new TokenIterator(session, position.row, position.column);
1685
- var token = iterator.getCurrentToken() || iterator.stepBackward();
1686
- if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value")))
1687
- return;
1688
- if (is(token, "reference.attribute-value"))
1689
- return;
1690
- if (is(token, "attribute-value")) {
1691
- var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length;
1692
- if (position.column < tokenEndColumn)
1693
- return;
1694
- if (position.column == tokenEndColumn) {
1695
- var nextToken = iterator.stepForward();
1696
- if (nextToken && is(nextToken, "attribute-value"))
1697
- return;
1698
- iterator.stepBackward();
1699
- }
1700
- }
1701
-
1702
- if (/^\s*>/.test(session.getLine(position.row).slice(position.column)))
1703
- return;
1704
- while (!is(token, "tag-name")) {
1705
- token = iterator.stepBackward();
1706
- if (token.value == "<") {
1707
- token = iterator.stepForward();
1708
- break;
1709
- }
1710
- }
1711
-
1712
- var tokenRow = iterator.getCurrentTokenRow();
1713
- var tokenColumn = iterator.getCurrentTokenColumn();
1714
- if (is(iterator.stepBackward(), "end-tag-open"))
1715
- return;
1716
-
1717
- var element = token.value;
1718
- if (tokenRow == position.row)
1719
- element = element.substring(0, position.column - tokenColumn);
1720
-
1721
- if (this.voidElements.hasOwnProperty(element.toLowerCase()))
1722
- return;
1723
-
1724
- return {
1725
- text: ">" + "</" + element + ">",
1726
- selection: [1, 1]
1727
- };
1728
- }
1729
- });
1730
-
1731
- this.add("autoindent", "insertion", function (state, action, editor, session, text) {
1732
- if (text == "\n") {
1733
- var cursor = editor.getCursorPosition();
1734
- var line = session.getLine(cursor.row);
1735
- var iterator = new TokenIterator(session, cursor.row, cursor.column);
1736
- var token = iterator.getCurrentToken();
1737
-
1738
- if (token && token.type.indexOf("tag-close") !== -1) {
1739
- if (token.value == "/>")
1740
- return;
1741
- while (token && token.type.indexOf("tag-name") === -1) {
1742
- token = iterator.stepBackward();
1743
- }
1744
-
1745
- if (!token) {
1746
- return;
1747
- }
1748
-
1749
- var tag = token.value;
1750
- var row = iterator.getCurrentTokenRow();
1751
- token = iterator.stepBackward();
1752
- if (!token || token.type.indexOf("end-tag") !== -1) {
1753
- return;
1754
- }
1755
-
1756
- if (this.voidElements && !this.voidElements[tag]) {
1757
- var nextToken = session.getTokenAt(cursor.row, cursor.column+1);
1758
- var line = session.getLine(row);
1759
- var nextIndent = this.$getIndent(line);
1760
- var indent = nextIndent + session.getTabString();
1761
-
1762
- if (nextToken && nextToken.value === "</") {
1763
- return {
1764
- text: "\n" + indent + "\n" + nextIndent,
1765
- selection: [1, indent.length, 1, indent.length]
1766
- };
1767
- } else {
1768
- return {
1769
- text: "\n" + indent
1770
- };
1771
- }
1772
- }
1773
- }
1774
- }
1775
- });
1776
-
1777
- };
1778
-
1779
- oop.inherits(XmlBehaviour, Behaviour);
1780
-
1781
- exports.XmlBehaviour = XmlBehaviour;
1782
- });
1783
-
1784
- ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module) {
1785
- "use strict";
1786
-
1787
- var oop = require("../../lib/oop");
1788
- var BaseFoldMode = require("./fold_mode").FoldMode;
1789
-
1790
- var FoldMode = exports.FoldMode = function(defaultMode, subModes) {
1791
- this.defaultMode = defaultMode;
1792
- this.subModes = subModes;
1793
- };
1794
- oop.inherits(FoldMode, BaseFoldMode);
1795
-
1796
- (function() {
1797
-
1798
-
1799
- this.$getMode = function(state) {
1800
- if (typeof state != "string")
1801
- state = state[0];
1802
- for (var key in this.subModes) {
1803
- if (state.indexOf(key) === 0)
1804
- return this.subModes[key];
1805
- }
1806
- return null;
1807
- };
1808
-
1809
- this.$tryMode = function(state, session, foldStyle, row) {
1810
- var mode = this.$getMode(state);
1811
- return (mode ? mode.getFoldWidget(session, foldStyle, row) : "");
1812
- };
1813
-
1814
- this.getFoldWidget = function(session, foldStyle, row) {
1815
- return (
1816
- this.$tryMode(session.getState(row-1), session, foldStyle, row) ||
1817
- this.$tryMode(session.getState(row), session, foldStyle, row) ||
1818
- this.defaultMode.getFoldWidget(session, foldStyle, row)
1819
- );
1820
- };
1821
-
1822
- this.getFoldWidgetRange = function(session, foldStyle, row) {
1823
- var mode = this.$getMode(session.getState(row-1));
1824
-
1825
- if (!mode || !mode.getFoldWidget(session, foldStyle, row))
1826
- mode = this.$getMode(session.getState(row));
1827
-
1828
- if (!mode || !mode.getFoldWidget(session, foldStyle, row))
1829
- mode = this.defaultMode;
1830
-
1831
- return mode.getFoldWidgetRange(session, foldStyle, row);
1832
- };
1833
-
1834
- }).call(FoldMode.prototype);
1835
-
1836
- });
1837
-
1838
- ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"], function(require, exports, module) {
1839
- "use strict";
1840
-
1841
- var oop = require("../../lib/oop");
1842
- var lang = require("../../lib/lang");
1843
- var Range = require("../../range").Range;
1844
- var BaseFoldMode = require("./fold_mode").FoldMode;
1845
- var TokenIterator = require("../../token_iterator").TokenIterator;
1846
-
1847
- var FoldMode = exports.FoldMode = function(voidElements, optionalEndTags) {
1848
- BaseFoldMode.call(this);
1849
- this.voidElements = voidElements || {};
1850
- this.optionalEndTags = oop.mixin({}, this.voidElements);
1851
- if (optionalEndTags)
1852
- oop.mixin(this.optionalEndTags, optionalEndTags);
1853
-
1854
- };
1855
- oop.inherits(FoldMode, BaseFoldMode);
1856
-
1857
- var Tag = function() {
1858
- this.tagName = "";
1859
- this.closing = false;
1860
- this.selfClosing = false;
1861
- this.start = {row: 0, column: 0};
1862
- this.end = {row: 0, column: 0};
1863
- };
1864
-
1865
- function is(token, type) {
1866
- return token.type.lastIndexOf(type + ".xml") > -1;
1867
- }
1868
-
1869
- (function() {
1870
-
1871
- this.getFoldWidget = function(session, foldStyle, row) {
1872
- var tag = this._getFirstTagInLine(session, row);
1873
-
1874
- if (!tag)
1875
- return this.getCommentFoldWidget(session, row);
1876
-
1877
- if (tag.closing || (!tag.tagName && tag.selfClosing))
1878
- return foldStyle == "markbeginend" ? "end" : "";
1879
-
1880
- if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))
1881
- return "";
1882
-
1883
- if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))
1884
- return "";
1885
-
1886
- return "start";
1887
- };
1888
-
1889
- this.getCommentFoldWidget = function(session, row) {
1890
- if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row)))
1891
- return "start";
1892
- return "";
1893
- };
1894
- this._getFirstTagInLine = function(session, row) {
1895
- var tokens = session.getTokens(row);
1896
- var tag = new Tag();
1897
-
1898
- for (var i = 0; i < tokens.length; i++) {
1899
- var token = tokens[i];
1900
- if (is(token, "tag-open")) {
1901
- tag.end.column = tag.start.column + token.value.length;
1902
- tag.closing = is(token, "end-tag-open");
1903
- token = tokens[++i];
1904
- if (!token)
1905
- return null;
1906
- tag.tagName = token.value;
1907
- tag.end.column += token.value.length;
1908
- for (i++; i < tokens.length; i++) {
1909
- token = tokens[i];
1910
- tag.end.column += token.value.length;
1911
- if (is(token, "tag-close")) {
1912
- tag.selfClosing = token.value == '/>';
1913
- break;
1914
- }
1915
- }
1916
- return tag;
1917
- } else if (is(token, "tag-close")) {
1918
- tag.selfClosing = token.value == '/>';
1919
- return tag;
1920
- }
1921
- tag.start.column += token.value.length;
1922
- }
1923
-
1924
- return null;
1925
- };
1926
-
1927
- this._findEndTagInLine = function(session, row, tagName, startColumn) {
1928
- var tokens = session.getTokens(row);
1929
- var column = 0;
1930
- for (var i = 0; i < tokens.length; i++) {
1931
- var token = tokens[i];
1932
- column += token.value.length;
1933
- if (column < startColumn)
1934
- continue;
1935
- if (is(token, "end-tag-open")) {
1936
- token = tokens[i + 1];
1937
- if (token && token.value == tagName)
1938
- return true;
1939
- }
1940
- }
1941
- return false;
1942
- };
1943
- this._readTagForward = function(iterator) {
1944
- var token = iterator.getCurrentToken();
1945
- if (!token)
1946
- return null;
1947
-
1948
- var tag = new Tag();
1949
- do {
1950
- if (is(token, "tag-open")) {
1951
- tag.closing = is(token, "end-tag-open");
1952
- tag.start.row = iterator.getCurrentTokenRow();
1953
- tag.start.column = iterator.getCurrentTokenColumn();
1954
- } else if (is(token, "tag-name")) {
1955
- tag.tagName = token.value;
1956
- } else if (is(token, "tag-close")) {
1957
- tag.selfClosing = token.value == "/>";
1958
- tag.end.row = iterator.getCurrentTokenRow();
1959
- tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;
1960
- iterator.stepForward();
1961
- return tag;
1962
- }
1963
- } while(token = iterator.stepForward());
1964
-
1965
- return null;
1966
- };
1967
-
1968
- this._readTagBackward = function(iterator) {
1969
- var token = iterator.getCurrentToken();
1970
- if (!token)
1971
- return null;
1972
-
1973
- var tag = new Tag();
1974
- do {
1975
- if (is(token, "tag-open")) {
1976
- tag.closing = is(token, "end-tag-open");
1977
- tag.start.row = iterator.getCurrentTokenRow();
1978
- tag.start.column = iterator.getCurrentTokenColumn();
1979
- iterator.stepBackward();
1980
- return tag;
1981
- } else if (is(token, "tag-name")) {
1982
- tag.tagName = token.value;
1983
- } else if (is(token, "tag-close")) {
1984
- tag.selfClosing = token.value == "/>";
1985
- tag.end.row = iterator.getCurrentTokenRow();
1986
- tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;
1987
- }
1988
- } while(token = iterator.stepBackward());
1989
-
1990
- return null;
1991
- };
1992
-
1993
- this._pop = function(stack, tag) {
1994
- while (stack.length) {
1995
-
1996
- var top = stack[stack.length-1];
1997
- if (!tag || top.tagName == tag.tagName) {
1998
- return stack.pop();
1999
- }
2000
- else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {
2001
- stack.pop();
2002
- continue;
2003
- } else {
2004
- return null;
2005
- }
2006
- }
2007
- };
2008
-
2009
- this.getFoldWidgetRange = function(session, foldStyle, row) {
2010
- var firstTag = this._getFirstTagInLine(session, row);
2011
-
2012
- if (!firstTag) {
2013
- return this.getCommentFoldWidget(session, row)
2014
- && session.getCommentFoldRange(row, session.getLine(row).length);
2015
- }
2016
-
2017
- var isBackward = firstTag.closing || firstTag.selfClosing;
2018
- var stack = [];
2019
- var tag;
2020
-
2021
- if (!isBackward) {
2022
- var iterator = new TokenIterator(session, row, firstTag.start.column);
2023
- var start = {
2024
- row: row,
2025
- column: firstTag.start.column + firstTag.tagName.length + 2
2026
- };
2027
- if (firstTag.start.row == firstTag.end.row)
2028
- start.column = firstTag.end.column;
2029
- while (tag = this._readTagForward(iterator)) {
2030
- if (tag.selfClosing) {
2031
- if (!stack.length) {
2032
- tag.start.column += tag.tagName.length + 2;
2033
- tag.end.column -= 2;
2034
- return Range.fromPoints(tag.start, tag.end);
2035
- } else
2036
- continue;
2037
- }
2038
-
2039
- if (tag.closing) {
2040
- this._pop(stack, tag);
2041
- if (stack.length == 0)
2042
- return Range.fromPoints(start, tag.start);
2043
- }
2044
- else {
2045
- stack.push(tag);
2046
- }
2047
- }
2048
- }
2049
- else {
2050
- var iterator = new TokenIterator(session, row, firstTag.end.column);
2051
- var end = {
2052
- row: row,
2053
- column: firstTag.start.column
2054
- };
2055
-
2056
- while (tag = this._readTagBackward(iterator)) {
2057
- if (tag.selfClosing) {
2058
- if (!stack.length) {
2059
- tag.start.column += tag.tagName.length + 2;
2060
- tag.end.column -= 2;
2061
- return Range.fromPoints(tag.start, tag.end);
2062
- } else
2063
- continue;
2064
- }
2065
-
2066
- if (!tag.closing) {
2067
- this._pop(stack, tag);
2068
- if (stack.length == 0) {
2069
- tag.start.column += tag.tagName.length + 2;
2070
- if (tag.start.row == tag.end.row && tag.start.column < tag.end.column)
2071
- tag.start.column = tag.end.column;
2072
- return Range.fromPoints(tag.start, end);
2073
- }
2074
- }
2075
- else {
2076
- stack.push(tag);
2077
- }
2078
- }
2079
- }
2080
-
2081
- };
2082
-
2083
- }).call(FoldMode.prototype);
2084
-
2085
- });
2086
-
2087
- ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) {
2088
- "use strict";
2089
-
2090
- var oop = require("../../lib/oop");
2091
- var MixedFoldMode = require("./mixed").FoldMode;
2092
- var XmlFoldMode = require("./xml").FoldMode;
2093
- var CStyleFoldMode = require("./cstyle").FoldMode;
2094
-
2095
- var FoldMode = exports.FoldMode = function(voidElements, optionalTags) {
2096
- MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), {
2097
- "js-": new CStyleFoldMode(),
2098
- "css-": new CStyleFoldMode()
2099
- });
2100
- };
2101
-
2102
- oop.inherits(FoldMode, MixedFoldMode);
2103
-
2104
- });
2105
-
2106
- ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) {
2107
- "use strict";
2108
-
2109
- var TokenIterator = require("../token_iterator").TokenIterator;
2110
-
2111
- var commonAttributes = [
2112
- "accesskey",
2113
- "class",
2114
- "contenteditable",
2115
- "contextmenu",
2116
- "dir",
2117
- "draggable",
2118
- "dropzone",
2119
- "hidden",
2120
- "id",
2121
- "inert",
2122
- "itemid",
2123
- "itemprop",
2124
- "itemref",
2125
- "itemscope",
2126
- "itemtype",
2127
- "lang",
2128
- "spellcheck",
2129
- "style",
2130
- "tabindex",
2131
- "title",
2132
- "translate"
2133
- ];
2134
-
2135
- var eventAttributes = [
2136
- "onabort",
2137
- "onblur",
2138
- "oncancel",
2139
- "oncanplay",
2140
- "oncanplaythrough",
2141
- "onchange",
2142
- "onclick",
2143
- "onclose",
2144
- "oncontextmenu",
2145
- "oncuechange",
2146
- "ondblclick",
2147
- "ondrag",
2148
- "ondragend",
2149
- "ondragenter",
2150
- "ondragleave",
2151
- "ondragover",
2152
- "ondragstart",
2153
- "ondrop",
2154
- "ondurationchange",
2155
- "onemptied",
2156
- "onended",
2157
- "onerror",
2158
- "onfocus",
2159
- "oninput",
2160
- "oninvalid",
2161
- "onkeydown",
2162
- "onkeypress",
2163
- "onkeyup",
2164
- "onload",
2165
- "onloadeddata",
2166
- "onloadedmetadata",
2167
- "onloadstart",
2168
- "onmousedown",
2169
- "onmousemove",
2170
- "onmouseout",
2171
- "onmouseover",
2172
- "onmouseup",
2173
- "onmousewheel",
2174
- "onpause",
2175
- "onplay",
2176
- "onplaying",
2177
- "onprogress",
2178
- "onratechange",
2179
- "onreset",
2180
- "onscroll",
2181
- "onseeked",
2182
- "onseeking",
2183
- "onselect",
2184
- "onshow",
2185
- "onstalled",
2186
- "onsubmit",
2187
- "onsuspend",
2188
- "ontimeupdate",
2189
- "onvolumechange",
2190
- "onwaiting"
2191
- ];
2192
-
2193
- var globalAttributes = commonAttributes.concat(eventAttributes);
2194
-
2195
- var attributeMap = {
2196
- "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1},
2197
- "abbr": {},
2198
- "address": {},
2199
- "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1},
2200
- "article": {"pubdate": 1},
2201
- "aside": {},
2202
- "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }},
2203
- "b": {},
2204
- "base": {"href": 1, "target": 1},
2205
- "bdi": {},
2206
- "bdo": {},
2207
- "blockquote": {"cite": 1},
2208
- "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1},
2209
- "br": {},
2210
- "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}},
2211
- "canvas": {"width": 1, "height": 1},
2212
- "caption": {},
2213
- "cite": {},
2214
- "code": {},
2215
- "col": {"span": 1},
2216
- "colgroup": {"span": 1},
2217
- "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1},
2218
- "data": {},
2219
- "datalist": {},
2220
- "dd": {},
2221
- "del": {"cite": 1, "datetime": 1},
2222
- "details": {"open": 1},
2223
- "dfn": {},
2224
- "dialog": {"open": 1},
2225
- "div": {},
2226
- "dl": {},
2227
- "dt": {},
2228
- "em": {},
2229
- "embed": {"src": 1, "height": 1, "width": 1, "type": 1},
2230
- "fieldset": {"disabled": 1, "form": 1, "name": 1},
2231
- "figcaption": {},
2232
- "figure": {},
2233
- "footer": {},
2234
- "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}},
2235
- "h1": {},
2236
- "h2": {},
2237
- "h3": {},
2238
- "h4": {},
2239
- "h5": {},
2240
- "h6": {},
2241
- "head": {},
2242
- "header": {},
2243
- "hr": {},
2244
- "html": {"manifest": 1},
2245
- "i": {},
2246
- "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}},
2247
- "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1},
2248
- "input": {
2249
- "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1},
2250
- "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1},
2251
- "ins": {"cite": 1, "datetime": 1},
2252
- "kbd": {},
2253
- "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1},
2254
- "label": {"form": 1, "for": 1},
2255
- "legend": {},
2256
- "li": {"value": 1},
2257
- "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1},
2258
- "main": {},
2259
- "map": {"name": 1},
2260
- "mark": {},
2261
- "math": {},
2262
- "menu": {"type": 1, "label": 1},
2263
- "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1},
2264
- "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1},
2265
- "nav": {},
2266
- "noscript": {"href": 1},
2267
- "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1},
2268
- "ol": {"start": 1, "reversed": 1},
2269
- "optgroup": {"disabled": 1, "label": 1},
2270
- "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1},
2271
- "output": {"for": 1, "form": 1, "name": 1},
2272
- "p": {},
2273
- "param": {"name": 1, "value": 1},
2274
- "pre": {},
2275
- "progress": {"value": 1, "max": 1},
2276
- "q": {"cite": 1},
2277
- "rp": {},
2278
- "rt": {},
2279
- "ruby": {},
2280
- "s": {},
2281
- "samp": {},
2282
- "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1},
2283
- "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}},
2284
- "small": {},
2285
- "source": {"src": 1, "type": 1, "media": 1},
2286
- "span": {},
2287
- "strong": {},
2288
- "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1},
2289
- "sub": {},
2290
- "sup": {},
2291
- "svg": {},
2292
- "table": {"summary": 1},
2293
- "tbody": {},
2294
- "td": {"headers": 1, "rowspan": 1, "colspan": 1},
2295
- "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}},
2296
- "tfoot": {},
2297
- "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1},
2298
- "thead": {},
2299
- "time": {"datetime": 1},
2300
- "title": {},
2301
- "tr": {},
2302
- "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1},
2303
- "section": {},
2304
- "summary": {},
2305
- "u": {},
2306
- "ul": {},
2307
- "var": {},
2308
- "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}},
2309
- "wbr": {}
2310
- };
2311
-
2312
- var elements = Object.keys(attributeMap);
2313
-
2314
- function is(token, type) {
2315
- return token.type.lastIndexOf(type + ".xml") > -1;
2316
- }
2317
-
2318
- function findTagName(session, pos) {
2319
- var iterator = new TokenIterator(session, pos.row, pos.column);
2320
- var token = iterator.getCurrentToken();
2321
- while (token && !is(token, "tag-name")){
2322
- token = iterator.stepBackward();
2323
- }
2324
- if (token)
2325
- return token.value;
2326
- }
2327
-
2328
- function findAttributeName(session, pos) {
2329
- var iterator = new TokenIterator(session, pos.row, pos.column);
2330
- var token = iterator.getCurrentToken();
2331
- while (token && !is(token, "attribute-name")){
2332
- token = iterator.stepBackward();
2333
- }
2334
- if (token)
2335
- return token.value;
2336
- }
2337
-
2338
- var HtmlCompletions = function() {
2339
-
2340
- };
2341
-
2342
- (function() {
2343
-
2344
- this.getCompletions = function(state, session, pos, prefix) {
2345
- var token = session.getTokenAt(pos.row, pos.column);
2346
-
2347
- if (!token)
2348
- return [];
2349
- if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open"))
2350
- return this.getTagCompletions(state, session, pos, prefix);
2351
- if (is(token, "tag-whitespace") || is(token, "attribute-name"))
2352
- return this.getAttributeCompletions(state, session, pos, prefix);
2353
- if (is(token, "attribute-value"))
2354
- return this.getAttributeValueCompletions(state, session, pos, prefix);
2355
- var line = session.getLine(pos.row).substr(0, pos.column);
2356
- if (/&[a-z]*$/i.test(line))
2357
- return this.getHTMLEntityCompletions(state, session, pos, prefix);
2358
-
2359
- return [];
2360
- };
2361
-
2362
- this.getTagCompletions = function(state, session, pos, prefix) {
2363
- return elements.map(function(element){
2364
- return {
2365
- value: element,
2366
- meta: "tag",
2367
- score: 1000000
2368
- };
2369
- });
2370
- };
2371
-
2372
- this.getAttributeCompletions = function(state, session, pos, prefix) {
2373
- var tagName = findTagName(session, pos);
2374
- if (!tagName)
2375
- return [];
2376
- var attributes = globalAttributes;
2377
- if (tagName in attributeMap) {
2378
- attributes = attributes.concat(Object.keys(attributeMap[tagName]));
2379
- }
2380
- return attributes.map(function(attribute){
2381
- return {
2382
- caption: attribute,
2383
- snippet: attribute + '="$0"',
2384
- meta: "attribute",
2385
- score: 1000000
2386
- };
2387
- });
2388
- };
2389
-
2390
- this.getAttributeValueCompletions = function(state, session, pos, prefix) {
2391
- var tagName = findTagName(session, pos);
2392
- var attributeName = findAttributeName(session, pos);
2393
-
2394
- if (!tagName)
2395
- return [];
2396
- var values = [];
2397
- if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") {
2398
- values = Object.keys(attributeMap[tagName][attributeName]);
2399
- }
2400
- return values.map(function(value){
2401
- return {
2402
- caption: value,
2403
- snippet: value,
2404
- meta: "attribute value",
2405
- score: 1000000
2406
- };
2407
- });
2408
- };
2409
-
2410
- this.getHTMLEntityCompletions = function(state, session, pos, prefix) {
2411
- var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;'];
2412
-
2413
- return values.map(function(value){
2414
- return {
2415
- caption: value,
2416
- snippet: value,
2417
- meta: "html entity",
2418
- score: 1000000
2419
- };
2420
- });
2421
- };
2422
-
2423
- }).call(HtmlCompletions.prototype);
2424
-
2425
- exports.HtmlCompletions = HtmlCompletions;
2426
- });
2427
-
2428
- ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) {
2429
- "use strict";
2430
-
2431
- var oop = require("../lib/oop");
2432
- var lang = require("../lib/lang");
2433
- var TextMode = require("./text").Mode;
2434
- var JavaScriptMode = require("./javascript").Mode;
2435
- var CssMode = require("./css").Mode;
2436
- var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
2437
- var XmlBehaviour = require("./behaviour/xml").XmlBehaviour;
2438
- var HtmlFoldMode = require("./folding/html").FoldMode;
2439
- var HtmlCompletions = require("./html_completions").HtmlCompletions;
2440
- var WorkerClient = require("../worker/worker_client").WorkerClient;
2441
- var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"];
2442
- var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"];
2443
-
2444
- var Mode = function(options) {
2445
- this.fragmentContext = options && options.fragmentContext;
2446
- this.HighlightRules = HtmlHighlightRules;
2447
- this.$behaviour = new XmlBehaviour();
2448
- this.$completer = new HtmlCompletions();
2449
-
2450
- this.createModeDelegates({
2451
- "js-": JavaScriptMode,
2452
- "css-": CssMode
2453
- });
2454
-
2455
- this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags));
2456
- };
2457
- oop.inherits(Mode, TextMode);
2458
-
2459
- (function() {
2460
-
2461
- this.blockComment = {start: "<!--", end: "-->"};
2462
-
2463
- this.voidElements = lang.arrayToMap(voidElements);
2464
-
2465
- this.getNextLineIndent = function(state, line, tab) {
2466
- return this.$getIndent(line);
2467
- };
2468
-
2469
- this.checkOutdent = function(state, line, input) {
2470
- return false;
2471
- };
2472
-
2473
- this.getCompletions = function(state, session, pos, prefix) {
2474
- return this.$completer.getCompletions(state, session, pos, prefix);
2475
- };
2476
-
2477
- this.createWorker = function(session) {
2478
- if (this.constructor != Mode)
2479
- return;
2480
- var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker");
2481
- worker.attachToDocument(session.getDocument());
2482
-
2483
- if (this.fragmentContext)
2484
- worker.call("setOptions", [{context: this.fragmentContext}]);
2485
-
2486
- worker.on("error", function(e) {
2487
- session.setAnnotations(e.data);
2488
- });
2489
-
2490
- worker.on("terminate", function() {
2491
- session.clearAnnotations();
2492
- });
2493
-
2494
- return worker;
2495
- };
2496
-
2497
- this.$id = "ace/mode/html";
2498
- this.snippetFileId = "ace/snippets/html";
2499
- }).call(Mode.prototype);
2500
-
2501
- exports.Mode = Mode;
2502
- });
2503
-
2504
- ace.define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
2505
- "use strict";
2506
-
2507
- var oop = require("../lib/oop");
2508
- var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
2509
- var constantOtherSymbol = exports.constantOtherSymbol = {
2510
- token : "constant.other.symbol.ruby", // symbol
2511
- regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"
2512
- };
2513
-
2514
- exports.qString = {
2515
- token : "string", // single line
2516
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
2517
- };
2518
-
2519
- exports.qqString = {
2520
- token : "string", // single line
2521
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
2522
- };
2523
-
2524
- exports.tString = {
2525
- token : "string", // backtick string
2526
- regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"
2527
- };
2528
-
2529
- var constantNumericHex = exports.constantNumericHex = {
2530
- token : "constant.numeric", // hex
2531
- regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"
2532
- };
2533
-
2534
- var constantNumericBinary = exports.constantNumericBinary = {
2535
- token: "constant.numeric",
2536
- regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/
2537
- };
2538
-
2539
- var constantNumericDecimal = exports.constantNumericDecimal = {
2540
- token: "constant.numeric",
2541
- regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/
2542
- };
2543
-
2544
- var constantNumericOctal = exports.constantNumericDecimal = {
2545
- token: "constant.numeric",
2546
- regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/
2547
- };
2548
-
2549
- var constantNumericRational = exports.constantNumericRational = {
2550
- token: "constant.numeric", //rational + complex
2551
- regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/
2552
- };
2553
-
2554
- var constantNumericComplex = exports.constantNumericComplex = {
2555
- token: "constant.numeric", //simple complex numbers
2556
- regex: /\b([\d]i)\b/
2557
- };
2558
-
2559
- var constantNumericFloat = exports.constantNumericFloat = {
2560
- token : "constant.numeric", // float + complex
2561
- regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b"
2562
- };
2563
-
2564
- var instanceVariable = exports.instanceVariable = {
2565
- token : "variable.instance", // instance variable
2566
- regex : "@{1,2}[a-zA-Z_\\d]+"
2567
- };
2568
-
2569
- var RubyHighlightRules = function() {
2570
-
2571
- var builtinFunctions = (
2572
- "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" +
2573
- "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" +
2574
- "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" +
2575
- "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" +
2576
- "assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|" +
2577
- "assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|" +
2578
- "attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|" +
2579
- "caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|" +
2580
- "exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|" +
2581
- "gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|" +
2582
- "link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|" +
2583
- "p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|" +
2584
- "raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|" +
2585
- "set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|" +
2586
- "throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|" +
2587
- "render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|" +
2588
- "content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|" +
2589
- "fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|" +
2590
- "time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|" +
2591
- "select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|" +
2592
- "file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|" +
2593
- "protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|" +
2594
- "send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|" +
2595
- "validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|" +
2596
- "validates_inclusion_of|validates_numericality_of|validates_with|validates_each|" +
2597
- "authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|" +
2598
- "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" +
2599
- "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" +
2600
- "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" +
2601
- "has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|" +
2602
- "private_class_method|remove_method|undef_method"
2603
- );
2604
-
2605
- var keywords = (
2606
- "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" +
2607
- "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" +
2608
- "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend"
2609
- );
2610
-
2611
- var buildinConstants = (
2612
- "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" +
2613
- "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION"
2614
- );
2615
-
2616
- var builtinVariables = (
2617
- "$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" +
2618
- "$!|root_url|flash|session|cookies|params|request|response|logger|self"
2619
- );
2620
-
2621
- var keywordMapper = this.$keywords = this.createKeywordMapper({
2622
- "keyword": keywords,
2623
- "constant.language": buildinConstants,
2624
- "variable.language": builtinVariables,
2625
- "support.function": builtinFunctions,
2626
- "invalid.deprecated": "debugger" // TODO is this a remnant from js mode?
2627
- }, "identifier");
2628
-
2629
- var escapedChars = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})";
2630
-
2631
- var closeParen = {
2632
- "(": ")",
2633
- "[": "]",
2634
- "{": "}",
2635
- "<": ">",
2636
- "^": "^",
2637
- "|": "|",
2638
- "%": "%"
2639
- };
2640
-
2641
- this.$rules = {
2642
- "start": [
2643
- {
2644
- token: "comment",
2645
- regex: "#.*$"
2646
- }, {
2647
- token: "comment.multiline", // multi line comment
2648
- regex: "^=begin(?=$|\\s.*$)",
2649
- next: "comment"
2650
- }, {
2651
- token: "string.regexp",
2652
- regex: /[/](?=.*\/)/,
2653
- next: "regex"
2654
- },
2655
-
2656
- [{
2657
- token: ["constant.other.symbol.ruby", "string.start"],
2658
- regex: /(:)?(")/,
2659
- push: [{
2660
- token: "constant.language.escape",
2661
- regex: escapedChars
2662
- }, {
2663
- token: "paren.start",
2664
- regex: /#{/,
2665
- push: "start"
2666
- }, {
2667
- token: "string.end",
2668
- regex: /"/,
2669
- next: "pop"
2670
- }, {
2671
- defaultToken: "string"
2672
- }]
2673
- }, {
2674
- token: "string.start",
2675
- regex: /`/,
2676
- push: [{
2677
- token: "constant.language.escape",
2678
- regex: escapedChars
2679
- }, {
2680
- token: "paren.start",
2681
- regex: /#{/,
2682
- push: "start"
2683
- }, {
2684
- token: "string.end",
2685
- regex: /`/,
2686
- next: "pop"
2687
- }, {
2688
- defaultToken: "string"
2689
- }]
2690
- }, {
2691
- token: ["constant.other.symbol.ruby", "string.start"],
2692
- regex: /(:)?(')/,
2693
- push: [{
2694
- token: "constant.language.escape",
2695
- regex: /\\['\\]/
2696
- }, {
2697
- token: "string.end",
2698
- regex: /'/,
2699
- next: "pop"
2700
- }, {
2701
- defaultToken: "string"
2702
- }]
2703
- }, {
2704
- token: "string.start",//doesn't see any differences between strings and array of strings in highlighting
2705
- regex: /%[qwx]([(\[<{^|%])/, onMatch: function (val, state, stack) {
2706
- if (stack.length)
2707
- stack = [];
2708
- var paren = val[val.length - 1];
2709
- stack.unshift(paren, state);
2710
- this.next = "qStateWithoutInterpolation";
2711
- return this.token;
2712
- }
2713
- }, {
2714
- token: "string.start", //doesn't see any differences between strings and array of strings in highlighting
2715
- regex: /%[QWX]?([(\[<{^|%])/, onMatch: function (val, state, stack) {
2716
- if (stack.length)
2717
- stack = [];
2718
- var paren = val[val.length - 1];
2719
- stack.unshift(paren, state);
2720
- this.next = "qStateWithInterpolation";
2721
- return this.token;
2722
- }
2723
- }, {
2724
- token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting
2725
- regex: /%[si]([(\[<{^|%])/, onMatch: function (val, state, stack) {
2726
- if (stack.length)
2727
- stack = [];
2728
- var paren = val[val.length - 1];
2729
- stack.unshift(paren, state);
2730
- this.next = "sStateWithoutInterpolation";
2731
- return this.token;
2732
- }
2733
- }, {
2734
- token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting
2735
- regex: /%[SI]([(\[<{^|%])/, onMatch: function (val, state, stack) {
2736
- if (stack.length)
2737
- stack = [];
2738
- var paren = val[val.length - 1];
2739
- stack.unshift(paren, state);
2740
- this.next = "sStateWithInterpolation";
2741
- return this.token;
2742
- }
2743
- }, {
2744
- token: "string.regexp",
2745
- regex: /%[r]([(\[<{^|%])/, onMatch: function (val, state, stack) {
2746
- if (stack.length)
2747
- stack = [];
2748
- var paren = val[val.length - 1];
2749
- stack.unshift(paren, state);
2750
- this.next = "rState";
2751
- return this.token;
2752
- }
2753
- }],
2754
-
2755
- {
2756
- token: "punctuation", // namespaces aren't symbols
2757
- regex: "::"
2758
- },
2759
- instanceVariable,
2760
- {
2761
- token: "variable.global", // global variable
2762
- regex: "[$][a-zA-Z_\\d]+"
2763
- }, {
2764
- token: "support.class", // class name
2765
- regex: "[A-Z][a-zA-Z_\\d]*"
2766
- }, {
2767
- token: ["punctuation.operator", "support.function"],
2768
- regex: /(\.)([a-zA-Z_\d]+)(?=\()/
2769
- }, {
2770
- token: ["punctuation.operator", "identifier"],
2771
- regex: /(\.)([a-zA-Z_][a-zA-Z_\d]*)/
2772
- }, {
2773
- token: "string.character",
2774
- regex: "\\B\\?(?:" + escapedChars + "|\\S)"
2775
- }, {
2776
- token: "punctuation.operator",
2777
- regex: /\?(?=.+:)/
2778
- },
2779
-
2780
- constantNumericRational,
2781
- constantNumericComplex,
2782
- constantOtherSymbol,
2783
- constantNumericHex,
2784
- constantNumericFloat,
2785
- constantNumericBinary,
2786
- constantNumericDecimal,
2787
- constantNumericOctal,
2788
- {
2789
- token: "constant.language.boolean",
2790
- regex: "(?:true|false)\\b"
2791
- }, {
2792
- token: keywordMapper,
2793
- regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
2794
- }, {
2795
- token: "punctuation.separator.key-value",
2796
- regex: "=>"
2797
- }, {
2798
- stateName: "heredoc",
2799
- onMatch: function (value, currentState, stack) {
2800
- var next = (value[2] == '-' || value[2] == '~') ? "indentedHeredoc" : "heredoc";
2801
- var tokens = value.split(this.splitRegex);
2802
- stack.push(next, tokens[3]);
2803
- return [
2804
- {type: "constant", value: tokens[1]},
2805
- {type: "string", value: tokens[2]},
2806
- {type: "support.class", value: tokens[3]},
2807
- {type: "string", value: tokens[4]}
2808
- ];
2809
- },
2810
- regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)",
2811
- rules: {
2812
- heredoc: [{
2813
- onMatch: function(value, currentState, stack) {
2814
- if (value === stack[1]) {
2815
- stack.shift();
2816
- stack.shift();
2817
- this.next = stack[0] || "start";
2818
- return "support.class";
2819
- }
2820
- this.next = "";
2821
- return "string";
2822
- },
2823
- regex: ".*$",
2824
- next: "start"
2825
- }],
2826
- indentedHeredoc: [{
2827
- token: "string",
2828
- regex: "^ +"
2829
- }, {
2830
- onMatch: function(value, currentState, stack) {
2831
- if (value === stack[1]) {
2832
- stack.shift();
2833
- stack.shift();
2834
- this.next = stack[0] || "start";
2835
- return "support.class";
2836
- }
2837
- this.next = "";
2838
- return "string";
2839
- },
2840
- regex: ".*$",
2841
- next: "start"
2842
- }]
2843
- }
2844
- }, {
2845
- regex: "$",
2846
- token: "empty",
2847
- next: function(currentState, stack) {
2848
- if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc")
2849
- return stack[0];
2850
- return currentState;
2851
- }
2852
- }, {
2853
- token: "keyword.operator",
2854
- regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)"
2855
- }, {
2856
- token: "paren.lparen",
2857
- regex: "[[({]"
2858
- }, {
2859
- token: "paren.rparen",
2860
- regex: "[\\])}]",
2861
- onMatch: function(value, currentState, stack) {
2862
- this.next = '';
2863
- if (value == "}" && stack.length > 1 && stack[1] != "start") {
2864
- stack.shift();
2865
- this.next = stack.shift();
2866
- }
2867
- return this.token;
2868
- }
2869
- }, {
2870
- token: "text",
2871
- regex: "\\s+"
2872
- }, {
2873
- token: "punctuation.operator",
2874
- regex: /[?:,;.]/
2875
- }
2876
- ],
2877
- "comment": [
2878
- {
2879
- token: "comment.multiline", // closing comment
2880
- regex: "^=end(?=$|\\s.*$)",
2881
- next: "start"
2882
- }, {
2883
- token: "comment", // comment spanning whole line
2884
- regex: ".+"
2885
- }
2886
- ],
2887
- "qStateWithInterpolation": [{
2888
- token: "string.start",// excluded nested |^% due to difficulty in realization
2889
- regex: /[(\[<{]/, onMatch: function (val, state, stack) {
2890
- if (stack.length && val === stack[0]) {
2891
- stack.unshift(val, state);
2892
- return this.token;
2893
- }
2894
- return "string";
2895
- }
2896
- }, {
2897
- token: "constant.language.escape",
2898
- regex: escapedChars
2899
- }, {
2900
- token: "constant.language.escape",
2901
- regex: /\\./
2902
- }, {
2903
- token: "paren.start",
2904
- regex: /#{/,
2905
- push: "start"
2906
- }, {
2907
- token: "string.end",
2908
- regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) {
2909
- if (stack.length && val === closeParen[stack[0]]) {
2910
- stack.shift();
2911
- this.next = stack.shift();
2912
- return this.token;
2913
- }
2914
- this.next = '';
2915
- return "string";
2916
- }
2917
- }, {
2918
- defaultToken: "string"
2919
- }],
2920
- "qStateWithoutInterpolation": [{
2921
- token: "string.start",// excluded nested |^% due to difficulty in realization
2922
- regex: /[(\[<{]/, onMatch: function (val, state, stack) {
2923
- if (stack.length && val === stack[0]) {
2924
- stack.unshift(val, state);
2925
- return this.token;
2926
- }
2927
- return "string";
2928
- }
2929
- }, {
2930
- token: "constant.language.escape",
2931
- regex: /\\['\\]/
2932
- }, {
2933
- token: "constant.language.escape",
2934
- regex: /\\./
2935
- }, {
2936
- token: "string.end",
2937
- regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) {
2938
- if (stack.length && val === closeParen[stack[0]]) {
2939
- stack.shift();
2940
- this.next = stack.shift();
2941
- return this.token;
2942
- }
2943
- this.next = '';
2944
- return "string";
2945
- }
2946
- }, {
2947
- defaultToken: "string"
2948
- }],
2949
- "sStateWithoutInterpolation": [{
2950
- token: "constant.other.symbol.ruby",// excluded nested |^% due to difficulty in realization
2951
- regex: /[(\[<{]/, onMatch: function (val, state, stack) {
2952
- if (stack.length && val === stack[0]) {
2953
- stack.unshift(val, state);
2954
- return this.token;
2955
- }
2956
- return "constant.other.symbol.ruby";
2957
- }
2958
- }, {
2959
- token: "constant.other.symbol.ruby",
2960
- regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) {
2961
- if (stack.length && val === closeParen[stack[0]]) {
2962
- stack.shift();
2963
- this.next = stack.shift();
2964
- return this.token;
2965
- }
2966
- this.next = '';
2967
- return "constant.other.symbol.ruby";
2968
- }
2969
- }, {
2970
- defaultToken: "constant.other.symbol.ruby"
2971
- }],
2972
- "sStateWithInterpolation": [{
2973
- token: "constant.other.symbol.ruby",// excluded nested |^% due to difficulty in realization
2974
- regex: /[(\[<{]/, onMatch: function (val, state, stack) {
2975
- if (stack.length && val === stack[0]) {
2976
- stack.unshift(val, state);
2977
- return this.token;
2978
- }
2979
- return "constant.other.symbol.ruby";
2980
- }
2981
- }, {
2982
- token: "constant.language.escape",
2983
- regex: escapedChars
2984
- }, {
2985
- token: "constant.language.escape",
2986
- regex: /\\./
2987
- }, {
2988
- token: "paren.start",
2989
- regex: /#{/,
2990
- push: "start"
2991
- }, {
2992
- token: "constant.other.symbol.ruby",
2993
- regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) {
2994
- if (stack.length && val === closeParen[stack[0]]) {
2995
- stack.shift();
2996
- this.next = stack.shift();
2997
- return this.token;
2998
- }
2999
- this.next = '';
3000
- return "constant.other.symbol.ruby";
3001
- }
3002
- }, {
3003
- defaultToken: "constant.other.symbol.ruby"
3004
- }],
3005
- "rState": [{
3006
- token: "string.regexp",// excluded nested |^% due to difficulty in realization
3007
- regex: /[(\[<{]/, onMatch: function (val, state, stack) {
3008
- if (stack.length && val === stack[0]) {
3009
- stack.unshift(val, state);
3010
- return this.token;
3011
- }
3012
- return "constant.language.escape";
3013
- }
3014
- }, {
3015
- token: "paren.start",
3016
- regex: /#{/,
3017
- push: "start"
3018
- }, {
3019
- token: "string.regexp",
3020
- regex: /\//
3021
- }, {
3022
- token: "string.regexp",
3023
- regex: /[)\]>}^|%][imxouesn]*/, onMatch: function (val, state, stack) {
3024
- if (stack.length && val[0] === closeParen[stack[0]]) {
3025
- stack.shift();
3026
- this.next = stack.shift();
3027
- return this.token;
3028
- }
3029
- this.next = '';
3030
- return "constant.language.escape";
3031
- }
3032
- },
3033
- {include: "regex"},
3034
- {
3035
- defaultToken: "string.regexp"
3036
- }],
3037
- "regex": [
3038
- {// character classes
3039
- token: "regexp.keyword",
3040
- regex: /\\[wWdDhHsS]/
3041
- }, {
3042
- token: "constant.language.escape",
3043
- regex: /\\[AGbBzZ]/
3044
- }, {
3045
- token: "constant.language.escape",
3046
- regex: /\\g<[a-zA-Z0-9]*>/
3047
- }, {
3048
- token: ["constant.language.escape", "regexp.keyword", "constant.language.escape"],
3049
- regex: /(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/
3050
- }, {
3051
- token: ["constant.language.escape", "invalid", "constant.language.escape"],
3052
- regex: /(\\p{\^?)([^/]*)(})/
3053
- }, {// escapes
3054
- token: "regexp.keyword.operator",
3055
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
3056
- }, {// flag
3057
- token: "string.regexp",
3058
- regex: /[/][imxouesn]*/,
3059
- next: "start"
3060
- }, {// invalid operators
3061
- token: "invalid",
3062
- regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
3063
- }, {// operators
3064
- token: "constant.language.escape",
3065
- regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
3066
- }, {
3067
- token: "constant.language.delimiter",
3068
- regex: /\|/
3069
- }, {
3070
- token: "regexp.keyword",
3071
- regex: /\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/
3072
- }, {
3073
- token: "constant.language.escape",
3074
- regex: /\[\^?/,
3075
- push: "regex_character_class"
3076
- }, {
3077
- defaultToken: "string.regexp"
3078
- }
3079
- ],
3080
- "regex_character_class": [
3081
- {
3082
- token: "regexp.keyword",
3083
- regex: /\\[wWdDhHsS]/
3084
- }, {
3085
- token: "regexp.charclass.keyword.operator",
3086
- regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
3087
- }, {
3088
- token: "constant.language.escape",
3089
- regex: /&?&?\[\^?/,
3090
- push: "regex_character_class"
3091
- }, {
3092
- token: "constant.language.escape",
3093
- regex: "]",
3094
- next: "pop"
3095
- }, {
3096
- token: "constant.language.escape",
3097
- regex: "-"
3098
- }, {
3099
- defaultToken: "string.regexp.characterclass"
3100
- }
3101
- ]
3102
- };
3103
-
3104
- this.normalizeRules();
3105
- };
3106
-
3107
- oop.inherits(RubyHighlightRules, TextHighlightRules);
3108
-
3109
- exports.RubyHighlightRules = RubyHighlightRules;
3110
- });
3111
-
3112
- ace.define("ace/mode/folding/ruby",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function (require, exports, module) {
3113
- "use strict";
3114
-
3115
- var oop = require("../../lib/oop");
3116
- var BaseFoldMode = require("./fold_mode").FoldMode;
3117
- var Range = require("../../range").Range;
3118
- var TokenIterator = require("../../token_iterator").TokenIterator;
3119
-
3120
-
3121
- var FoldMode = exports.FoldMode = function () {
3122
- };
3123
-
3124
- oop.inherits(FoldMode, BaseFoldMode);
3125
-
3126
- (function () {
3127
- this.indentKeywords = {
3128
- "class": 1,
3129
- "def": 1,
3130
- "module": 1,
3131
- "do": 1,
3132
- "unless": 1,
3133
- "if": 1,
3134
- "while": 1,
3135
- "for": 1,
3136
- "until": 1,
3137
- "begin": 1,
3138
- "else": 0,
3139
- "elsif": 0,
3140
- "rescue": 0,
3141
- "ensure": 0,
3142
- "when": 0,
3143
- "end": -1,
3144
- "case": 1,
3145
- "=begin": 1,
3146
- "=end": -1
3147
- };
3148
-
3149
- this.foldingStartMarker = /(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/;
3150
- this.foldingStopMarker = /(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/;
3151
-
3152
- this.getFoldWidget = function (session, foldStyle, row) {
3153
- var line = session.getLine(row);
3154
- var isStart = this.foldingStartMarker.test(line);
3155
- var isEnd = this.foldingStopMarker.test(line);
3156
-
3157
- if (isStart && !isEnd) {
3158
- var match = line.match(this.foldingStartMarker);
3159
- if (match[1]) {
3160
- if (match[1] == "if" || match[1] == "else" || match[1] == "while" || match[1] == "until" || match[1] == "unless") {
3161
- if (match[1] == "else" && /^\s*else\s*$/.test(line) === false) {
3162
- return;
3163
- }
3164
- if (/^\s*(?:if|else|while|until|unless)\s*/.test(line) === false) {
3165
- return;
3166
- }
3167
- }
3168
-
3169
- if (match[1] == "when") {
3170
- if (/\sthen\s/.test(line) === true) {
3171
- return;
3172
- }
3173
- }
3174
- if (session.getTokenAt(row, match.index + 2).type === "keyword")
3175
- return "start";
3176
- } else if (match[3]) {
3177
- if (session.getTokenAt(row, match.index + 1).type === "comment.multiline")
3178
- return "start";
3179
- } else {
3180
- return "start";
3181
- }
3182
- }
3183
- if (foldStyle != "markbeginend" || !isEnd || isStart && isEnd)
3184
- return "";
3185
-
3186
- var match = line.match(this.foldingStopMarker);
3187
- if (match[3] === "end") {
3188
- if (session.getTokenAt(row, match.index + 1).type === "keyword")
3189
- return "end";
3190
- } else if (match[1]) {
3191
- if (session.getTokenAt(row, match.index + 1).type === "comment.multiline")
3192
- return "end";
3193
- } else
3194
- return "end";
3195
- };
3196
-
3197
- this.getFoldWidgetRange = function (session, foldStyle, row) {
3198
- var line = session.doc.getLine(row);
3199
- var match = this.foldingStartMarker.exec(line);
3200
- if (match) {
3201
- if (match[1] || match[3])
3202
- return this.rubyBlock(session, row, match.index + 2);
3203
-
3204
- return this.openingBracketBlock(session, "{", row, match.index);
3205
- }
3206
-
3207
- var match = this.foldingStopMarker.exec(line);
3208
- if (match) {
3209
- if (match[3] === "end") {
3210
- if (session.getTokenAt(row, match.index + 1).type === "keyword")
3211
- return this.rubyBlock(session, row, match.index + 1);
3212
- }
3213
-
3214
- if (match[1] === "=end") {
3215
- if (session.getTokenAt(row, match.index + 1).type === "comment.multiline")
3216
- return this.rubyBlock(session, row, match.index + 1);
3217
- }
3218
-
3219
- return this.closingBracketBlock(session, "}", row, match.index + match[0].length);
3220
- }
3221
- };
3222
-
3223
- this.rubyBlock = function (session, row, column, tokenRange) {
3224
- var stream = new TokenIterator(session, row, column);
3225
-
3226
- var token = stream.getCurrentToken();
3227
- if (!token || (token.type != "keyword" && token.type != "comment.multiline"))
3228
- return;
3229
-
3230
- var val = token.value;
3231
- var line = session.getLine(row);
3232
- switch (token.value) {
3233
- case "if":
3234
- case "unless":
3235
- case "while":
3236
- case "until":
3237
- var checkToken = new RegExp("^\\s*" + token.value);
3238
- if (!checkToken.test(line)) {
3239
- return;
3240
- }
3241
- var dir = this.indentKeywords[val];
3242
- break;
3243
- case "when":
3244
- if (/\sthen\s/.test(line)) {
3245
- return;
3246
- }
3247
- case "elsif":
3248
- case "rescue":
3249
- case "ensure":
3250
- var dir = 1;
3251
- break;
3252
- case "else":
3253
- var checkToken = new RegExp("^\\s*" + token.value + "\\s*$");
3254
- if (!checkToken.test(line)) {
3255
- return;
3256
- }
3257
- var dir = 1;
3258
- break;
3259
- default:
3260
- var dir = this.indentKeywords[val];
3261
- break;
3262
- }
3263
-
3264
- var stack = [val];
3265
- if (!dir)
3266
- return;
3267
-
3268
- var startColumn = dir === -1 ? session.getLine(row - 1).length : session.getLine(row).length;
3269
- var startRow = row;
3270
- var ranges = [];
3271
- ranges.push(stream.getCurrentTokenRange());
3272
-
3273
- stream.step = dir === -1 ? stream.stepBackward : stream.stepForward;
3274
- if (token.type == "comment.multiline") {
3275
- while (token = stream.step()) {
3276
- if (token.type !== "comment.multiline")
3277
- continue;
3278
- if (dir == 1) {
3279
- startColumn = 6;
3280
- if (token.value == "=end") {
3281
- break;
3282
- }
3283
- } else {
3284
- if (token.value == "=begin") {
3285
- break;
3286
- }
3287
- }
3288
- }
3289
- } else {
3290
- while (token = stream.step()) {
3291
- var ignore = false;
3292
- if (token.type !== "keyword")
3293
- continue;
3294
- var level = dir * this.indentKeywords[token.value];
3295
- line = session.getLine(stream.getCurrentTokenRow());
3296
- switch (token.value) {
3297
- case "do":
3298
- for (var i = stream.$tokenIndex - 1; i >= 0; i--) {
3299
- var prevToken = stream.$rowTokens[i];
3300
- if (prevToken && (prevToken.value == "while" || prevToken.value == "until" || prevToken.value == "for")) {
3301
- level = 0;
3302
- break;
3303
- }
3304
- }
3305
- break;
3306
- case "else":
3307
- var checkToken = new RegExp("^\\s*" + token.value + "\\s*$");
3308
- if (!checkToken.test(line) || val == "case") {
3309
- level = 0;
3310
- ignore = true;
3311
- }
3312
- break;
3313
- case "if":
3314
- case "unless":
3315
- case "while":
3316
- case "until":
3317
- var checkToken = new RegExp("^\\s*" + token.value);
3318
- if (!checkToken.test(line)) {
3319
- level = 0;
3320
- ignore = true;
3321
- }
3322
- break;
3323
- case "when":
3324
- if (/\sthen\s/.test(line) || val == "case") {
3325
- level = 0;
3326
- ignore = true;
3327
- }
3328
- break;
3329
- }
3330
-
3331
- if (level > 0) {
3332
- stack.unshift(token.value);
3333
- } else if (level <= 0 && ignore === false) {
3334
- stack.shift();
3335
- if (!stack.length) {
3336
- if ((val == "while" || val == "until" || val == "for") && token.value != "do") {
3337
- break;
3338
- }
3339
- if (token.value == "do" && dir == -1 && level != 0)
3340
- break;
3341
- if (token.value != "do")
3342
- break;
3343
- }
3344
-
3345
- if (level === 0) {
3346
- stack.unshift(token.value);
3347
- }
3348
- }
3349
- }
3350
- }
3351
-
3352
- if (!token)
3353
- return null;
3354
-
3355
- if (tokenRange) {
3356
- ranges.push(stream.getCurrentTokenRange());
3357
- return ranges;
3358
- }
3359
-
3360
- var row = stream.getCurrentTokenRow();
3361
- if (dir === -1) {
3362
- if (token.type === "comment.multiline") {
3363
- var endColumn = 6;
3364
- } else {
3365
- var endColumn = session.getLine(row).length;
3366
- }
3367
- return new Range(row, endColumn, startRow - 1, startColumn);
3368
- } else
3369
- return new Range(startRow, startColumn, row - 1, session.getLine(row - 1).length);
3370
- };
3371
-
3372
- }).call(FoldMode.prototype);
3373
-
3374
- });
3375
-
3376
- ace.define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/ruby"], function(require, exports, module) {
3377
- "use strict";
3378
-
3379
- var oop = require("../lib/oop");
3380
- var TextMode = require("./text").Mode;
3381
- var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules;
3382
- var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
3383
- var Range = require("../range").Range;
3384
- var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
3385
- var FoldMode = require("./folding/ruby").FoldMode;
3386
-
3387
- var Mode = function() {
3388
- this.HighlightRules = RubyHighlightRules;
3389
- this.$outdent = new MatchingBraceOutdent();
3390
- this.$behaviour = new CstyleBehaviour();
3391
- this.foldingRules = new FoldMode();
3392
- this.indentKeywords = this.foldingRules.indentKeywords;
3393
- };
3394
- oop.inherits(Mode, TextMode);
3395
-
3396
- (function() {
3397
-
3398
-
3399
- this.lineCommentStart = "#";
3400
-
3401
- this.getNextLineIndent = function(state, line, tab) {
3402
- var indent = this.$getIndent(line);
3403
-
3404
- var tokenizedLine = this.getTokenizer().getLineTokens(line, state);
3405
- var tokens = tokenizedLine.tokens;
3406
-
3407
- if (tokens.length && tokens[tokens.length - 1].type == "comment") {
3408
- return indent;
3409
- }
3410
-
3411
- if (state == "start") {
3412
- var match = line.match(/^.*[\{\(\[]\s*$/);
3413
- var startingClassOrMethod = line.match(/^\s*(class|def|module)\s.*$/);
3414
- var startingDoBlock = line.match(/.*do(\s*|\s+\|.*\|\s*)$/);
3415
- var startingConditional = line.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/);
3416
- if (match || startingClassOrMethod || startingDoBlock || startingConditional) {
3417
- indent += tab;
3418
- }
3419
- }
3420
-
3421
- return indent;
3422
- };
3423
-
3424
- this.checkOutdent = function(state, line, input) {
3425
- return /^\s+(end|else|rescue|ensure)$/.test(line + input) || this.$outdent.checkOutdent(line, input);
3426
- };
3427
-
3428
- this.autoOutdent = function(state, session, row) {
3429
- var line = session.getLine(row);
3430
- if (/}/.test(line))
3431
- return this.$outdent.autoOutdent(session, row);
3432
- var indent = this.$getIndent(line);
3433
- var prevLine = session.getLine(row - 1);
3434
- var prevIndent = this.$getIndent(prevLine);
3435
- var tab = session.getTabString();
3436
- if (prevIndent.length <= indent.length) {
3437
- if (indent.slice(-tab.length) == tab)
3438
- session.remove(new Range(row, indent.length - tab.length, row, indent.length));
3439
- }
3440
- };
3441
-
3442
- this.getMatching = function(session, row, column) {
3443
- if (row == undefined) {
3444
- var pos = session.selection.lead;
3445
- column = pos.column;
3446
- row = pos.row;
3447
- }
3448
-
3449
- var startToken = session.getTokenAt(row, column);
3450
- if (startToken && startToken.value in this.indentKeywords)
3451
- return this.foldingRules.rubyBlock(session, row, column, true);
3452
- };
3453
-
3454
- this.$id = "ace/mode/ruby";
3455
- this.snippetFileId = "ace/snippets/ruby";
3456
- }).call(Mode.prototype);
3457
-
3458
- exports.Mode = Mode;
3459
- });
3460
-
3461
- ace.define("ace/mode/ejs",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/javascript_highlight_rules","ace/lib/oop","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/ruby"], function(require, exports, module) {
3462
- "use strict";
3463
-
3464
- var oop = require("../lib/oop");
3465
- var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
3466
- var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
3467
-
3468
- var EjsHighlightRules = function(start, end) {
3469
- HtmlHighlightRules.call(this);
3470
-
3471
- if (!start)
3472
- start = "(?:<%|<\\?|{{)";
3473
- if (!end)
3474
- end = "(?:%>|\\?>|}})";
3475
-
3476
- for (var i in this.$rules) {
3477
- this.$rules[i].unshift({
3478
- token : "markup.list.meta.tag",
3479
- regex : start + "(?![>}])[-=]?",
3480
- push : "ejs-start"
3481
- });
3482
- }
3483
-
3484
- this.embedRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "ejs-", [{
3485
- token : "markup.list.meta.tag",
3486
- regex : "-?" + end,
3487
- next : "pop"
3488
- }, {
3489
- token: "comment",
3490
- regex: "//.*?" + end,
3491
- next: "pop"
3492
- }]);
3493
-
3494
- this.normalizeRules();
3495
- };
3496
-
3497
-
3498
- oop.inherits(EjsHighlightRules, HtmlHighlightRules);
3499
-
3500
- exports.EjsHighlightRules = EjsHighlightRules;
3501
-
3502
-
3503
- var oop = require("../lib/oop");
3504
- var HtmlMode = require("./html").Mode;
3505
- var JavaScriptMode = require("./javascript").Mode;
3506
- var CssMode = require("./css").Mode;
3507
- var RubyMode = require("./ruby").Mode;
3508
-
3509
- var Mode = function() {
3510
- HtmlMode.call(this);
3511
- this.HighlightRules = EjsHighlightRules;
3512
- this.createModeDelegates({
3513
- "js-": JavaScriptMode,
3514
- "css-": CssMode,
3515
- "ejs-": JavaScriptMode
3516
- });
3517
- };
3518
- oop.inherits(Mode, HtmlMode);
3519
-
3520
- (function() {
3521
-
3522
- this.$id = "ace/mode/ejs";
3523
- }).call(Mode.prototype);
3524
-
3525
- exports.Mode = Mode;
3526
- }); (function() {
3527
- ace.require(["ace/mode/ejs"], function(m) {
3528
- if (typeof module == "object" && typeof exports == "object" && module) {
3529
- module.exports = m;
3530
- }
3531
- });
3532
- })();
3533
-
1
+ ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var r=e("../lib/oop"),o=(e("../lib/lang"),e("./text_highlight_rules").TextHighlightRules),a=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",i=t.supportFunction="rgb|rgba|url|attr|counter|counters",s=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",l=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",c=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",u=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",g=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",d=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",p=function(){var e=this.createKeywordMapper({"support.function":i,"support.constant":s,"support.type":a,"support.constant.color":l,"support.constant.fonts":c},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:u},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+u+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:u},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:g},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:d},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(p,o),t.CssHighlightRules=p})),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,a=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},a.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(a,o),a.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},a.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},a.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=a})),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("./doc_comment_highlight_rules").DocCommentHighlightRules,a=e("./text_highlight_rules").TextHighlightRules,i="[a-zA-Z\\$_¡-￿][a-zA-Z\\d\\$_¡-￿]*",s=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[o.getStartRule("doc-start"),c("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+i+")(\\.)(prototype)(\\.)("+i+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+i+")(\\.)("+i+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+i+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+i+")(\\.)("+i+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+i+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+i+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void)\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:i},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+i+")(\\.)("+i+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:i},{regex:"",token:"empty",next:"no_regex"}],start:[o.getStartRule("doc-start"),c("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:i},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:n},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:n},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},e&&e.noES6||(this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){if(this.next="{"==e?this.nextState:"","{"==e&&n.length)n.unshift("start",t);else if("}"==e&&n.length&&(n.shift(),this.next=n.shift(),-1!=this.next.indexOf("string")||-1!=this.next.indexOf("jsx")))return"paren.quasi.end";return"{"==e?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:n},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),e&&0==e.jsx||l.call(this)),this.embedRules(o,"doc-",[o.getEndRule("no_regex")]),this.normalizeRules()};function l(){var e=i.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r="/"==e.charAt(1)?2:1;return 1==r?(t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++):2==r&&t==this.nextState&&(n[1]--,(!n[1]||n[1]<0)&&(n.shift(),n.shift())),[{type:"meta.tag.punctuation."+(1==r?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e,next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),2==e.length&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,c("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function c(e){return[{token:"comment",regex:/\/\*/,next:[o.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[o.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}r.inherits(s,a),t.JavaScriptHighlightRules=s})),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,a=function(e){var t="[_:a-zA-ZÀ-￿][-_:.a-zA-Z0-9À-￿]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],processing_instruction:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:t},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"--\x3e",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===a&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(o.prototype),r.inherits(a,o),t.XmlHighlightRules=a})),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],(function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("../lib/lang"),a=e("./css_highlight_rules").CssHighlightRules,i=e("./javascript_highlight_rules").JavaScriptHighlightRules,s=e("./xml_highlight_rules").XmlHighlightRules,l=o.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),c=function(){s.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=l[t];return["meta.tag.punctuation."+("<"==e?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(a,"css-","style"),this.embedTagRules(new i({jsx:!1}).getRules(),"js-","script"),this.constructor===c&&this.normalizeRules()};r.inherits(c,s),t.HtmlHighlightRules=c})),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],(function(e,t,n){"use strict";var r=e("../range").Range,o=function(){};(function(){this.checkOutdent=function(e,t){return!!/^\s+$/.test(e)&&/^\s*\}/.test(t)},this.autoOutdent=function(e,t){var n=e.getLine(t).match(/^(\s*\})/);if(!n)return 0;var o=n[1].length,a=e.findMatchingBracket({row:t,column:o});if(!a||a.row==t)return 0;var i=this.$getIndent(e.getLine(a.row));e.replace(new r(t,0,t,o-1),i)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(e,t,n){"use strict";var r=e("../../lib/oop"),o=e("../../range").Range,a=e("./fold_mode").FoldMode,i=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(i,a),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var o=this._getFoldWidgetBase(e,t,n);return!o&&this.startRegionRe.test(r)?"start":o},this.getFoldWidgetRange=function(e,t,n,r){var o,a=e.getLine(n);if(this.startRegionRe.test(a))return this.getCommentRegionBlock(e,a,n);if(o=a.match(this.foldingStartMarker)){var i=o.index;if(o[1])return this.openingBracketBlock(e,o[1],n,i);var s=e.getCommentFoldRange(n,i+o[0].length,1);return s&&!s.isMultiLine()&&(r?s=this.getSectionRange(e,n):"all"!=t&&(s=null)),s}if("markbegin"!==t&&(o=a.match(this.foldingStopMarker))){i=o.index+o[0].length;return o[1]?this.closingBracketBlock(e,o[1],n,i):e.getCommentFoldRange(n,i,-1)}},this.getSectionRange=function(e,t){for(var n=e.getLine(t),r=n.search(/\S/),a=t,i=n.length,s=t+=1,l=e.getLength();++t<l;){var c=(n=e.getLine(t)).search(/\S/);if(-1!==c){if(r>c)break;var u=this.getFoldWidgetRange(e,"all",t);if(u){if(u.start.row<=a)break;if(u.isMultiLine())t=u.end.row;else if(r==c)break}s=t}}return new o(a,i,s,e.getLine(s).length)},this.getCommentRegionBlock=function(e,t,n){for(var r=t.search(/\s*$/),a=e.getLength(),i=n,s=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++n<a;){t=e.getLine(n);var c=s.exec(t);if(c&&(c[1]?l--:l++,!l))break}if(n>i)return new o(i,r,n,t.length)}}.call(i.prototype)})),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],(function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("./text").Mode,a=e("./javascript_highlight_rules").JavaScriptHighlightRules,i=e("./matching_brace_outdent").MatchingBraceOutdent,s=e("../worker/worker_client").WorkerClient,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=a,this.$outdent=new i,this.$behaviour=new l,this.foldingRules=new c};r.inherits(u,o),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),o=this.getTokenizer().getLineTokens(t,e),a=o.tokens,i=o.state;if(a.length&&"comment"==a[a.length-1].type)return r;if("start"==e||"no_regex"==e)(s=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/))&&(r+=n);else if("doc-start"==e){if("start"==i||"no_regex"==i)return"";var s;(s=t.match(/^\s*(\/?)\*/))&&(s[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new s(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",(function(t){e.setAnnotations(t.data)})),t.on("terminate",(function(){e.clearAnnotations()})),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(u.prototype),t.Mode=u})),ace.define("ace/mode/css_completions",["require","exports","module"],(function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,double:2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{default:1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},float:{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,static:1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},o=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e)if("string"==typeof e[t]){var n=t.replace(/[A-Z]/g,(function(e){return"-"+e.toLowerCase()}));r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){if(this.completionsDefined||this.defineCompletions(),"ruleset"===e||"ace/mode/scss"==t.$mode.$id){var o=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(o)?(/([\w\-]+):[^:]*$/.test(o),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,o){return Object.keys(r).map((function(e){return{caption:e,snippet:e+": $0;",meta:"property",score:1e6}}))},this.getPropertyValueCompletions=function(e,t,n,o){var a=t.getLine(n.row).substr(0,n.column),i=(/([\w\-]+):[^:]*$/.exec(a)||{})[1];if(!i)return[];var s=[];return i in r&&"object"==typeof r[i]&&(s=Object.keys(r[i])),s.map((function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}}))}}).call(o.prototype),t.CssCompletions=o})),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],(function(e,t,n){"use strict";var r=e("../../lib/oop"),o=(e("../behaviour").Behaviour,e("./cstyle").CstyleBehaviour),a=e("../../token_iterator").TokenIterator,i=function(){this.inherit(o),this.add("colon","insertion",(function(e,t,n,r,o){if(":"===o&&n.selection.isEmpty()){var i=n.getCursorPosition(),s=new a(r,i.row,i.column),l=s.getCurrentToken();if(l&&l.value.match(/\s+/)&&(l=s.stepBackward()),l&&"support.type"===l.type){var c=r.doc.getLine(i.row);if(":"===c.substring(i.column,i.column+1))return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(c.substring(i.column)))return{text:":;",selection:[1,1]}}}})),this.add("colon","deletion",(function(e,t,n,r,o){var i=r.doc.getTextRange(o);if(!o.isMultiLine()&&":"===i){var s=n.getCursorPosition(),l=new a(r,s.row,s.column),c=l.getCurrentToken();if(c&&c.value.match(/\s+/)&&(c=l.stepBackward()),c&&"support.type"===c.type)if(";"===r.doc.getLine(o.start.row).substring(o.end.column,o.end.column+1))return o.end.column++,o}})),this.add("semicolon","insertion",(function(e,t,n,r,o){if(";"===o&&n.selection.isEmpty()){var a=n.getCursorPosition();if(";"===r.doc.getLine(a.row).substring(a.column,a.column+1))return{text:"",selection:[1,1]}}})),this.add("!important","insertion",(function(e,t,n,r,o){if("!"===o&&n.selection.isEmpty()){var a=n.getCursorPosition(),i=r.doc.getLine(a.row);if(/^\s*(;|}|$)/.test(i.substring(a.column)))return{text:"!important",selection:[10,10]}}}))};r.inherits(i,o),t.CssBehaviour=i})),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],(function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("./text").Mode,a=e("./css_highlight_rules").CssHighlightRules,i=e("./matching_brace_outdent").MatchingBraceOutdent,s=e("../worker/worker_client").WorkerClient,l=e("./css_completions").CssCompletions,c=e("./behaviour/css").CssBehaviour,u=e("./folding/cstyle").FoldMode,g=function(){this.HighlightRules=a,this.$outdent=new i,this.$behaviour=new c,this.$completer=new l,this.foldingRules=new u};r.inherits(g,o),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),o=this.getTokenizer().getLineTokens(t,e).tokens;return o.length&&"comment"==o[o.length-1].type||t.match(/^.*\{\s*$/)&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new s(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",(function(t){e.setAnnotations(t.data)})),t.on("terminate",(function(){e.clearAnnotations()})),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(g.prototype),t.Mode=g})),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],(function(e,t,n){"use strict";var r=e("../../lib/oop"),o=e("../behaviour").Behaviour,a=e("../../token_iterator").TokenIterator;e("../../lib/lang");function i(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var s=function(){this.add("string_dquotes","insertion",(function(e,t,n,r,o){if('"'==o||"'"==o){var s=o,l=r.doc.getTextRange(n.getSelectionRange());if(""!==l&&"'"!==l&&'"'!=l&&n.getWrapBehavioursEnabled())return{text:s+l+s,selection:!1};var c=n.getCursorPosition(),u=r.doc.getLine(c.row).substring(c.column,c.column+1),g=new a(r,c.row,c.column),d=g.getCurrentToken();if(u==s&&(i(d,"attribute-value")||i(d,"string")))return{text:"",selection:[1,1]};if(d||(d=g.stepBackward()),!d)return;for(;i(d,"tag-whitespace")||i(d,"whitespace");)d=g.stepBackward();var p=!u||u.match(/\s/);if(i(d,"attribute-equals")&&(p||">"==u)||i(d,"decl-attribute-equals")&&(p||"?"==u))return{text:s+s,selection:[1,1]}}})),this.add("string_dquotes","deletion",(function(e,t,n,r,o){var a=r.doc.getTextRange(o);if(!o.isMultiLine()&&('"'==a||"'"==a)&&r.doc.getLine(o.start.row).substring(o.start.column+1,o.start.column+2)==a)return o.end.column++,o})),this.add("autoclosing","insertion",(function(e,t,n,r,o){if(">"==o){var s=n.getSelectionRange().start,l=new a(r,s.row,s.column),c=l.getCurrentToken()||l.stepBackward();if(!c||!(i(c,"tag-name")||i(c,"tag-whitespace")||i(c,"attribute-name")||i(c,"attribute-equals")||i(c,"attribute-value")))return;if(i(c,"reference.attribute-value"))return;if(i(c,"attribute-value")){var u=l.getCurrentTokenColumn()+c.value.length;if(s.column<u)return;if(s.column==u){var g=l.stepForward();if(g&&i(g,"attribute-value"))return;l.stepBackward()}}if(/^\s*>/.test(r.getLine(s.row).slice(s.column)))return;for(;!i(c,"tag-name");)if("<"==(c=l.stepBackward()).value){c=l.stepForward();break}var d=l.getCurrentTokenRow(),p=l.getCurrentTokenColumn();if(i(l.stepBackward(),"end-tag-open"))return;var m=c.value;if(d==s.row&&(m=m.substring(0,s.column-p)),this.voidElements.hasOwnProperty(m.toLowerCase()))return;return{text:"></"+m+">",selection:[1,1]}}})),this.add("autoindent","insertion",(function(e,t,n,r,o){if("\n"==o){var i=n.getCursorPosition(),s=r.getLine(i.row),l=new a(r,i.row,i.column),c=l.getCurrentToken();if(c&&-1!==c.type.indexOf("tag-close")){if("/>"==c.value)return;for(;c&&-1===c.type.indexOf("tag-name");)c=l.stepBackward();if(!c)return;var u=c.value,g=l.getCurrentTokenRow();if(!(c=l.stepBackward())||-1!==c.type.indexOf("end-tag"))return;if(this.voidElements&&!this.voidElements[u]){var d=r.getTokenAt(i.row,i.column+1),p=(s=r.getLine(g),this.$getIndent(s)),m=p+r.getTabString();return d&&"</"===d.value?{text:"\n"+m+"\n"+p,selection:[1,m.length,1,m.length]}:{text:"\n"+m}}}}}))};r.inherits(s,o),t.XmlBehaviour=s})),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],(function(e,t,n){"use strict";var r=e("../../lib/oop"),o=e("./fold_mode").FoldMode,a=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(a,o),function(){this.$getMode=function(e){for(var t in"string"!=typeof e&&(e=e[0]),this.subModes)if(0===e.indexOf(t))return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var o=this.$getMode(e);return o?o.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));return r&&r.getFoldWidget(e,t,n)||(r=this.$getMode(e.getState(n))),r&&r.getFoldWidget(e,t,n)||(r=this.defaultMode),r.getFoldWidgetRange(e,t,n)}}.call(a.prototype)})),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],(function(e,t,n){"use strict";var r=e("../../lib/oop"),o=(e("../../lib/lang"),e("../../range").Range),a=e("./fold_mode").FoldMode,i=e("../../token_iterator").TokenIterator,s=t.FoldMode=function(e,t){a.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(s,a);var l=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};function c(e,t){return e.type.lastIndexOf(t+".xml")>-1}(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?"markbeginend"==t?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())||this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/<!-/.test(e.getLine(t))?"start":""},this._getFirstTagInLine=function(e,t){for(var n=e.getTokens(t),r=new l,o=0;o<n.length;o++){var a=n[o];if(c(a,"tag-open")){if(r.end.column=r.start.column+a.value.length,r.closing=c(a,"end-tag-open"),!(a=n[++o]))return null;for(r.tagName=a.value,r.end.column+=a.value.length,o++;o<n.length;o++)if(a=n[o],r.end.column+=a.value.length,c(a,"tag-close")){r.selfClosing="/>"==a.value;break}return r}if(c(a,"tag-close"))return r.selfClosing="/>"==a.value,r;r.start.column+=a.value.length}return null},this._findEndTagInLine=function(e,t,n,r){for(var o=e.getTokens(t),a=0,i=0;i<o.length;i++){var s=o[i];if(!((a+=s.value.length)<r)&&c(s,"end-tag-open")&&(s=o[i+1])&&s.value==n)return!0}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new l;do{if(c(t,"tag-open"))n.closing=c(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(c(t,"tag-name"))n.tagName=t.value;else if(c(t,"tag-close"))return n.selfClosing="/>"==t.value,n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n}while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new l;do{if(c(t,"tag-open"))return n.closing=c(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;c(t,"tag-name")?n.tagName=t.value:c(t,"tag-close")&&(n.selfClosing="/>"==t.value,n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){for(;e.length;){var n=e[e.length-1];if(t&&n.tagName!=t.tagName){if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}return e.pop()}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return this.getCommentFoldWidget(e,n)&&e.getCommentFoldRange(n,e.getLine(n).length);var a,s=[];if(r.closing||r.selfClosing){c=new i(e,n,r.end.column);for(var l={row:n,column:r.start.column};a=this._readTagBackward(c);){if(a.selfClosing){if(s.length)continue;return a.start.column+=a.tagName.length+2,a.end.column-=2,o.fromPoints(a.start,a.end)}if(a.closing)s.push(a);else if(this._pop(s,a),0==s.length)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),o.fromPoints(a.start,l)}}else{var c=new i(e,n,r.start.column),u={row:n,column:r.start.column+r.tagName.length+2};for(r.start.row==r.end.row&&(u.column=r.end.column);a=this._readTagForward(c);){if(a.selfClosing){if(s.length)continue;return a.start.column+=a.tagName.length+2,a.end.column-=2,o.fromPoints(a.start,a.end)}if(a.closing){if(this._pop(s,a),0==s.length)return o.fromPoints(u,a.start)}else s.push(a)}}}}).call(s.prototype)})),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],(function(e,t,n){"use strict";var r=e("../../lib/oop"),o=e("./mixed").FoldMode,a=e("./xml").FoldMode,i=e("./cstyle").FoldMode,s=t.FoldMode=function(e,t){o.call(this,new a(e,t),{"js-":new i,"css-":new i})};r.inherits(s,o)})),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],(function(e,t,n){"use strict";var r=e("../token_iterator").TokenIterator,o=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"].concat(["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"]),a={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,for:1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{for:1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,default:1},section:{},summary:{},u:{},ul:{},var:{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},i=Object.keys(a);function s(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){for(var n=new r(e,t.row,t.column),o=n.getCurrentToken();o&&!s(o,"tag-name");)o=n.stepBackward();if(o)return o.value}var c=function(){};(function(){this.getCompletions=function(e,t,n,r){var o=t.getTokenAt(n.row,n.column);if(!o)return[];if(s(o,"tag-name")||s(o,"tag-open")||s(o,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(s(o,"tag-whitespace")||s(o,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(s(o,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var a=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(a)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return i.map((function(e){return{value:e,meta:"tag",score:1e6}}))},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in a&&(s=s.concat(Object.keys(a[i]))),s.map((function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}}))},this.getAttributeValueCompletions=function(e,t,n,o){var i=l(t,n),c=function(e,t){for(var n=new r(e,t.row,t.column),o=n.getCurrentToken();o&&!s(o,"attribute-name");)o=n.stepBackward();if(o)return o.value}(t,n);if(!i)return[];var u=[];return i in a&&c in a[i]&&"object"==typeof a[i][c]&&(u=Object.keys(a[i][c])),u.map((function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}}))},this.getHTMLEntityCompletions=function(e,t,n,r){return["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"].map((function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}}))}}).call(c.prototype),t.HtmlCompletions=c})),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],(function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("../lib/lang"),a=e("./text").Mode,i=e("./javascript").Mode,s=e("./css").Mode,l=e("./html_highlight_rules").HtmlHighlightRules,c=e("./behaviour/xml").XmlBehaviour,u=e("./folding/html").FoldMode,g=e("./html_completions").HtmlCompletions,d=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],m=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],h=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=l,this.$behaviour=new c,this.$completer=new g,this.createModeDelegates({"js-":i,"css-":s}),this.foldingRules=new u(this.voidElements,o.arrayToMap(m))};r.inherits(h,a),function(){this.blockComment={start:"\x3c!--",end:"--\x3e"},this.voidElements=o.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor==h){var t=new d(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",(function(t){e.setAnnotations(t.data)})),t.on("terminate",(function(){e.clearAnnotations()})),t}},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(h.prototype),t.Mode=h})),ace.define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,a=t.constantOtherSymbol={token:"constant.other.symbol.ruby",regex:"[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"};t.qString={token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},t.qqString={token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},t.tString={token:"string",regex:"[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"};var i=t.constantNumericHex={token:"constant.numeric",regex:"0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"},s=t.constantNumericBinary={token:"constant.numeric",regex:/\b(0[bB][01](?:[01]|_(?=[01]))*)\b/},l=t.constantNumericDecimal={token:"constant.numeric",regex:/\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/},c=t.constantNumericDecimal={token:"constant.numeric",regex:/\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/},u=t.constantNumericRational={token:"constant.numeric",regex:/\b([\d]+(?:[./][\d]+)?ri?)\b/},g=t.constantNumericComplex={token:"constant.numeric",regex:/\b([\d]i)\b/},d=t.constantNumericFloat={token:"constant.numeric",regex:"[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b"},p=t.instanceVariable={token:"variable.instance",regex:"@{1,2}[a-zA-Z_\\d]+"},m=function(){var e=this.$keywords=this.createKeywordMapper({keyword:"alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend","constant.language":"true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION","variable.language":"$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|$!|root_url|flash|session|cookies|params|request|response|logger|self","support.function":"abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|validates_inclusion_of|validates_numericality_of|validates_with|validates_each|authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|cache|expire_fragment|expire_cache_for|observe|cache_sweeper|has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|private_class_method|remove_method|undef_method","invalid.deprecated":"debugger"},"identifier"),t="\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})",n={"(":")","[":"]","{":"}","<":">","^":"^","|":"|","%":"%"};this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"comment.multiline",regex:"^=begin(?=$|\\s.*$)",next:"comment"},{token:"string.regexp",regex:/[/](?=.*\/)/,next:"regex"},[{token:["constant.other.symbol.ruby","string.start"],regex:/(:)?(")/,push:[{token:"constant.language.escape",regex:t},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.end",regex:/"/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/`/,push:[{token:"constant.language.escape",regex:t},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.end",regex:/`/,next:"pop"},{defaultToken:"string"}]},{token:["constant.other.symbol.ruby","string.start"],regex:/(:)?(')/,push:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string.end",regex:/'/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/%[qwx]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="qStateWithoutInterpolation",this.token}},{token:"string.start",regex:/%[QWX]?([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="qStateWithInterpolation",this.token}},{token:"constant.other.symbol.ruby",regex:/%[si]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="sStateWithoutInterpolation",this.token}},{token:"constant.other.symbol.ruby",regex:/%[SI]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="sStateWithInterpolation",this.token}},{token:"string.regexp",regex:/%[r]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="rState",this.token}}],{token:"punctuation",regex:"::"},p,{token:"variable.global",regex:"[$][a-zA-Z_\\d]+"},{token:"support.class",regex:"[A-Z][a-zA-Z_\\d]*"},{token:["punctuation.operator","support.function"],regex:/(\.)([a-zA-Z_\d]+)(?=\()/},{token:["punctuation.operator","identifier"],regex:/(\.)([a-zA-Z_][a-zA-Z_\d]*)/},{token:"string.character",regex:"\\B\\?(?:"+t+"|\\S)"},{token:"punctuation.operator",regex:/\?(?=.+:)/},u,g,a,i,d,s,l,c,{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"punctuation.separator.key-value",regex:"=>"},{stateName:"heredoc",onMatch:function(e,t,n){var r="-"==e[2]||"~"==e[2]?"indentedHeredoc":"heredoc",o=e.split(this.splitRegex);return n.push(r,o[3]),[{type:"constant",value:o[1]},{type:"string",value:o[2]},{type:"support.class",value:o[3]},{type:"string",value:o[4]}]},regex:"(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)",rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return"heredoc"===t[0]||"indentedHeredoc"===t[0]?t[0]:e}},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]",onMatch:function(e,t,n){return this.next="","}"==e&&n.length>1&&"start"!=n[1]&&(n.shift(),this.next=n.shift()),this.token}},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:/[?:,;.]/}],comment:[{token:"comment.multiline",regex:"^=end(?=$|\\s.*$)",next:"start"},{token:"comment",regex:".+"}],qStateWithInterpolation:[{token:"string.start",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"string"}},{token:"constant.language.escape",regex:t},{token:"constant.language.escape",regex:/\\./},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.end",regex:/[)\]>}^|%]/,onMatch:function(e,t,r){return r.length&&e===n[r[0]]?(r.shift(),this.next=r.shift(),this.token):(this.next="","string")}},{defaultToken:"string"}],qStateWithoutInterpolation:[{token:"string.start",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"string"}},{token:"constant.language.escape",regex:/\\['\\]/},{token:"constant.language.escape",regex:/\\./},{token:"string.end",regex:/[)\]>}^|%]/,onMatch:function(e,t,r){return r.length&&e===n[r[0]]?(r.shift(),this.next=r.shift(),this.token):(this.next="","string")}},{defaultToken:"string"}],sStateWithoutInterpolation:[{token:"constant.other.symbol.ruby",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"constant.other.symbol.ruby"}},{token:"constant.other.symbol.ruby",regex:/[)\]>}^|%]/,onMatch:function(e,t,r){return r.length&&e===n[r[0]]?(r.shift(),this.next=r.shift(),this.token):(this.next="","constant.other.symbol.ruby")}},{defaultToken:"constant.other.symbol.ruby"}],sStateWithInterpolation:[{token:"constant.other.symbol.ruby",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"constant.other.symbol.ruby"}},{token:"constant.language.escape",regex:t},{token:"constant.language.escape",regex:/\\./},{token:"paren.start",regex:/#{/,push:"start"},{token:"constant.other.symbol.ruby",regex:/[)\]>}^|%]/,onMatch:function(e,t,r){return r.length&&e===n[r[0]]?(r.shift(),this.next=r.shift(),this.token):(this.next="","constant.other.symbol.ruby")}},{defaultToken:"constant.other.symbol.ruby"}],rState:[{token:"string.regexp",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"constant.language.escape"}},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.regexp",regex:/\//},{token:"string.regexp",regex:/[)\]>}^|%][imxouesn]*/,onMatch:function(e,t,r){return r.length&&e[0]===n[r[0]]?(r.shift(),this.next=r.shift(),this.token):(this.next="","constant.language.escape")}},{include:"regex"},{defaultToken:"string.regexp"}],regex:[{token:"regexp.keyword",regex:/\\[wWdDhHsS]/},{token:"constant.language.escape",regex:/\\[AGbBzZ]/},{token:"constant.language.escape",regex:/\\g<[a-zA-Z0-9]*>/},{token:["constant.language.escape","regexp.keyword","constant.language.escape"],regex:/(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/},{token:["constant.language.escape","invalid","constant.language.escape"],regex:/(\\p{\^?)([^/]*)(})/},{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:/[/][imxouesn]*/,next:"start"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"regexp.keyword",regex:/\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/},{token:"constant.language.escape",regex:/\[\^?/,push:"regex_character_class"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.keyword",regex:/\\[wWdDhHsS]/},{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:/&?&?\[\^?/,push:"regex_character_class"},{token:"constant.language.escape",regex:"]",next:"pop"},{token:"constant.language.escape",regex:"-"},{defaultToken:"string.regexp.characterclass"}]},this.normalizeRules()};r.inherits(m,o),t.RubyHighlightRules=m})),ace.define("ace/mode/folding/ruby",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"],(function(e,t,n){"use strict";var r=e("../../lib/oop"),o=e("./fold_mode").FoldMode,a=e("../../range").Range,i=e("../../token_iterator").TokenIterator,s=t.FoldMode=function(){};r.inherits(s,o),function(){this.indentKeywords={class:1,def:1,module:1,do:1,unless:1,if:1,while:1,for:1,until:1,begin:1,else:0,elsif:0,rescue:0,ensure:0,when:0,end:-1,case:1,"=begin":1,"=end":-1},this.foldingStartMarker=/(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/,this.foldingStopMarker=/(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/,this.getFoldWidget=function(e,t,n){var r,o=e.getLine(n),a=this.foldingStartMarker.test(o),i=this.foldingStopMarker.test(o);if(a&&!i)if((r=o.match(this.foldingStartMarker))[1]){if("if"==r[1]||"else"==r[1]||"while"==r[1]||"until"==r[1]||"unless"==r[1]){if("else"==r[1]&&!1===/^\s*else\s*$/.test(o))return;if(!1===/^\s*(?:if|else|while|until|unless)\s*/.test(o))return}if("when"==r[1]&&!0===/\sthen\s/.test(o))return;if("keyword"===e.getTokenAt(n,r.index+2).type)return"start"}else{if(!r[3])return"start";if("comment.multiline"===e.getTokenAt(n,r.index+1).type)return"start"}if("markbeginend"!=t||!i||a&&i)return"";if("end"===(r=o.match(this.foldingStopMarker))[3]){if("keyword"===e.getTokenAt(n,r.index+1).type)return"end"}else{if(!r[1])return"end";if("comment.multiline"===e.getTokenAt(n,r.index+1).type)return"end"}},this.getFoldWidgetRange=function(e,t,n){var r,o=e.doc.getLine(n);return(r=this.foldingStartMarker.exec(o))?r[1]||r[3]?this.rubyBlock(e,n,r.index+2):this.openingBracketBlock(e,"{",n,r.index):(r=this.foldingStopMarker.exec(o))?"end"===r[3]&&"keyword"===e.getTokenAt(n,r.index+1).type||"=end"===r[1]&&"comment.multiline"===e.getTokenAt(n,r.index+1).type?this.rubyBlock(e,n,r.index+1):this.closingBracketBlock(e,"}",n,r.index+r[0].length):void 0},this.rubyBlock=function(e,t,n,r){var o=new i(e,t,n),s=o.getCurrentToken();if(s&&("keyword"==s.type||"comment.multiline"==s.type)){var l=s.value,c=e.getLine(t);switch(s.value){case"if":case"unless":case"while":case"until":if(!new RegExp("^\\s*"+s.value).test(c))return;var u=this.indentKeywords[l];break;case"when":if(/\sthen\s/.test(c))return;case"elsif":case"rescue":case"ensure":u=1;break;case"else":if(!new RegExp("^\\s*"+s.value+"\\s*$").test(c))return;u=1;break;default:u=this.indentKeywords[l]}var g=[l];if(u){var d=-1===u?e.getLine(t-1).length:e.getLine(t).length,p=t,m=[];if(m.push(o.getCurrentTokenRange()),o.step=-1===u?o.stepBackward:o.stepForward,"comment.multiline"==s.type){for(;s=o.step();)if("comment.multiline"===s.type)if(1==u){if(d=6,"=end"==s.value)break}else if("=begin"==s.value)break}else for(;s=o.step();){var h=!1;if("keyword"===s.type){var f=u*this.indentKeywords[s.value];switch(c=e.getLine(o.getCurrentTokenRow()),s.value){case"do":for(var x=o.$tokenIndex-1;x>=0;x--){var b=o.$rowTokens[x];if(b&&("while"==b.value||"until"==b.value||"for"==b.value)){f=0;break}}break;case"else":new RegExp("^\\s*"+s.value+"\\s*$").test(c)&&"case"!=l||(f=0,h=!0);break;case"if":case"unless":case"while":case"until":new RegExp("^\\s*"+s.value).test(c)||(f=0,h=!0);break;case"when":(/\sthen\s/.test(c)||"case"==l)&&(f=0,h=!0)}if(f>0)g.unshift(s.value);else if(f<=0&&!1===h){if(g.shift(),!g.length){if(("while"==l||"until"==l||"for"==l)&&"do"!=s.value)break;if("do"==s.value&&-1==u&&0!=f)break;if("do"!=s.value)break}0===f&&g.unshift(s.value)}}}if(!s)return null;if(r)return m.push(o.getCurrentTokenRange()),m;t=o.getCurrentTokenRow();if(-1===u){if("comment.multiline"===s.type)var k=6;else k=e.getLine(t).length;return new a(t,k,p-1,d)}return new a(p,d,t-1,e.getLine(t-1).length)}}}}.call(s.prototype)})),ace.define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/ruby"],(function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("./text").Mode,a=e("./ruby_highlight_rules").RubyHighlightRules,i=e("./matching_brace_outdent").MatchingBraceOutdent,s=e("../range").Range,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/ruby").FoldMode,u=function(){this.HighlightRules=a,this.$outdent=new i,this.$behaviour=new l,this.foldingRules=new c,this.indentKeywords=this.foldingRules.indentKeywords};r.inherits(u,o),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),o=this.getTokenizer().getLineTokens(t,e).tokens;if(o.length&&"comment"==o[o.length-1].type)return r;if("start"==e){var a=t.match(/^.*[\{\(\[]\s*$/),i=t.match(/^\s*(class|def|module)\s.*$/),s=t.match(/.*do(\s*|\s+\|.*\|\s*)$/),l=t.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/);(a||i||s||l)&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return/^\s+(end|else|rescue|ensure)$/.test(t+n)||this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){var r=t.getLine(n);if(/}/.test(r))return this.$outdent.autoOutdent(t,n);var o=this.$getIndent(r),a=t.getLine(n-1),i=this.$getIndent(a),l=t.getTabString();i.length<=o.length&&o.slice(-l.length)==l&&t.remove(new s(n,o.length-l.length,n,o.length))},this.getMatching=function(e,t,n){if(null==t){var r=e.selection.lead;n=r.column,t=r.row}var o=e.getTokenAt(t,n);if(o&&o.value in this.indentKeywords)return this.foldingRules.rubyBlock(e,t,n,!0)},this.$id="ace/mode/ruby",this.snippetFileId="ace/snippets/ruby"}.call(u.prototype),t.Mode=u})),ace.define("ace/mode/ejs",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/javascript_highlight_rules","ace/lib/oop","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/ruby"],(function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("./html_highlight_rules").HtmlHighlightRules,a=e("./javascript_highlight_rules").JavaScriptHighlightRules,i=function(e,t){for(var n in o.call(this),e||(e="(?:<%|<\\?|{{)"),t||(t="(?:%>|\\?>|}})"),this.$rules)this.$rules[n].unshift({token:"markup.list.meta.tag",regex:e+"(?![>}])[-=]?",push:"ejs-start"});this.embedRules(new a({jsx:!1}).getRules(),"ejs-",[{token:"markup.list.meta.tag",regex:"-?"+t,next:"pop"},{token:"comment",regex:"//.*?"+t,next:"pop"}]),this.normalizeRules()};r.inherits(i,o),t.EjsHighlightRules=i;r=e("../lib/oop");var s=e("./html").Mode,l=e("./javascript").Mode,c=e("./css").Mode,u=(e("./ruby").Mode,function(){s.call(this),this.HighlightRules=i,this.createModeDelegates({"js-":l,"css-":c,"ejs-":l})});r.inherits(u,s),function(){this.$id="ace/mode/ejs"}.call(u.prototype),t.Mode=u})),ace.require(["ace/mode/ejs"],(function(e){"object"==typeof module&&"object"==typeof exports&&module&&(module.exports=e)}));