vasuzex 2.0.13 → 2.0.15

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 (611) hide show
  1. package/NPM_LINK_TEST_RESULTS.md +215 -0
  2. package/PRODUCTION_FIXES_V2.0.15.md +357 -0
  3. package/bin/create-vasuzex.js +44 -5
  4. package/database/index.js +5 -5
  5. package/database/models/User.js +15 -0
  6. package/database/package.json +10 -0
  7. package/framework/Console/Commands/generate-app.js +17 -19
  8. package/framework/Console/Commands/utils/databasePackageTemplate.js +20 -0
  9. package/framework/Console/Commands/utils/fileOperations.js +14 -0
  10. package/framework/Console/Commands/utils/index.js +4 -7
  11. package/framework/Console/Commands/utils/packageManager.js +20 -6
  12. package/framework/Console/Commands/utils/plopGenerator.js +113 -0
  13. package/framework/Console/Commands/utils/templateGenerator.js +0 -8
  14. package/framework/Console/config/generator.config.js +142 -0
  15. package/framework/Console/plopfile.js +142 -0
  16. package/{apps/pilot-test/api → framework/Console}/src/app.js +5 -13
  17. package/framework/Console/src/config/database.js +53 -0
  18. package/framework/Console/src/helpers/env.js +8 -0
  19. package/{apps/pilot-test/api → framework/Console}/src/index.js +11 -11
  20. package/{apps/pilot-test/api → framework/Console}/src/middleware/authMiddleware.js +1 -1
  21. package/framework/Console/src/routes/index.js +16 -0
  22. package/{apps/pilot-test/api → framework/Console}/src/services/AuthService.js +1 -1
  23. package/framework/Console/templates/api/app.js.hbs +59 -0
  24. package/framework/Console/templates/api/config/database.js.hbs +53 -0
  25. package/framework/Console/templates/api/controllers/AuthController.js.hbs +90 -0
  26. package/framework/Console/templates/api/controllers/BaseController.js.hbs +25 -0
  27. package/framework/Console/templates/api/helpers/env.js.hbs +8 -0
  28. package/framework/Console/templates/api/middleware/authMiddleware.js.hbs +48 -0
  29. package/framework/Console/templates/api/middleware/errorHandler.js.hbs +30 -0
  30. package/framework/Console/templates/api/requests/AuthRequests.js.hbs +16 -0
  31. package/framework/Console/templates/api/routes/auth.js.hbs +20 -0
  32. package/framework/Console/templates/api/routes/index.js.hbs +16 -0
  33. package/framework/Console/templates/api/server.js.hbs +127 -0
  34. package/framework/Console/templates/api/services/AuthService.js.hbs +95 -0
  35. package/framework/Database/Model.js +58 -4
  36. package/framework/Foundation/BaseApp.js +42 -1
  37. package/framework/package.json +3 -0
  38. package/framework/vasuzex-framework-core-1.0.0.tgz +0 -0
  39. package/frontend/react-ui/node_modules/@esbuild/darwin-x64/README.md +3 -0
  40. package/frontend/react-ui/node_modules/@esbuild/darwin-x64/bin/esbuild +0 -0
  41. package/frontend/react-ui/node_modules/@esbuild/darwin-x64/package.json +20 -0
  42. package/frontend/react-ui/node_modules/esbuild/LICENSE.md +21 -0
  43. package/frontend/react-ui/node_modules/esbuild/README.md +3 -0
  44. package/frontend/react-ui/node_modules/esbuild/bin/esbuild +223 -0
  45. package/frontend/react-ui/node_modules/esbuild/install.js +289 -0
  46. package/frontend/react-ui/node_modules/esbuild/lib/main.d.ts +716 -0
  47. package/frontend/react-ui/node_modules/esbuild/lib/main.js +2242 -0
  48. package/frontend/react-ui/node_modules/esbuild/package.json +49 -0
  49. package/frontend/react-ui/node_modules/jsdom/LICENSE.txt +22 -0
  50. package/frontend/react-ui/node_modules/jsdom/README.md +521 -0
  51. package/frontend/react-ui/node_modules/jsdom/lib/api.js +334 -0
  52. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/Window.js +1012 -0
  53. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/default-stylesheet.js +789 -0
  54. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/js-globals.json +312 -0
  55. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/not-implemented.js +13 -0
  56. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/parser/html.js +208 -0
  57. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/parser/index.js +37 -0
  58. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/parser/xml.js +202 -0
  59. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/resources/async-resource-queue.js +114 -0
  60. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/resources/no-op-resource-loader.js +8 -0
  61. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/resources/per-document-resource-loader.js +98 -0
  62. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/resources/request-manager.js +33 -0
  63. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/resources/resource-loader.js +142 -0
  64. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/browser/resources/resource-queue.js +142 -0
  65. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/level2/style.js +57 -0
  66. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/level3/xpath.js +1875 -0
  67. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/aborting/AbortController-impl.js +17 -0
  68. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/aborting/AbortSignal-impl.js +84 -0
  69. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/attributes/Attr-impl.js +60 -0
  70. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/attributes/NamedNodeMap-impl.js +78 -0
  71. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/attributes.js +312 -0
  72. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/constraint-validation/DefaultConstraintValidation-impl.js +75 -0
  73. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/constraint-validation/ValidityState-impl.js +66 -0
  74. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/crypto/Crypto-impl.js +68 -0
  75. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/cssom/StyleSheetList-impl.js +38 -0
  76. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/custom-elements/CustomElementRegistry-impl.js +268 -0
  77. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/custom-elements/ElementInternals-impl.js +38 -0
  78. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/documents.js +15 -0
  79. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/domparsing/DOMParser-impl.js +59 -0
  80. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/domparsing/InnerHTML-impl.js +30 -0
  81. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/domparsing/XMLSerializer-impl.js +18 -0
  82. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/domparsing/parse5-adapter-serialization.js +63 -0
  83. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js +36 -0
  84. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/CloseEvent-impl.js +10 -0
  85. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/CompositionEvent-impl.js +20 -0
  86. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/CustomEvent-impl.js +21 -0
  87. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/ErrorEvent-impl.js +14 -0
  88. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/Event-impl.js +197 -0
  89. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/EventModifierMixin-impl.js +24 -0
  90. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js +419 -0
  91. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/FocusEvent-impl.js +9 -0
  92. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/HashChangeEvent-impl.js +14 -0
  93. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/InputEvent-impl.js +11 -0
  94. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/KeyboardEvent-impl.js +29 -0
  95. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/MessageEvent-impl.js +25 -0
  96. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/MouseEvent-impl.js +72 -0
  97. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/PageTransitionEvent-impl.js +20 -0
  98. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/PopStateEvent-impl.js +9 -0
  99. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/ProgressEvent-impl.js +14 -0
  100. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/StorageEvent-impl.js +26 -0
  101. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/SubmitEvent-impl.js +13 -0
  102. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/TouchEvent-impl.js +14 -0
  103. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/UIEvent-impl.js +59 -0
  104. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/events/WheelEvent-impl.js +12 -0
  105. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/fetch/Headers-impl.js +172 -0
  106. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/fetch/header-list.js +65 -0
  107. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/fetch/header-types.js +103 -0
  108. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/file-api/Blob-impl.js +93 -0
  109. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/file-api/File-impl.js +12 -0
  110. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/file-api/FileList-impl.js +15 -0
  111. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/file-api/FileReader-impl.js +130 -0
  112. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/AbortController.js +143 -0
  113. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/AbortSignal.js +215 -0
  114. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/AbstractRange.js +171 -0
  115. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/AddEventListenerOptions.js +55 -0
  116. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/AssignedNodesOptions.js +28 -0
  117. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Attr.js +217 -0
  118. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/BarProp.js +117 -0
  119. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/BinaryType.js +12 -0
  120. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Blob.js +203 -0
  121. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/BlobCallback.js +30 -0
  122. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/BlobPropertyBag.js +42 -0
  123. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CDATASection.js +109 -0
  124. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CanPlayTypeResult.js +12 -0
  125. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CharacterData.js +453 -0
  126. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CloseEvent.js +168 -0
  127. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CloseEventInit.js +65 -0
  128. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Comment.js +120 -0
  129. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CompositionEvent.js +219 -0
  130. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CompositionEventInit.js +32 -0
  131. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Crypto.js +144 -0
  132. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CustomElementConstructor.js +34 -0
  133. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CustomElementRegistry.js +242 -0
  134. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CustomEvent.js +206 -0
  135. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/CustomEventInit.js +32 -0
  136. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DOMException.js +222 -0
  137. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DOMImplementation.js +237 -0
  138. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DOMParser.js +140 -0
  139. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DOMRect.js +276 -0
  140. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DOMRectInit.js +76 -0
  141. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DOMRectReadOnly.js +285 -0
  142. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DOMStringMap.js +323 -0
  143. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DOMTokenList.js +563 -0
  144. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Document.js +4157 -0
  145. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DocumentFragment.js +334 -0
  146. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DocumentReadyState.js +12 -0
  147. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/DocumentType.js +252 -0
  148. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Element.js +3718 -0
  149. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ElementCreationOptions.js +26 -0
  150. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ElementDefinitionOptions.js +29 -0
  151. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ElementInternals.js +2137 -0
  152. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/EndingType.js +12 -0
  153. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ErrorEvent.js +192 -0
  154. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ErrorEventInit.js +92 -0
  155. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Event.js +430 -0
  156. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/EventHandlerNonNull.js +36 -0
  157. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/EventInit.js +58 -0
  158. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/EventListener.js +35 -0
  159. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/EventListenerOptions.js +28 -0
  160. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/EventModifierInit.js +221 -0
  161. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js +259 -0
  162. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/External.js +130 -0
  163. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/File.js +177 -0
  164. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/FileList.js +324 -0
  165. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/FilePropertyBag.js +33 -0
  166. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/FileReader.js +468 -0
  167. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/FocusEvent.js +144 -0
  168. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/FocusEventInit.js +36 -0
  169. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/FormData.js +468 -0
  170. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Function.js +42 -0
  171. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/GetRootNodeOptions.js +31 -0
  172. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLAnchorElement.js +1023 -0
  173. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLAreaElement.js +822 -0
  174. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLAudioElement.js +110 -0
  175. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLBRElement.js +153 -0
  176. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLBaseElement.js +193 -0
  177. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLBodyElement.js +877 -0
  178. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLButtonElement.js +522 -0
  179. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLCanvasElement.js +304 -0
  180. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLCollection.js +378 -0
  181. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLDListElement.js +156 -0
  182. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLDataElement.js +153 -0
  183. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLDataListElement.js +125 -0
  184. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLDetailsElement.js +156 -0
  185. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLDialogElement.js +156 -0
  186. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLDirectoryElement.js +156 -0
  187. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLDivElement.js +153 -0
  188. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLElement.js +3137 -0
  189. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLEmbedElement.js +371 -0
  190. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLFieldSetElement.js +329 -0
  191. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLFontElement.js +236 -0
  192. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLFormControlsCollection.js +344 -0
  193. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLFormElement.js +501 -0
  194. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLFrameElement.js +494 -0
  195. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLFrameSetElement.js +708 -0
  196. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLHRElement.js +320 -0
  197. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLHeadElement.js +110 -0
  198. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLHeadingElement.js +153 -0
  199. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLHtmlElement.js +153 -0
  200. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLIFrameElement.js +670 -0
  201. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLImageElement.js +877 -0
  202. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLInputElement.js +1920 -0
  203. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLLIElement.js +201 -0
  204. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLLabelElement.js +179 -0
  205. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLLegendElement.js +166 -0
  206. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLLinkElement.js +545 -0
  207. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLMapElement.js +168 -0
  208. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLMarqueeElement.js +554 -0
  209. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLMediaElement.js +891 -0
  210. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLMenuElement.js +156 -0
  211. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLMetaElement.js +276 -0
  212. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLMeterElement.js +365 -0
  213. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLModElement.js +207 -0
  214. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLOListElement.js +281 -0
  215. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLObjectElement.js +925 -0
  216. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLOptGroupElement.js +197 -0
  217. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLOptionElement.js +376 -0
  218. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLOptionsCollection.js +537 -0
  219. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLOutputElement.js +392 -0
  220. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLParagraphElement.js +153 -0
  221. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLParamElement.js +276 -0
  222. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLPictureElement.js +110 -0
  223. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLPreElement.js +160 -0
  224. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLProgressElement.js +228 -0
  225. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLQuoteElement.js +166 -0
  226. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLScriptElement.js +462 -0
  227. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLSelectElement.js +1015 -0
  228. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLSlotElement.js +192 -0
  229. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLSourceElement.js +330 -0
  230. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLSpanElement.js +110 -0
  231. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLStyleElement.js +207 -0
  232. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableCaptionElement.js +153 -0
  233. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableCellElement.js +729 -0
  234. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableColElement.js +372 -0
  235. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableElement.js +799 -0
  236. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableRowElement.js +414 -0
  237. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableSectionElement.js +346 -0
  238. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTemplateElement.js +123 -0
  239. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTextAreaElement.js +1206 -0
  240. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTimeElement.js +153 -0
  241. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTitleElement.js +152 -0
  242. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLTrackElement.js +356 -0
  243. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLUListElement.js +197 -0
  244. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLUnknownElement.js +109 -0
  245. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HTMLVideoElement.js +333 -0
  246. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HashChangeEvent.js +157 -0
  247. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/HashChangeEventInit.js +50 -0
  248. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Headers.js +418 -0
  249. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/History.js +266 -0
  250. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/InputEvent.js +168 -0
  251. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/InputEventInit.js +68 -0
  252. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/KeyboardEvent.js +445 -0
  253. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/KeyboardEventInit.js +116 -0
  254. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Location.js +404 -0
  255. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MessageEvent.js +317 -0
  256. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MessageEventInit.js +100 -0
  257. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MimeType.js +156 -0
  258. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MimeTypeArray.js +352 -0
  259. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MouseEvent.js +569 -0
  260. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MouseEventInit.js +159 -0
  261. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MutationCallback.js +34 -0
  262. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MutationObserver.js +178 -0
  263. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MutationObserverInit.js +121 -0
  264. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/MutationRecord.js +229 -0
  265. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/NamedNodeMap.js +553 -0
  266. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Navigator.js +326 -0
  267. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Node.js +763 -0
  268. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/NodeFilter.js +75 -0
  269. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/NodeIterator.js +207 -0
  270. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/NodeList.js +328 -0
  271. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/OnBeforeUnloadEventHandlerNonNull.js +42 -0
  272. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/OnErrorEventHandlerNonNull.js +56 -0
  273. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/PageTransitionEvent.js +144 -0
  274. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/PageTransitionEventInit.js +35 -0
  275. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Performance.js +142 -0
  276. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Plugin.js +385 -0
  277. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/PluginArray.js +362 -0
  278. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/PopStateEvent.js +144 -0
  279. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/PopStateEventInit.js +32 -0
  280. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ProcessingInstruction.js +122 -0
  281. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ProgressEvent.js +170 -0
  282. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ProgressEventInit.js +65 -0
  283. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/RadioNodeList.js +322 -0
  284. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Range.js +641 -0
  285. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SVGAnimatedString.js +149 -0
  286. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SVGBoundingBoxOptions.js +64 -0
  287. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SVGElement.js +2799 -0
  288. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SVGGraphicsElement.js +139 -0
  289. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SVGNumber.js +132 -0
  290. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SVGSVGElement.js +737 -0
  291. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SVGStringList.js +537 -0
  292. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SVGTitleElement.js +109 -0
  293. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Screen.js +180 -0
  294. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ScrollBehavior.js +12 -0
  295. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ScrollIntoViewOptions.js +45 -0
  296. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ScrollLogicalPosition.js +14 -0
  297. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ScrollOptions.js +30 -0
  298. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ScrollRestoration.js +12 -0
  299. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Selection.js +569 -0
  300. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SelectionMode.js +12 -0
  301. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ShadowRoot.js +187 -0
  302. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ShadowRootInit.js +30 -0
  303. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ShadowRootMode.js +12 -0
  304. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/StaticRange.js +123 -0
  305. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/StaticRangeInit.js +72 -0
  306. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Storage.js +423 -0
  307. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/StorageEvent.js +318 -0
  308. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/StorageEventInit.js +99 -0
  309. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/StyleSheetList.js +326 -0
  310. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SubmitEvent.js +144 -0
  311. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SubmitEventInit.js +36 -0
  312. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/SupportedType.js +18 -0
  313. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/Text.js +170 -0
  314. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/TextTrackKind.js +12 -0
  315. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/TouchEvent.js +222 -0
  316. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/TouchEventInit.js +89 -0
  317. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/TreeWalker.js +255 -0
  318. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/UIEvent.js +235 -0
  319. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/UIEventInit.js +62 -0
  320. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/ValidityState.js +249 -0
  321. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/VisibilityState.js +12 -0
  322. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/VoidFunction.js +26 -0
  323. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/WebSocket.js +476 -0
  324. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/WheelEvent.js +191 -0
  325. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/WheelEventInit.js +71 -0
  326. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/XMLDocument.js +109 -0
  327. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequest.js +655 -0
  328. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequestEventTarget.js +334 -0
  329. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequestResponseType.js +14 -0
  330. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequestUpload.js +109 -0
  331. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/XMLSerializer.js +132 -0
  332. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/generated/utils.js +190 -0
  333. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/geometry/DOMRect-impl.js +39 -0
  334. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/geometry/DOMRectReadOnly-impl.js +72 -0
  335. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/agent-factory.js +13 -0
  336. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/binary-data.js +9 -0
  337. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/colors.js +245 -0
  338. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/create-element.js +323 -0
  339. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/create-event-accessor.js +188 -0
  340. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/custom-elements.js +272 -0
  341. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/dates-and-times.js +270 -0
  342. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/details.js +15 -0
  343. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/document-base-url.js +54 -0
  344. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/events.js +24 -0
  345. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/focusing.js +104 -0
  346. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/form-controls.js +306 -0
  347. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/html-constructor.js +78 -0
  348. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/http-request.js +261 -0
  349. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/internal-constants.js +12 -0
  350. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/iterable-weak-set.js +48 -0
  351. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/json.js +12 -0
  352. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/mutation-observers.js +198 -0
  353. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/namespaces.js +15 -0
  354. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/node.js +68 -0
  355. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/number-and-date-inputs.js +195 -0
  356. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/ordered-set.js +104 -0
  357. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/page-transition-event.js +9 -0
  358. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js +76 -0
  359. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/selectors.js +47 -0
  360. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/shadow-dom.js +285 -0
  361. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/strings.js +148 -0
  362. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/style-rules.js +243 -0
  363. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/stylesheets.js +123 -0
  364. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/svg/basic-types.js +41 -0
  365. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/svg/render.js +46 -0
  366. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/text.js +19 -0
  367. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/traversal.js +72 -0
  368. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/helpers/validate-names.js +65 -0
  369. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/hr-time/Performance-impl.js +22 -0
  370. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/interfaces.js +228 -0
  371. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/mutation-observer/MutationObserver-impl.js +95 -0
  372. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/mutation-observer/MutationRecord-impl.js +37 -0
  373. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/named-properties-window.js +141 -0
  374. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/MimeType-impl.js +3 -0
  375. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/MimeTypeArray-impl.js +21 -0
  376. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/Navigator-impl.js +29 -0
  377. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorConcurrentHardware-impl.js +8 -0
  378. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorCookies-impl.js +7 -0
  379. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorID-impl.js +37 -0
  380. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorLanguage-impl.js +9 -0
  381. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorOnLine-impl.js +7 -0
  382. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorPlugins-impl.js +8 -0
  383. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/Plugin-impl.js +3 -0
  384. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/navigator/PluginArray-impl.js +23 -0
  385. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/node-document-position.js +10 -0
  386. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/node-type.js +16 -0
  387. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/node.js +331 -0
  388. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/CDATASection-impl.js +16 -0
  389. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/CharacterData-impl.js +118 -0
  390. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/ChildNode-impl.js +80 -0
  391. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/Comment-impl.js +20 -0
  392. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/DOMImplementation-impl.js +120 -0
  393. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/DOMStringMap-impl.js +64 -0
  394. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/DOMTokenList-impl.js +171 -0
  395. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/Document-impl.js +935 -0
  396. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/DocumentFragment-impl.js +44 -0
  397. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/DocumentOrShadowRoot-impl.js +28 -0
  398. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/DocumentType-impl.js +24 -0
  399. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/Element-impl.js +599 -0
  400. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/ElementCSSInlineStyle-impl.js +22 -0
  401. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/ElementContentEditable-impl.js +7 -0
  402. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/GlobalEventHandlers-impl.js +145 -0
  403. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAnchorElement-impl.js +50 -0
  404. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAreaElement-impl.js +43 -0
  405. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAudioElement-impl.js +9 -0
  406. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBRElement-impl.js +9 -0
  407. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBaseElement-impl.js +27 -0
  408. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBodyElement-impl.js +17 -0
  409. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLButtonElement-impl.js +79 -0
  410. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLCanvasElement-impl.js +130 -0
  411. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLCollection-impl.js +96 -0
  412. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDListElement-impl.js +9 -0
  413. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDataElement-impl.js +9 -0
  414. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDataListElement-impl.js +20 -0
  415. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDetailsElement-impl.js +35 -0
  416. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDialogElement-impl.js +9 -0
  417. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDirectoryElement-impl.js +9 -0
  418. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDivElement-impl.js +9 -0
  419. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js +210 -0
  420. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLEmbedElement-impl.js +8 -0
  421. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFieldSetElement-impl.js +43 -0
  422. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFontElement-impl.js +9 -0
  423. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFormControlsCollection-impl.js +33 -0
  424. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFormElement-impl.js +240 -0
  425. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFrameElement-impl.js +261 -0
  426. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFrameSetElement-impl.js +17 -0
  427. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHRElement-impl.js +9 -0
  428. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHeadElement-impl.js +9 -0
  429. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHeadingElement-impl.js +9 -0
  430. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHtmlElement-impl.js +9 -0
  431. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHyperlinkElementUtils-impl.js +367 -0
  432. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLIFrameElement-impl.js +9 -0
  433. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLImageElement-impl.js +132 -0
  434. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLInputElement-impl.js +1097 -0
  435. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLIElement-impl.js +9 -0
  436. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLabelElement-impl.js +94 -0
  437. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLegendElement-impl.js +18 -0
  438. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLinkElement-impl.js +108 -0
  439. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMapElement-impl.js +13 -0
  440. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMarqueeElement-impl.js +9 -0
  441. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMediaElement-impl.js +138 -0
  442. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMenuElement-impl.js +9 -0
  443. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMetaElement-impl.js +9 -0
  444. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMeterElement-impl.js +180 -0
  445. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLModElement-impl.js +9 -0
  446. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOListElement-impl.js +22 -0
  447. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLObjectElement-impl.js +26 -0
  448. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptGroupElement-impl.js +9 -0
  449. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptionElement-impl.js +146 -0
  450. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptionsCollection-impl.js +110 -0
  451. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOrSVGElement-impl.js +85 -0
  452. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOutputElement-impl.js +88 -0
  453. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLParagraphElement-impl.js +9 -0
  454. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLParamElement-impl.js +9 -0
  455. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLPictureElement-impl.js +9 -0
  456. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLPreElement-impl.js +9 -0
  457. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js +72 -0
  458. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLQuoteElement-impl.js +9 -0
  459. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLScriptElement-impl.js +262 -0
  460. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSelectElement-impl.js +283 -0
  461. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSlotElement-impl.js +59 -0
  462. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSourceElement-impl.js +8 -0
  463. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSpanElement-impl.js +9 -0
  464. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLStyleElement-impl.js +74 -0
  465. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableCaptionElement-impl.js +9 -0
  466. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableCellElement-impl.js +73 -0
  467. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableColElement-impl.js +9 -0
  468. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableElement-impl.js +236 -0
  469. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableRowElement-impl.js +88 -0
  470. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableSectionElement-impl.js +61 -0
  471. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTemplateElement-impl.js +67 -0
  472. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTextAreaElement-impl.js +244 -0
  473. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTimeElement-impl.js +9 -0
  474. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTitleElement-impl.js +18 -0
  475. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTrackElement-impl.js +13 -0
  476. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLUListElement-impl.js +9 -0
  477. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLUnknownElement-impl.js +9 -0
  478. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/HTMLVideoElement-impl.js +17 -0
  479. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/LinkStyle-impl.js +2 -0
  480. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/Node-impl.js +1161 -0
  481. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/NodeList-impl.js +43 -0
  482. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/NonDocumentTypeChildNode-impl.js +28 -0
  483. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/NonElementParentNode-impl.js +11 -0
  484. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/ParentNode-impl.js +91 -0
  485. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/ProcessingInstruction-impl.js +22 -0
  486. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/RadioNodeList-impl.js +49 -0
  487. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/SVGElement-impl.js +64 -0
  488. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/SVGGraphicsElement-impl.js +16 -0
  489. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/SVGSVGElement-impl.js +42 -0
  490. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/SVGTests-impl.js +42 -0
  491. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/SVGTitleElement-impl.js +9 -0
  492. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/ShadowRoot-impl.js +41 -0
  493. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/Slotable-impl.js +48 -0
  494. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/Text-impl.js +96 -0
  495. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/WindowEventHandlers-impl.js +52 -0
  496. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/nodes/XMLDocument-impl.js +4 -0
  497. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/range/AbstractRange-impl.js +43 -0
  498. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/range/Range-impl.js +897 -0
  499. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/range/StaticRange-impl.js +39 -0
  500. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/range/boundary-point.js +47 -0
  501. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/selection/Selection-impl.js +358 -0
  502. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/svg/SVGAnimatedString-impl.js +38 -0
  503. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/svg/SVGListBase.js +195 -0
  504. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/svg/SVGNumber-impl.js +48 -0
  505. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/svg/SVGStringList-impl.js +16 -0
  506. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/traversal/NodeIterator-impl.js +107 -0
  507. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/traversal/TreeWalker-impl.js +217 -0
  508. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/traversal/helpers.js +44 -0
  509. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/webidl/DOMException-impl.js +46 -0
  510. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/websockets/WebSocket-impl.js +328 -0
  511. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/webstorage/Storage-impl.js +102 -0
  512. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/window/BarProp-impl.js +10 -0
  513. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/window/External-impl.js +9 -0
  514. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/window/History-impl.js +148 -0
  515. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/window/Location-impl.js +228 -0
  516. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/window/Screen-impl.js +13 -0
  517. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/window/SessionHistory.js +163 -0
  518. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/window/navigation.js +85 -0
  519. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/xhr/FormData-impl.js +191 -0
  520. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequest-impl.js +1023 -0
  521. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequestEventTarget-impl.js +17 -0
  522. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequestUpload-impl.js +4 -0
  523. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js +59 -0
  524. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/living/xhr/xhr-utils.js +441 -0
  525. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/named-properties-tracker.js +158 -0
  526. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/utils.js +105 -0
  527. package/frontend/react-ui/node_modules/jsdom/lib/jsdom/virtual-console.js +34 -0
  528. package/frontend/react-ui/node_modules/jsdom/package.json +92 -0
  529. package/frontend/react-ui/node_modules/rrweb-cssom/LICENSE.txt +20 -0
  530. package/frontend/react-ui/node_modules/rrweb-cssom/README.mdown +74 -0
  531. package/frontend/react-ui/node_modules/rrweb-cssom/build/CSSOM.js +1932 -0
  532. package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSConditionRule.js +25 -0
  533. package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSContainerRule.js +50 -0
  534. package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSDocumentRule.js +39 -0
  535. package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSFontFaceRule.js +36 -0
  536. package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSGroupingRule.js +69 -0
  537. package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSHostRule.js +37 -0
  538. package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSImportRule.js +132 -0
  539. package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSKeyframeRule.js +37 -0
  540. package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSKeyframesRule.js +39 -0
  541. package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSMediaRule.js +53 -0
  542. package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSOM.js +3 -0
  543. package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSRule.js +45 -0
  544. package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSStartingStyleRule.js +37 -0
  545. package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSStyleDeclaration.js +148 -0
  546. package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSStyleRule.js +190 -0
  547. package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSStyleSheet.js +88 -0
  548. package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSSupportsRule.js +36 -0
  549. package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSValue.js +43 -0
  550. package/frontend/react-ui/node_modules/rrweb-cssom/lib/CSSValueExpression.js +344 -0
  551. package/frontend/react-ui/node_modules/rrweb-cssom/lib/MatcherList.js +62 -0
  552. package/frontend/react-ui/node_modules/rrweb-cssom/lib/MediaList.js +61 -0
  553. package/frontend/react-ui/node_modules/rrweb-cssom/lib/StyleSheet.js +17 -0
  554. package/frontend/react-ui/node_modules/rrweb-cssom/lib/clone.js +75 -0
  555. package/frontend/react-ui/node_modules/rrweb-cssom/lib/index.js +25 -0
  556. package/frontend/react-ui/node_modules/rrweb-cssom/lib/parse.js +504 -0
  557. package/frontend/react-ui/node_modules/rrweb-cssom/package.json +27 -0
  558. package/frontend/react-ui/node_modules/vite/LICENSE.md +2406 -0
  559. package/frontend/react-ui/node_modules/vite/README.md +20 -0
  560. package/frontend/react-ui/node_modules/vite/bin/openChrome.applescript +95 -0
  561. package/frontend/react-ui/node_modules/vite/bin/vite.js +79 -0
  562. package/frontend/react-ui/node_modules/vite/client.d.ts +279 -0
  563. package/frontend/react-ui/node_modules/vite/dist/client/client.mjs +1134 -0
  564. package/frontend/react-ui/node_modules/vite/dist/client/env.mjs +24 -0
  565. package/frontend/react-ui/node_modules/vite/dist/node/chunks/dep-3RmXg9uo.js +553 -0
  566. package/frontend/react-ui/node_modules/vite/dist/node/chunks/dep-C9BXG1mU.js +822 -0
  567. package/frontend/react-ui/node_modules/vite/dist/node/chunks/dep-CvfTChi5.js +8218 -0
  568. package/frontend/react-ui/node_modules/vite/dist/node/chunks/dep-D4NMHUTW.js +49531 -0
  569. package/frontend/react-ui/node_modules/vite/dist/node/chunks/dep-DWMUTS1A.js +7113 -0
  570. package/frontend/react-ui/node_modules/vite/dist/node/cli.js +949 -0
  571. package/frontend/react-ui/node_modules/vite/dist/node/constants.js +149 -0
  572. package/frontend/react-ui/node_modules/vite/dist/node/index.d.ts +4222 -0
  573. package/frontend/react-ui/node_modules/vite/dist/node/index.js +194 -0
  574. package/frontend/react-ui/node_modules/vite/dist/node/module-runner.d.ts +290 -0
  575. package/frontend/react-ui/node_modules/vite/dist/node/module-runner.js +1311 -0
  576. package/frontend/react-ui/node_modules/vite/dist/node/moduleRunnerTransport.d-DJ_mE5sf.d.ts +87 -0
  577. package/frontend/react-ui/node_modules/vite/dist/node-cjs/publicUtils.cjs +3987 -0
  578. package/frontend/react-ui/node_modules/vite/index.cjs +96 -0
  579. package/frontend/react-ui/node_modules/vite/index.d.cts +6 -0
  580. package/frontend/react-ui/node_modules/vite/misc/false.js +1 -0
  581. package/frontend/react-ui/node_modules/vite/misc/true.js +1 -0
  582. package/frontend/react-ui/node_modules/vite/package.json +204 -0
  583. package/frontend/react-ui/node_modules/vite/types/customEvent.d.ts +45 -0
  584. package/frontend/react-ui/node_modules/vite/types/hmrPayload.d.ts +74 -0
  585. package/frontend/react-ui/node_modules/vite/types/hot.d.ts +39 -0
  586. package/frontend/react-ui/node_modules/vite/types/import-meta.d.ts +5 -0
  587. package/frontend/react-ui/node_modules/vite/types/importGlob.d.ts +75 -0
  588. package/frontend/react-ui/node_modules/vite/types/importMeta.d.ts +31 -0
  589. package/frontend/react-ui/node_modules/vite/types/internal/cssPreprocessorOptions.d.ts +63 -0
  590. package/frontend/react-ui/node_modules/vite/types/internal/lightningcssOptions.d.ts +18 -0
  591. package/frontend/react-ui/node_modules/vite/types/metadata.d.ts +35 -0
  592. package/frontend/react-ui/node_modules/vite/types/package.json +4 -0
  593. package/package.json +35 -29
  594. package/apps/pilot-test/api/.env.example +0 -8
  595. package/apps/pilot-test/api/README.md +0 -105
  596. package/apps/pilot-test/api/config/database.js +0 -27
  597. package/apps/pilot-test/api/database/migrations/2025_12_06_19_20_57_create_users_table.js +0 -21
  598. package/apps/pilot-test/api/database/seeders/UserSeeder.js +0 -30
  599. package/apps/pilot-test/api/package.json +0 -26
  600. package/apps/pilot-test/api/src/helpers/env.js +0 -8
  601. package/apps/pilot-test/api/src/models/User.js +0 -76
  602. package/apps/pilot-test/api/src/routes/index.js +0 -33
  603. package/apps/pilot-test/api/src/routes/post.routes.js +0 -25
  604. package/bin/create-vasuzex.js.backup +0 -699
  605. package/framework/Console/Commands/utils/apiStructure.js +0 -167
  606. package/framework/Console/Commands/utils/apiTemplates.js +0 -933
  607. /package/{apps/pilot-test/api → framework/Console}/src/controllers/AuthController.js +0 -0
  608. /package/{apps/pilot-test/api → framework/Console}/src/controllers/BaseController.js +0 -0
  609. /package/{apps/pilot-test/api → framework/Console}/src/middleware/errorHandler.js +0 -0
  610. /package/{apps/pilot-test/api → framework/Console}/src/requests/AuthRequests.js +0 -0
  611. /package/{apps/pilot-test/api/src/routes/auth.routes.js → framework/Console/src/routes/auth.js} +0 -0
