x_ite 4.0.5 → 4.7.5

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 (1007) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
  2. package/.vscode/settings.json +15 -0
  3. package/.vscode/tasks.json +25 -0
  4. package/Makefile +55 -15
  5. package/README.md +13 -130
  6. package/build/bin/dist.pl +156 -0
  7. package/build/bin/version-number.pl +25 -0
  8. package/build/{version.pl → bin/version.pl} +64 -21
  9. package/build/components/annotation.build.js +15 -0
  10. package/build/components/cad-geometry.build.js +15 -0
  11. package/build/components/cube-map-texturing.build.js +15 -0
  12. package/build/components/dis.build.js +15 -0
  13. package/build/components/event-utilities.build.js +15 -0
  14. package/build/components/geometry2d.build.js +15 -0
  15. package/build/components/geospatial.build.js +15 -0
  16. package/build/components/h-anim.build.js +15 -0
  17. package/build/components/key-device-sensor.build.js +15 -0
  18. package/build/components/layout.build.js +15 -0
  19. package/build/components/nurbs.build.js +15 -0
  20. package/build/components/particle-systems.build.js +15 -0
  21. package/build/components/picking.build.js +15 -0
  22. package/build/components/projective-texture-mapping.build.js +15 -0
  23. package/build/components/rigid-body-physics.build.js +15 -0
  24. package/build/components/scripting.build.js +15 -0
  25. package/build/components/texturing-3d.build.js +15 -0
  26. package/build/components/volume-rendering.build.js +15 -0
  27. package/build/components/x_ite.build.js +15 -0
  28. package/build/parts/default.end.frag +2 -0
  29. package/build/parts/default.start.frag +6 -0
  30. package/build/parts/x_ite.end.frag +23 -0
  31. package/build/parts/x_ite.start.frag +8 -0
  32. package/build/x_ite.build.js +18 -0
  33. package/dist/LICENSE.txt +49 -0
  34. package/dist/assets/components/annotation.js +813 -0
  35. package/dist/assets/components/annotation.min.js +1 -0
  36. package/dist/assets/components/cad-geometry.js +1037 -0
  37. package/dist/assets/components/cad-geometry.min.js +1 -0
  38. package/dist/assets/components/cube-map-texturing.js +1212 -0
  39. package/dist/assets/components/cube-map-texturing.min.js +1 -0
  40. package/dist/assets/components/dis.js +908 -0
  41. package/dist/assets/components/dis.min.js +1 -0
  42. package/dist/assets/components/event-utilities.js +1114 -0
  43. package/dist/assets/components/event-utilities.min.js +1 -0
  44. package/dist/assets/components/geometry2d.js +2190 -0
  45. package/dist/assets/components/geometry2d.min.js +1 -0
  46. package/dist/assets/components/geospatial.js +3850 -0
  47. package/dist/assets/components/geospatial.min.js +2 -0
  48. package/dist/assets/components/h-anim.js +1084 -0
  49. package/dist/assets/components/h-anim.min.js +1 -0
  50. package/dist/assets/components/key-device-sensor.js +850 -0
  51. package/dist/assets/components/key-device-sensor.min.js +1 -0
  52. package/dist/assets/components/layout.js +2008 -0
  53. package/dist/assets/components/layout.min.js +1 -0
  54. package/dist/assets/components/nurbs.js +5388 -0
  55. package/dist/assets/components/nurbs.min.js +2 -0
  56. package/dist/assets/components/particle-systems.js +4216 -0
  57. package/dist/assets/components/particle-systems.min.js +2 -0
  58. package/dist/assets/components/picking.js +2481 -0
  59. package/dist/assets/components/picking.min.js +1 -0
  60. package/dist/assets/components/projective-texture-mapping.js +813 -0
  61. package/dist/assets/components/projective-texture-mapping.min.js +1 -0
  62. package/dist/assets/components/rigid-body-physics.js +4569 -0
  63. package/dist/assets/components/rigid-body-physics.min.js +59 -0
  64. package/dist/assets/components/scripting.js +801 -0
  65. package/dist/assets/components/scripting.min.js +1 -0
  66. package/dist/assets/components/texturing-3d.js +10054 -0
  67. package/dist/assets/components/texturing-3d.min.js +48 -0
  68. package/dist/assets/components/volume-rendering.js +3966 -0
  69. package/dist/assets/components/volume-rendering.min.js +3 -0
  70. package/dist/assets/components/x_ite.js +285 -0
  71. package/dist/assets/components/x_ite.min.js +1 -0
  72. package/{fonts → dist/assets/fonts}/DroidSerif-Bold.ttf +0 -0
  73. package/{fonts → dist/assets/fonts}/DroidSerif-BoldItalic.ttf +0 -0
  74. package/{fonts → dist/assets/fonts}/DroidSerif-Italic.ttf +0 -0
  75. package/{fonts → dist/assets/fonts}/DroidSerif-Regular.ttf +0 -0
  76. package/{fonts → dist/assets/fonts}/Ubuntu-B.ttf +0 -0
  77. package/{fonts → dist/assets/fonts}/Ubuntu-BI.ttf +0 -0
  78. package/{fonts → dist/assets/fonts}/Ubuntu-R.ttf +0 -0
  79. package/{fonts → dist/assets/fonts}/Ubuntu-RI.ttf +0 -0
  80. package/{fonts → dist/assets/fonts}/UbuntuMono-B.ttf +0 -0
  81. package/{fonts → dist/assets/fonts}/UbuntuMono-BI.ttf +0 -0
  82. package/{fonts → dist/assets/fonts}/UbuntuMono-R.ttf +0 -0
  83. package/{fonts → dist/assets/fonts}/UbuntuMono-RI.ttf +0 -0
  84. package/dist/assets/hatching/0.png +0 -0
  85. package/dist/assets/hatching/1.png +0 -0
  86. package/dist/assets/hatching/10.png +0 -0
  87. package/dist/assets/hatching/11.png +0 -0
  88. package/dist/assets/hatching/12.png +0 -0
  89. package/dist/assets/hatching/13.png +0 -0
  90. package/dist/assets/hatching/14.png +0 -0
  91. package/dist/assets/hatching/15.png +0 -0
  92. package/dist/assets/hatching/16.png +0 -0
  93. package/dist/assets/hatching/17.png +0 -0
  94. package/dist/assets/hatching/18.png +0 -0
  95. package/dist/assets/hatching/19.png +0 -0
  96. package/dist/assets/hatching/2.png +0 -0
  97. package/dist/assets/hatching/3.png +0 -0
  98. package/dist/assets/hatching/4.png +0 -0
  99. package/dist/assets/hatching/5.png +0 -0
  100. package/dist/assets/hatching/6.png +0 -0
  101. package/dist/assets/hatching/7.png +0 -0
  102. package/dist/assets/hatching/8.png +0 -0
  103. package/dist/assets/hatching/9.png +0 -0
  104. package/dist/{images → assets/images}/ExamineViewer.png +0 -0
  105. package/dist/{images → assets/images}/FlyViewer.png +0 -0
  106. package/dist/{images → assets/images}/NoneViewer.png +0 -0
  107. package/dist/{images → assets/images}/PlaneViewer.png +0 -0
  108. package/dist/{images → assets/images}/PrimitiveQuality.png +0 -0
  109. package/dist/{images → assets/images}/TextureQuality.png +0 -0
  110. package/dist/{images → assets/images}/Time.png +0 -0
  111. package/dist/{images → assets/images}/Viewpoint.png +0 -0
  112. package/dist/{images → assets/images}/WalkViewer.png +0 -0
  113. package/dist/assets/images/go-next.png +0 -0
  114. package/dist/{images → assets/images}/gtk-fullscreen.png +0 -0
  115. package/dist/{images → assets/images}/gtk-leave-fullscreen.png +0 -0
  116. package/dist/{images → assets/images}/gtk-zoom-fit.png +0 -0
  117. package/dist/{images → assets/images}/gtk-zoom-in.png +0 -0
  118. package/dist/{images → assets/images}/help-about.png +0 -0
  119. package/dist/{images → assets/images}/icon.bw.png +0 -0
  120. package/dist/{images → assets/images}/icon.png +0 -0
  121. package/dist/assets/images/logo.128.png +0 -0
  122. package/dist/{images → assets/images}/logo.bw.png +0 -0
  123. package/dist/{images → assets/images}/logo.png +0 -0
  124. package/dist/assets/linetype/0.png +0 -0
  125. package/dist/assets/linetype/1.png +0 -0
  126. package/dist/assets/linetype/10.png +0 -0
  127. package/dist/assets/linetype/11.png +0 -0
  128. package/dist/assets/linetype/12.png +0 -0
  129. package/dist/assets/linetype/13.png +0 -0
  130. package/dist/assets/linetype/14.png +0 -0
  131. package/dist/assets/linetype/15.png +0 -0
  132. package/dist/assets/linetype/16.png +0 -0
  133. package/dist/assets/linetype/2.png +0 -0
  134. package/dist/assets/linetype/3.png +0 -0
  135. package/dist/assets/linetype/4.png +0 -0
  136. package/dist/assets/linetype/5.png +0 -0
  137. package/dist/assets/linetype/6.png +0 -0
  138. package/dist/assets/linetype/7.png +0 -0
  139. package/dist/assets/linetype/8.png +0 -0
  140. package/dist/assets/linetype/9.png +0 -0
  141. package/dist/assets/shaders/webgl1/Background.fs +23 -0
  142. package/dist/assets/shaders/webgl1/Background.vs +16 -0
  143. package/dist/assets/shaders/webgl1/Depth.fs +60 -0
  144. package/dist/assets/shaders/webgl1/Depth.vs +13 -0
  145. package/dist/assets/shaders/webgl1/Fallback.fs +28 -0
  146. package/dist/assets/shaders/webgl1/Fallback.vs +24 -0
  147. package/dist/assets/shaders/webgl1/FallbackUnlit.fs +16 -0
  148. package/dist/assets/shaders/webgl1/FallbackUnlit.vs +18 -0
  149. package/dist/assets/shaders/webgl1/Gouraud.fs +529 -0
  150. package/dist/assets/shaders/webgl1/Gouraud.vs +108 -0
  151. package/dist/assets/shaders/webgl1/Phong.fs +838 -0
  152. package/dist/assets/shaders/webgl1/Phong.vs +52 -0
  153. package/dist/assets/shaders/webgl1/PointSet.fs +541 -0
  154. package/dist/assets/shaders/webgl1/PointSet.vs +48 -0
  155. package/dist/assets/shaders/webgl1/Unlit.fs +541 -0
  156. package/dist/assets/shaders/webgl1/Unlit.vs +52 -0
  157. package/dist/assets/shaders/webgl1/Wireframe.fs +93 -0
  158. package/dist/assets/shaders/webgl1/Wireframe.vs +47 -0
  159. package/dist/assets/shaders/webgl2/Background.fs +25 -0
  160. package/dist/assets/shaders/webgl2/Background.vs +17 -0
  161. package/dist/assets/shaders/webgl2/Depth.fs +62 -0
  162. package/dist/assets/shaders/webgl2/Depth.vs +14 -0
  163. package/dist/assets/shaders/webgl2/Gouraud.fs +684 -0
  164. package/dist/assets/shaders/webgl2/Gouraud.vs +109 -0
  165. package/dist/assets/shaders/webgl2/Phong.fs +1014 -0
  166. package/dist/assets/shaders/webgl2/Phong.vs +53 -0
  167. package/dist/assets/shaders/webgl2/PointSet.fs +696 -0
  168. package/dist/assets/shaders/webgl2/PointSet.vs +49 -0
  169. package/dist/assets/shaders/webgl2/Unlit.fs +696 -0
  170. package/dist/assets/shaders/webgl2/Unlit.vs +53 -0
  171. package/dist/assets/shaders/webgl2/Wireframe.fs +102 -0
  172. package/dist/assets/shaders/webgl2/Wireframe.vs +48 -0
  173. package/dist/example.html +8 -7
  174. package/dist/x_ite.css +180 -59
  175. package/dist/x_ite.js +74696 -68048
  176. package/dist/x_ite.min.js +42 -41
  177. package/dist/x_ite.zip +0 -0
  178. package/docs/404.md +5 -0
  179. package/docs/Accessing-the-External-Browser.md +290 -0
  180. package/docs/Browser-Support.md +47 -0
  181. package/docs/Custom-Shaders.md +905 -0
  182. package/docs/Features.md +49 -0
  183. package/docs/Glossary.md +339 -0
  184. package/docs/How-To-Configure-Your-Web-Server.md +56 -0
  185. package/docs/Supported-Nodes.md +370 -0
  186. package/docs/What's-New.md +1240 -0
  187. package/docs/XHTML-DOM-Integration.md +82 -0
  188. package/docs/_config.yml +140 -0
  189. package/docs/_data/navigation.yml +137 -0
  190. package/docs/assets/css/main.scss +100 -0
  191. package/docs/assets/images/logo.png +0 -0
  192. package/docs/google3696ee938394d7b6.html +1 -0
  193. package/docs/index.md +1026 -0
  194. package/docs/reference/Browser-Services.md +333 -0
  195. package/docs/reference/Constants-Services.md +376 -0
  196. package/docs/reference/ECMAScript-Object-and-Function-Definitions.md +128 -0
  197. package/docs/reference/Field-Services-and-Objects.md +1006 -0
  198. package/docs/reference/Prototype-Services.md +121 -0
  199. package/docs/reference/Route-Services.md +49 -0
  200. package/docs/reference/Scene-Services.md +360 -0
  201. package/docs/reference/Script-Node-Authoring-Interface.md +334 -0
  202. package/docs/tutorials/Adding-backgrounds.md +268 -0
  203. package/docs/tutorials/Adding-fog.md +67 -0
  204. package/docs/tutorials/Adding-sound.md +326 -0
  205. package/docs/tutorials/Animating-transforms.md +385 -0
  206. package/docs/tutorials/Basic-Nodes.md +317 -0
  207. package/docs/tutorials/Building-a-X3D-world.md +152 -0
  208. package/docs/tutorials/Building-elevation-grids.md +170 -0
  209. package/docs/tutorials/Building-extruded-shapes.md +145 -0
  210. package/docs/tutorials/Building-primitive-shapes.md +204 -0
  211. package/docs/tutorials/Building-shapes-out-of-points,-lines,-and-faces.md +311 -0
  212. package/docs/tutorials/Controlling-appearance-with-materials.md +186 -0
  213. package/docs/tutorials/Controlling-color-on-coordinate-based-geometry.md +208 -0
  214. package/docs/tutorials/Controlling-detail.md +130 -0
  215. package/docs/tutorials/Controlling-how-textures-are-mapped.md +277 -0
  216. package/docs/tutorials/Controlling-navigation.md +70 -0
  217. package/docs/tutorials/Controlling-shading-on-coordinate-based-geometry.md +180 -0
  218. package/docs/tutorials/Controlling-the-viewpoint.md +49 -0
  219. package/docs/tutorials/Creating-new-node-types.md +313 -0
  220. package/docs/tutorials/Grouping-nodes.md +237 -0
  221. package/docs/tutorials/Hello,-World!.md +204 -0
  222. package/docs/tutorials/Improving-Performance.md +227 -0
  223. package/docs/tutorials/Increasing-Rendering-Speed.md +110 -0
  224. package/docs/tutorials/Introducing-X3D.md +94 -0
  225. package/docs/tutorials/Introducing-animation.md +211 -0
  226. package/docs/tutorials/Introducing-script-use.md +127 -0
  227. package/docs/tutorials/Lighting-your-world.md +139 -0
  228. package/docs/tutorials/Mapping-textures.md +212 -0
  229. package/docs/tutorials/Naming-nodes.md +161 -0
  230. package/docs/tutorials/Providing-information-about-your-world.md +30 -0
  231. package/docs/tutorials/Sensing-the-viewer.md +205 -0
  232. package/docs/tutorials/Sensing-viewer-actions.md +214 -0
  233. package/docs/tutorials/Transforming-Shapes.md +270 -0
  234. package/docs/tutorials/Writing-program-scripts-with-ECMAScript.md +631 -0
  235. package/docs/tutorials/index.md +78 -0
  236. package/meta/logo/logo.png +0 -0
  237. package/meta/logo/logo.svg +216 -217
  238. package/meta/web3d.html +76 -54
  239. package/package.json +41 -24
  240. package/src/assets/components/annotation.js +87 -0
  241. package/src/assets/components/cad-geometry.js +88 -0
  242. package/src/assets/components/cube-map-texturing.js +78 -0
  243. package/src/assets/components/dis.js +84 -0
  244. package/src/assets/components/event-utilities.js +93 -0
  245. package/src/assets/components/geometry2d.js +93 -0
  246. package/src/assets/components/geospatial.js +102 -0
  247. package/src/assets/components/h-anim.js +83 -0
  248. package/src/assets/components/key-device-sensor.js +78 -0
  249. package/src/assets/components/layout.js +87 -0
  250. package/src/assets/components/nurbs.js +118 -0
  251. package/src/assets/components/particle-systems.js +105 -0
  252. package/src/assets/components/picking.js +87 -0
  253. package/src/assets/components/projective-texture-mapping.js +75 -0
  254. package/src/assets/components/rigid-body-physics.js +123 -0
  255. package/src/assets/components/scripting.js +72 -0
  256. package/src/assets/components/texturing-3d.js +91 -0
  257. package/src/assets/components/volume-rendering.js +118 -0
  258. package/src/assets/components/x_ite.js +69 -0
  259. package/src/assets/fonts/DroidSerif-Bold.ttf +0 -0
  260. package/src/assets/fonts/DroidSerif-BoldItalic.ttf +0 -0
  261. package/src/assets/fonts/DroidSerif-Italic.ttf +0 -0
  262. package/src/assets/fonts/DroidSerif-Regular.ttf +0 -0
  263. package/src/assets/fonts/Ubuntu-B.ttf +0 -0
  264. package/src/assets/fonts/Ubuntu-BI.ttf +0 -0
  265. package/src/assets/fonts/Ubuntu-R.ttf +0 -0
  266. package/src/assets/fonts/Ubuntu-RI.ttf +0 -0
  267. package/src/assets/fonts/UbuntuMono-B.ttf +0 -0
  268. package/src/assets/fonts/UbuntuMono-BI.ttf +0 -0
  269. package/src/assets/fonts/UbuntuMono-R.ttf +0 -0
  270. package/src/assets/fonts/UbuntuMono-RI.ttf +0 -0
  271. package/src/assets/hatching/0.png +0 -0
  272. package/src/assets/hatching/1.png +0 -0
  273. package/src/assets/hatching/10.png +0 -0
  274. package/src/assets/hatching/11.png +0 -0
  275. package/src/assets/hatching/12.png +0 -0
  276. package/src/assets/hatching/13.png +0 -0
  277. package/src/assets/hatching/14.png +0 -0
  278. package/src/assets/hatching/15.png +0 -0
  279. package/src/assets/hatching/16.png +0 -0
  280. package/src/assets/hatching/17.png +0 -0
  281. package/src/assets/hatching/18.png +0 -0
  282. package/src/assets/hatching/19.png +0 -0
  283. package/src/assets/hatching/2.png +0 -0
  284. package/src/assets/hatching/3.png +0 -0
  285. package/src/assets/hatching/4.png +0 -0
  286. package/src/assets/hatching/5.png +0 -0
  287. package/src/assets/hatching/6.png +0 -0
  288. package/src/assets/hatching/7.png +0 -0
  289. package/src/assets/hatching/8.png +0 -0
  290. package/src/assets/hatching/9.png +0 -0
  291. package/src/{images → assets/images}/ExamineViewer.png +0 -0
  292. package/src/{images → assets/images}/FlyViewer.png +0 -0
  293. package/src/{images → assets/images}/NoneViewer.png +0 -0
  294. package/src/{images → assets/images}/PlaneViewer.png +0 -0
  295. package/src/{images → assets/images}/PrimitiveQuality.png +0 -0
  296. package/src/{images → assets/images}/TextureQuality.png +0 -0
  297. package/src/{images → assets/images}/Time.png +0 -0
  298. package/src/{images → assets/images}/Viewpoint.png +0 -0
  299. package/src/{images → assets/images}/WalkViewer.png +0 -0
  300. package/src/assets/images/go-next.png +0 -0
  301. package/src/{images → assets/images}/gtk-fullscreen.png +0 -0
  302. package/src/{images → assets/images}/gtk-leave-fullscreen.png +0 -0
  303. package/src/{images → assets/images}/gtk-zoom-fit.png +0 -0
  304. package/src/{images → assets/images}/gtk-zoom-in.png +0 -0
  305. package/src/{images → assets/images}/help-about.png +0 -0
  306. package/src/{images → assets/images}/icon.bw.png +0 -0
  307. package/src/{images → assets/images}/icon.png +0 -0
  308. package/src/assets/images/logo.128.png +0 -0
  309. package/src/{images → assets/images}/logo.bw.png +0 -0
  310. package/src/{images → assets/images}/logo.png +0 -0
  311. package/src/assets/linetype/0.png +0 -0
  312. package/src/assets/linetype/1.png +0 -0
  313. package/src/assets/linetype/10.png +0 -0
  314. package/src/assets/linetype/11.png +0 -0
  315. package/src/assets/linetype/12.png +0 -0
  316. package/src/assets/linetype/13.png +0 -0
  317. package/src/assets/linetype/14.png +0 -0
  318. package/src/assets/linetype/15.png +0 -0
  319. package/src/assets/linetype/16.png +0 -0
  320. package/src/assets/linetype/2.png +0 -0
  321. package/src/assets/linetype/3.png +0 -0
  322. package/src/assets/linetype/4.png +0 -0
  323. package/src/assets/linetype/5.png +0 -0
  324. package/src/assets/linetype/6.png +0 -0
  325. package/src/assets/linetype/7.png +0 -0
  326. package/src/assets/linetype/8.png +0 -0
  327. package/src/assets/linetype/9.png +0 -0
  328. package/src/assets/shaders/Types.glsl +102 -0
  329. package/src/assets/shaders/webgl1/Background.fs +16 -0
  330. package/src/assets/shaders/webgl1/Background.vs +22 -0
  331. package/src/assets/shaders/webgl1/Depth.fs +16 -0
  332. package/src/assets/shaders/webgl1/Depth.vs +20 -0
  333. package/src/assets/shaders/webgl1/Fallback.fs +38 -0
  334. package/src/assets/shaders/webgl1/Fallback.vs +30 -0
  335. package/src/assets/shaders/webgl1/FallbackUnlit.fs +22 -0
  336. package/src/assets/shaders/webgl1/FallbackUnlit.vs +24 -0
  337. package/src/assets/shaders/webgl1/Gouraud.fs +66 -0
  338. package/src/assets/shaders/webgl1/Gouraud.vs +148 -0
  339. package/src/assets/shaders/webgl1/Phong.fs +173 -0
  340. package/src/assets/shaders/webgl1/Phong.vs +67 -0
  341. package/src/assets/shaders/webgl1/PointSet.fs +100 -0
  342. package/src/assets/shaders/webgl1/PointSet.vs +70 -0
  343. package/src/assets/shaders/webgl1/Unlit.fs +89 -0
  344. package/src/assets/shaders/webgl1/Unlit.vs +67 -0
  345. package/src/assets/shaders/webgl1/Wireframe.fs +74 -0
  346. package/src/assets/shaders/webgl1/Wireframe.vs +63 -0
  347. package/src/assets/shaders/webgl1/include/ClipPlanes.glsl +16 -0
  348. package/src/assets/shaders/webgl1/include/Fog.glsl +38 -0
  349. package/src/assets/shaders/webgl1/include/Hatch.glsl +18 -0
  350. package/src/assets/shaders/webgl1/include/Pack.glsl +51 -0
  351. package/src/assets/shaders/webgl1/include/Perlin.glsl +40 -0
  352. package/src/assets/shaders/webgl1/include/Shadow.glsl +310 -0
  353. package/src/assets/shaders/webgl1/include/Texture.glsl +488 -0
  354. package/src/assets/shaders/webgl2/Background.fs +19 -0
  355. package/src/assets/shaders/webgl2/Background.vs +23 -0
  356. package/src/assets/shaders/webgl2/Depth.fs +19 -0
  357. package/src/assets/shaders/webgl2/Depth.vs +21 -0
  358. package/src/assets/shaders/webgl2/Gouraud.fs +64 -0
  359. package/src/assets/shaders/webgl2/Gouraud.vs +149 -0
  360. package/src/assets/shaders/webgl2/Phong.fs +171 -0
  361. package/src/assets/shaders/webgl2/Phong.vs +68 -0
  362. package/src/assets/shaders/webgl2/PointSet.fs +99 -0
  363. package/src/assets/shaders/webgl2/PointSet.vs +71 -0
  364. package/src/assets/shaders/webgl2/Unlit.fs +88 -0
  365. package/src/assets/shaders/webgl2/Unlit.vs +68 -0
  366. package/src/assets/shaders/webgl2/Wireframe.fs +73 -0
  367. package/src/assets/shaders/webgl2/Wireframe.vs +64 -0
  368. package/src/assets/shaders/webgl2/include/ClipPlanes.glsl +16 -0
  369. package/src/assets/shaders/webgl2/include/Fog.glsl +46 -0
  370. package/src/assets/shaders/webgl2/include/Hatch.glsl +18 -0
  371. package/src/assets/shaders/webgl2/include/Pack.glsl +51 -0
  372. package/src/assets/shaders/webgl2/include/Perlin.glsl +40 -0
  373. package/src/assets/shaders/webgl2/include/Shadow.glsl +324 -0
  374. package/src/assets/shaders/webgl2/include/Texture.glsl +623 -0
  375. package/src/bookmarks.js +83 -164
  376. package/src/dummy.js +1 -0
  377. package/src/example.html +8 -7
  378. package/src/examples.js +150 -0
  379. package/src/lib/ammojs/AmmoJS.js +58 -0
  380. package/src/lib/ammojs/Makefile +26 -0
  381. package/src/lib/ammojs/ammo.idl +1031 -0
  382. package/src/lib/ammojs/ammo.js +40 -0
  383. package/src/lib/jpeg/jpeg.js +1019 -0
  384. package/src/lib/nurbs/extras/sample.js +242 -0
  385. package/src/lib/nurbs/nurbs.js +342 -0
  386. package/src/lib/nurbs/src/evaluate.js +413 -0
  387. package/src/lib/nurbs/src/numerical-derivative.js +54 -0
  388. package/src/lib/nurbs/src/support.js +151 -0
  389. package/src/lib/nurbs/src/transform.js +78 -0
  390. package/src/lib/nurbs/src/utils/accessor-preamble.js +33 -0
  391. package/src/lib/nurbs/src/utils/bisection-search.js +28 -0
  392. package/src/lib/nurbs/src/utils/cache-key.js +57 -0
  393. package/src/lib/nurbs/src/utils/create-accessors.js +110 -0
  394. package/src/lib/nurbs/src/utils/infer-type.js +52 -0
  395. package/src/lib/nurbs/src/utils/is-array-like.js +10 -0
  396. package/src/lib/nurbs/src/utils/is-ndarray-like.js +18 -0
  397. package/src/lib/nurbs/src/utils/is-ndarray.js +21 -0
  398. package/src/lib/nurbs/src/utils/ndloop.js +23 -0
  399. package/src/lib/nurbs/src/utils/size-getter.js +22 -0
  400. package/src/lib/nurbs/src/utils/variable.js +31 -0
  401. package/src/locale/de.po +8 -3
  402. package/src/locale/fr.po +9 -4
  403. package/src/locale/gettext.js +3 -3
  404. package/src/spinner.css +21 -8
  405. package/src/standard/Geospatial/Geodetic.js +48 -48
  406. package/src/standard/Geospatial/ReferenceEllipsoids.js +1 -1
  407. package/src/standard/Geospatial/UniversalTransverseMercator.js +43 -43
  408. package/src/standard/Math/Algorithm.js +25 -41
  409. package/src/standard/Math/Algorithms/Bezier.js +147 -0
  410. package/src/standard/Math/Algorithms/MergeSort.js +2 -2
  411. package/src/standard/Math/Algorithms/PartialSort.js +97 -0
  412. package/src/standard/Math/Algorithms/QuickSort.js +8 -6
  413. package/src/standard/Math/Algorithms/SAT.js +4 -8
  414. package/src/standard/Math/Algorithms/eigendecomposition.js +37 -33
  415. package/src/standard/Math/Geometry/Box2.js +84 -56
  416. package/src/standard/Math/Geometry/Box3.js +457 -284
  417. package/src/standard/Math/Geometry/Camera.js +24 -15
  418. package/src/standard/Math/Geometry/Cylinder3.js +13 -13
  419. package/src/standard/Math/Geometry/Line3.js +61 -53
  420. package/src/standard/Math/Geometry/Plane3.js +16 -16
  421. package/src/standard/Math/Geometry/Sphere3.js +122 -105
  422. package/src/standard/Math/Geometry/Spheroid3.js +1 -1
  423. package/src/standard/Math/Geometry/Triangle2.js +6 -6
  424. package/src/standard/Math/Geometry/Triangle3.js +80 -88
  425. package/src/standard/Math/Geometry/ViewVolume.js +315 -116
  426. package/src/standard/Math/Numbers/Color3.js +45 -29
  427. package/src/standard/Math/Numbers/Color4.js +25 -14
  428. package/src/standard/Math/Numbers/Complex.js +15 -22
  429. package/src/standard/Math/Numbers/Matrix2.js +37 -17
  430. package/src/standard/Math/Numbers/Matrix3.js +181 -212
  431. package/src/standard/Math/Numbers/Matrix4.js +204 -262
  432. package/src/standard/Math/Numbers/Quaternion.js +60 -147
  433. package/src/standard/Math/Numbers/Rotation4.js +197 -129
  434. package/src/standard/Math/Numbers/Vector2.js +53 -109
  435. package/src/standard/Math/Numbers/Vector3.js +75 -144
  436. package/src/standard/Math/Numbers/Vector4.js +85 -155
  437. package/src/standard/Math/Utility/BVH.js +35 -30
  438. package/src/standard/Math/Utility/MatrixStack.js +6 -9
  439. package/src/standard/Networking/BinaryTransport.js +8 -8
  440. package/src/standard/Time/MicroTime.js +79 -0
  441. package/src/standard/Utility/DataStorage.js +40 -17
  442. package/src/standard/Utility/MapUtilities.js +69 -0
  443. package/src/standard/Utility/ObjectCache.js +2 -3
  444. package/src/standard/Utility/Shuffle.js +5 -6
  445. package/src/tests.js +386 -0
  446. package/src/x_ite/Base/Events.js +22 -30
  447. package/src/x_ite/Base/X3DChildObject.js +35 -19
  448. package/src/x_ite/Base/X3DEventObject.js +10 -12
  449. package/src/x_ite/Base/X3DObject.js +63 -43
  450. package/src/x_ite/Basic/FieldDefinitionArray.js +16 -10
  451. package/src/x_ite/Basic/X3DArrayField.js +3 -430
  452. package/src/x_ite/Basic/X3DBaseNode.js +551 -288
  453. package/src/x_ite/Basic/X3DField.js +133 -96
  454. package/src/x_ite/Basic/X3DFieldDefinition.js +0 -4
  455. package/src/x_ite/Basic/X3DObjectArrayField.js +545 -0
  456. package/src/x_ite/Basic/X3DTypedArrayField.js +839 -0
  457. package/src/x_ite/Bits/TraverseType.js +2 -5
  458. package/src/x_ite/Bits/X3DConstants.js +12 -322
  459. package/src/x_ite/Browser/Core/BrowserOptions.js +205 -77
  460. package/src/x_ite/Browser/Core/BrowserProperties.js +2 -4
  461. package/src/x_ite/Browser/Core/BrowserTimings.js +16 -15
  462. package/src/x_ite/Browser/Core/ContextMenu.js +202 -80
  463. package/src/x_ite/Browser/Core/Notification.js +14 -6
  464. package/src/x_ite/Browser/Core/PrimitiveQuality.js +3 -7
  465. package/src/x_ite/Browser/Core/RenderingProperties.js +10 -11
  466. package/src/x_ite/Browser/Core/Shading.js +66 -0
  467. package/src/x_ite/Browser/Core/TextureQuality.js +3 -7
  468. package/src/x_ite/Browser/Core/X3DCoreContext.js +495 -48
  469. package/src/x_ite/Browser/Core/X3DCoreContext.js.~1~ +714 -0
  470. package/src/x_ite/Browser/EnvironmentalEffects/X3DEnvironmentalEffectsContext.js +17 -23
  471. package/src/x_ite/Browser/Followers/X3DArrayChaserTemplate.js +12 -20
  472. package/src/x_ite/Browser/Followers/X3DArrayFollowerTemplate.js +82 -34
  473. package/src/x_ite/Browser/Geometry2D/Arc2DOptions.js +3 -5
  474. package/src/x_ite/Browser/Geometry2D/ArcClose2DOptions.js +3 -5
  475. package/src/x_ite/Browser/Geometry2D/Circle2DOptions.js +12 -9
  476. package/src/x_ite/Browser/Geometry2D/Disk2DOptions.js +60 -42
  477. package/src/x_ite/Browser/Geometry2D/Rectangle2DOptions.js +16 -20
  478. package/src/x_ite/Browser/Geometry2D/X3DGeometry2DContext.js +51 -12
  479. package/src/x_ite/Browser/Geometry3D/BoxOptions.js +17 -21
  480. package/src/x_ite/Browser/Geometry3D/ConeOptions.js +2 -4
  481. package/src/x_ite/Browser/Geometry3D/CylinderOptions.js +2 -4
  482. package/src/x_ite/Browser/Geometry3D/IcoSphereOptions.js +2 -4
  483. package/src/x_ite/Browser/Geometry3D/QuadSphereOptions.js +3 -5
  484. package/src/x_ite/Browser/Geometry3D/X3DGeometry3DContext.js +8 -9
  485. package/src/x_ite/Browser/Grouping/X3DGroupingContext.js +98 -0
  486. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolator.js +12 -12
  487. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolator1.js +2 -4
  488. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolatorTemplate.js +2 -4
  489. package/src/x_ite/Browser/KeyDeviceSensor/X3DKeyDeviceSensorContext.js +22 -200
  490. package/src/x_ite/Browser/Layout/ScreenText.js +287 -295
  491. package/src/x_ite/Browser/Layout/X3DLayoutContext.js +15 -12
  492. package/src/x_ite/Browser/Lighting/X3DLightingContext.js +18 -12
  493. package/src/x_ite/Browser/NURBS/NURBS.js +481 -0
  494. package/src/x_ite/Browser/Navigation/ExamineViewer.js +587 -127
  495. package/src/x_ite/Browser/Navigation/FlyViewer.js +23 -5
  496. package/src/x_ite/Browser/Navigation/LookAtViewer.js +402 -18
  497. package/src/x_ite/Browser/Navigation/NoneViewer.js +13 -3
  498. package/src/x_ite/Browser/Navigation/PlaneViewer.js +46 -28
  499. package/src/x_ite/Browser/Navigation/WalkViewer.js +45 -17
  500. package/src/x_ite/Browser/Navigation/X3DFlyViewer.js +414 -207
  501. package/src/x_ite/Browser/Navigation/X3DNavigationContext.js +65 -48
  502. package/src/x_ite/Browser/Navigation/X3DViewer.js +99 -45
  503. package/src/x_ite/Browser/Networking/X3DNetworkingContext.js +39 -38
  504. package/src/x_ite/Browser/Networking/urls.js +34 -5
  505. package/src/x_ite/Browser/ParticleSystems/X3DParticleSystemsContext.js +7 -9
  506. package/src/x_ite/Browser/Picking/IntersectionType.js +63 -0
  507. package/src/x_ite/Browser/Picking/MatchCriterion.js +64 -0
  508. package/src/x_ite/Browser/Picking/SortOrder.js +65 -0
  509. package/src/x_ite/Browser/Picking/VolumePicker.js +197 -0
  510. package/src/x_ite/Browser/Picking/X3DPickingContext.js +130 -0
  511. package/src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js +89 -30
  512. package/src/x_ite/Browser/PointingDeviceSensor/PointingDeviceSensorContainer.js +1 -3
  513. package/src/x_ite/Browser/PointingDeviceSensor/X3DPointingDeviceSensorContext.js +33 -15
  514. package/src/x_ite/Browser/Rendering/X3DRenderingContext.js +39 -151
  515. package/src/x_ite/Browser/RigidBodyPhysics/AppliedParametersType.js +70 -0
  516. package/src/x_ite/Browser/Shaders/Shader.js +150 -50
  517. package/src/x_ite/Browser/Shaders/ShaderSource.js +140 -0
  518. package/src/x_ite/Browser/Shaders/ShaderTest.js +94 -77
  519. package/src/x_ite/Browser/Shaders/X3DShadersContext.js +220 -5
  520. package/src/x_ite/Browser/Shape/AlphaMode.js +65 -0
  521. package/src/x_ite/Browser/Shape/LineStipples.xcf +0 -0
  522. package/src/x_ite/Browser/Shape/X3DShapeContext.js +108 -4
  523. package/src/x_ite/Browser/Sound/X3DSoundContext.js +1 -20
  524. package/src/x_ite/Browser/Text/PolygonText.js +165 -359
  525. package/src/x_ite/Browser/Text/TextAlignment.js +3 -7
  526. package/src/x_ite/Browser/Text/X3DTextContext.js +38 -30
  527. package/src/x_ite/Browser/Text/X3DTextGeometry.js +58 -84
  528. package/src/x_ite/Browser/Texturing/MultiTextureFunctionType.js +64 -0
  529. package/src/x_ite/Browser/Texturing/MultiTextureModeType.js +81 -0
  530. package/src/x_ite/Browser/Texturing/MultiTextureSourceType.js +65 -0
  531. package/src/x_ite/Browser/Texturing/TextureCoordinateGeneratorModeType.js +73 -0
  532. package/src/x_ite/Browser/Texturing/X3DTexturingContext.js +148 -41
  533. package/src/x_ite/Browser/Texturing3D/DICOMParser.js +1126 -0
  534. package/src/x_ite/Browser/Texturing3D/NRRDParser.js +686 -0
  535. package/src/x_ite/Browser/Time/X3DTimeContext.js +20 -17
  536. package/src/x_ite/Browser/VERSION.js +2 -2
  537. package/src/x_ite/Browser/VolumeRendering/VolumeStyle.fs +120 -0
  538. package/src/x_ite/Browser/VolumeRendering/VolumeStyle.vs +28 -0
  539. package/src/x_ite/Browser/VolumeRendering/X3DVolumeRenderingContext.js +114 -0
  540. package/src/x_ite/Browser/X3DBrowser.js +282 -182
  541. package/src/x_ite/Browser/X3DBrowserContext.js +77 -43
  542. package/src/x_ite/Components/Annotation/AnnotationLayer.js +108 -0
  543. package/src/x_ite/Components/Annotation/AnnotationTarget.js +101 -0
  544. package/src/x_ite/Components/{PointingDeviceSensor/TouchGroup.js → Annotation/GroupAnnotation.js} +30 -24
  545. package/src/x_ite/Components/Annotation/IconAnnotation.js +110 -0
  546. package/src/x_ite/Components/Annotation/TextAnnotation.js +102 -0
  547. package/src/x_ite/Components/Annotation/URLAnnotation.js +101 -0
  548. package/src/x_ite/Components/Annotation/X3DAnnotationNode.js +76 -0
  549. package/src/x_ite/Components/CADGeometry/CADAssembly.js +6 -8
  550. package/src/x_ite/Components/CADGeometry/CADFace.js +137 -33
  551. package/src/x_ite/Components/CADGeometry/CADLayer.js +5 -18
  552. package/src/x_ite/Components/CADGeometry/CADPart.js +6 -12
  553. package/src/x_ite/Components/CADGeometry/IndexedQuadSet.js +20 -36
  554. package/src/x_ite/Components/CADGeometry/QuadSet.js +11 -24
  555. package/src/x_ite/Components/CADGeometry/X3DProductStructureChildNode.js +2 -4
  556. package/src/x_ite/Components/Core/MetadataBoolean.js +2 -4
  557. package/src/x_ite/Components/Core/MetadataDouble.js +2 -4
  558. package/src/x_ite/Components/Core/MetadataFloat.js +2 -4
  559. package/src/x_ite/Components/Core/MetadataInteger.js +2 -4
  560. package/src/x_ite/Components/Core/MetadataSet.js +2 -4
  561. package/src/x_ite/Components/Core/MetadataString.js +2 -4
  562. package/src/x_ite/Components/Core/WorldInfo.js +18 -10
  563. package/src/x_ite/Components/Core/X3DBindableNode.js +5 -36
  564. package/src/x_ite/Components/Core/X3DChildNode.js +16 -5
  565. package/src/x_ite/Components/Core/X3DInfoNode.js +2 -4
  566. package/src/x_ite/Components/Core/X3DMetadataObject.js +1 -3
  567. package/src/x_ite/Components/Core/X3DNode.js +2 -64
  568. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +190 -210
  569. package/src/x_ite/Components/Core/X3DSensorNode.js +2 -4
  570. package/src/x_ite/Components/Core.js +111 -0
  571. package/src/x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture.js +42 -50
  572. package/src/x_ite/Components/CubeMapTexturing/GeneratedCubeMapTexture.js +41 -42
  573. package/src/x_ite/Components/CubeMapTexturing/ImageCubeMapTexture.js +44 -59
  574. package/src/x_ite/Components/CubeMapTexturing/X3DEnvironmentTextureNode.js +48 -46
  575. package/src/x_ite/Components/DIS/DISEntityManager.js +2 -4
  576. package/src/x_ite/Components/DIS/DISEntityTypeMapping.js +2 -4
  577. package/src/x_ite/Components/DIS/EspduTransform.js +13 -9
  578. package/src/x_ite/Components/DIS/ReceiverPdu.js +13 -9
  579. package/src/x_ite/Components/DIS/SignalPdu.js +13 -9
  580. package/src/x_ite/Components/DIS/TransmitterPdu.js +13 -9
  581. package/src/x_ite/Components/EnvironmentalEffects/Background.js +2 -4
  582. package/src/x_ite/Components/EnvironmentalEffects/Fog.js +15 -18
  583. package/src/x_ite/Components/EnvironmentalEffects/FogCoordinate.js +59 -7
  584. package/src/x_ite/Components/EnvironmentalEffects/LocalFog.js +12 -10
  585. package/src/x_ite/Components/EnvironmentalEffects/TextureBackground.js +2 -4
  586. package/src/x_ite/Components/EnvironmentalEffects/X3DBackgroundNode.js +149 -143
  587. package/src/x_ite/Components/EnvironmentalEffects/X3DFogObject.js +61 -22
  588. package/src/x_ite/Components/EnvironmentalEffects.js +90 -0
  589. package/src/x_ite/Components/EnvironmentalSensor/ProximitySensor.js +121 -121
  590. package/src/x_ite/Components/EnvironmentalSensor/TransformSensor.js +173 -53
  591. package/src/x_ite/Components/EnvironmentalSensor/VisibilitySensor.js +33 -31
  592. package/src/x_ite/Components/EnvironmentalSensor/X3DEnvironmentalSensorNode.js +19 -11
  593. package/src/x_ite/Components/EnvironmentalSensor.js +81 -0
  594. package/src/x_ite/Components/EventUtilities/BooleanFilter.js +2 -4
  595. package/src/x_ite/Components/EventUtilities/BooleanSequencer.js +2 -4
  596. package/src/x_ite/Components/EventUtilities/BooleanToggle.js +2 -4
  597. package/src/x_ite/Components/EventUtilities/BooleanTrigger.js +2 -4
  598. package/src/x_ite/Components/EventUtilities/IntegerSequencer.js +2 -4
  599. package/src/x_ite/Components/EventUtilities/IntegerTrigger.js +2 -4
  600. package/src/x_ite/Components/EventUtilities/TimeTrigger.js +2 -4
  601. package/src/x_ite/Components/EventUtilities/X3DSequencerNode.js +2 -4
  602. package/src/x_ite/Components/EventUtilities/X3DTriggerNode.js +2 -4
  603. package/src/x_ite/Components/Followers/ColorChaser.js +3 -7
  604. package/src/x_ite/Components/Followers/ColorDamper.js +3 -7
  605. package/src/x_ite/Components/Followers/CoordinateChaser.js +3 -11
  606. package/src/x_ite/Components/Followers/CoordinateDamper.js +2 -10
  607. package/src/x_ite/Components/Followers/OrientationChaser.js +9 -7
  608. package/src/x_ite/Components/Followers/OrientationDamper.js +9 -7
  609. package/src/x_ite/Components/Followers/PositionChaser.js +3 -7
  610. package/src/x_ite/Components/Followers/PositionChaser2D.js +3 -7
  611. package/src/x_ite/Components/Followers/PositionDamper.js +3 -7
  612. package/src/x_ite/Components/Followers/PositionDamper2D.js +3 -7
  613. package/src/x_ite/Components/Followers/ScalarChaser.js +7 -7
  614. package/src/x_ite/Components/Followers/ScalarDamper.js +3 -7
  615. package/src/x_ite/Components/Followers/TexCoordChaser2D.js +3 -11
  616. package/src/x_ite/Components/Followers/TexCoordDamper2D.js +3 -11
  617. package/src/x_ite/Components/Followers/X3DChaserNode.js +26 -26
  618. package/src/x_ite/Components/Followers/X3DDamperNode.js +6 -10
  619. package/src/x_ite/Components/Followers/X3DFollowerNode.js +11 -11
  620. package/src/x_ite/Components/Followers.js +120 -0
  621. package/src/x_ite/Components/Geometry2D/Arc2D.js +28 -30
  622. package/src/x_ite/Components/Geometry2D/ArcClose2D.js +95 -93
  623. package/src/x_ite/Components/Geometry2D/Circle2D.js +16 -15
  624. package/src/x_ite/Components/Geometry2D/Disk2D.js +80 -88
  625. package/src/x_ite/Components/Geometry2D/Polyline2D.js +13 -19
  626. package/src/x_ite/Components/Geometry2D/Polypoint2D.js +12 -18
  627. package/src/x_ite/Components/Geometry2D/Rectangle2D.js +13 -13
  628. package/src/x_ite/Components/Geometry2D/TriangleSet2D.js +31 -30
  629. package/src/x_ite/Components/Geometry3D/Box.js +12 -12
  630. package/src/x_ite/Components/Geometry3D/Cone.js +34 -36
  631. package/src/x_ite/Components/Geometry3D/Cylinder.js +52 -54
  632. package/src/x_ite/Components/Geometry3D/ElevationGrid.js +90 -52
  633. package/src/x_ite/Components/Geometry3D/Extrusion.js +472 -388
  634. package/src/x_ite/Components/Geometry3D/IndexedFaceSet.js +193 -163
  635. package/src/x_ite/Components/Geometry3D/Sphere.js +17 -19
  636. package/src/x_ite/Components/Geometry3D.js +90 -0
  637. package/src/x_ite/Components/Geospatial/GeoCoordinate.js +124 -61
  638. package/src/x_ite/Components/Geospatial/GeoElevationGrid.js +54 -36
  639. package/src/x_ite/Components/Geospatial/GeoLOD.js +190 -98
  640. package/src/x_ite/Components/Geospatial/GeoLocation.js +8 -10
  641. package/src/x_ite/Components/Geospatial/GeoMetadata.js +2 -4
  642. package/src/x_ite/Components/Geospatial/GeoOrigin.js +2 -4
  643. package/src/x_ite/Components/Geospatial/GeoPositionInterpolator.js +4 -4
  644. package/src/x_ite/Components/Geospatial/GeoProximitySensor.js +10 -7
  645. package/src/x_ite/Components/Geospatial/GeoTouchSensor.js +4 -4
  646. package/src/x_ite/Components/Geospatial/GeoTransform.js +13 -13
  647. package/src/x_ite/Components/Geospatial/GeoViewpoint.js +131 -78
  648. package/src/x_ite/Components/Geospatial/X3DGeospatialObject.js +7 -9
  649. package/src/x_ite/Components/Grouping/Group.js +5 -7
  650. package/src/x_ite/Components/Grouping/StaticGroup.js +194 -22
  651. package/src/x_ite/Components/Grouping/Switch.js +174 -25
  652. package/src/x_ite/Components/Grouping/Transform.js +5 -7
  653. package/src/x_ite/Components/Grouping/X3DBoundedObject.js +70 -16
  654. package/src/x_ite/Components/Grouping/X3DGroupingNode.js +442 -151
  655. package/src/x_ite/Components/Grouping/X3DTransformMatrix3DNode.js +53 -29
  656. package/src/x_ite/Components/Grouping/X3DTransformNode.js +6 -9
  657. package/src/x_ite/Components/Grouping.js +93 -0
  658. package/src/x_ite/Components/{H-Anim → HAnim}/HAnimDisplacer.js +8 -10
  659. package/src/x_ite/Components/HAnim/HAnimHumanoid.js +360 -0
  660. package/src/x_ite/Components/{H-Anim → HAnim}/HAnimJoint.js +108 -23
  661. package/src/x_ite/Components/HAnim/HAnimMotion.js +113 -0
  662. package/src/x_ite/Components/{H-Anim → HAnim}/HAnimSegment.js +14 -14
  663. package/src/x_ite/Components/{H-Anim → HAnim}/HAnimSite.js +14 -16
  664. package/src/x_ite/Components/Interpolation/ColorInterpolator.js +13 -11
  665. package/src/x_ite/Components/Interpolation/CoordinateInterpolator.js +21 -13
  666. package/src/x_ite/Components/Interpolation/CoordinateInterpolator2D.js +19 -11
  667. package/src/x_ite/Components/Interpolation/EaseInEaseOut.js +8 -8
  668. package/src/x_ite/Components/Interpolation/NormalInterpolator.js +28 -14
  669. package/src/x_ite/Components/Interpolation/OrientationInterpolator.js +27 -16
  670. package/src/x_ite/Components/Interpolation/PositionInterpolator.js +10 -8
  671. package/src/x_ite/Components/Interpolation/PositionInterpolator2D.js +10 -8
  672. package/src/x_ite/Components/Interpolation/ScalarInterpolator.js +2 -4
  673. package/src/x_ite/Components/Interpolation/SplinePositionInterpolator.js +7 -9
  674. package/src/x_ite/Components/Interpolation/SplinePositionInterpolator2D.js +7 -9
  675. package/src/x_ite/Components/Interpolation/SplineScalarInterpolator.js +7 -9
  676. package/src/x_ite/Components/Interpolation/SquadOrientationInterpolator.js +10 -11
  677. package/src/x_ite/Components/Interpolation/X3DInterpolatorNode.js +2 -4
  678. package/src/x_ite/Components/Interpolation.js +111 -0
  679. package/src/x_ite/Components/KeyDeviceSensor/KeySensor.js +72 -8
  680. package/src/x_ite/Components/KeyDeviceSensor/StringSensor.js +65 -4
  681. package/src/x_ite/Components/KeyDeviceSensor/X3DKeyDeviceSensorNode.js +5 -29
  682. package/src/x_ite/Components/Layering/Layer.js +14 -6
  683. package/src/x_ite/Components/Layering/LayerSet.js +6 -10
  684. package/src/x_ite/Components/Layering/Viewport.js +10 -12
  685. package/src/x_ite/Components/Layering/X3DLayerNode.js +76 -69
  686. package/src/x_ite/Components/Layering/X3DViewportNode.js +2 -6
  687. package/src/x_ite/Components/Layering.js +84 -0
  688. package/src/x_ite/Components/Layout/Layout.js +163 -173
  689. package/src/x_ite/Components/Layout/LayoutGroup.js +20 -19
  690. package/src/x_ite/Components/Layout/LayoutLayer.js +12 -9
  691. package/src/x_ite/Components/Layout/ScreenFontStyle.js +4 -8
  692. package/src/x_ite/Components/Layout/ScreenGroup.js +63 -56
  693. package/src/x_ite/Components/Layout/X3DLayoutNode.js +2 -4
  694. package/src/x_ite/Components/Lighting/DirectionalLight.js +41 -31
  695. package/src/x_ite/Components/Lighting/PointLight.js +117 -104
  696. package/src/x_ite/Components/Lighting/SpotLight.js +77 -53
  697. package/src/x_ite/Components/Lighting/X3DLightNode.js +90 -68
  698. package/src/x_ite/Components/Lighting.js +81 -0
  699. package/src/x_ite/Components/NURBS/Contour2D.js +47 -5
  700. package/src/x_ite/Components/NURBS/ContourPolyline2D.js +69 -5
  701. package/src/x_ite/Components/NURBS/CoordinateDouble.js +2 -4
  702. package/src/x_ite/Components/NURBS/NurbsCurve.js +140 -10
  703. package/src/x_ite/Components/NURBS/NurbsCurve2D.js +117 -8
  704. package/src/x_ite/Components/NURBS/NurbsOrientationInterpolator.js +139 -10
  705. package/src/x_ite/Components/NURBS/NurbsPatchSurface.js +3 -5
  706. package/src/x_ite/Components/NURBS/NurbsPositionInterpolator.js +125 -10
  707. package/src/x_ite/Components/NURBS/NurbsSet.js +92 -11
  708. package/src/x_ite/Components/NURBS/NurbsSurfaceInterpolator.js +96 -12
  709. package/src/x_ite/Components/NURBS/NurbsSweptSurface.js +88 -7
  710. package/src/x_ite/Components/NURBS/NurbsSwungSurface.js +88 -7
  711. package/src/x_ite/Components/NURBS/NurbsTextureCoordinate.js +62 -13
  712. package/src/x_ite/Components/NURBS/NurbsTrimmedSurface.js +41 -6
  713. package/src/x_ite/Components/NURBS/X3DNurbsControlCurveNode.js +2 -4
  714. package/src/x_ite/Components/NURBS/X3DNurbsSurfaceGeometryNode.js +333 -7
  715. package/src/x_ite/Components/NURBS/X3DParametricGeometryNode.js +9 -5
  716. package/src/x_ite/Components/Navigation/Billboard.js +14 -15
  717. package/src/x_ite/Components/Navigation/Collision.js +13 -12
  718. package/src/x_ite/Components/Navigation/LOD.js +221 -66
  719. package/src/x_ite/Components/Navigation/NavigationInfo.js +110 -99
  720. package/src/x_ite/Components/Navigation/OrthoViewpoint.js +138 -45
  721. package/src/x_ite/Components/Navigation/Viewpoint.js +55 -33
  722. package/src/x_ite/Components/Navigation/ViewpointGroup.js +18 -10
  723. package/src/x_ite/Components/Navigation/X3DViewpointNode.js +241 -181
  724. package/src/x_ite/Components/Navigation.js +93 -0
  725. package/src/x_ite/Components/Networking/Anchor.js +24 -28
  726. package/src/x_ite/Components/Networking/Inline.js +68 -50
  727. package/src/x_ite/Components/Networking/LoadSensor.js +2 -4
  728. package/src/x_ite/Components/Networking/X3DNetworkSensorNode.js +2 -4
  729. package/src/x_ite/Components/Networking/X3DUrlObject.js +93 -11
  730. package/src/x_ite/Components/Networking.js +84 -0
  731. package/src/x_ite/Components/ParticleSystems/BoundedPhysicsModel.js +6 -8
  732. package/src/x_ite/Components/ParticleSystems/ConeEmitter.js +8 -4
  733. package/src/x_ite/Components/ParticleSystems/ExplosionEmitter.js +7 -4
  734. package/src/x_ite/Components/ParticleSystems/ForcePhysicsModel.js +4 -4
  735. package/src/x_ite/Components/ParticleSystems/ParticleSystem.js +451 -287
  736. package/src/x_ite/Components/ParticleSystems/PointEmitter.js +7 -4
  737. package/src/x_ite/Components/ParticleSystems/PolylineEmitter.js +53 -40
  738. package/src/x_ite/Components/ParticleSystems/SurfaceEmitter.js +62 -55
  739. package/src/x_ite/Components/ParticleSystems/VolumeEmitter.js +133 -123
  740. package/src/x_ite/Components/ParticleSystems/WindPhysicsModel.js +25 -22
  741. package/src/x_ite/Components/ParticleSystems/X3DParticleEmitterNode.js +28 -27
  742. package/src/x_ite/Components/ParticleSystems/X3DParticlePhysicsModelNode.js +2 -4
  743. package/src/x_ite/Components/Picking/LinePickSensor.js +253 -10
  744. package/src/x_ite/Components/Picking/PickableGroup.js +121 -10
  745. package/src/x_ite/Components/Picking/PointPickSensor.js +262 -12
  746. package/src/x_ite/Components/Picking/PrimitivePickSensor.js +176 -8
  747. package/src/x_ite/Components/Picking/VolumePickSensor.js +152 -8
  748. package/src/x_ite/Components/Picking/X3DPickSensorNode.js +378 -7
  749. package/src/x_ite/Components/Picking/X3DPickableObject.js +22 -4
  750. package/src/x_ite/Components/PointingDeviceSensor/CylinderSensor.js +33 -15
  751. package/src/x_ite/Components/PointingDeviceSensor/PlaneSensor.js +7 -4
  752. package/src/x_ite/Components/PointingDeviceSensor/SphereSensor.js +2 -4
  753. package/src/x_ite/Components/PointingDeviceSensor/TouchSensor.js +4 -4
  754. package/src/x_ite/Components/PointingDeviceSensor/X3DDragSensorNode.js +4 -4
  755. package/src/x_ite/Components/PointingDeviceSensor/X3DPointingDeviceSensorNode.js +3 -5
  756. package/src/x_ite/Components/PointingDeviceSensor/X3DTouchSensorNode.js +2 -4
  757. package/src/x_ite/Components/PointingDeviceSensor.js +90 -0
  758. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorParallel.js +282 -0
  759. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorPerspective.js +227 -0
  760. package/src/x_ite/Components/ProjectiveTextureMapping/X3DTextureProjectorNode.js +217 -0
  761. package/src/x_ite/Components/Rendering/ClipPlane.js +12 -16
  762. package/src/x_ite/Components/Rendering/Color.js +62 -17
  763. package/src/x_ite/Components/Rendering/ColorRGBA.js +65 -17
  764. package/src/x_ite/Components/Rendering/Coordinate.js +4 -4
  765. package/src/x_ite/Components/Rendering/IndexedLineSet.js +68 -81
  766. package/src/x_ite/Components/Rendering/IndexedTriangleFanSet.js +20 -19
  767. package/src/x_ite/Components/Rendering/IndexedTriangleSet.js +10 -7
  768. package/src/x_ite/Components/Rendering/IndexedTriangleStripSet.js +21 -23
  769. package/src/x_ite/Components/Rendering/LineSet.js +54 -37
  770. package/src/x_ite/Components/Rendering/Normal.js +65 -13
  771. package/src/x_ite/Components/Rendering/PointSet.js +52 -33
  772. package/src/x_ite/Components/Rendering/TriangleFanSet.js +10 -14
  773. package/src/x_ite/Components/Rendering/TriangleSet.js +2 -4
  774. package/src/x_ite/Components/Rendering/TriangleStripSet.js +9 -13
  775. package/src/x_ite/Components/Rendering/X3DColorNode.js +13 -12
  776. package/src/x_ite/Components/Rendering/X3DComposedGeometryNode.js +118 -79
  777. package/src/x_ite/Components/Rendering/X3DCoordinateNode.js +103 -44
  778. package/src/x_ite/Components/Rendering/X3DGeometricPropertyNode.js +2 -4
  779. package/src/x_ite/Components/Rendering/X3DGeometryNode.js +722 -591
  780. package/src/x_ite/Components/Rendering/X3DLineGeometryNode.js +129 -92
  781. package/src/x_ite/Components/Rendering/X3DNormalNode.js +2 -4
  782. package/src/x_ite/Components/Rendering.js +132 -0
  783. package/src/x_ite/Components/RigidBodyPhysics/BallJoint.js +116 -7
  784. package/src/x_ite/Components/RigidBodyPhysics/CollidableOffset.js +199 -11
  785. package/src/x_ite/Components/RigidBodyPhysics/CollidableShape.js +436 -11
  786. package/src/x_ite/Components/RigidBodyPhysics/CollisionCollection.js +118 -10
  787. package/src/x_ite/Components/RigidBodyPhysics/CollisionSensor.js +192 -9
  788. package/src/x_ite/Components/RigidBodyPhysics/CollisionSpace.js +84 -8
  789. package/src/x_ite/Components/RigidBodyPhysics/Contact.js +20 -14
  790. package/src/x_ite/Components/RigidBodyPhysics/DoubleAxisHingeJoint.js +200 -12
  791. package/src/x_ite/Components/RigidBodyPhysics/MotorJoint.js +14 -4
  792. package/src/x_ite/Components/RigidBodyPhysics/RigidBody.js +424 -17
  793. package/src/x_ite/Components/RigidBodyPhysics/RigidBodyCollection.js +295 -19
  794. package/src/x_ite/Components/RigidBodyPhysics/SingleAxisHingeJoint.js +162 -10
  795. package/src/x_ite/Components/RigidBodyPhysics/SliderJoint.js +135 -8
  796. package/src/x_ite/Components/RigidBodyPhysics/UniversalJoint.js +10 -6
  797. package/src/x_ite/Components/RigidBodyPhysics/X3DNBodyCollidableNode.js +93 -9
  798. package/src/x_ite/Components/RigidBodyPhysics/X3DNBodyCollisionSpaceNode.js +5 -8
  799. package/src/x_ite/Components/RigidBodyPhysics/X3DRigidJointNode.js +150 -4
  800. package/src/x_ite/Components/Scripting/Script.js +156 -105
  801. package/src/x_ite/Components/Scripting/X3DScriptNode.js +3 -7
  802. package/src/x_ite/Components/Shaders/ComposedShader.js +38 -53
  803. package/src/x_ite/Components/Shaders/FloatVertexAttribute.js +38 -15
  804. package/src/x_ite/Components/Shaders/Matrix3VertexAttribute.js +32 -14
  805. package/src/x_ite/Components/Shaders/Matrix4VertexAttribute.js +32 -14
  806. package/src/x_ite/Components/Shaders/PackagedShader.js +19 -17
  807. package/src/x_ite/Components/Shaders/ProgramShader.js +2 -4
  808. package/src/x_ite/Components/Shaders/ShaderPart.js +38 -26
  809. package/src/x_ite/Components/Shaders/ShaderProgram.js +16 -14
  810. package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +836 -699
  811. package/src/x_ite/Components/Shaders/X3DShaderNode.js +61 -101
  812. package/src/x_ite/Components/Shaders/X3DVertexAttributeNode.js +2 -4
  813. package/src/x_ite/Components/Shaders.js +102 -0
  814. package/src/x_ite/Components/Shape/Appearance.js +179 -69
  815. package/src/x_ite/Components/Shape/FillProperties.js +65 -8
  816. package/src/x_ite/Components/Shape/LineProperties.js +29 -9
  817. package/src/x_ite/Components/Shape/Material.js +50 -64
  818. package/src/x_ite/Components/Shape/PointProperties.js +162 -0
  819. package/src/x_ite/Components/Shape/Shape.js +116 -68
  820. package/src/x_ite/Components/Shape/TwoSidedMaterial.js +56 -62
  821. package/src/x_ite/Components/Shape/UnlitMaterial.js +109 -0
  822. package/src/x_ite/Components/Shape/X3DAppearanceChildNode.js +2 -4
  823. package/src/x_ite/Components/Shape/X3DAppearanceNode.js +14 -11
  824. package/src/x_ite/Components/Shape/X3DMaterialNode.js +17 -6
  825. package/src/x_ite/Components/Shape/X3DOneSidedMaterialNode.js +111 -0
  826. package/src/x_ite/Components/Shape/X3DShapeNode.js +54 -29
  827. package/src/x_ite/Components/Shape.js +108 -0
  828. package/src/x_ite/Components/Sound/AudioClip.js +47 -57
  829. package/src/x_ite/Components/Sound/Sound.js +177 -83
  830. package/src/x_ite/Components/Sound/X3DSoundNode.js +2 -4
  831. package/src/x_ite/Components/Sound/X3DSoundSourceNode.js +38 -24
  832. package/src/x_ite/Components/Sound.js +81 -0
  833. package/src/x_ite/Components/Text/FontStyle.js +4 -6
  834. package/src/x_ite/Components/Text/Text.js +21 -18
  835. package/src/x_ite/Components/Text/X3DFontStyleNode.js +58 -93
  836. package/src/x_ite/Components/Text.js +78 -0
  837. package/src/x_ite/Components/Texturing/ImageTexture.js +57 -67
  838. package/src/x_ite/Components/Texturing/MovieTexture.js +59 -70
  839. package/src/x_ite/Components/Texturing/MultiTexture.js +238 -15
  840. package/src/x_ite/Components/Texturing/MultiTextureCoordinate.js +85 -8
  841. package/src/x_ite/Components/Texturing/MultiTextureTransform.js +47 -8
  842. package/src/x_ite/Components/Texturing/PixelTexture.js +61 -27
  843. package/src/x_ite/Components/Texturing/TextureCoordinate.js +72 -22
  844. package/src/x_ite/Components/Texturing/TextureCoordinateGenerator.js +69 -11
  845. package/src/x_ite/Components/Texturing/TextureProperties.js +98 -69
  846. package/src/x_ite/Components/Texturing/TextureTransform.js +58 -52
  847. package/src/x_ite/Components/Texturing/X3DSingleTextureCoordinateNode.js +91 -0
  848. package/src/x_ite/Components/Texturing/X3DSingleTextureNode.js +183 -0
  849. package/src/x_ite/Components/Texturing/X3DSingleTextureTransformNode.js +77 -0
  850. package/src/x_ite/Components/Texturing/X3DTexture2DNode.js +42 -97
  851. package/src/x_ite/Components/Texturing/X3DTexture2DNode.js.~1~ +209 -0
  852. package/src/x_ite/Components/Texturing/X3DTextureCoordinateNode.js +4 -12
  853. package/src/x_ite/Components/Texturing/X3DTextureNode.js +10 -71
  854. package/src/x_ite/Components/Texturing/X3DTextureTransformNode.js +5 -14
  855. package/src/x_ite/Components/Texturing.js +120 -0
  856. package/src/x_ite/Components/Texturing3D/ComposedTexture3D.js +90 -8
  857. package/src/x_ite/Components/Texturing3D/ImageTexture3D.js +106 -16
  858. package/src/x_ite/Components/Texturing3D/PixelTexture3D.js +126 -8
  859. package/src/x_ite/Components/Texturing3D/TextureCoordinate3D.js +75 -25
  860. package/src/x_ite/Components/Texturing3D/TextureCoordinate4D.js +74 -24
  861. package/src/x_ite/Components/Texturing3D/TextureTransform3D.js +42 -36
  862. package/src/x_ite/Components/Texturing3D/TextureTransformMatrix3D.js +19 -16
  863. package/src/x_ite/Components/Texturing3D/X3DTexture3DNode.js +110 -8
  864. package/src/x_ite/Components/Time/TimeSensor.js +68 -38
  865. package/src/x_ite/Components/Time/X3DTimeDependentNode.js +29 -29
  866. package/src/x_ite/Components/Time.js +75 -0
  867. package/src/x_ite/Components/VolumeRendering/BlendedVolumeStyle.js +311 -12
  868. package/src/x_ite/Components/VolumeRendering/BoundaryEnhancementVolumeStyle.js +60 -8
  869. package/src/x_ite/Components/VolumeRendering/CartoonVolumeStyle.js +219 -10
  870. package/src/x_ite/Components/VolumeRendering/ComposedVolumeStyle.js +134 -7
  871. package/src/x_ite/Components/VolumeRendering/EdgeEnhancementVolumeStyle.js +88 -9
  872. package/src/x_ite/Components/VolumeRendering/IsoSurfaceVolumeData.js +311 -15
  873. package/src/x_ite/Components/VolumeRendering/OpacityMapVolumeStyle.js +87 -7
  874. package/src/x_ite/Components/VolumeRendering/ProjectionVolumeStyle.js +136 -6
  875. package/src/x_ite/Components/VolumeRendering/SegmentedVolumeData.js +224 -13
  876. package/src/x_ite/Components/VolumeRendering/ShadedVolumeStyle.js +193 -12
  877. package/src/x_ite/Components/VolumeRendering/SilhouetteEnhancementVolumeStyle.js +87 -10
  878. package/src/x_ite/Components/VolumeRendering/ToneMappedVolumeStyle.js +97 -9
  879. package/src/x_ite/Components/VolumeRendering/VolumeData.js +155 -12
  880. package/src/x_ite/Components/VolumeRendering/X3DComposableVolumeRenderStyleNode.js +2 -4
  881. package/src/x_ite/Components/VolumeRendering/X3DVolumeDataNode.js +155 -5
  882. package/src/x_ite/Components/VolumeRendering/X3DVolumeRenderStyleNode.js +64 -4
  883. package/src/x_ite/Components/X_ITE/BlendMode.js +206 -0
  884. package/src/x_ite/Components.js +110 -0
  885. package/src/x_ite/Configuration/ComponentInfo.js +21 -15
  886. package/src/x_ite/Configuration/ComponentInfoArray.js +11 -16
  887. package/src/x_ite/Configuration/ProfileInfo.js +10 -10
  888. package/src/x_ite/Configuration/ProfileInfoArray.js +10 -3
  889. package/src/x_ite/Configuration/SupportedComponents.js +312 -303
  890. package/src/x_ite/Configuration/SupportedNodes.js +44 -716
  891. package/src/x_ite/Configuration/SupportedProfiles.js +196 -168
  892. package/src/x_ite/Configuration/UnitInfo.js +22 -8
  893. package/src/x_ite/Configuration/UnitInfoArray.js +2 -3
  894. package/src/x_ite/Configuration/X3DInfoArray.js +46 -26
  895. package/src/x_ite/DEBUG.js +4 -5
  896. package/src/x_ite/Execution/BindableList.js +99 -34
  897. package/src/x_ite/Execution/BindableStack.js +65 -74
  898. package/src/x_ite/Execution/ExportedNode.js +32 -9
  899. package/src/x_ite/Execution/ImportedNode.js +144 -63
  900. package/src/x_ite/Execution/Scene.js +33 -35
  901. package/src/x_ite/Execution/World.js +31 -29
  902. package/src/x_ite/Execution/X3DExecutionContext.js +452 -194
  903. package/src/x_ite/Execution/X3DScene.js +303 -74
  904. package/src/x_ite/{Error.js → Fallback.js} +25 -24
  905. package/src/x_ite/Fields/ArrayFields.js +315 -112
  906. package/src/x_ite/Fields/SFBool.js +11 -10
  907. package/src/x_ite/Fields/SFColor.js +43 -19
  908. package/src/x_ite/Fields/SFColorRGBA.js +40 -18
  909. package/src/x_ite/Fields/SFDouble.js +17 -10
  910. package/src/x_ite/Fields/SFFloat.js +18 -11
  911. package/src/x_ite/Fields/SFImage.js +47 -38
  912. package/src/x_ite/Fields/SFInt32.js +10 -9
  913. package/src/x_ite/Fields/SFMatrix3.js +24 -17
  914. package/src/x_ite/Fields/SFMatrix4.js +24 -17
  915. package/src/x_ite/Fields/SFMatrixPrototypeTemplate.js +15 -8
  916. package/src/x_ite/Fields/SFNode.js +119 -39
  917. package/src/x_ite/Fields/SFNodeCache.js +89 -0
  918. package/src/x_ite/Fields/SFRotation.js +42 -27
  919. package/src/x_ite/Fields/SFString.js +14 -15
  920. package/src/x_ite/Fields/SFTime.js +12 -11
  921. package/src/x_ite/Fields/SFVec2.js +17 -14
  922. package/src/x_ite/Fields/SFVec3.js +23 -17
  923. package/src/x_ite/Fields/SFVec4.js +25 -19
  924. package/src/x_ite/Fields/SFVecPrototypeTemplate.js +51 -19
  925. package/src/x_ite/Fields.js +3 -9
  926. package/src/x_ite/InputOutput/FileLoader.js +264 -181
  927. package/src/x_ite/InputOutput/Generator.js +136 -60
  928. package/src/x_ite/Parser/HTMLSupport.js +3 -596
  929. package/src/x_ite/Parser/JSONParser.js +446 -0
  930. package/src/x_ite/Parser/Parser.js +617 -652
  931. package/src/x_ite/Parser/X3DParser.js +176 -0
  932. package/src/x_ite/Parser/XMLParser.js +359 -94
  933. package/src/x_ite/Prototype/ExternProtoDeclarationArray.js +19 -3
  934. package/src/x_ite/Prototype/ProtoDeclarationArray.js +19 -3
  935. package/src/x_ite/Prototype/X3DExternProtoDeclaration.js +120 -61
  936. package/src/x_ite/Prototype/X3DProtoDeclaration.js +144 -59
  937. package/src/x_ite/Prototype/X3DProtoDeclarationNode.js +16 -18
  938. package/src/x_ite/Rendering/DependentRenderer.js +9 -13
  939. package/src/x_ite/Rendering/{DepthBuffer.js → TextureBuffer.js} +84 -53
  940. package/src/x_ite/Rendering/X3DRenderObject.js +640 -531
  941. package/src/x_ite/Routing/RouteArray.js +38 -16
  942. package/src/x_ite/Routing/X3DRoute.js +67 -68
  943. package/src/x_ite/Routing/X3DRoutingContext.js +6 -6
  944. package/src/x_ite/X3D.js +74 -70
  945. package/src/x_ite.config.js +91 -0
  946. package/src/x_ite.css +175 -53
  947. package/src/x_ite.html +128 -439
  948. package/src/x_ite.js +87 -25
  949. package/tests/{SEE.txt → README.md} +1 -0
  950. package/tests/tests.mdproj +1 -1
  951. package/x_ite.min.html +128 -439
  952. package/.bzrignore +0 -3
  953. package/.npmignore +0 -3
  954. package/AUTHORS.md +0 -6
  955. package/STYLE_GUIDE.md +0 -51
  956. package/X_ITE.sln +0 -56
  957. package/X_ITE.userprefs +0 -13
  958. package/build/build.mdproj +0 -24
  959. package/build/dist.pl +0 -97
  960. package/build/parts/end.frag +0 -10
  961. package/build/parts/start.frag +0 -7
  962. package/dist/LICENCES.txt +0 -344
  963. package/dist/dist.mdproj +0 -45
  964. package/dist/images/logo.128.png +0 -0
  965. package/fonts/fonts.mdproj +0 -29
  966. package/meta/meta.mdproj +0 -35
  967. package/require.build.js +0 -15
  968. package/require.build.min.js +0 -15
  969. package/src/images/logo.128.png +0 -0
  970. package/src/lib/jquery-contextMenu/README.md +0 -355
  971. package/src/lib/jquery-contextMenu/dist/images/cut.png +0 -0
  972. package/src/lib/jquery-contextMenu/dist/images/door.png +0 -0
  973. package/src/lib/jquery-contextMenu/dist/images/page_white_add.png +0 -0
  974. package/src/lib/jquery-contextMenu/dist/images/page_white_copy.png +0 -0
  975. package/src/lib/jquery-contextMenu/dist/images/page_white_delete.png +0 -0
  976. package/src/lib/jquery-contextMenu/dist/images/page_white_edit.png +0 -0
  977. package/src/lib/jquery-contextMenu/dist/images/page_white_paste.png +0 -0
  978. package/src/lib/jquery-contextMenu/dist/jquery.contextMenu.css +0 -155
  979. package/src/lib/jquery-contextMenu/dist/jquery.contextMenu.js +0 -1811
  980. package/src/lib/jquery-contextMenu/dist/jquery.contextMenu.min.css +0 -16
  981. package/src/lib/jquery-contextMenu/dist/jquery.contextMenu.min.css.map +0 -1
  982. package/src/lib/jquery-contextMenu/dist/jquery.contextMenu.min.js +0 -18
  983. package/src/lib/jquery-contextMenu/dist/jquery.contextMenu.min.js.map +0 -1
  984. package/src/lib/jquery-contextMenu/dist/jquery.ui.position.js +0 -517
  985. package/src/lib/jquery-contextMenu/dist/jquery.ui.position.min.js +0 -4
  986. package/src/lib/jquery-contextMenu/package.json +0 -99
  987. package/src/lib/opentype.js/.npmignore +0 -5
  988. package/src/locale/de.mo +0 -0
  989. package/src/locale/fr.mo +0 -0
  990. package/src/require.config.js +0 -51
  991. package/src/src.mdproj +0 -729
  992. package/src/standard/Networking/URI.js +0 -687
  993. package/src/x_ite/Browser/Shaders/BackgroundSphereFragmentShader.fs +0 -29
  994. package/src/x_ite/Browser/Shaders/BackgroundSphereVertexShader.vs +0 -22
  995. package/src/x_ite/Browser/Shaders/Bits/Line3.h +0 -14
  996. package/src/x_ite/Browser/Shaders/Bits/Plane3.h +0 -47
  997. package/src/x_ite/Browser/Shaders/Bits/Random.h +0 -31
  998. package/src/x_ite/Browser/Shaders/Depth.fs +0 -51
  999. package/src/x_ite/Browser/Shaders/Depth.vs +0 -20
  1000. package/src/x_ite/Browser/Shaders/Gouraud.fs +0 -110
  1001. package/src/x_ite/Browser/Shaders/Gouraud.vs +0 -188
  1002. package/src/x_ite/Browser/Shaders/Phong.fs +0 -255
  1003. package/src/x_ite/Browser/Shaders/Phong.vs +0 -38
  1004. package/src/x_ite/Browser/Shaders/PointSet.fs +0 -64
  1005. package/src/x_ite/Browser/Shaders/Wireframe.fs +0 -61
  1006. package/src/x_ite/Browser/Shaders/Wireframe.vs +0 -55
  1007. package/src/x_ite/Components/H-Anim/HAnimHumanoid.js +0 -118
@@ -1,1811 +0,0 @@
1
- /*!
2
- * jQuery contextMenu v1.8.1 - Plugin for simple contextMenu handling
3
- *
4
- * Version: v1.8.1
5
- *
6
- * Authors: Björn Brala (SWIS.nl), Rodney Rehm, Addy Osmani (patches for FF)
7
- * Web: http://swisnl.github.io/jQuery-contextMenu/
8
- *
9
- * Copyright (c) 2011-2015 SWIS BV and contributors
10
- *
11
- * Licensed under
12
- * MIT License http://www.opensource.org/licenses/mit-license
13
- * GPL v3 http://opensource.org/licenses/GPL-3.0
14
- *
15
- * Date: 2015-09-20T18:47:55.817Z
16
- */
17
-
18
- (function (factory) {
19
- if (typeof define === 'function' && define.amd) {
20
- // AMD. Register as anonymous module.
21
- define(['jquery'], factory);
22
- } else if (typeof exports === 'object') {
23
- // Node / CommonJS
24
- factory(require('jquery'));
25
- } else {
26
- // Browser globals.
27
- factory(jQuery);
28
- }
29
- })(function ($) {
30
-
31
- 'use strict';
32
-
33
- // TODO: -
34
- // ARIA stuff: menuitem, menuitemcheckbox und menuitemradio
35
- // create <menu> structure if $.support[htmlCommand || htmlMenuitem] and !opt.disableNative
36
-
37
- // determine html5 compatibility
38
- $.support.htmlMenuitem = ('HTMLMenuItemElement' in window);
39
- $.support.htmlCommand = ('HTMLCommandElement' in window);
40
- $.support.eventSelectstart = ('onselectstart' in document.documentElement);
41
- /* // should the need arise, test for css user-select
42
- $.support.cssUserSelect = (function(){
43
- var t = false,
44
- e = document.createElement('div');
45
-
46
- $.each('Moz|Webkit|Khtml|O|ms|Icab|'.split('|'), function(i, prefix) {
47
- var propCC = prefix + (prefix ? 'U' : 'u') + 'serSelect',
48
- prop = (prefix ? ('-' + prefix.toLowerCase() + '-') : '') + 'user-select';
49
-
50
- e.style.cssText = prop + ': text;';
51
- if (e.style[propCC] == 'text') {
52
- t = true;
53
- return false;
54
- }
55
-
56
- return true;
57
- });
58
-
59
- return t;
60
- })();
61
- */
62
-
63
- if (!$.ui || !$.widget) {
64
- // duck punch $.cleanData like jQueryUI does to get that remove event
65
- $.cleanData = (function (orig) {
66
- return function (elems) {
67
- var events, elem, i;
68
- for (i = 0; (elem = elems[i]) != null; i++) {
69
- try {
70
- // Only trigger remove when necessary to save time
71
- events = $._data(elem, 'events');
72
- if (events && events.remove) {
73
- $(elem).triggerHandler('remove');
74
- }
75
-
76
- // Http://bugs.jquery.com/ticket/8235
77
- } catch (e) {}
78
- }
79
- orig(elems);
80
- };
81
- })($.cleanData);
82
- }
83
-
84
- var // currently active contextMenu trigger
85
- $currentTrigger = null,
86
- // is contextMenu initialized with at least one menu?
87
- initialized = false,
88
- // window handle
89
- $win = $(window),
90
- // number of registered menus
91
- counter = 0,
92
- // mapping selector to namespace
93
- namespaces = {},
94
- // mapping namespace to options
95
- menus = {},
96
- // custom command type handlers
97
- types = {},
98
- // default values
99
- defaults = {
100
- // selector of contextMenu trigger
101
- selector: null,
102
- // where to append the menu to
103
- appendTo: null,
104
- // method to trigger context menu ["right", "left", "hover"]
105
- trigger: 'right',
106
- // hide menu when mouse leaves trigger / menu elements
107
- autoHide: false,
108
- // ms to wait before showing a hover-triggered context menu
109
- delay: 200,
110
- // flag denoting if a second trigger should simply move (true) or rebuild (false) an open menu
111
- // as long as the trigger happened on one of the trigger-element's child nodes
112
- reposition: true,
113
-
114
- // Default classname configuration to be able avoid conflicts in frameworks
115
- classNames : {
116
-
117
- hover: 'hover', // Item hover
118
- disabled: 'disabled', // Item disabled
119
- visible: 'visible', // Item visible
120
- notSelectable: 'not-selectable', // Item not selectable
121
-
122
- icon: 'icon',
123
- iconEdit: 'icon-edit',
124
- iconCut: 'icon-cut',
125
- iconCopy: 'icon-copy',
126
- iconPaste: 'icon-paste',
127
- iconDelete: 'icon-delete',
128
- iconAdd: 'icon-add',
129
- iconQuit: 'icon-quit'
130
- },
131
-
132
- // determine position to show menu at
133
- determinePosition: function ($menu) {
134
- // position to the lower middle of the trigger element
135
- if ($.ui && $.ui.position) {
136
- // .position() is provided as a jQuery UI utility
137
- // (...and it won't work on hidden elements)
138
- $menu.css('display', 'block').position({
139
- my: 'center top',
140
- at: 'center bottom',
141
- of: this,
142
- offset: '0 5',
143
- collision: 'fit'
144
- }).css('display', 'none');
145
- } else {
146
- // determine contextMenu position
147
- var offset = this.offset();
148
- offset.top += this.outerHeight();
149
- offset.left += this.outerWidth() / 2 - $menu.outerWidth() / 2;
150
- $menu.css(offset);
151
- }
152
- },
153
- // position menu
154
- position: function (opt, x, y) {
155
- var offset;
156
- // determine contextMenu position
157
- if (!x && !y) {
158
- opt.determinePosition.call(this, opt.$menu);
159
- return;
160
- } else if (x === 'maintain' && y === 'maintain') {
161
- // x and y must not be changed (after re-show on command click)
162
- offset = opt.$menu.position();
163
- } else {
164
- // x and y are given (by mouse event)
165
- offset = {top: y, left: x};
166
- }
167
-
168
- // correct offset if viewport demands it
169
- var bottom = $win.scrollTop() + $win.height(),
170
- right = $win.scrollLeft() + $win.width(),
171
- height = opt.$menu.outerHeight(),
172
- width = opt.$menu.outerWidth();
173
-
174
- if (offset.top + height > bottom) {
175
- offset.top -= height;
176
- }
177
-
178
- if (offset.top < 0) {
179
- offset.top = 0;
180
- }
181
-
182
- if (offset.left + width > right) {
183
- offset.left -= width;
184
- }
185
-
186
- opt.$menu.css(offset);
187
- },
188
- // position the sub-menu
189
- positionSubmenu: function ($menu) {
190
- if ($.ui && $.ui.position) {
191
- // .position() is provided as a jQuery UI utility
192
- // (...and it won't work on hidden elements)
193
- $menu.css('display', 'block').position({
194
- my: 'left top',
195
- at: 'right top',
196
- of: this,
197
- collision: 'flipfit fit'
198
- }).css('display', '');
199
- } else {
200
- // determine contextMenu position
201
- var offset = {
202
- top: 0,
203
- left: this.outerWidth()
204
- };
205
- $menu.css(offset);
206
- }
207
- },
208
- // offset to add to zIndex
209
- zIndex: 1,
210
- // show hide animation settings
211
- animation: {
212
- duration: 50,
213
- show: 'slideDown',
214
- hide: 'slideUp'
215
- },
216
- // events
217
- events: {
218
- show: $.noop,
219
- hide: $.noop
220
- },
221
- // default callback
222
- callback: null,
223
- // list of contextMenu items
224
- items: {}
225
- },
226
- // mouse position for hover activation
227
- hoveract = {
228
- timer: null,
229
- pageX: null,
230
- pageY: null
231
- },
232
- // determine zIndex
233
- zindex = function ($t) {
234
- var zin = 0,
235
- $tt = $t;
236
-
237
- while (true) {
238
- zin = Math.max(zin, parseInt($tt.css('z-index'), 10) || 0);
239
- $tt = $tt.parent();
240
- if (!$tt || !$tt.length || 'html body'.indexOf($tt.prop('nodeName').toLowerCase()) > -1) {
241
- break;
242
- }
243
- }
244
- return zin;
245
- },
246
- // event handlers
247
- handle = {
248
- // abort anything
249
- abortevent: function (e) {
250
- e.preventDefault();
251
- e.stopImmediatePropagation();
252
- },
253
- // contextmenu show dispatcher
254
- contextmenu: function (e) {
255
- var $this = $(this);
256
-
257
- // disable actual context-menu if we are using the right mouse button as the trigger
258
- if (e.data.trigger === 'right') {
259
- e.preventDefault();
260
- e.stopImmediatePropagation();
261
- }
262
-
263
- // abort native-triggered events unless we're triggering on right click
264
- if ((e.data.trigger !== 'right' && e.data.trigger !== 'demand') && e.originalEvent) {
265
- return;
266
- }
267
-
268
- // abort event if menu is visible for this trigger
269
- if ($this.hasClass('context-menu-active')) {
270
- return;
271
- }
272
-
273
- if (!$this.hasClass('context-menu-disabled')) {
274
- // theoretically need to fire a show event at <menu>
275
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#context-menus
276
- // var evt = jQuery.Event("show", { data: data, pageX: e.pageX, pageY: e.pageY, relatedTarget: this });
277
- // e.data.$menu.trigger(evt);
278
-
279
- $currentTrigger = $this;
280
- if (e.data.build) {
281
- var built = e.data.build($currentTrigger, e);
282
- // abort if build() returned false
283
- if (built === false) {
284
- return;
285
- }
286
-
287
- // dynamically build menu on invocation
288
- e.data = $.extend(true, {}, defaults, e.data, built || {});
289
-
290
- // abort if there are no items to display
291
- if (!e.data.items || $.isEmptyObject(e.data.items)) {
292
- // Note: jQuery captures and ignores errors from event handlers
293
- if (window.console) {
294
- (console.error || console.log).call(console, 'No items specified to show in contextMenu');
295
- }
296
-
297
- throw new Error('No Items specified');
298
- }
299
-
300
- // backreference for custom command type creation
301
- e.data.$trigger = $currentTrigger;
302
-
303
- op.create(e.data);
304
- }
305
- var showMenu = false;
306
- for (var item in e.data.items) {
307
- if (e.data.items.hasOwnProperty(item)) {
308
- var visible;
309
- if ($.isFunction(e.data.items[item].visible)) {
310
- visible = e.data.items[item].visible.call($(e.currentTarget), item, e.data);
311
- } else if (typeof item.visible !== 'undefined') {
312
- visible = e.data.items[item].visible === true;
313
- } else {
314
- visible = true;
315
- }
316
- if (visible) {
317
- showMenu = true;
318
- }
319
- }
320
- }
321
- if (showMenu) {
322
- // show menu
323
- op.show.call($this, e.data, e.pageX, e.pageY);
324
- }
325
- }
326
- },
327
- // contextMenu left-click trigger
328
- click: function (e) {
329
- e.preventDefault();
330
- e.stopImmediatePropagation();
331
- $(this).trigger($.Event('contextmenu', {data: e.data, pageX: e.pageX, pageY: e.pageY}));
332
- },
333
- // contextMenu right-click trigger
334
- mousedown: function (e) {
335
- // register mouse down
336
- var $this = $(this);
337
-
338
- // hide any previous menus
339
- if ($currentTrigger && $currentTrigger.length && !$currentTrigger.is($this)) {
340
- $currentTrigger.data('contextMenu').$menu.trigger('contextmenu:hide');
341
- }
342
-
343
- // activate on right click
344
- if (e.button === 2) {
345
- $currentTrigger = $this.data('contextMenuActive', true);
346
- }
347
- },
348
- // contextMenu right-click trigger
349
- mouseup: function (e) {
350
- // show menu
351
- var $this = $(this);
352
- if ($this.data('contextMenuActive') && $currentTrigger && $currentTrigger.length && $currentTrigger.is($this) && !$this.hasClass('context-menu-disabled')) {
353
- e.preventDefault();
354
- e.stopImmediatePropagation();
355
- $currentTrigger = $this;
356
- $this.trigger($.Event('contextmenu', {data: e.data, pageX: e.pageX, pageY: e.pageY}));
357
- }
358
-
359
- $this.removeData('contextMenuActive');
360
- },
361
- // contextMenu hover trigger
362
- mouseenter: function (e) {
363
- var $this = $(this),
364
- $related = $(e.relatedTarget),
365
- $document = $(document);
366
-
367
- // abort if we're coming from a menu
368
- if ($related.is('.context-menu-list') || $related.closest('.context-menu-list').length) {
369
- return;
370
- }
371
-
372
- // abort if a menu is shown
373
- if ($currentTrigger && $currentTrigger.length) {
374
- return;
375
- }
376
-
377
- hoveract.pageX = e.pageX;
378
- hoveract.pageY = e.pageY;
379
- hoveract.data = e.data;
380
- $document.on('mousemove.contextMenuShow', handle.mousemove);
381
- hoveract.timer = setTimeout(function () {
382
- hoveract.timer = null;
383
- $document.off('mousemove.contextMenuShow');
384
- $currentTrigger = $this;
385
- $this.trigger($.Event('contextmenu', {
386
- data: hoveract.data,
387
- pageX: hoveract.pageX,
388
- pageY: hoveract.pageY
389
- }));
390
- }, e.data.delay);
391
- },
392
- // contextMenu hover trigger
393
- mousemove: function (e) {
394
- hoveract.pageX = e.pageX;
395
- hoveract.pageY = e.pageY;
396
- },
397
- // contextMenu hover trigger
398
- mouseleave: function (e) {
399
- // abort if we're leaving for a menu
400
- var $related = $(e.relatedTarget);
401
- if ($related.is('.context-menu-list') || $related.closest('.context-menu-list').length) {
402
- return;
403
- }
404
-
405
- try {
406
- clearTimeout(hoveract.timer);
407
- } catch (e) {
408
- }
409
-
410
- hoveract.timer = null;
411
- },
412
- // click on layer to hide contextMenu
413
- layerClick: function (e) {
414
- var $this = $(this),
415
- root = $this.data('contextMenuRoot'),
416
- button = e.button,
417
- x = e.pageX,
418
- y = e.pageY,
419
- target,
420
- offset;
421
-
422
- e.preventDefault();
423
- e.stopImmediatePropagation();
424
-
425
- setTimeout(function () {
426
- var $window;
427
- var triggerAction = ((root.trigger === 'left' && button === 0) || (root.trigger === 'right' && button === 2));
428
-
429
- // find the element that would've been clicked, wasn't the layer in the way
430
- if (document.elementFromPoint) {
431
- root.$layer.hide();
432
- target = document.elementFromPoint(x - $win.scrollLeft(), y - $win.scrollTop());
433
- root.$layer.show();
434
- }
435
-
436
- if (root.reposition && triggerAction) {
437
- if (document.elementFromPoint) {
438
- if (root.$trigger.is(target) || root.$trigger.has(target).length) {
439
- root.position.call(root.$trigger, root, x, y);
440
- return;
441
- }
442
- } else {
443
- offset = root.$trigger.offset();
444
- $window = $(window);
445
- // while this looks kinda awful, it's the best way to avoid
446
- // unnecessarily calculating any positions
447
- offset.top += $window.scrollTop();
448
- if (offset.top <= e.pageY) {
449
- offset.left += $window.scrollLeft();
450
- if (offset.left <= e.pageX) {
451
- offset.bottom = offset.top + root.$trigger.outerHeight();
452
- if (offset.bottom >= e.pageY) {
453
- offset.right = offset.left + root.$trigger.outerWidth();
454
- if (offset.right >= e.pageX) {
455
- // reposition
456
- root.position.call(root.$trigger, root, x, y);
457
- return;
458
- }
459
- }
460
- }
461
- }
462
- }
463
- }
464
-
465
- if (target && triggerAction) {
466
- root.$trigger.one('contextmenu:hidden', function () {
467
- $(target).contextMenu({x: x, y: y});
468
- });
469
- }
470
-
471
- root.$menu.trigger('contextmenu:hide');
472
- }, 50);
473
- },
474
- // key handled :hover
475
- keyStop: function (e, opt) {
476
- if (!opt.isInput) {
477
- e.preventDefault();
478
- }
479
-
480
- e.stopPropagation();
481
- },
482
- key: function (e) {
483
-
484
- var opt = {};
485
-
486
- // Only get the data from $currentTrigger if it exists
487
- if ($currentTrigger) {
488
- opt = $currentTrigger.data('contextMenu') || {};
489
- }
490
-
491
- switch (e.keyCode) {
492
- case 9:
493
- case 38: // up
494
- handle.keyStop(e, opt);
495
- // if keyCode is [38 (up)] or [9 (tab) with shift]
496
- if (opt.isInput) {
497
- if (e.keyCode === 9 && e.shiftKey) {
498
- e.preventDefault();
499
- opt.$selected && opt.$selected.find('input, textarea, select').blur();
500
- opt.$menu.trigger('prevcommand');
501
- return;
502
- } else if (e.keyCode === 38 && opt.$selected.find('input, textarea, select').prop('type') === 'checkbox') {
503
- // checkboxes don't capture this key
504
- e.preventDefault();
505
- return;
506
- }
507
- } else if (e.keyCode !== 9 || e.shiftKey) {
508
- opt.$menu.trigger('prevcommand');
509
- return;
510
- }
511
- // omitting break;
512
- // case 9: // tab - reached through omitted break;
513
- case 40: // down
514
- handle.keyStop(e, opt);
515
- if (opt.isInput) {
516
- if (e.keyCode === 9) {
517
- e.preventDefault();
518
- opt.$selected && opt.$selected.find('input, textarea, select').blur();
519
- opt.$menu.trigger('nextcommand');
520
- return;
521
- } else if (e.keyCode === 40 && opt.$selected.find('input, textarea, select').prop('type') === 'checkbox') {
522
- // checkboxes don't capture this key
523
- e.preventDefault();
524
- return;
525
- }
526
- } else {
527
- opt.$menu.trigger('nextcommand');
528
- return;
529
- }
530
- break;
531
-
532
- case 37: // left
533
- handle.keyStop(e, opt);
534
- if (opt.isInput || !opt.$selected || !opt.$selected.length) {
535
- break;
536
- }
537
-
538
- if (!opt.$selected.parent().hasClass('context-menu-root')) {
539
- var $parent = opt.$selected.parent().parent();
540
- opt.$selected.trigger('contextmenu:blur');
541
- opt.$selected = $parent;
542
- return;
543
- }
544
- break;
545
-
546
- case 39: // right
547
- handle.keyStop(e, opt);
548
- if (opt.isInput || !opt.$selected || !opt.$selected.length) {
549
- break;
550
- }
551
-
552
- var itemdata = opt.$selected.data('contextMenu') || {};
553
- if (itemdata.$menu && opt.$selected.hasClass('context-menu-submenu')) {
554
- opt.$selected = null;
555
- itemdata.$selected = null;
556
- itemdata.$menu.trigger('nextcommand');
557
- return;
558
- }
559
- break;
560
-
561
- case 35: // end
562
- case 36: // home
563
- if (opt.$selected && opt.$selected.find('input, textarea, select').length) {
564
- return;
565
- } else {
566
- (opt.$selected && opt.$selected.parent() || opt.$menu)
567
- .children(':not(.' + opt.classNames.disabled + ', .' + opt.classNames.notSelectable + ')')[e.keyCode === 36 ? 'first' : 'last']()
568
- .trigger('contextmenu:focus');
569
- e.preventDefault();
570
- return;
571
- }
572
- break;
573
-
574
- case 13: // enter
575
- handle.keyStop(e, opt);
576
- if (opt.isInput) {
577
- if (opt.$selected && !opt.$selected.is('textarea, select')) {
578
- e.preventDefault();
579
- return;
580
- }
581
- break;
582
- }
583
- if (typeof opt.$selected !== 'undefined') {
584
- opt.$selected.trigger('mouseup');
585
- }
586
- return;
587
-
588
- case 32: // space
589
- case 33: // page up
590
- case 34: // page down
591
- // prevent browser from scrolling down while menu is visible
592
- handle.keyStop(e, opt);
593
- return;
594
-
595
- case 27: // esc
596
- handle.keyStop(e, opt);
597
- opt.$menu.trigger('contextmenu:hide');
598
- return;
599
-
600
- default: // 0-9, a-z
601
- var k = (String.fromCharCode(e.keyCode)).toUpperCase();
602
- if (opt.accesskeys && opt.accesskeys[k]) {
603
- // according to the specs accesskeys must be invoked immediately
604
- opt.accesskeys[k].$node.trigger(opt.accesskeys[k].$menu ? 'contextmenu:focus' : 'mouseup');
605
- return;
606
- }
607
- break;
608
- }
609
- // pass event to selected item,
610
- // stop propagation to avoid endless recursion
611
- e.stopPropagation();
612
- if (typeof opt.$selected !== 'undefined') {
613
- opt.$selected.trigger(e);
614
- }
615
- },
616
- // select previous possible command in menu
617
- prevItem: function (e) {
618
- e.stopPropagation();
619
- var opt = $(this).data('contextMenu') || {};
620
- var root = $(this).data('contextMenuRoot') || {};
621
-
622
- // obtain currently selected menu
623
- if (opt.$selected) {
624
- var $s = opt.$selected;
625
- opt = opt.$selected.parent().data('contextMenu') || {};
626
- opt.$selected = $s;
627
- }
628
-
629
- var $children = opt.$menu.children(),
630
- $prev = !opt.$selected || !opt.$selected.prev().length ? $children.last() : opt.$selected.prev(),
631
- $round = $prev;
632
-
633
- // skip disabled
634
- while ($prev.hasClass(root.classNames.disabled) || $prev.hasClass(root.classNames.notSelectable)) {
635
- if ($prev.prev().length) {
636
- $prev = $prev.prev();
637
- } else {
638
- $prev = $children.last();
639
- }
640
- if ($prev.is($round)) {
641
- // break endless loop
642
- return;
643
- }
644
- }
645
-
646
- // leave current
647
- if (opt.$selected) {
648
- handle.itemMouseleave.call(opt.$selected.get(0), e);
649
- }
650
-
651
- // activate next
652
- handle.itemMouseenter.call($prev.get(0), e);
653
-
654
- // focus input
655
- var $input = $prev.find('input, textarea, select');
656
- if ($input.length) {
657
- $input.focus();
658
- }
659
- },
660
- // select next possible command in menu
661
- nextItem: function (e) {
662
- e.stopPropagation();
663
- var opt = $(this).data('contextMenu') || {};
664
- var root = $(this).data('contextMenuRoot') || {};
665
-
666
- // obtain currently selected menu
667
- if (opt.$selected) {
668
- var $s = opt.$selected;
669
- opt = opt.$selected.parent().data('contextMenu') || {};
670
- opt.$selected = $s;
671
- }
672
-
673
- var $children = opt.$menu.children(),
674
- $next = !opt.$selected || !opt.$selected.next().length ? $children.first() : opt.$selected.next(),
675
- $round = $next;
676
-
677
- // skip disabled
678
- while ($next.hasClass(root.classNames.disabled) || $next.hasClass(root.classNames.notSelectable)) {
679
- if ($next.next().length) {
680
- $next = $next.next();
681
- } else {
682
- $next = $children.first();
683
- }
684
- if ($next.is($round)) {
685
- // break endless loop
686
- return;
687
- }
688
- }
689
-
690
- // leave current
691
- if (opt.$selected) {
692
- handle.itemMouseleave.call(opt.$selected.get(0), e);
693
- }
694
-
695
- // activate next
696
- handle.itemMouseenter.call($next.get(0), e);
697
-
698
- // focus input
699
- var $input = $next.find('input, textarea, select');
700
- if ($input.length) {
701
- $input.focus();
702
- }
703
- },
704
- // flag that we're inside an input so the key handler can act accordingly
705
- focusInput: function () {
706
- var $this = $(this).closest('.context-menu-item'),
707
- data = $this.data(),
708
- opt = data.contextMenu,
709
- root = data.contextMenuRoot;
710
-
711
- root.$selected = opt.$selected = $this;
712
- root.isInput = opt.isInput = true;
713
- },
714
- // flag that we're inside an input so the key handler can act accordingly
715
- blurInput: function () {
716
- var $this = $(this).closest('.context-menu-item'),
717
- data = $this.data(),
718
- opt = data.contextMenu,
719
- root = data.contextMenuRoot;
720
-
721
- root.isInput = opt.isInput = false;
722
- },
723
- // :hover on menu
724
- menuMouseenter: function () {
725
- var root = $(this).data().contextMenuRoot;
726
- root.hovering = true;
727
- },
728
- // :hover on menu
729
- menuMouseleave: function (e) {
730
- var root = $(this).data().contextMenuRoot;
731
- if (root.$layer && root.$layer.is(e.relatedTarget)) {
732
- root.hovering = false;
733
- }
734
- },
735
- // :hover done manually so key handling is possible
736
- itemMouseenter: function (e) {
737
- var $this = $(this),
738
- data = $this.data(),
739
- opt = data.contextMenu,
740
- root = data.contextMenuRoot;
741
-
742
- root.hovering = true;
743
-
744
- // abort if we're re-entering
745
- if (e && root.$layer && root.$layer.is(e.relatedTarget)) {
746
- e.preventDefault();
747
- e.stopImmediatePropagation();
748
- }
749
-
750
- // make sure only one item is selected
751
- (opt.$menu ? opt : root).$menu
752
- .children('.hover').trigger('contextmenu:blur');
753
-
754
- if ($this.hasClass(root.classNames.disabled) || $this.hasClass(root.classNames.notSelectable)) {
755
- opt.$selected = null;
756
- return;
757
- }
758
-
759
- $this.trigger('contextmenu:focus');
760
- },
761
- // :hover done manually so key handling is possible
762
- itemMouseleave: function (e) {
763
- var $this = $(this),
764
- data = $this.data(),
765
- opt = data.contextMenu,
766
- root = data.contextMenuRoot;
767
-
768
- if (root !== opt && root.$layer && root.$layer.is(e.relatedTarget)) {
769
- if (typeof root.$selected !== 'undefined') {
770
- root.$selected.trigger('contextmenu:blur');
771
- }
772
- e.preventDefault();
773
- e.stopImmediatePropagation();
774
- root.$selected = opt.$selected = opt.$node;
775
- return;
776
- }
777
-
778
- $this.trigger('contextmenu:blur');
779
- },
780
- // contextMenu item click
781
- itemClick: function (e) {
782
- var $this = $(this),
783
- data = $this.data(),
784
- opt = data.contextMenu,
785
- root = data.contextMenuRoot,
786
- key = data.contextMenuKey,
787
- callback;
788
-
789
- // abort if the key is unknown or disabled or is a menu
790
- if (!opt.items[key] || $this.is('.' + root.classNames.disabled + ', .context-menu-submenu, .context-menu-separator, .' + root.classNames.notSelectable)) {
791
- return;
792
- }
793
-
794
- e.preventDefault();
795
- e.stopImmediatePropagation();
796
-
797
- if ($.isFunction(root.callbacks[key]) && Object.prototype.hasOwnProperty.call(root.callbacks, key)) {
798
- // item-specific callback
799
- callback = root.callbacks[key];
800
- } else if ($.isFunction(root.callback)) {
801
- // default callback
802
- callback = root.callback;
803
- } else {
804
- // no callback, no action
805
- return;
806
- }
807
-
808
- // hide menu if callback doesn't stop that
809
- if (callback.call(root.$trigger, key, root) !== false) {
810
- root.$menu.trigger('contextmenu:hide');
811
- } else if (root.$menu.parent().length) {
812
- op.update.call(root.$trigger, root);
813
- }
814
- },
815
- // ignore click events on input elements
816
- inputClick: function (e) {
817
- e.stopImmediatePropagation();
818
- },
819
- // hide <menu>
820
- hideMenu: function (e, data) {
821
- var root = $(this).data('contextMenuRoot');
822
- op.hide.call(root.$trigger, root, data && data.force);
823
- },
824
- // focus <command>
825
- focusItem: function (e) {
826
- e.stopPropagation();
827
- var $this = $(this),
828
- data = $this.data(),
829
- opt = data.contextMenu,
830
- root = data.contextMenuRoot;
831
-
832
- $this
833
- .addClass([root.classNames.hover, root.classNames.visible].join(' '))
834
- .siblings()
835
- .removeClass(root.classNames.visible)
836
- .filter(root.classNames.hover)
837
- .trigger('contextmenu:blur');
838
-
839
- // remember selected
840
- opt.$selected = root.$selected = $this;
841
-
842
- // position sub-menu - do after show so dumb $.ui.position can keep up
843
- if (opt.$node) {
844
- root.positionSubmenu.call(opt.$node, opt.$menu);
845
- }
846
- },
847
- // blur <command>
848
- blurItem: function (e) {
849
- e.stopPropagation();
850
- var $this = $(this),
851
- data = $this.data(),
852
- opt = data.contextMenu,
853
- root = data.contextMenuRoot;
854
-
855
- if (opt.autoHide) { // for tablets and touch screens this needs to remain
856
- $this.removeClass(root.classNames.visible);
857
- }
858
- $this.removeClass(root.classNames.hover);
859
- opt.$selected = null;
860
- }
861
- },
862
- // operations
863
- op = {
864
- show: function (opt, x, y) {
865
- var $trigger = $(this),
866
- css = {};
867
-
868
- // hide any open menus
869
- $('#context-menu-layer').trigger('mousedown');
870
-
871
- // backreference for callbacks
872
- opt.$trigger = $trigger;
873
-
874
- // show event
875
- if (opt.events.show.call($trigger, opt) === false) {
876
- $currentTrigger = null;
877
- return;
878
- }
879
-
880
- // create or update context menu
881
- op.update.call($trigger, opt);
882
-
883
- // position menu
884
- opt.position.call($trigger, opt, x, y);
885
-
886
- // make sure we're in front
887
- if (opt.zIndex) {
888
- css.zIndex = zindex($trigger) + opt.zIndex;
889
- }
890
-
891
- // add layer
892
- op.layer.call(opt.$menu, opt, css.zIndex);
893
-
894
- // adjust sub-menu zIndexes
895
- opt.$menu.find('ul').css('zIndex', css.zIndex + 1);
896
-
897
- // position and show context menu
898
- opt.$menu.css(css)[opt.animation.show](opt.animation.duration, function () {
899
- $trigger.trigger('contextmenu:visible');
900
- });
901
- // make options available and set state
902
- $trigger
903
- .data('contextMenu', opt)
904
- .addClass('context-menu-active');
905
-
906
- // register key handler
907
- $(document).off('keydown.contextMenu').on('keydown.contextMenu', handle.key);
908
- // register autoHide handler
909
- if (opt.autoHide) {
910
- // mouse position handler
911
- $(document).on('mousemove.contextMenuAutoHide', function (e) {
912
- // need to capture the offset on mousemove,
913
- // since the page might've been scrolled since activation
914
- var pos = $trigger.offset();
915
- pos.right = pos.left + $trigger.outerWidth();
916
- pos.bottom = pos.top + $trigger.outerHeight();
917
-
918
- if (opt.$layer && !opt.hovering && (!(e.pageX >= pos.left && e.pageX <= pos.right) || !(e.pageY >= pos.top && e.pageY <= pos.bottom))) {
919
- // if mouse in menu...
920
- opt.$menu.trigger('contextmenu:hide');
921
- }
922
- });
923
- }
924
- },
925
- hide: function (opt, force) {
926
- var $trigger = $(this);
927
- if (!opt) {
928
- opt = $trigger.data('contextMenu') || {};
929
- }
930
-
931
- // hide event
932
- if (!force && opt.events && opt.events.hide.call($trigger, opt) === false) {
933
- return;
934
- }
935
-
936
- // remove options and revert state
937
- $trigger
938
- .removeData('contextMenu')
939
- .removeClass('context-menu-active');
940
-
941
- if (opt.$layer) {
942
- // keep layer for a bit so the contextmenu event can be aborted properly by opera
943
- setTimeout((function ($layer) {
944
- return function () {
945
- $layer.remove();
946
- };
947
- })(opt.$layer), 10);
948
-
949
- try {
950
- delete opt.$layer;
951
- } catch (e) {
952
- opt.$layer = null;
953
- }
954
- }
955
-
956
- // remove handle
957
- $currentTrigger = null;
958
- // remove selected
959
- opt.$menu.find('.' + opt.classNames.hover).trigger('contextmenu:blur');
960
- opt.$selected = null;
961
- // unregister key and mouse handlers
962
- // $(document).off('.contextMenuAutoHide keydown.contextMenu'); // http://bugs.jquery.com/ticket/10705
963
- $(document).off('.contextMenuAutoHide').off('keydown.contextMenu');
964
- // hide menu
965
- opt.$menu && opt.$menu[opt.animation.hide](opt.animation.duration, function () {
966
- // tear down dynamically built menu after animation is completed.
967
- if (opt.build) {
968
- opt.$menu.remove();
969
- $.each(opt, function (key) {
970
- switch (key) {
971
- case 'ns':
972
- case 'selector':
973
- case 'build':
974
- case 'trigger':
975
- return true;
976
-
977
- default:
978
- opt[key] = undefined;
979
- try {
980
- delete opt[key];
981
- } catch (e) {
982
- }
983
- return true;
984
- }
985
- });
986
- }
987
-
988
- setTimeout(function () {
989
- $trigger.trigger('contextmenu:hidden');
990
- }, 10);
991
- });
992
- },
993
- create: function (opt, root) {
994
- if (root === undefined) {
995
- root = opt;
996
- }
997
- // create contextMenu
998
- opt.$menu = $('<ul class="context-menu-list"></ul>').addClass(opt.className || '').data({
999
- 'contextMenu': opt,
1000
- 'contextMenuRoot': root
1001
- });
1002
-
1003
- $.each(['callbacks', 'commands', 'inputs'], function (i, k) {
1004
- opt[k] = {};
1005
- if (!root[k]) {
1006
- root[k] = {};
1007
- }
1008
- });
1009
-
1010
- root.accesskeys || (root.accesskeys = {});
1011
-
1012
- // create contextMenu items
1013
- $.each(opt.items, function (key, item) {
1014
- var $t = $('<li class="context-menu-item"></li>').addClass(item.className || ''),
1015
- $label = null,
1016
- $input = null;
1017
-
1018
- // iOS needs to see a click-event bound to an element to actually
1019
- // have the TouchEvents infrastructure trigger the click event
1020
- $t.on('click', $.noop);
1021
-
1022
- // Make old school string seperator a real item so checks wont be
1023
- // akward later.
1024
- if (typeof item === 'string') {
1025
- item = { type : 'cm_seperator' };
1026
- }
1027
-
1028
- item.$node = $t.data({
1029
- 'contextMenu': opt,
1030
- 'contextMenuRoot': root,
1031
- 'contextMenuKey': key
1032
- });
1033
-
1034
- // register accesskey
1035
- // NOTE: the accesskey attribute should be applicable to any element, but Safari5 and Chrome13 still can't do that
1036
- if (typeof item.accesskey !== 'undefined') {
1037
- var aks = splitAccesskey(item.accesskey);
1038
- for (var i = 0, ak; ak = aks[i]; i++) {
1039
- if (!root.accesskeys[ak]) {
1040
- root.accesskeys[ak] = item;
1041
- item._name = item.name.replace(new RegExp('(' + ak + ')', 'i'), '<span class="context-menu-accesskey">$1</span>');
1042
- break;
1043
- }
1044
- }
1045
- }
1046
-
1047
- if (item.type && types[item.type]) {
1048
- // run custom type handler
1049
- types[item.type].call($t, item, opt, root);
1050
- // register commands
1051
- $.each([opt, root], function (i, k) {
1052
- k.commands[key] = item;
1053
- if ($.isFunction(item.callback)) {
1054
- k.callbacks[key] = item.callback;
1055
- }
1056
- });
1057
- } else {
1058
- // add label for input
1059
- if (item.type === 'cm_seperator') {
1060
- $t.addClass('context-menu-separator ' + opt.classNames.notSelectable);
1061
- } else if (item.type === 'html') {
1062
- $t.addClass('context-menu-html ' + opt.classNames.notSelectable);
1063
- } else if (item.type) {
1064
- $label = $('<label></label>').appendTo($t);
1065
- $('<span></span>').html(item._name || item.name).appendTo($label);
1066
- $t.addClass('context-menu-input');
1067
- opt.hasTypes = true;
1068
- $.each([opt, root], function (i, k) {
1069
- k.commands[key] = item;
1070
- k.inputs[key] = item;
1071
- });
1072
- } else if (item.items) {
1073
- item.type = 'sub';
1074
- }
1075
-
1076
- switch (item.type) {
1077
- case 'seperator':
1078
- break;
1079
-
1080
- case 'text':
1081
- $input = $('<input type="text" value="1" name="" />')
1082
- .attr('name', 'context-menu-input-' + key)
1083
- .val(item.value || '')
1084
- .appendTo($label);
1085
- break;
1086
-
1087
- case 'textarea':
1088
- $input = $('<textarea name=""></textarea>')
1089
- .attr('name', 'context-menu-input-' + key)
1090
- .val(item.value || '')
1091
- .appendTo($label);
1092
-
1093
- if (item.height) {
1094
- $input.height(item.height);
1095
- }
1096
- break;
1097
-
1098
- case 'checkbox':
1099
- $input = $('<input type="checkbox" value="1" name="" />')
1100
- .attr('name', 'context-menu-input-' + key)
1101
- .val(item.value || '')
1102
- .prop('checked', !!item.selected)
1103
- .prependTo($label);
1104
- break;
1105
-
1106
- case 'radio':
1107
- $input = $('<input type="radio" value="1" name="" />')
1108
- .attr('name', 'context-menu-input-' + item.radio)
1109
- .val(item.value || '')
1110
- .prop('checked', !!item.selected)
1111
- .prependTo($label);
1112
- break;
1113
-
1114
- case 'select':
1115
- $input = $('<select name=""></select>')
1116
- .attr('name', 'context-menu-input-' + key)
1117
- .appendTo($label);
1118
- if (item.options) {
1119
- $.each(item.options, function (value, text) {
1120
- $('<option></option>').val(value).text(text).appendTo($input);
1121
- });
1122
- $input.val(item.selected);
1123
- }
1124
- break;
1125
-
1126
- case 'sub':
1127
- $('<span></span>').html(item._name || item.name).appendTo($t);
1128
- item.appendTo = item.$node;
1129
- op.create(item, root);
1130
- $t.data('contextMenu', item).addClass('context-menu-submenu');
1131
- item.callback = null;
1132
- break;
1133
-
1134
- case 'html':
1135
- $(item.html).appendTo($t);
1136
- break;
1137
-
1138
- default:
1139
- $.each([opt, root], function (i, k) {
1140
- k.commands[key] = item;
1141
- if ($.isFunction(item.callback)) {
1142
- k.callbacks[key] = item.callback;
1143
- }
1144
- });
1145
- $('<span></span>').html(item._name || item.name || '').appendTo($t);
1146
- break;
1147
- }
1148
-
1149
- // disable key listener in <input>
1150
- if (item.type && item.type !== 'sub' && item.type !== 'html' && item.type !== 'cm_seperator') {
1151
- $input
1152
- .on('focus', handle.focusInput)
1153
- .on('blur', handle.blurInput);
1154
-
1155
- if (item.events) {
1156
- $input.on(item.events, opt);
1157
- }
1158
- }
1159
-
1160
- // add icons
1161
- if (item.icon) {
1162
- if ($.isFunction(item.icon)) {
1163
- item._icon = item.icon.call(this, $t, key, item);
1164
- } else {
1165
- item._icon = opt.classNames.icon + ' ' + opt.classNames.icon + '-' + item.icon;
1166
-
1167
- }
1168
- $t.addClass(item._icon);
1169
- }
1170
- }
1171
-
1172
- // cache contained elements
1173
- item.$input = $input;
1174
- item.$label = $label;
1175
-
1176
- // attach item to menu
1177
- $t.appendTo(opt.$menu);
1178
-
1179
- // Disable text selection
1180
- if (!opt.hasTypes && $.support.eventSelectstart) {
1181
- // browsers support user-select: none,
1182
- // IE has a special event for text-selection
1183
- // browsers supporting neither will not be preventing text-selection
1184
- $t.on('selectstart.disableTextSelect', handle.abortevent);
1185
- }
1186
- });
1187
- // attach contextMenu to <body> (to bypass any possible overflow:hidden issues on parents of the trigger element)
1188
- if (!opt.$node) {
1189
- opt.$menu.css('display', 'none').addClass('context-menu-root');
1190
- }
1191
- opt.$menu.appendTo(opt.appendTo || document.body);
1192
- },
1193
- resize: function ($menu, nested) {
1194
- // determine widths of submenus, as CSS won't grow them automatically
1195
- // position:absolute within position:absolute; min-width:100; max-width:200; results in width: 100;
1196
- // kinda sucks hard...
1197
-
1198
- // determine width of absolutely positioned element
1199
- $menu.css({position: 'absolute', display: 'block'});
1200
- // don't apply yet, because that would break nested elements' widths
1201
- $menu.data('width', Math.ceil($menu.width()));
1202
- // reset styles so they allow nested elements to grow/shrink naturally
1203
- $menu.css({
1204
- position: 'static',
1205
- minWidth: '0px',
1206
- maxWidth: '100000px'
1207
- });
1208
- // identify width of nested menus
1209
- $menu.find('> li > ul').each(function () {
1210
- op.resize($(this), true);
1211
- });
1212
- // reset and apply changes in the end because nested
1213
- // elements' widths wouldn't be calculatable otherwise
1214
- if (!nested) {
1215
- $menu.find('ul').addBack().css({
1216
- position: '',
1217
- display: '',
1218
- minWidth: '',
1219
- maxWidth: ''
1220
- }).width(function () {
1221
- return $(this).data('width');
1222
- });
1223
- }
1224
- },
1225
- update: function (opt, root) {
1226
- var $trigger = this;
1227
- if (root === undefined) {
1228
- root = opt;
1229
- op.resize(opt.$menu);
1230
- }
1231
- // re-check disabled for each item
1232
- opt.$menu.children().each(function () {
1233
- var $item = $(this),
1234
- key = $item.data('contextMenuKey'),
1235
- item = opt.items[key],
1236
- disabled = ($.isFunction(item.disabled) && item.disabled.call($trigger, key, root)) || item.disabled === true,
1237
- visible;
1238
- if ($.isFunction(item.visible)) {
1239
- visible = item.visible.call($trigger, key, root);
1240
- } else if (typeof item.visible !== 'undefined') {
1241
- visible = item.visible === true;
1242
- } else {
1243
- visible = true;
1244
- }
1245
- $item[visible ? 'show' : 'hide']();
1246
-
1247
- // dis- / enable item
1248
- $item[disabled ? 'addClass' : 'removeClass'](root.classNames.disabled);
1249
-
1250
- if ($.isFunction(item.icon)) {
1251
- $item.removeClass(item._icon);
1252
- item._icon = item.icon.call(this, $trigger, key, item);
1253
- $item.addClass(item._icon);
1254
- }
1255
-
1256
- if (item.type) {
1257
- // dis- / enable input elements
1258
- $item.find('input, select, textarea').prop('disabled', disabled);
1259
-
1260
- // update input states
1261
- switch (item.type) {
1262
- case 'text':
1263
- case 'textarea':
1264
- item.$input.val(item.value || '');
1265
- break;
1266
-
1267
- case 'checkbox':
1268
- case 'radio':
1269
- item.$input.val(item.value || '').prop('checked', !!item.selected);
1270
- break;
1271
-
1272
- case 'select':
1273
- item.$input.val(item.selected || '');
1274
- break;
1275
- }
1276
- }
1277
-
1278
- if (item.$menu) {
1279
- // update sub-menu
1280
- op.update.call($trigger, item, root);
1281
- }
1282
- });
1283
- },
1284
- layer: function (opt, zIndex) {
1285
- // add transparent layer for click area
1286
- // filter and background for Internet Explorer, Issue #23
1287
- var $layer = opt.$layer = $('<div id="context-menu-layer" style="position:fixed; z-index:' + zIndex + '; top:0; left:0; opacity: 0; filter: alpha(opacity=0); background-color: #000;"></div>')
1288
- .css({height: $win.height(), width: $win.width(), display: 'block'})
1289
- .data('contextMenuRoot', opt)
1290
- .insertBefore(this)
1291
- .on('contextmenu', handle.abortevent)
1292
- .on('mousedown', handle.layerClick);
1293
-
1294
- // IE6 doesn't know position:fixed;
1295
- if (document.body.style.maxWidth === undefined) { // IE6 doesn't support maxWidth
1296
- $layer.css({
1297
- 'position': 'absolute',
1298
- 'height': $(document).height()
1299
- });
1300
- }
1301
-
1302
- return $layer;
1303
- }
1304
- };
1305
-
1306
- // split accesskey according to http://www.whatwg.org/specs/web-apps/current-work/multipage/editing.html#assigned-access-key
1307
- function splitAccesskey(val) {
1308
- var t = val.split(/\s+/),
1309
- keys = [];
1310
-
1311
- for (var i = 0, k; k = t[i]; i++) {
1312
- k = k.charAt(0).toUpperCase(); // first character only
1313
- // theoretically non-accessible characters should be ignored, but different systems, different keyboard layouts, ... screw it.
1314
- // a map to look up already used access keys would be nice
1315
- keys.push(k);
1316
- }
1317
-
1318
- return keys;
1319
- }
1320
-
1321
- // handle contextMenu triggers
1322
- $.fn.contextMenu = function (operation) {
1323
- var $t = this, $o = operation;
1324
- if (this.length > 0) { // this is not a build on demand menu
1325
- if (operation === undefined) {
1326
- this.first().trigger('contextmenu');
1327
- } else if (operation.x !== undefined && operation.y !== undefined) {
1328
- this.first().trigger($.Event('contextmenu', {pageX: operation.x, pageY: operation.y}));
1329
- } else if (operation === 'hide') {
1330
- var $menu = this.first().data('contextMenu') ? this.first().data('contextMenu').$menu : null;
1331
- $menu && $menu.trigger('contextmenu:hide');
1332
- } else if (operation === 'destroy') {
1333
- $.contextMenu('destroy', {context: this});
1334
- } else if ($.isPlainObject(operation)) {
1335
- operation.context = this;
1336
- $.contextMenu('create', operation);
1337
- } else if (operation) {
1338
- this.removeClass('context-menu-disabled');
1339
- } else if (!operation) {
1340
- this.addClass('context-menu-disabled');
1341
- }
1342
- } else {
1343
- $.each(menus, function () {
1344
- if (this.selector === $t.selector) {
1345
- $o.data = this;
1346
-
1347
- $.extend($o.data, {trigger: 'demand'});
1348
- }
1349
- });
1350
-
1351
- handle.contextmenu.call($o.target, $o);
1352
- }
1353
-
1354
- return this;
1355
- };
1356
-
1357
- // manage contextMenu instances
1358
- $.contextMenu = function (operation, options) {
1359
- if (typeof operation !== 'string') {
1360
- options = operation;
1361
- operation = 'create';
1362
- }
1363
-
1364
- if (typeof options === 'string') {
1365
- options = {selector: options};
1366
- } else if (options === undefined) {
1367
- options = {};
1368
- }
1369
-
1370
- // merge with default options
1371
- var o = $.extend(true, {}, defaults, options || {});
1372
- var $document = $(document);
1373
- var $context = $document;
1374
- var _hasContext = false;
1375
-
1376
- if (!o.context || !o.context.length) {
1377
- o.context = document;
1378
- } else {
1379
- // you never know what they throw at you...
1380
- $context = $(o.context).first();
1381
- o.context = $context.get(0);
1382
- _hasContext = o.context !== document;
1383
- }
1384
-
1385
- switch (operation) {
1386
- case 'create':
1387
- // no selector no joy
1388
- if (!o.selector) {
1389
- throw new Error('No selector specified');
1390
- }
1391
- // make sure internal classes are not bound to
1392
- if (o.selector.match(/.context-menu-(list|item|input)($|\s)/)) {
1393
- throw new Error('Cannot bind to selector "' + o.selector + '" as it contains a reserved className');
1394
- }
1395
- if (!o.build && (!o.items || $.isEmptyObject(o.items))) {
1396
- throw new Error('No Items specified');
1397
- }
1398
- counter++;
1399
- o.ns = '.contextMenu' + counter;
1400
- if (!_hasContext) {
1401
- namespaces[o.selector] = o.ns;
1402
- }
1403
- menus[o.ns] = o;
1404
-
1405
- // default to right click
1406
- if (!o.trigger) {
1407
- o.trigger = 'right';
1408
- }
1409
-
1410
- if (!initialized) {
1411
- // make sure item click is registered first
1412
- $document
1413
- .on({
1414
- 'contextmenu:hide.contextMenu': handle.hideMenu,
1415
- 'prevcommand.contextMenu': handle.prevItem,
1416
- 'nextcommand.contextMenu': handle.nextItem,
1417
- 'contextmenu.contextMenu': handle.abortevent,
1418
- 'mouseenter.contextMenu': handle.menuMouseenter,
1419
- 'mouseleave.contextMenu': handle.menuMouseleave
1420
- }, '.context-menu-list')
1421
- .on('mouseup.contextMenu', '.context-menu-input', handle.inputClick)
1422
- .on({
1423
- 'mouseup.contextMenu': handle.itemClick,
1424
- 'contextmenu:focus.contextMenu': handle.focusItem,
1425
- 'contextmenu:blur.contextMenu': handle.blurItem,
1426
- 'contextmenu.contextMenu': handle.abortevent,
1427
- 'mouseenter.contextMenu': handle.itemMouseenter,
1428
- 'mouseleave.contextMenu': handle.itemMouseleave
1429
- }, '.context-menu-item');
1430
-
1431
- initialized = true;
1432
- }
1433
-
1434
- // engage native contextmenu event
1435
- $context
1436
- .on('contextmenu' + o.ns, o.selector, o, handle.contextmenu);
1437
-
1438
- if (_hasContext) {
1439
- // add remove hook, just in case
1440
- $context.on('remove' + o.ns, function () {
1441
- $(this).contextMenu('destroy');
1442
- });
1443
- }
1444
-
1445
- switch (o.trigger) {
1446
- case 'hover':
1447
- $context
1448
- .on('mouseenter' + o.ns, o.selector, o, handle.mouseenter)
1449
- .on('mouseleave' + o.ns, o.selector, o, handle.mouseleave);
1450
- break;
1451
-
1452
- case 'left':
1453
- $context.on('click' + o.ns, o.selector, o, handle.click);
1454
- break;
1455
- /*
1456
- default:
1457
- // http://www.quirksmode.org/dom/events/contextmenu.html
1458
- $document
1459
- .on('mousedown' + o.ns, o.selector, o, handle.mousedown)
1460
- .on('mouseup' + o.ns, o.selector, o, handle.mouseup);
1461
- break;
1462
- */
1463
- }
1464
-
1465
- // create menu
1466
- if (!o.build) {
1467
- op.create(o);
1468
- }
1469
- break;
1470
-
1471
- case 'destroy':
1472
- var $visibleMenu;
1473
- if (_hasContext) {
1474
- // get proper options
1475
- var context = o.context;
1476
- $.each(menus, function (ns, o) {
1477
- if (o.context !== context) {
1478
- return true;
1479
- }
1480
-
1481
- $visibleMenu = $('.context-menu-list').filter(':visible');
1482
- if ($visibleMenu.length && $visibleMenu.data().contextMenuRoot.$trigger.is($(o.context).find(o.selector))) {
1483
- $visibleMenu.trigger('contextmenu:hide', {force: true});
1484
- }
1485
-
1486
- try {
1487
- if (menus[o.ns].$menu) {
1488
- menus[o.ns].$menu.remove();
1489
- }
1490
-
1491
- delete menus[o.ns];
1492
- } catch (e) {
1493
- menus[o.ns] = null;
1494
- }
1495
-
1496
- $(o.context).off(o.ns);
1497
-
1498
- return true;
1499
- });
1500
- } else if (!o.selector) {
1501
- $document.off('.contextMenu .contextMenuAutoHide');
1502
- $.each(menus, function (ns, o) {
1503
- $(o.context).off(o.ns);
1504
- });
1505
-
1506
- namespaces = {};
1507
- menus = {};
1508
- counter = 0;
1509
- initialized = false;
1510
-
1511
- $('#context-menu-layer, .context-menu-list').remove();
1512
- } else if (namespaces[o.selector]) {
1513
- $visibleMenu = $('.context-menu-list').filter(':visible');
1514
- if ($visibleMenu.length && $visibleMenu.data().contextMenuRoot.$trigger.is(o.selector)) {
1515
- $visibleMenu.trigger('contextmenu:hide', {force: true});
1516
- }
1517
-
1518
- try {
1519
- if (menus[namespaces[o.selector]].$menu) {
1520
- menus[namespaces[o.selector]].$menu.remove();
1521
- }
1522
-
1523
- delete menus[namespaces[o.selector]];
1524
- } catch (e) {
1525
- menus[namespaces[o.selector]] = null;
1526
- }
1527
-
1528
- $document.off(namespaces[o.selector]);
1529
- }
1530
- break;
1531
-
1532
- case 'html5':
1533
- // if <command> or <menuitem> are not handled by the browser,
1534
- // or options was a bool true,
1535
- // initialize $.contextMenu for them
1536
- if ((!$.support.htmlCommand && !$.support.htmlMenuitem) || (typeof options === 'boolean' && options)) {
1537
- $('menu[type="context"]').each(function () {
1538
- if (this.id) {
1539
- $.contextMenu({
1540
- selector: '[contextmenu=' + this.id + ']',
1541
- items: $.contextMenu.fromMenu(this)
1542
- });
1543
- }
1544
- }).css('display', 'none');
1545
- }
1546
- break;
1547
-
1548
- default:
1549
- throw new Error('Unknown operation "' + operation + '"');
1550
- }
1551
-
1552
- return this;
1553
- };
1554
-
1555
- // import values into <input> commands
1556
- $.contextMenu.setInputValues = function (opt, data) {
1557
- if (data === undefined) {
1558
- data = {};
1559
- }
1560
-
1561
- $.each(opt.inputs, function (key, item) {
1562
- switch (item.type) {
1563
- case 'text':
1564
- case 'textarea':
1565
- item.value = data[key] || '';
1566
- break;
1567
-
1568
- case 'checkbox':
1569
- item.selected = data[key] ? true : false;
1570
- break;
1571
-
1572
- case 'radio':
1573
- item.selected = (data[item.radio] || '') === item.value;
1574
- break;
1575
-
1576
- case 'select':
1577
- item.selected = data[key] || '';
1578
- break;
1579
- }
1580
- });
1581
- };
1582
-
1583
- // export values from <input> commands
1584
- $.contextMenu.getInputValues = function (opt, data) {
1585
- if (data === undefined) {
1586
- data = {};
1587
- }
1588
-
1589
- $.each(opt.inputs, function (key, item) {
1590
- switch (item.type) {
1591
- case 'text':
1592
- case 'textarea':
1593
- case 'select':
1594
- data[key] = item.$input.val();
1595
- break;
1596
-
1597
- case 'checkbox':
1598
- data[key] = item.$input.prop('checked');
1599
- break;
1600
-
1601
- case 'radio':
1602
- if (item.$input.prop('checked')) {
1603
- data[item.radio] = item.value;
1604
- }
1605
- break;
1606
- }
1607
- });
1608
-
1609
- return data;
1610
- };
1611
-
1612
- // find <label for="xyz">
1613
- function inputLabel(node) {
1614
- return (node.id && $('label[for="' + node.id + '"]').val()) || node.name;
1615
- }
1616
-
1617
- // convert <menu> to items object
1618
- function menuChildren(items, $children, counter) {
1619
- if (!counter) {
1620
- counter = 0;
1621
- }
1622
-
1623
- $children.each(function () {
1624
- var $node = $(this),
1625
- node = this,
1626
- nodeName = this.nodeName.toLowerCase(),
1627
- label,
1628
- item;
1629
-
1630
- // extract <label><input>
1631
- if (nodeName === 'label' && $node.find('input, textarea, select').length) {
1632
- label = $node.text();
1633
- $node = $node.children().first();
1634
- node = $node.get(0);
1635
- nodeName = node.nodeName.toLowerCase();
1636
- }
1637
-
1638
- /*
1639
- * <menu> accepts flow-content as children. that means <embed>, <canvas> and such are valid menu items.
1640
- * Not being the sadistic kind, $.contextMenu only accepts:
1641
- * <command>, <menuitem>, <hr>, <span>, <p> <input [text, radio, checkbox]>, <textarea>, <select> and of course <menu>.
1642
- * Everything else will be imported as an html node, which is not interfaced with contextMenu.
1643
- */
1644
-
1645
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/commands.html#concept-command
1646
- switch (nodeName) {
1647
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#the-menu-element
1648
- case 'menu':
1649
- item = {name: $node.attr('label'), items: {}};
1650
- counter = menuChildren(item.items, $node.children(), counter);
1651
- break;
1652
-
1653
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/commands.html#using-the-a-element-to-define-a-command
1654
- case 'a':
1655
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/commands.html#using-the-button-element-to-define-a-command
1656
- case 'button':
1657
- item = {
1658
- name: $node.text(),
1659
- disabled: !!$node.attr('disabled'),
1660
- callback: (function () {
1661
- return function () {
1662
- $node.click();
1663
- };
1664
- })()
1665
- };
1666
- break;
1667
-
1668
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/commands.html#using-the-command-element-to-define-a-command
1669
-
1670
- case 'menuitem':
1671
- case 'command':
1672
- switch ($node.attr('type')) {
1673
- case undefined:
1674
- case 'command':
1675
- case 'menuitem':
1676
- item = {
1677
- name: $node.attr('label'),
1678
- disabled: !!$node.attr('disabled'),
1679
- icon: $node.attr('icon'),
1680
- callback: (function () {
1681
- return function () {
1682
- $node.click();
1683
- };
1684
- })()
1685
- };
1686
- break;
1687
-
1688
- case 'checkbox':
1689
- item = {
1690
- type: 'checkbox',
1691
- disabled: !!$node.attr('disabled'),
1692
- name: $node.attr('label'),
1693
- selected: !!$node.attr('checked')
1694
- };
1695
- break;
1696
- case 'radio':
1697
- item = {
1698
- type: 'radio',
1699
- disabled: !!$node.attr('disabled'),
1700
- name: $node.attr('label'),
1701
- radio: $node.attr('radiogroup'),
1702
- value: $node.attr('id'),
1703
- selected: !!$node.attr('checked')
1704
- };
1705
- break;
1706
-
1707
- default:
1708
- item = undefined;
1709
- }
1710
- break;
1711
-
1712
- case 'hr':
1713
- item = '-------';
1714
- break;
1715
-
1716
- case 'input':
1717
- switch ($node.attr('type')) {
1718
- case 'text':
1719
- item = {
1720
- type: 'text',
1721
- name: label || inputLabel(node),
1722
- disabled: !!$node.attr('disabled'),
1723
- value: $node.val()
1724
- };
1725
- break;
1726
-
1727
- case 'checkbox':
1728
- item = {
1729
- type: 'checkbox',
1730
- name: label || inputLabel(node),
1731
- disabled: !!$node.attr('disabled'),
1732
- selected: !!$node.attr('checked')
1733
- };
1734
- break;
1735
-
1736
- case 'radio':
1737
- item = {
1738
- type: 'radio',
1739
- name: label || inputLabel(node),
1740
- disabled: !!$node.attr('disabled'),
1741
- radio: !!$node.attr('name'),
1742
- value: $node.val(),
1743
- selected: !!$node.attr('checked')
1744
- };
1745
- break;
1746
-
1747
- default:
1748
- item = undefined;
1749
- break;
1750
- }
1751
- break;
1752
-
1753
- case 'select':
1754
- item = {
1755
- type: 'select',
1756
- name: label || inputLabel(node),
1757
- disabled: !!$node.attr('disabled'),
1758
- selected: $node.val(),
1759
- options: {}
1760
- };
1761
- $node.children().each(function () {
1762
- item.options[this.value] = $(this).text();
1763
- });
1764
- break;
1765
-
1766
- case 'textarea':
1767
- item = {
1768
- type: 'textarea',
1769
- name: label || inputLabel(node),
1770
- disabled: !!$node.attr('disabled'),
1771
- value: $node.val()
1772
- };
1773
- break;
1774
-
1775
- case 'label':
1776
- break;
1777
-
1778
- default:
1779
- item = {type: 'html', html: $node.clone(true)};
1780
- break;
1781
- }
1782
-
1783
- if (item) {
1784
- counter++;
1785
- items['key' + counter] = item;
1786
- }
1787
- });
1788
-
1789
- return counter;
1790
- }
1791
-
1792
- // convert html5 menu
1793
- $.contextMenu.fromMenu = function (element) {
1794
- var $this = $(element),
1795
- items = {};
1796
-
1797
- menuChildren(items, $this.children());
1798
-
1799
- return items;
1800
- };
1801
-
1802
- // make defaults accessible
1803
- $.contextMenu.defaults = defaults;
1804
- $.contextMenu.types = types;
1805
- // export internal functions - undocumented, for hacking only!
1806
- $.contextMenu.handle = handle;
1807
- $.contextMenu.op = op;
1808
- $.contextMenu.menus = menus;
1809
-
1810
-
1811
- });