@@ -0,0 +1,1932 @@
1
+ var CSSOM = {};
2
+
3
+
4
+ /**
5
+ * @constructor
6
+ * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration
7
+ */
8
+ CSSOM.CSSStyleDeclaration = function CSSStyleDeclaration(){
9
+ this.length = 0;
10
+ this.parentRule = null;
11
+
12
+ // NON-STANDARD
13
+ this._importants = {};
14
+ };
15
+
16
+
17
+ CSSOM.CSSStyleDeclaration.prototype = {
18
+
19
+ constructor: CSSOM.CSSStyleDeclaration,
20
+
21
+ /**
22
+ *
23
+ * @param {string} name
24
+ * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-getPropertyValue
25
+ * @return {string} the value of the property if it has been explicitly set for this declaration block.
26
+ * Returns the empty string if the property has not been set.
27
+ */
28
+ getPropertyValue: function(name) {
29
+ return this[name] || "";
30
+ },
31
+
32
+ /**
33
+ *
34
+ * @param {string} name
35
+ * @param {string} value
36
+ * @param {string} [priority=null] "important" or null
37
+ * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-setProperty
38
+ */
39
+ setProperty: function(name, value, priority) {
40
+ if (this[name]) {
41
+ // Property already exist. Overwrite it.
42
+ var index = Array.prototype.indexOf.call(this, name);
43
+ if (index < 0) {
44
+ this[this.length] = name;
45
+ this.length++;
46
+ }
47
+ } else {
48
+ // New property.
49
+ this[this.length] = name;
50
+ this.length++;
51
+ }
52
+ this[name] = value + "";
53
+ this._importants[name] = priority;
54
+ },
55
+
56
+ /**
57
+ *
58
+ * @param {string} name
59
+ * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-removeProperty
60
+ * @return {string} the value of the property if it has been explicitly set for this declaration block.
61
+ * Returns the empty string if the property has not been set or the property name does not correspond to a known CSS property.
62
+ */
63
+ removeProperty: function(name) {
64
+ if (!(name in this)) {
65
+ return "";
66
+ }
67
+ var index = Array.prototype.indexOf.call(this, name);
68
+ if (index < 0) {
69
+ return "";
70
+ }
71
+ var prevValue = this[name];
72
+ this[name] = "";
73
+
74
+ // That's what WebKit and Opera do
75
+ Array.prototype.splice.call(this, index, 1);
76
+
77
+ // That's what Firefox does
78
+ //this[index] = ""
79
+
80
+ return prevValue;
81
+ },
82
+
83
+ getPropertyCSSValue: function() {
84
+ //FIXME
85
+ },
86
+
87
+ /**
88
+ *
89
+ * @param {String} name
90
+ */
91
+ getPropertyPriority: function(name) {
92
+ return this._importants[name] || "";
93
+ },
94
+
95
+
96
+ /**
97
+ * element.style.overflow = "auto"
98
+ * element.style.getPropertyShorthand("overflow-x")
99
+ * -> "overflow"
100
+ */
101
+ getPropertyShorthand: function() {
102
+ //FIXME
103
+ },
104
+
105
+ isPropertyImplicit: function() {
106
+ //FIXME
107
+ },
108
+
109
+ // Doesn't work in IE < 9
110
+ get cssText(){
111
+ var properties = [];
112
+ for (var i=0, length=this.length; i < length; ++i) {
113
+ var name = this[i];
114
+ var value = this.getPropertyValue(name);
115
+ var priority = this.getPropertyPriority(name);
116
+ if (priority) {
117
+ priority = " !" + priority;
118
+ }
119
+ properties[i] = name + ": " + value + priority + ";";
120
+ }
121
+ return properties.join(" ");
122
+ },
123
+
124
+ set cssText(text){
125
+ var i, name;
126
+ for (i = this.length; i--;) {
127
+ name = this[i];
128
+ this[name] = "";
129
+ }
130
+ Array.prototype.splice.call(this, 0, this.length);
131
+ this._importants = {};
132
+
133
+ var dummyRule = CSSOM.parse('#bogus{' + text + '}').cssRules[0].style;
134
+ var length = dummyRule.length;
135
+ for (i = 0; i < length; ++i) {
136
+ name = dummyRule[i];
137
+ this.setProperty(dummyRule[i], dummyRule.getPropertyValue(name), dummyRule.getPropertyPriority(name));
138
+ }
139
+ }
140
+ };
141
+
142
+
143
+
144
+ /**
145
+ * @constructor
146
+ * @see http://dev.w3.org/csswg/cssom/#the-cssrule-interface
147
+ * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSRule
148
+ */
149
+ CSSOM.CSSRule = function CSSRule() {
150
+ this.parentRule = null;
151
+ this.parentStyleSheet = null;
152
+ };
153
+
154
+ CSSOM.CSSRule.UNKNOWN_RULE = 0; // obsolete
155
+ CSSOM.CSSRule.STYLE_RULE = 1;
156
+ CSSOM.CSSRule.CHARSET_RULE = 2; // obsolete
157
+ CSSOM.CSSRule.IMPORT_RULE = 3;
158
+ CSSOM.CSSRule.MEDIA_RULE = 4;
159
+ CSSOM.CSSRule.FONT_FACE_RULE = 5;
160
+ CSSOM.CSSRule.PAGE_RULE = 6;
161
+ CSSOM.CSSRule.KEYFRAMES_RULE = 7;
162
+ CSSOM.CSSRule.KEYFRAME_RULE = 8;
163
+ CSSOM.CSSRule.MARGIN_RULE = 9;
164
+ CSSOM.CSSRule.NAMESPACE_RULE = 10;
165
+ CSSOM.CSSRule.COUNTER_STYLE_RULE = 11;
166
+ CSSOM.CSSRule.SUPPORTS_RULE = 12;
167
+ CSSOM.CSSRule.DOCUMENT_RULE = 13;
168
+ CSSOM.CSSRule.FONT_FEATURE_VALUES_RULE = 14;
169
+ CSSOM.CSSRule.VIEWPORT_RULE = 15;
170
+ CSSOM.CSSRule.REGION_STYLE_RULE = 16;
171
+ CSSOM.CSSRule.CONTAINER_RULE = 17;
172
+ CSSOM.CSSRule.STARTING_STYLE_RULE = 1002;
173
+
174
+
175
+ CSSOM.CSSRule.prototype = {
176
+ constructor: CSSOM.CSSRule
177
+ //FIXME
178
+ };
179
+
180
+
181
+
182
+ /**
183
+ * @constructor
184
+ * @see https://drafts.csswg.org/cssom/#the-cssgroupingrule-interface
185
+ */
186
+ CSSOM.CSSGroupingRule = function CSSGroupingRule() {
187
+ CSSOM.CSSRule.call(this);
188
+ this.cssRules = [];
189
+ };
190
+
191
+ CSSOM.CSSGroupingRule.prototype = new CSSOM.CSSRule();
192
+ CSSOM.CSSGroupingRule.prototype.constructor = CSSOM.CSSGroupingRule;
193
+
194
+
195
+ /**
196
+ * Used to insert a new CSS rule to a list of CSS rules.
197
+ *
198
+ * @example
199
+ * cssGroupingRule.cssText
200
+ * -> "body{margin:0;}"
201
+ * cssGroupingRule.insertRule("img{border:none;}", 1)
202
+ * -> 1
203
+ * cssGroupingRule.cssText
204
+ * -> "body{margin:0;}img{border:none;}"
205
+ *
206
+ * @param {string} rule
207
+ * @param {number} [index]
208
+ * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-insertrule
209
+ * @return {number} The index within the grouping rule's collection of the newly inserted rule.
210
+ */
211
+ CSSOM.CSSGroupingRule.prototype.insertRule = function insertRule(rule, index) {
212
+ if (index < 0 || index > this.cssRules.length) {
213
+ throw new RangeError("INDEX_SIZE_ERR");
214
+ }
215
+ var cssRule = CSSOM.parse(rule).cssRules[0];
216
+ cssRule.parentRule = this;
217
+ this.cssRules.splice(index, 0, cssRule);
218
+ return index;
219
+ };
220
+
221
+ /**
222
+ * Used to delete a rule from the grouping rule.
223
+ *
224
+ * cssGroupingRule.cssText
225
+ * -> "img{border:none;}body{margin:0;}"
226
+ * cssGroupingRule.deleteRule(0)
227
+ * cssGroupingRule.cssText
228
+ * -> "body{margin:0;}"
229
+ *
230
+ * @param {number} index within the grouping rule's rule list of the rule to remove.
231
+ * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-deleterule
232
+ */
233
+ CSSOM.CSSGroupingRule.prototype.deleteRule = function deleteRule(index) {
234
+ if (index < 0 || index >= this.cssRules.length) {
235
+ throw new RangeError("INDEX_SIZE_ERR");
236
+ }
237
+ this.cssRules.splice(index, 1)[0].parentRule = null;
238
+ };
239
+
240
+
241
+ /**
242
+ * @constructor
243
+ * @see https://www.w3.org/TR/css-conditional-3/#the-cssconditionrule-interface
244
+ */
245
+ CSSOM.CSSConditionRule = function CSSConditionRule() {
246
+ CSSOM.CSSGroupingRule.call(this);
247
+ this.cssRules = [];
248
+ };
249
+
250
+ CSSOM.CSSConditionRule.prototype = new CSSOM.CSSGroupingRule();
251
+ CSSOM.CSSConditionRule.prototype.constructor = CSSOM.CSSConditionRule;
252
+ CSSOM.CSSConditionRule.prototype.conditionText = ''
253
+ CSSOM.CSSConditionRule.prototype.cssText = ''
254
+
255
+
256
+ /**
257
+ * @constructor
258
+ * @see http://dev.w3.org/csswg/cssom/#cssstylerule
259
+ * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleRule
260
+ */
261
+ CSSOM.CSSStyleRule = function CSSStyleRule() {
262
+ CSSOM.CSSRule.call(this);
263
+ this.selectorText = "";
264
+ this.style = new CSSOM.CSSStyleDeclaration();
265
+ this.style.parentRule = this;
266
+ };
267
+
268
+ CSSOM.CSSStyleRule.prototype = new CSSOM.CSSRule();
269
+ CSSOM.CSSStyleRule.prototype.constructor = CSSOM.CSSStyleRule;
270
+ CSSOM.CSSStyleRule.prototype.type = 1;
271
+
272
+ Object.defineProperty(CSSOM.CSSStyleRule.prototype, "cssText", {
273
+ get: function() {
274
+ var text;
275
+ if (this.selectorText) {
276
+ text = this.selectorText + " {" + this.style.cssText + "}";
277
+ } else {
278
+ text = "";
279
+ }
280
+ return text;
281
+ },
282
+ set: function(cssText) {
283
+ var rule = CSSOM.CSSStyleRule.parse(cssText);
284
+ this.style = rule.style;
285
+ this.selectorText = rule.selectorText;
286
+ }
287
+ });
288
+
289
+
290
+ /**
291
+ * NON-STANDARD
292
+ * lightweight version of parse.js.
293
+ * @param {string} ruleText
294
+ * @return CSSStyleRule
295
+ */
296
+ CSSOM.CSSStyleRule.parse = function(ruleText) {
297
+ var i = 0;
298
+ var state = "selector";
299
+ var index;
300
+ var j = i;
301
+ var buffer = "";
302
+
303
+ var SIGNIFICANT_WHITESPACE = {
304
+ "selector": true,
305
+ "value": true
306
+ };
307
+
308
+ var styleRule = new CSSOM.CSSStyleRule();
309
+ var name, priority="";
310
+
311
+ for (var character; (character = ruleText.charAt(i)); i++) {
312
+
313
+ switch (character) {
314
+
315
+ case " ":
316
+ case "\t":
317
+ case "\r":
318
+ case "\n":
319
+ case "\f":
320
+ if (SIGNIFICANT_WHITESPACE[state]) {
321
+ // Squash 2 or more white-spaces in the row into 1
322
+ switch (ruleText.charAt(i - 1)) {
323
+ case " ":
324
+ case "\t":
325
+ case "\r":
326
+ case "\n":
327
+ case "\f":
328
+ break;
329
+ default:
330
+ buffer += " ";
331
+ break;
332
+ }
333
+ }
334
+ break;
335
+
336
+ // String
337
+ case '"':
338
+ j = i + 1;
339
+ index = ruleText.indexOf('"', j) + 1;
340
+ if (!index) {
341
+ throw '" is missing';
342
+ }
343
+ buffer += ruleText.slice(i, index);
344
+ i = index - 1;
345
+ break;
346
+
347
+ case "'":
348
+ j = i + 1;
349
+ index = ruleText.indexOf("'", j) + 1;
350
+ if (!index) {
351
+ throw "' is missing";
352
+ }
353
+ buffer += ruleText.slice(i, index);
354
+ i = index - 1;
355
+ break;
356
+
357
+ // Comment
358
+ case "/":
359
+ if (ruleText.charAt(i + 1) === "*") {
360
+ i += 2;
361
+ index = ruleText.indexOf("*/", i);
362
+ if (index === -1) {
363
+ throw new SyntaxError("Missing */");
364
+ } else {
365
+ i = index + 1;
366
+ }
367
+ } else {
368
+ buffer += character;
369
+ }
370
+ break;
371
+
372
+ case "{":
373
+ if (state === "selector") {
374
+ styleRule.selectorText = buffer.trim();
375
+ buffer = "";
376
+ state = "name";
377
+ }
378
+ break;
379
+
380
+ case ":":
381
+ if (state === "name") {
382
+ name = buffer.trim();
383
+ buffer = "";
384
+ state = "value";
385
+ } else {
386
+ buffer += character;
387
+ }
388
+ break;
389
+
390
+ case "!":
391
+ if (state === "value" && ruleText.indexOf("!important", i) === i) {
392
+ priority = "important";
393
+ i += "important".length;
394
+ } else {
395
+ buffer += character;
396
+ }
397
+ break;
398
+
399
+ case ";":
400
+ if (state === "value") {
401
+ styleRule.style.setProperty(name, buffer.trim(), priority);
402
+ priority = "";
403
+ buffer = "";
404
+ state = "name";
405
+ } else {
406
+ buffer += character;
407
+ }
408
+ break;
409
+
410
+ case "}":
411
+ if (state === "value") {
412
+ styleRule.style.setProperty(name, buffer.trim(), priority);
413
+ priority = "";
414
+ buffer = "";
415
+ } else if (state === "name") {
416
+ break;
417
+ } else {
418
+ buffer += character;
419
+ }
420
+ state = "selector";
421
+ break;
422
+
423
+ default:
424
+ buffer += character;
425
+ break;
426
+
427
+ }
428
+ }
429
+
430
+ return styleRule;
431
+
432
+ };
433
+
434
+
435
+
436
+ /**
437
+ * @constructor
438
+ * @see http://dev.w3.org/csswg/cssom/#the-medialist-interface
439
+ */
440
+ CSSOM.MediaList = function MediaList(){
441
+ this.length = 0;
442
+ };
443
+
444
+ CSSOM.MediaList.prototype = {
445
+
446
+ constructor: CSSOM.MediaList,
447
+
448
+ /**
449
+ * @return {string}
450
+ */
451
+ get mediaText() {
452
+ return Array.prototype.join.call(this, ", ");
453
+ },
454
+
455
+ /**
456
+ * @param {string} value
457
+ */
458
+ set mediaText(value) {
459
+ var values = value.split(",");
460
+ var length = this.length = values.length;
461
+ for (var i=0; i<length; i++) {
462
+ this[i] = values[i].trim();
463
+ }
464
+ },
465
+
466
+ /**
467
+ * @param {string} medium
468
+ */
469
+ appendMedium: function(medium) {
470
+ if (Array.prototype.indexOf.call(this, medium) === -1) {
471
+ this[this.length] = medium;
472
+ this.length++;
473
+ }
474
+ },
475
+
476
+ /**
477
+ * @param {string} medium
478
+ */
479
+ deleteMedium: function(medium) {
480
+ var index = Array.prototype.indexOf.call(this, medium);
481
+ if (index !== -1) {
482
+ Array.prototype.splice.call(this, index, 1);
483
+ }
484
+ }
485
+
486
+ };
487
+
488
+
489
+
490
+ /**
491
+ * @constructor
492
+ * @see http://dev.w3.org/csswg/cssom/#cssmediarule
493
+ * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSMediaRule
494
+ */
495
+ CSSOM.CSSMediaRule = function CSSMediaRule() {
496
+ CSSOM.CSSConditionRule.call(this);
497
+ this.media = new CSSOM.MediaList();
498
+ };
499
+
500
+ CSSOM.CSSMediaRule.prototype = new CSSOM.CSSConditionRule();
501
+ CSSOM.CSSMediaRule.prototype.constructor = CSSOM.CSSMediaRule;
502
+ CSSOM.CSSMediaRule.prototype.type = 4;
503
+
504
+ // https://opensource.apple.com/source/WebCore/WebCore-7611.1.21.161.3/css/CSSMediaRule.cpp
505
+ Object.defineProperties(CSSOM.CSSMediaRule.prototype, {
506
+ "conditionText": {
507
+ get: function() {
508
+ return this.media.mediaText;
509
+ },
510
+ set: function(value) {
511
+ this.media.mediaText = value;
512
+ },
513
+ configurable: true,
514
+ enumerable: true
515
+ },
516
+ "cssText": {
517
+ get: function() {
518
+ var cssTexts = [];
519
+ for (var i=0, length=this.cssRules.length; i < length; i++) {
520
+ cssTexts.push(this.cssRules[i].cssText);
521
+ }
522
+ return "@media " + this.media.mediaText + " {" + cssTexts.join("") + "}";
523
+ },
524
+ configurable: true,
525
+ enumerable: true
526
+ }
527
+ });
528
+
529
+
530
+
531
+ /**
532
+ * @constructor
533
+ * @see https://drafts.csswg.org/css-contain-3/
534
+ * @see https://www.w3.org/TR/css-contain-3/
535
+ */
536
+ CSSOM.CSSContainerRule = function CSSContainerRule() {
537
+ CSSOM.CSSConditionRule.call(this);
538
+ };
539
+
540
+ CSSOM.CSSContainerRule.prototype = new CSSOM.CSSConditionRule();
541
+ CSSOM.CSSContainerRule.prototype.constructor = CSSOM.CSSContainerRule;
542
+ CSSOM.CSSContainerRule.prototype.type = 17;
543
+
544
+ Object.defineProperties(CSSOM.CSSContainerRule.prototype, {
545
+ "conditionText": {
546
+ get: function() {
547
+ return this.containerText;
548
+ },
549
+ set: function(value) {
550
+ this.containerText = value;
551
+ },
552
+ configurable: true,
553
+ enumerable: true
554
+ },
555
+ "cssText": {
556
+ get: function() {
557
+ var cssTexts = [];
558
+ for (var i=0, length=this.cssRules.length; i < length; i++) {
559
+ cssTexts.push(this.cssRules[i].cssText);
560
+ }
561
+ return "@container " + this.containerText + " {" + cssTexts.join("") + "}";
562
+ },
563
+ configurable: true,
564
+ enumerable: true
565
+ }
566
+ });
567
+
568
+
569
+
570
+ /**
571
+ * @constructor
572
+ * @see https://drafts.csswg.org/css-conditional-3/#the-csssupportsrule-interface
573
+ */
574
+ CSSOM.CSSSupportsRule = function CSSSupportsRule() {
575
+ CSSOM.CSSConditionRule.call(this);
576
+ };
577
+
578
+ CSSOM.CSSSupportsRule.prototype = new CSSOM.CSSConditionRule();
579
+ CSSOM.CSSSupportsRule.prototype.constructor = CSSOM.CSSSupportsRule;
580
+ CSSOM.CSSSupportsRule.prototype.type = 12;
581
+
582
+ Object.defineProperty(CSSOM.CSSSupportsRule.prototype, "cssText", {
583
+ get: function() {
584
+ var cssTexts = [];
585
+
586
+ for (var i = 0, length = this.cssRules.length; i < length; i++) {
587
+ cssTexts.push(this.cssRules[i].cssText);
588
+ }
589
+
590
+ return "@supports " + this.conditionText + " {" + cssTexts.join("") + "}";
591
+ }
592
+ });
593
+
594
+
595
+ /**
596
+ * @constructor
597
+ * @see http://dev.w3.org/csswg/cssom/#cssimportrule
598
+ * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSImportRule
599
+ */
600
+ CSSOM.CSSImportRule = function CSSImportRule() {
601
+ CSSOM.CSSRule.call(this);
602
+ this.href = "";
603
+ this.media = new CSSOM.MediaList();
604
+ this.styleSheet = new CSSOM.CSSStyleSheet();
605
+ };
606
+
607
+ CSSOM.CSSImportRule.prototype = new CSSOM.CSSRule();
608
+ CSSOM.CSSImportRule.prototype.constructor = CSSOM.CSSImportRule;
609
+ CSSOM.CSSImportRule.prototype.type = 3;
610
+
611
+ Object.defineProperty(CSSOM.CSSImportRule.prototype, "cssText", {
612
+ get: function() {
613
+ var mediaText = this.media.mediaText;
614
+ return "@import url(" + this.href + ")" + (mediaText ? " " + mediaText : "") + ";";
615
+ },
616
+ set: function(cssText) {
617
+ var i = 0;
618
+
619
+ /**
620
+ * @import url(partial.css) screen, handheld;
621
+ * || |
622
+ * after-import media
623
+ * |
624
+ * url
625
+ */
626
+ var state = '';
627
+
628
+ var buffer = '';
629
+ var index;
630
+ for (var character; (character = cssText.charAt(i)); i++) {
631
+
632
+ switch (character) {
633
+ case ' ':
634
+ case '\t':
635
+ case '\r':
636
+ case '\n':
637
+ case '\f':
638
+ if (state === 'after-import') {
639
+ state = 'url';
640
+ } else {
641
+ buffer += character;
642
+ }
643
+ break;
644
+
645
+ case '@':
646
+ if (!state && cssText.indexOf('@import', i) === i) {
647
+ state = 'after-import';
648
+ i += 'import'.length;
649
+ buffer = '';
650
+ }
651
+ break;
652
+
653
+ case 'u':
654
+ if (state === 'url' && cssText.indexOf('url(', i) === i) {
655
+ index = cssText.indexOf(')', i + 1);
656
+ if (index === -1) {
657
+ throw i + ': ")" not found';
658
+ }
659
+ i += 'url('.length;
660
+ var url = cssText.slice(i, index);
661
+ if (url[0] === url[url.length - 1]) {
662
+ if (url[0] === '"' || url[0] === "'") {
663
+ url = url.slice(1, -1);
664
+ }
665
+ }
666
+ this.href = url;
667
+ i = index;
668
+ state = 'media';
669
+ }
670
+ break;
671
+
672
+ case '"':
673
+ if (state === 'url') {
674
+ index = cssText.indexOf('"', i + 1);
675
+ if (!index) {
676
+ throw i + ": '\"' not found";
677
+ }
678
+ this.href = cssText.slice(i + 1, index);
679
+ i = index;
680
+ state = 'media';
681
+ }
682
+ break;
683
+
684
+ case "'":
685
+ if (state === 'url') {
686
+ index = cssText.indexOf("'", i + 1);
687
+ if (!index) {
688
+ throw i + ': "\'" not found';
689
+ }
690
+ this.href = cssText.slice(i + 1, index);
691
+ i = index;
692
+ state = 'media';
693
+ }
694
+ break;
695
+
696
+ case ';':
697
+ if (state === 'media') {
698
+ if (buffer) {
699
+ this.media.mediaText = buffer.trim();
700
+ }
701
+ }
702
+ break;
703
+
704
+ default:
705
+ if (state === 'media') {
706
+ buffer += character;
707
+ }
708
+ break;
709
+ }
710
+ }
711
+ }
712
+ });
713
+
714
+
715
+
716
+ /**
717
+ * @constructor
718
+ * @see http://dev.w3.org/csswg/cssom/#css-font-face-rule
719
+ */
720
+ CSSOM.CSSFontFaceRule = function CSSFontFaceRule() {
721
+ CSSOM.CSSRule.call(this);
722
+ this.style = new CSSOM.CSSStyleDeclaration();
723
+ this.style.parentRule = this;
724
+ };
725
+
726
+ CSSOM.CSSFontFaceRule.prototype = new CSSOM.CSSRule();
727
+ CSSOM.CSSFontFaceRule.prototype.constructor = CSSOM.CSSFontFaceRule;
728
+ CSSOM.CSSFontFaceRule.prototype.type = 5;
729
+ //FIXME
730
+ //CSSOM.CSSFontFaceRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;
731
+ //CSSOM.CSSFontFaceRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;
732
+
733
+ // http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSFontFaceRule.cpp
734
+ Object.defineProperty(CSSOM.CSSFontFaceRule.prototype, "cssText", {
735
+ get: function() {
736
+ return "@font-face {" + this.style.cssText + "}";
737
+ }
738
+ });
739
+
740
+
741
+
742
+ /**
743
+ * @constructor
744
+ * @see http://www.w3.org/TR/shadow-dom/#host-at-rule
745
+ */
746
+ CSSOM.CSSHostRule = function CSSHostRule() {
747
+ CSSOM.CSSRule.call(this);
748
+ this.cssRules = [];
749
+ };
750
+
751
+ CSSOM.CSSHostRule.prototype = new CSSOM.CSSRule();
752
+ CSSOM.CSSHostRule.prototype.constructor = CSSOM.CSSHostRule;
753
+ CSSOM.CSSHostRule.prototype.type = 1001;
754
+ //FIXME
755
+ //CSSOM.CSSHostRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;
756
+ //CSSOM.CSSHostRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;
757
+
758
+ Object.defineProperty(CSSOM.CSSHostRule.prototype, "cssText", {
759
+ get: function() {
760
+ var cssTexts = [];
761
+ for (var i=0, length=this.cssRules.length; i < length; i++) {
762
+ cssTexts.push(this.cssRules[i].cssText);
763
+ }
764
+ return "@host {" + cssTexts.join("") + "}";
765
+ }
766
+ });
767
+
768
+
769
+
770
+ /**
771
+ * @constructor
772
+ * @see http://www.w3.org/TR/shadow-dom/#host-at-rule
773
+ */
774
+ CSSOM.CSSStartingStyleRule = function CSSStartingStyleRule() {
775
+ CSSOM.CSSRule.call(this);
776
+ this.cssRules = [];
777
+ };
778
+
779
+ CSSOM.CSSStartingStyleRule.prototype = new CSSOM.CSSRule();
780
+ CSSOM.CSSStartingStyleRule.prototype.constructor = CSSOM.CSSStartingStyleRule;
781
+ CSSOM.CSSStartingStyleRule.prototype.type = 1002;
782
+ //FIXME
783
+ //CSSOM.CSSStartingStyleRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;
784
+ //CSSOM.CSSStartingStyleRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;
785
+
786
+ Object.defineProperty(CSSOM.CSSStartingStyleRule.prototype, "cssText", {
787
+ get: function() {
788
+ var cssTexts = [];
789
+ for (var i=0, length=this.cssRules.length; i < length; i++) {
790
+ cssTexts.push(this.cssRules[i].cssText);
791
+ }
792
+ return "@starting-style {" + cssTexts.join("") + "}";
793
+ }
794
+ });
795
+
796
+
797
+
798
+ /**
799
+ * @constructor
800
+ * @see http://dev.w3.org/csswg/cssom/#the-stylesheet-interface
801
+ */
802
+ CSSOM.StyleSheet = function StyleSheet() {
803
+ this.parentStyleSheet = null;
804
+ };
805
+
806
+
807
+
808
+ /**
809
+ * @constructor
810
+ * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet
811
+ */
812
+ CSSOM.CSSStyleSheet = function CSSStyleSheet() {
813
+ CSSOM.StyleSheet.call(this);
814
+ this.cssRules = [];
815
+ };
816
+
817
+
818
+ CSSOM.CSSStyleSheet.prototype = new CSSOM.StyleSheet();
819
+ CSSOM.CSSStyleSheet.prototype.constructor = CSSOM.CSSStyleSheet;
820
+
821
+
822
+ /**
823
+ * Used to insert a new rule into the style sheet. The new rule now becomes part of the cascade.
824
+ *
825
+ * sheet = new Sheet("body {margin: 0}")
826
+ * sheet.toString()
827
+ * -> "body{margin:0;}"
828
+ * sheet.insertRule("img {border: none}", 0)
829
+ * -> 0
830
+ * sheet.toString()
831
+ * -> "img{border:none;}body{margin:0;}"
832
+ *
833
+ * @param {string} rule
834
+ * @param {number} index
835
+ * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-insertRule
836
+ * @return {number} The index within the style sheet's rule collection of the newly inserted rule.
837
+ */
838
+ CSSOM.CSSStyleSheet.prototype.insertRule = function(rule, index) {
839
+ if (index < 0 || index > this.cssRules.length) {
840
+ throw new RangeError("INDEX_SIZE_ERR");
841
+ }
842
+ var cssRule = CSSOM.parse(rule).cssRules[0];
843
+ cssRule.parentStyleSheet = this;
844
+ this.cssRules.splice(index, 0, cssRule);
845
+ return index;
846
+ };
847
+
848
+
849
+ /**
850
+ * Used to delete a rule from the style sheet.
851
+ *
852
+ * sheet = new Sheet("img{border:none} body{margin:0}")
853
+ * sheet.toString()
854
+ * -> "img{border:none;}body{margin:0;}"
855
+ * sheet.deleteRule(0)
856
+ * sheet.toString()
857
+ * -> "body{margin:0;}"
858
+ *
859
+ * @param {number} index within the style sheet's rule list of the rule to remove.
860
+ * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-deleteRule
861
+ */
862
+ CSSOM.CSSStyleSheet.prototype.deleteRule = function(index) {
863
+ if (index < 0 || index >= this.cssRules.length) {
864
+ throw new RangeError("INDEX_SIZE_ERR");
865
+ }
866
+ this.cssRules.splice(index, 1);
867
+ };
868
+
869
+
870
+ /**
871
+ * NON-STANDARD
872
+ * @return {string} serialize stylesheet
873
+ */
874
+ CSSOM.CSSStyleSheet.prototype.toString = function() {
875
+ var result = "";
876
+ var rules = this.cssRules;
877
+ for (var i=0; i<rules.length; i++) {
878
+ result += rules[i].cssText + "\n";
879
+ }
880
+ return result;
881
+ };
882
+
883
+
884
+
885
+ /**
886
+ * @constructor
887
+ * @see http://www.w3.org/TR/css3-animations/#DOM-CSSKeyframesRule
888
+ */
889
+ CSSOM.CSSKeyframesRule = function CSSKeyframesRule() {
890
+ CSSOM.CSSRule.call(this);
891
+ this.name = '';
892
+ this.cssRules = [];
893
+ };
894
+
895
+ CSSOM.CSSKeyframesRule.prototype = new CSSOM.CSSRule();
896
+ CSSOM.CSSKeyframesRule.prototype.constructor = CSSOM.CSSKeyframesRule;
897
+ CSSOM.CSSKeyframesRule.prototype.type = 7;
898
+ //FIXME
899
+ //CSSOM.CSSKeyframesRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;
900
+ //CSSOM.CSSKeyframesRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;
901
+
902
+ // http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSKeyframesRule.cpp
903
+ Object.defineProperty(CSSOM.CSSKeyframesRule.prototype, "cssText", {
904
+ get: function() {
905
+ var cssTexts = [];
906
+ for (var i=0, length=this.cssRules.length; i < length; i++) {
907
+ cssTexts.push(" " + this.cssRules[i].cssText);
908
+ }
909
+ return "@" + (this._vendorPrefix || '') + "keyframes " + this.name + " { \n" + cssTexts.join("\n") + "\n}";
910
+ }
911
+ });
912
+
913
+
914
+
915
+ /**
916
+ * @constructor
917
+ * @see http://www.w3.org/TR/css3-animations/#DOM-CSSKeyframeRule
918
+ */
919
+ CSSOM.CSSKeyframeRule = function CSSKeyframeRule() {
920
+ CSSOM.CSSRule.call(this);
921
+ this.keyText = '';
922
+ this.style = new CSSOM.CSSStyleDeclaration();
923
+ this.style.parentRule = this;
924
+ };
925
+
926
+ CSSOM.CSSKeyframeRule.prototype = new CSSOM.CSSRule();
927
+ CSSOM.CSSKeyframeRule.prototype.constructor = CSSOM.CSSKeyframeRule;
928
+ CSSOM.CSSKeyframeRule.prototype.type = 8;
929
+ //FIXME
930
+ //CSSOM.CSSKeyframeRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;
931
+ //CSSOM.CSSKeyframeRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;
932
+
933
+ // http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSKeyframeRule.cpp
934
+ Object.defineProperty(CSSOM.CSSKeyframeRule.prototype, "cssText", {
935
+ get: function() {
936
+ return this.keyText + " {" + this.style.cssText + "} ";
937
+ }
938
+ });
939
+
940
+
941
+
942
+ /**
943
+ * @constructor
944
+ * @see https://developer.mozilla.org/en/CSS/@-moz-document
945
+ */
946
+ CSSOM.MatcherList = function MatcherList(){
947
+ this.length = 0;
948
+ };
949
+
950
+ CSSOM.MatcherList.prototype = {
951
+
952
+ constructor: CSSOM.MatcherList,
953
+
954
+ /**
955
+ * @return {string}
956
+ */
957
+ get matcherText() {
958
+ return Array.prototype.join.call(this, ", ");
959
+ },
960
+
961
+ /**
962
+ * @param {string} value
963
+ */
964
+ set matcherText(value) {
965
+ // just a temporary solution, actually it may be wrong by just split the value with ',', because a url can include ','.
966
+ var values = value.split(",");
967
+ var length = this.length = values.length;
968
+ for (var i=0; i<length; i++) {
969
+ this[i] = values[i].trim();
970
+ }
971
+ },
972
+
973
+ /**
974
+ * @param {string} matcher
975
+ */
976
+ appendMatcher: function(matcher) {
977
+ if (Array.prototype.indexOf.call(this, matcher) === -1) {
978
+ this[this.length] = matcher;
979
+ this.length++;
980
+ }
981
+ },
982
+
983
+ /**
984
+ * @param {string} matcher
985
+ */
986
+ deleteMatcher: function(matcher) {
987
+ var index = Array.prototype.indexOf.call(this, matcher);
988
+ if (index !== -1) {
989
+ Array.prototype.splice.call(this, index, 1);
990
+ }
991
+ }
992
+
993
+ };
994
+
995
+
996
+
997
+ /**
998
+ * @constructor
999
+ * @see https://developer.mozilla.org/en/CSS/@-moz-document
1000
+ */
1001
+ CSSOM.CSSDocumentRule = function CSSDocumentRule() {
1002
+ CSSOM.CSSRule.call(this);
1003
+ this.matcher = new CSSOM.MatcherList();
1004
+ this.cssRules = [];
1005
+ };
1006
+
1007
+ CSSOM.CSSDocumentRule.prototype = new CSSOM.CSSRule();
1008
+ CSSOM.CSSDocumentRule.prototype.constructor = CSSOM.CSSDocumentRule;
1009
+ CSSOM.CSSDocumentRule.prototype.type = 10;
1010
+ //FIXME
1011
+ //CSSOM.CSSDocumentRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;
1012
+ //CSSOM.CSSDocumentRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;
1013
+
1014
+ Object.defineProperty(CSSOM.CSSDocumentRule.prototype, "cssText", {
1015
+ get: function() {
1016
+ var cssTexts = [];
1017
+ for (var i=0, length=this.cssRules.length; i < length; i++) {
1018
+ cssTexts.push(this.cssRules[i].cssText);
1019
+ }
1020
+ return "@-moz-document " + this.matcher.matcherText + " {" + cssTexts.join("") + "}";
1021
+ }
1022
+ });
1023
+
1024
+
1025
+
1026
+ /**
1027
+ * @constructor
1028
+ * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue
1029
+ *
1030
+ * TODO: add if needed
1031
+ */
1032
+ CSSOM.CSSValue = function CSSValue() {
1033
+ };
1034
+
1035
+ CSSOM.CSSValue.prototype = {
1036
+ constructor: CSSOM.CSSValue,
1037
+
1038
+ // @see: http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue
1039
+ set cssText(text) {
1040
+ var name = this._getConstructorName();
1041
+
1042
+ throw new Error('DOMException: property "cssText" of "' + name + '" is readonly and can not be replaced with "' + text + '"!');
1043
+ },
1044
+
1045
+ get cssText() {
1046
+ var name = this._getConstructorName();
1047
+
1048
+ throw new Error('getter "cssText" of "' + name + '" is not implemented!');
1049
+ },
1050
+
1051
+ _getConstructorName: function() {
1052
+ var s = this.constructor.toString(),
1053
+ c = s.match(/function\s([^\(]+)/),
1054
+ name = c[1];
1055
+
1056
+ return name;
1057
+ }
1058
+ };
1059
+
1060
+
1061
+
1062
+ /**
1063
+ * @constructor
1064
+ * @see http://msdn.microsoft.com/en-us/library/ms537634(v=vs.85).aspx
1065
+ *
1066
+ */
1067
+ CSSOM.CSSValueExpression = function CSSValueExpression(token, idx) {
1068
+ this._token = token;
1069
+ this._idx = idx;
1070
+ };
1071
+
1072
+ CSSOM.CSSValueExpression.prototype = new CSSOM.CSSValue();
1073
+ CSSOM.CSSValueExpression.prototype.constructor = CSSOM.CSSValueExpression;
1074
+
1075
+ /**
1076
+ * parse css expression() value
1077
+ *
1078
+ * @return {Object}
1079
+ * - error:
1080
+ * or
1081
+ * - idx:
1082
+ * - expression:
1083
+ *
1084
+ * Example:
1085
+ *
1086
+ * .selector {
1087
+ * zoom: expression(documentElement.clientWidth > 1000 ? '1000px' : 'auto');
1088
+ * }
1089
+ */
1090
+ CSSOM.CSSValueExpression.prototype.parse = function() {
1091
+ var token = this._token,
1092
+ idx = this._idx;
1093
+
1094
+ var character = '',
1095
+ expression = '',
1096
+ error = '',
1097
+ info,
1098
+ paren = [];
1099
+
1100
+
1101
+ for (; ; ++idx) {
1102
+ character = token.charAt(idx);
1103
+
1104
+ // end of token
1105
+ if (character === '') {
1106
+ error = 'css expression error: unfinished expression!';
1107
+ break;
1108
+ }
1109
+
1110
+ switch(character) {
1111
+ case '(':
1112
+ paren.push(character);
1113
+ expression += character;
1114
+ break;
1115
+
1116
+ case ')':
1117
+ paren.pop(character);
1118
+ expression += character;
1119
+ break;
1120
+
1121
+ case '/':
1122
+ if ((info = this._parseJSComment(token, idx))) { // comment?
1123
+ if (info.error) {
1124
+ error = 'css expression error: unfinished comment in expression!';
1125
+ } else {
1126
+ idx = info.idx;
1127
+ // ignore the comment
1128
+ }
1129
+ } else if ((info = this._parseJSRexExp(token, idx))) { // regexp
1130
+ idx = info.idx;
1131
+ expression += info.text;
1132
+ } else { // other
1133
+ expression += character;
1134
+ }
1135
+ break;
1136
+
1137
+ case "'":
1138
+ case '"':
1139
+ info = this._parseJSString(token, idx, character);
1140
+ if (info) { // string
1141
+ idx = info.idx;
1142
+ expression += info.text;
1143
+ } else {
1144
+ expression += character;
1145
+ }
1146
+ break;
1147
+
1148
+ default:
1149
+ expression += character;
1150
+ break;
1151
+ }
1152
+
1153
+ if (error) {
1154
+ break;
1155
+ }
1156
+
1157
+ // end of expression
1158
+ if (paren.length === 0) {
1159
+ break;
1160
+ }
1161
+ }
1162
+
1163
+ var ret;
1164
+ if (error) {
1165
+ ret = {
1166
+ error: error
1167
+ };
1168
+ } else {
1169
+ ret = {
1170
+ idx: idx,
1171
+ expression: expression
1172
+ };
1173
+ }
1174
+
1175
+ return ret;
1176
+ };
1177
+
1178
+
1179
+ /**
1180
+ *
1181
+ * @return {Object|false}
1182
+ * - idx:
1183
+ * - text:
1184
+ * or
1185
+ * - error:
1186
+ * or
1187
+ * false
1188
+ *
1189
+ */
1190
+ CSSOM.CSSValueExpression.prototype._parseJSComment = function(token, idx) {
1191
+ var nextChar = token.charAt(idx + 1),
1192
+ text;
1193
+
1194
+ if (nextChar === '/' || nextChar === '*') {
1195
+ var startIdx = idx,
1196
+ endIdx,
1197
+ commentEndChar;
1198
+
1199
+ if (nextChar === '/') { // line comment
1200
+ commentEndChar = '\n';
1201
+ } else if (nextChar === '*') { // block comment
1202
+ commentEndChar = '*/';
1203
+ }
1204
+
1205
+ endIdx = token.indexOf(commentEndChar, startIdx + 1 + 1);
1206
+ if (endIdx !== -1) {
1207
+ endIdx = endIdx + commentEndChar.length - 1;
1208
+ text = token.substring(idx, endIdx + 1);
1209
+ return {
1210
+ idx: endIdx,
1211
+ text: text
1212
+ };
1213
+ } else {
1214
+ var error = 'css expression error: unfinished comment in expression!';
1215
+ return {
1216
+ error: error
1217
+ };
1218
+ }
1219
+ } else {
1220
+ return false;
1221
+ }
1222
+ };
1223
+
1224
+
1225
+ /**
1226
+ *
1227
+ * @return {Object|false}
1228
+ * - idx:
1229
+ * - text:
1230
+ * or
1231
+ * false
1232
+ *
1233
+ */
1234
+ CSSOM.CSSValueExpression.prototype._parseJSString = function(token, idx, sep) {
1235
+ var endIdx = this._findMatchedIdx(token, idx, sep),
1236
+ text;
1237
+
1238
+ if (endIdx === -1) {
1239
+ return false;
1240
+ } else {
1241
+ text = token.substring(idx, endIdx + sep.length);
1242
+
1243
+ return {
1244
+ idx: endIdx,
1245
+ text: text
1246
+ };
1247
+ }
1248
+ };
1249
+
1250
+
1251
+ /**
1252
+ * parse regexp in css expression
1253
+ *
1254
+ * @return {Object|false}
1255
+ * - idx:
1256
+ * - regExp:
1257
+ * or
1258
+ * false
1259
+ */
1260
+
1261
+ /*
1262
+
1263
+ all legal RegExp
1264
+
1265
+ /a/
1266
+ (/a/)
1267
+ [/a/]
1268
+ [12, /a/]
1269
+
1270
+ !/a/
1271
+
1272
+ +/a/
1273
+ -/a/
1274
+ * /a/
1275
+ / /a/
1276
+ %/a/
1277
+
1278
+ ===/a/
1279
+ !==/a/
1280
+ ==/a/
1281
+ !=/a/
1282
+ >/a/
1283
+ >=/a/
1284
+ </a/
1285
+ <=/a/
1286
+
1287
+ &/a/
1288
+ |/a/
1289
+ ^/a/
1290
+ ~/a/
1291
+ <</a/
1292
+ >>/a/
1293
+ >>>/a/
1294
+
1295
+ &&/a/
1296
+ ||/a/
1297
+ ?/a/
1298
+ =/a/
1299
+ ,/a/
1300
+
1301
+ delete /a/
1302
+ in /a/
1303
+ instanceof /a/
1304
+ new /a/
1305
+ typeof /a/
1306
+ void /a/
1307
+
1308
+ */
1309
+ CSSOM.CSSValueExpression.prototype._parseJSRexExp = function(token, idx) {
1310
+ var before = token.substring(0, idx).replace(/\s+$/, ""),
1311
+ legalRegx = [
1312
+ /^$/,
1313
+ /\($/,
1314
+ /\[$/,
1315
+ /\!$/,
1316
+ /\+$/,
1317
+ /\-$/,
1318
+ /\*$/,
1319
+ /\/\s+/,
1320
+ /\%$/,
1321
+ /\=$/,
1322
+ /\>$/,
1323
+ /<$/,
1324
+ /\&$/,
1325
+ /\|$/,
1326
+ /\^$/,
1327
+ /\~$/,
1328
+ /\?$/,
1329
+ /\,$/,
1330
+ /delete$/,
1331
+ /in$/,
1332
+ /instanceof$/,
1333
+ /new$/,
1334
+ /typeof$/,
1335
+ /void$/
1336
+ ];
1337
+
1338
+ var isLegal = legalRegx.some(function(reg) {
1339
+ return reg.test(before);
1340
+ });
1341
+
1342
+ if (!isLegal) {
1343
+ return false;
1344
+ } else {
1345
+ var sep = '/';
1346
+
1347
+ // same logic as string
1348
+ return this._parseJSString(token, idx, sep);
1349
+ }
1350
+ };
1351
+
1352
+
1353
+ /**
1354
+ *
1355
+ * find next sep(same line) index in `token`
1356
+ *
1357
+ * @return {Number}
1358
+ *
1359
+ */
1360
+ CSSOM.CSSValueExpression.prototype._findMatchedIdx = function(token, idx, sep) {
1361
+ var startIdx = idx,
1362
+ endIdx;
1363
+
1364
+ var NOT_FOUND = -1;
1365
+
1366
+ while(true) {
1367
+ endIdx = token.indexOf(sep, startIdx + 1);
1368
+
1369
+ if (endIdx === -1) { // not found
1370
+ endIdx = NOT_FOUND;
1371
+ break;
1372
+ } else {
1373
+ var text = token.substring(idx + 1, endIdx),
1374
+ matched = text.match(/\\+$/);
1375
+ if (!matched || matched[0] % 2 === 0) { // not escaped
1376
+ break;
1377
+ } else {
1378
+ startIdx = endIdx;
1379
+ }
1380
+ }
1381
+ }
1382
+
1383
+ // boundary must be in the same line(js sting or regexp)
1384
+ var nextNewLineIdx = token.indexOf('\n', idx + 1);
1385
+ if (nextNewLineIdx < endIdx) {
1386
+ endIdx = NOT_FOUND;
1387
+ }
1388
+
1389
+
1390
+ return endIdx;
1391
+ };
1392
+
1393
+
1394
+
1395
+
1396
+
1397
+ /**
1398
+ * @param {string} token
1399
+ */
1400
+ CSSOM.parse = function parse(token) {
1401
+
1402
+ var i = 0;
1403
+
1404
+ /**
1405
+ "before-selector" or
1406
+ "selector" or
1407
+ "atRule" or
1408
+ "atBlock" or
1409
+ "conditionBlock" or
1410
+ "before-name" or
1411
+ "name" or
1412
+ "before-value" or
1413
+ "value"
1414
+ */
1415
+ var state = "before-selector";
1416
+
1417
+ var index;
1418
+ var buffer = "";
1419
+ var valueParenthesisDepth = 0;
1420
+
1421
+ var SIGNIFICANT_WHITESPACE = {
1422
+ "selector": true,
1423
+ "value": true,
1424
+ "value-parenthesis": true,
1425
+ "atRule": true,
1426
+ "importRule-begin": true,
1427
+ "importRule": true,
1428
+ "atBlock": true,
1429
+ "containerBlock": true,
1430
+ "conditionBlock": true,
1431
+ 'documentRule-begin': true
1432
+ };
1433
+
1434
+ var styleSheet = new CSSOM.CSSStyleSheet();
1435
+
1436
+ // @type CSSStyleSheet|CSSMediaRule|CSSContainerRule|CSSSupportsRule|CSSFontFaceRule|CSSKeyframesRule|CSSDocumentRule
1437
+ var currentScope = styleSheet;
1438
+
1439
+ // @type CSSMediaRule|CSSContainerRule|CSSSupportsRule|CSSKeyframesRule|CSSDocumentRule
1440
+ var parentRule;
1441
+
1442
+ var ancestorRules = [];
1443
+ var hasAncestors = false;
1444
+ var prevScope;
1445
+
1446
+ var name, priority="", styleRule, mediaRule, containerRule, supportsRule, importRule, fontFaceRule, keyframesRule, documentRule, hostRule, startingStyleRule;
1447
+
1448
+ var atKeyframesRegExp = /@(-(?:\w+-)+)?keyframes/g;
1449
+
1450
+ var parseError = function(message) {
1451
+ var lines = token.substring(0, i).split('\n');
1452
+ var lineCount = lines.length;
1453
+ var charCount = lines.pop().length + 1;
1454
+ var error = new Error(message + ' (line ' + lineCount + ', char ' + charCount + ')');
1455
+ error.line = lineCount;
1456
+ /* jshint sub : true */
1457
+ error['char'] = charCount;
1458
+ error.styleSheet = styleSheet;
1459
+ throw error;
1460
+ };
1461
+
1462
+ for (var character; (character = token.charAt(i)); i++) {
1463
+
1464
+ switch (character) {
1465
+
1466
+ case " ":
1467
+ case "\t":
1468
+ case "\r":
1469
+ case "\n":
1470
+ case "\f":
1471
+ if (SIGNIFICANT_WHITESPACE[state]) {
1472
+ buffer += character;
1473
+ }
1474
+ break;
1475
+
1476
+ // String
1477
+ case '"':
1478
+ index = i + 1;
1479
+ do {
1480
+ index = token.indexOf('"', index) + 1;
1481
+ if (!index) {
1482
+ parseError('Unmatched "');
1483
+ }
1484
+ } while (token[index - 2] === '\\');
1485
+ buffer += token.slice(i, index);
1486
+ i = index - 1;
1487
+ switch (state) {
1488
+ case 'before-value':
1489
+ state = 'value';
1490
+ break;
1491
+ case 'importRule-begin':
1492
+ state = 'importRule';
1493
+ break;
1494
+ }
1495
+ break;
1496
+
1497
+ case "'":
1498
+ index = i + 1;
1499
+ do {
1500
+ index = token.indexOf("'", index) + 1;
1501
+ if (!index) {
1502
+ parseError("Unmatched '");
1503
+ }
1504
+ } while (token[index - 2] === '\\');
1505
+ buffer += token.slice(i, index);
1506
+ i = index - 1;
1507
+ switch (state) {
1508
+ case 'before-value':
1509
+ state = 'value';
1510
+ break;
1511
+ case 'importRule-begin':
1512
+ state = 'importRule';
1513
+ break;
1514
+ }
1515
+ break;
1516
+
1517
+ // Comment
1518
+ case "/":
1519
+ if (token.charAt(i + 1) === "*") {
1520
+ i += 2;
1521
+ index = token.indexOf("*/", i);
1522
+ if (index === -1) {
1523
+ parseError("Missing */");
1524
+ } else {
1525
+ i = index + 1;
1526
+ }
1527
+ } else {
1528
+ buffer += character;
1529
+ }
1530
+ if (state === "importRule-begin") {
1531
+ buffer += " ";
1532
+ state = "importRule";
1533
+ }
1534
+ break;
1535
+
1536
+ // At-rule
1537
+ case "@":
1538
+ if (token.indexOf("@-moz-document", i) === i) {
1539
+ state = "documentRule-begin";
1540
+ documentRule = new CSSOM.CSSDocumentRule();
1541
+ documentRule.__starts = i;
1542
+ i += "-moz-document".length;
1543
+ buffer = "";
1544
+ break;
1545
+ } else if (token.indexOf("@media", i) === i) {
1546
+ state = "atBlock";
1547
+ mediaRule = new CSSOM.CSSMediaRule();
1548
+ mediaRule.__starts = i;
1549
+ i += "media".length;
1550
+ buffer = "";
1551
+ break;
1552
+ } else if (token.indexOf("@container", i) === i) {
1553
+ state = "containerBlock";
1554
+ containerRule = new CSSOM.CSSContainerRule();
1555
+ containerRule.__starts = i;
1556
+ i += "container".length;
1557
+ buffer = "";
1558
+ break;
1559
+ } else if (token.indexOf("@supports", i) === i) {
1560
+ state = "conditionBlock";
1561
+ supportsRule = new CSSOM.CSSSupportsRule();
1562
+ supportsRule.__starts = i;
1563
+ i += "supports".length;
1564
+ buffer = "";
1565
+ break;
1566
+ } else if (token.indexOf("@host", i) === i) {
1567
+ state = "hostRule-begin";
1568
+ i += "host".length;
1569
+ hostRule = new CSSOM.CSSHostRule();
1570
+ hostRule.__starts = i;
1571
+ buffer = "";
1572
+ break;
1573
+ } else if (token.indexOf("@starting-style", i) === i) {
1574
+ state = "startingStyleRule-begin";
1575
+ i += "starting-style".length;
1576
+ startingStyleRule = new CSSOM.CSSStartingStyleRule();
1577
+ startingStyleRule.__starts = i;
1578
+ buffer = "";
1579
+ break;
1580
+ } else if (token.indexOf("@import", i) === i) {
1581
+ state = "importRule-begin";
1582
+ i += "import".length;
1583
+ buffer += "@import";
1584
+ break;
1585
+ } else if (token.indexOf("@font-face", i) === i) {
1586
+ state = "fontFaceRule-begin";
1587
+ i += "font-face".length;
1588
+ fontFaceRule = new CSSOM.CSSFontFaceRule();
1589
+ fontFaceRule.__starts = i;
1590
+ buffer = "";
1591
+ break;
1592
+ } else {
1593
+ atKeyframesRegExp.lastIndex = i;
1594
+ var matchKeyframes = atKeyframesRegExp.exec(token);
1595
+ if (matchKeyframes && matchKeyframes.index === i) {
1596
+ state = "keyframesRule-begin";
1597
+ keyframesRule = new CSSOM.CSSKeyframesRule();
1598
+ keyframesRule.__starts = i;
1599
+ keyframesRule._vendorPrefix = matchKeyframes[1]; // Will come out as undefined if no prefix was found
1600
+ i += matchKeyframes[0].length - 1;
1601
+ buffer = "";
1602
+ break;
1603
+ } else if (state === "selector") {
1604
+ state = "atRule";
1605
+ }
1606
+ }
1607
+ buffer += character;
1608
+ break;
1609
+
1610
+ case "{":
1611
+ if (state === "selector" || state === "atRule") {
1612
+ styleRule.selectorText = buffer.trim();
1613
+ styleRule.style.__starts = i;
1614
+ buffer = "";
1615
+ state = "before-name";
1616
+ } else if (state === "atBlock") {
1617
+ mediaRule.media.mediaText = buffer.trim();
1618
+
1619
+ if (parentRule) {
1620
+ ancestorRules.push(parentRule);
1621
+ }
1622
+
1623
+ currentScope = parentRule = mediaRule;
1624
+ mediaRule.parentStyleSheet = styleSheet;
1625
+ buffer = "";
1626
+ state = "before-selector";
1627
+ } else if (state === "containerBlock") {
1628
+ containerRule.containerText = buffer.trim();
1629
+
1630
+ if (parentRule) {
1631
+ ancestorRules.push(parentRule);
1632
+ }
1633
+ currentScope = parentRule = containerRule;
1634
+ containerRule.parentStyleSheet = styleSheet;
1635
+ buffer = "";
1636
+ state = "before-selector";
1637
+ } else if (state === "conditionBlock") {
1638
+ supportsRule.conditionText = buffer.trim();
1639
+
1640
+ if (parentRule) {
1641
+ ancestorRules.push(parentRule);
1642
+ }
1643
+
1644
+ currentScope = parentRule = supportsRule;
1645
+ supportsRule.parentStyleSheet = styleSheet;
1646
+ buffer = "";
1647
+ state = "before-selector";
1648
+ } else if (state === "hostRule-begin") {
1649
+ if (parentRule) {
1650
+ ancestorRules.push(parentRule);
1651
+ }
1652
+
1653
+ currentScope = parentRule = hostRule;
1654
+ hostRule.parentStyleSheet = styleSheet;
1655
+ buffer = "";
1656
+ state = "before-selector";
1657
+ } else if (state === "startingStyleRule-begin") {
1658
+ if (parentRule) {
1659
+ ancestorRules.push(parentRule);
1660
+ }
1661
+
1662
+ currentScope = parentRule = startingStyleRule;
1663
+ startingStyleRule.parentStyleSheet = styleSheet;
1664
+ buffer = "";
1665
+ state = "before-selector";
1666
+
1667
+ } else if (state === "fontFaceRule-begin") {
1668
+ if (parentRule) {
1669
+ fontFaceRule.parentRule = parentRule;
1670
+ }
1671
+ fontFaceRule.parentStyleSheet = styleSheet;
1672
+ styleRule = fontFaceRule;
1673
+ buffer = "";
1674
+ state = "before-name";
1675
+ } else if (state === "keyframesRule-begin") {
1676
+ keyframesRule.name = buffer.trim();
1677
+ if (parentRule) {
1678
+ ancestorRules.push(parentRule);
1679
+ keyframesRule.parentRule = parentRule;
1680
+ }
1681
+ keyframesRule.parentStyleSheet = styleSheet;
1682
+ currentScope = parentRule = keyframesRule;
1683
+ buffer = "";
1684
+ state = "keyframeRule-begin";
1685
+ } else if (state === "keyframeRule-begin") {
1686
+ styleRule = new CSSOM.CSSKeyframeRule();
1687
+ styleRule.keyText = buffer.trim();
1688
+ styleRule.__starts = i;
1689
+ buffer = "";
1690
+ state = "before-name";
1691
+ } else if (state === "documentRule-begin") {
1692
+ // FIXME: what if this '{' is in the url text of the match function?
1693
+ documentRule.matcher.matcherText = buffer.trim();
1694
+ if (parentRule) {
1695
+ ancestorRules.push(parentRule);
1696
+ documentRule.parentRule = parentRule;
1697
+ }
1698
+ currentScope = parentRule = documentRule;
1699
+ documentRule.parentStyleSheet = styleSheet;
1700
+ buffer = "";
1701
+ state = "before-selector";
1702
+ }
1703
+ break;
1704
+
1705
+ case ":":
1706
+ if (state === "name") {
1707
+ name = buffer.trim();
1708
+ buffer = "";
1709
+ state = "before-value";
1710
+ } else {
1711
+ buffer += character;
1712
+ }
1713
+ break;
1714
+
1715
+ case "(":
1716
+ if (state === 'value') {
1717
+ // ie css expression mode
1718
+ if (buffer.trim() === 'expression') {
1719
+ var info = (new CSSOM.CSSValueExpression(token, i)).parse();
1720
+
1721
+ if (info.error) {
1722
+ parseError(info.error);
1723
+ } else {
1724
+ buffer += info.expression;
1725
+ i = info.idx;
1726
+ }
1727
+ } else {
1728
+ state = 'value-parenthesis';
1729
+ //always ensure this is reset to 1 on transition
1730
+ //from value to value-parenthesis
1731
+ valueParenthesisDepth = 1;
1732
+ buffer += character;
1733
+ }
1734
+ } else if (state === 'value-parenthesis') {
1735
+ valueParenthesisDepth++;
1736
+ buffer += character;
1737
+ } else {
1738
+ buffer += character;
1739
+ }
1740
+ break;
1741
+
1742
+ case ")":
1743
+ if (state === 'value-parenthesis') {
1744
+ valueParenthesisDepth--;
1745
+ if (valueParenthesisDepth === 0) state = 'value';
1746
+ }
1747
+ buffer += character;
1748
+ break;
1749
+
1750
+ case "!":
1751
+ if (state === "value" && token.indexOf("!important", i) === i) {
1752
+ priority = "important";
1753
+ i += "important".length;
1754
+ } else {
1755
+ buffer += character;
1756
+ }
1757
+ break;
1758
+
1759
+ case ";":
1760
+ switch (state) {
1761
+ case "value":
1762
+ styleRule.style.setProperty(name, buffer.trim(), priority);
1763
+ priority = "";
1764
+ buffer = "";
1765
+ state = "before-name";
1766
+ break;
1767
+ case "atRule":
1768
+ buffer = "";
1769
+ state = "before-selector";
1770
+ break;
1771
+ case "importRule":
1772
+ importRule = new CSSOM.CSSImportRule();
1773
+ importRule.parentStyleSheet = importRule.styleSheet.parentStyleSheet = styleSheet;
1774
+ importRule.cssText = buffer + character;
1775
+ styleSheet.cssRules.push(importRule);
1776
+ buffer = "";
1777
+ state = "before-selector";
1778
+ break;
1779
+ default:
1780
+ buffer += character;
1781
+ break;
1782
+ }
1783
+ break;
1784
+
1785
+ case "}":
1786
+ switch (state) {
1787
+ case "value":
1788
+ styleRule.style.setProperty(name, buffer.trim(), priority);
1789
+ priority = "";
1790
+ /* falls through */
1791
+ case "before-name":
1792
+ case "name":
1793
+ styleRule.__ends = i + 1;
1794
+ if (parentRule) {
1795
+ styleRule.parentRule = parentRule;
1796
+ }
1797
+ styleRule.parentStyleSheet = styleSheet;
1798
+ currentScope.cssRules.push(styleRule);
1799
+ buffer = "";
1800
+ if (currentScope.constructor === CSSOM.CSSKeyframesRule) {
1801
+ state = "keyframeRule-begin";
1802
+ } else {
1803
+ state = "before-selector";
1804
+ }
1805
+ break;
1806
+ case "keyframeRule-begin":
1807
+ case "before-selector":
1808
+ case "selector":
1809
+ // End of media/supports/document rule.
1810
+ if (!parentRule) {
1811
+ parseError("Unexpected }");
1812
+ }
1813
+
1814
+ // Handle rules nested in @media or @supports
1815
+ hasAncestors = ancestorRules.length > 0;
1816
+
1817
+ while (ancestorRules.length > 0) {
1818
+ parentRule = ancestorRules.pop();
1819
+
1820
+ if (
1821
+ parentRule.constructor.name === "CSSMediaRule"
1822
+ || parentRule.constructor.name === "CSSSupportsRule"
1823
+ || parentRule.constructor.name === "CSSContainerRule"
1824
+ || parentRule.constructor.name === "CSSStartingStyleRule"
1825
+ ) {
1826
+ prevScope = currentScope;
1827
+ currentScope = parentRule;
1828
+ currentScope.cssRules.push(prevScope);
1829
+ break;
1830
+ }
1831
+
1832
+ if (ancestorRules.length === 0) {
1833
+ hasAncestors = false;
1834
+ }
1835
+ }
1836
+
1837
+ if (!hasAncestors) {
1838
+ currentScope.__ends = i + 1;
1839
+ styleSheet.cssRules.push(currentScope);
1840
+ currentScope = styleSheet;
1841
+ parentRule = null;
1842
+ }
1843
+
1844
+ buffer = "";
1845
+ state = "before-selector";
1846
+ break;
1847
+ }
1848
+ break;
1849
+
1850
+ default:
1851
+ switch (state) {
1852
+ case "before-selector":
1853
+ state = "selector";
1854
+ styleRule = new CSSOM.CSSStyleRule();
1855
+ styleRule.__starts = i;
1856
+ break;
1857
+ case "before-name":
1858
+ state = "name";
1859
+ break;
1860
+ case "before-value":
1861
+ state = "value";
1862
+ break;
1863
+ case "importRule-begin":
1864
+ state = "importRule";
1865
+ break;
1866
+ }
1867
+ buffer += character;
1868
+ break;
1869
+ }
1870
+ }
1871
+
1872
+ return styleSheet;
1873
+ };
1874
+
1875
+
1876
+
1877
+ /**
1878
+ * Produces a deep copy of stylesheet — the instance variables of stylesheet are copied recursively.
1879
+ * @param {CSSStyleSheet|CSSOM.CSSStyleSheet} stylesheet
1880
+ * @nosideeffects
1881
+ * @return {CSSOM.CSSStyleSheet}
1882
+ */
1883
+ CSSOM.clone = function clone(stylesheet) {
1884
+
1885
+ var cloned = new CSSOM.CSSStyleSheet();
1886
+
1887
+ var rules = stylesheet.cssRules;
1888
+ if (!rules) {
1889
+ return cloned;
1890
+ }
1891
+
1892
+ for (var i = 0, rulesLength = rules.length; i < rulesLength; i++) {
1893
+ var rule = rules[i];
1894
+ var ruleClone = cloned.cssRules[i] = new rule.constructor();
1895
+
1896
+ var style = rule.style;
1897
+ if (style) {
1898
+ var styleClone = ruleClone.style = new CSSOM.CSSStyleDeclaration();
1899
+ for (var j = 0, styleLength = style.length; j < styleLength; j++) {
1900
+ var name = styleClone[j] = style[j];
1901
+ styleClone[name] = style[name];
1902
+ styleClone._importants[name] = style.getPropertyPriority(name);
1903
+ }
1904
+ styleClone.length = style.length;
1905
+ }
1906
+
1907
+ if (rule.hasOwnProperty('keyText')) {
1908
+ ruleClone.keyText = rule.keyText;
1909
+ }
1910
+
1911
+ if (rule.hasOwnProperty('selectorText')) {
1912
+ ruleClone.selectorText = rule.selectorText;
1913
+ }
1914
+
1915
+ if (rule.hasOwnProperty('mediaText')) {
1916
+ ruleClone.mediaText = rule.mediaText;
1917
+ }
1918
+
1919
+ if (rule.hasOwnProperty('conditionText')) {
1920
+ ruleClone.conditionText = rule.conditionText;
1921
+ }
1922
+
1923
+ if (rule.hasOwnProperty('cssRules')) {
1924
+ ruleClone.cssRules = clone(rule).cssRules;
1925
+ }
1926
+ }
1927
+
1928
+ return cloned;
1929
+
1930
+ };
1931
+
1932
+