u2ui 1.0.0

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 (440) hide show
  1. package/.htaccess +7 -0
  2. package/LICENSE +21 -0
  3. package/README.md +36 -0
  4. package/attr/behavior/README.md +25 -0
  5. package/attr/behavior/behavior.js +261 -0
  6. package/attr/behavior/manifest.json +43 -0
  7. package/attr/behavior/tests/minimal.html +19 -0
  8. package/attr/behavior/tests/test.html +98 -0
  9. package/attr/confirm/README.md +36 -0
  10. package/attr/confirm/confirm.js +90 -0
  11. package/attr/confirm/manifest.json +43 -0
  12. package/attr/confirm/tests/minimal.html +23 -0
  13. package/attr/confirm/tests/test.html +79 -0
  14. package/attr/draghandle/README.md +41 -0
  15. package/attr/draghandle/draghandle.js +42 -0
  16. package/attr/draghandle/tests/minimal.html +44 -0
  17. package/attr/focusgroup/README.md +49 -0
  18. package/attr/focusgroup/focusgroup.js +100 -0
  19. package/attr/focusgroup/manifest.json +38 -0
  20. package/attr/focusgroup/tests/minimal.html +27 -0
  21. package/attr/focusgroup/tests/test.html +154 -0
  22. package/attr/href/README.md +38 -0
  23. package/attr/href/href.js +42 -0
  24. package/attr/href/manifest.json +43 -0
  25. package/attr/href/tests/minimal.html +17 -0
  26. package/attr/href/tests/test.html +70 -0
  27. package/attr/intersect/README.md +42 -0
  28. package/attr/intersect/intersect.js +99 -0
  29. package/attr/intersect/manifest.json +57 -0
  30. package/attr/intersect/tests/minimal.html +30 -0
  31. package/attr/intersect/tests/test.html +64 -0
  32. package/attr/navigable/README.md +31 -0
  33. package/attr/navigable/TargetObserver.js +91 -0
  34. package/attr/navigable/U2TargetObserver.js +75 -0
  35. package/attr/navigable/manifest.json +42 -0
  36. package/attr/navigable/navigable.js +87 -0
  37. package/attr/navigable/tests/U1TargetObserver.html +56 -0
  38. package/attr/navigable/tests/minimal.html +17 -0
  39. package/attr/navigable/tests/targetObserver.html +106 -0
  40. package/attr/navigable/tests/test.html +84 -0
  41. package/attr/parallax/README.md +48 -0
  42. package/attr/parallax/parallax.js +119 -0
  43. package/attr/parallax/tests/minimal.html +25 -0
  44. package/attr/parallax/tests/performance.html +102 -0
  45. package/attr/parallax/tests/test.html +108 -0
  46. package/attr/skin/README.md +59 -0
  47. package/attr/skin/skin.css +51 -0
  48. package/attr/skin/tests/minimal.html +34 -0
  49. package/attr/skin/tests/test.html +96 -0
  50. package/class/badge/README.md +25 -0
  51. package/class/badge/badge.css +35 -0
  52. package/class/badge/tests/minimal.html +17 -0
  53. package/class/badge/tests/test.html +112 -0
  54. package/class/card1/README.md +45 -0
  55. package/class/card1/card1.css +30 -0
  56. package/class/card1/tests/minimal.html +33 -0
  57. package/class/card1/tests/test.html +78 -0
  58. package/class/flex/README.md +62 -0
  59. package/class/flex/flex.css +25 -0
  60. package/class/flex/tests/minimal.html +31 -0
  61. package/class/flex/tests/test.html +58 -0
  62. package/class/grid/README.md +52 -0
  63. package/class/grid/grid.css +40 -0
  64. package/class/grid/tests/minimal.html +34 -0
  65. package/class/grid/tests/test.html +78 -0
  66. package/class/input/README.md +49 -0
  67. package/class/input/input.css +33 -0
  68. package/class/input/tests/minimal.html +39 -0
  69. package/class/input/tests/test.html +29 -0
  70. package/class/reset/README.md +47 -0
  71. package/class/reset/reset.css +8 -0
  72. package/class/reset/tests/minimal.html +23 -0
  73. package/class/table/README.md +57 -0
  74. package/class/table/table.css +126 -0
  75. package/class/table/tests/minimal.html +40 -0
  76. package/class/table/tests/test.html +226 -0
  77. package/class/unstyle/README.md +32 -0
  78. package/class/unstyle/tests/minimal.html +22 -0
  79. package/class/unstyle/tests/test.html +32 -0
  80. package/class/unstyle/unstyle.css +12 -0
  81. package/class/width/README.md +48 -0
  82. package/class/width/tests/minimal.html +27 -0
  83. package/class/width/tests/test.html +101 -0
  84. package/class/width/width.css +22 -0
  85. package/css/base/README.md +25 -0
  86. package/css/base/base.css +127 -0
  87. package/css/base/beta.css +50 -0
  88. package/css/base/full.css +5 -0
  89. package/css/base/nomotion.css +9 -0
  90. package/css/base/print.css +36 -0
  91. package/css/base/tests/nomotion.html +89 -0
  92. package/css/base/tests/test.html +539 -0
  93. package/css/classes/README.md +17 -0
  94. package/css/classes/classes.css +78 -0
  95. package/css/classes/tests/test.html +63 -0
  96. package/css/classless/README.md +26 -0
  97. package/css/classless/aria.css +64 -0
  98. package/css/classless/classless.css +124 -0
  99. package/css/classless/full.css +11 -0
  100. package/css/classless/more.css +340 -0
  101. package/css/classless/simple.css +103 -0
  102. package/css/classless/snippeds/a/icons.css +12 -0
  103. package/css/classless/snippeds/experiments/conventions.css +41 -0
  104. package/css/classless/snippeds/hr/gradient.css +3 -0
  105. package/css/classless/snippeds/hr/section_sign.css +16 -0
  106. package/css/classless/snippeds/hr/tests.html +50 -0
  107. package/css/classless/tests/aria.html +101 -0
  108. package/css/classless/tests/foreign/classless-almond.css.html +445 -0
  109. package/css/classless/tests/foreign/classless-classless.css.html +831 -0
  110. package/css/classless/tests/foreign/classless-mvp.html +415 -0
  111. package/css/classless/tests/foreign/classless.sakura.html +224 -0
  112. package/css/classless/tests/foreign/stylestage.dev.html +304 -0
  113. package/css/classless/tests/foreign/test-homogenizer.html +433 -0
  114. package/css/classless/tests/foreign/test-html5-elements-tester.html +956 -0
  115. package/css/classless/tests/foreign/test-opinionated_css.html +148 -0
  116. package/css/classless/tests/list-bullet.html +110 -0
  117. package/css/classless/tests/more.html +246 -0
  118. package/css/classless/tests/oklch.experiments.html +280 -0
  119. package/css/classless/tests/test.html +106 -0
  120. package/css/classless/tests/variables.html +109 -0
  121. package/css/classless/variables.css +99 -0
  122. package/css/norm/README.md +37 -0
  123. package/css/norm/beta.css +40 -0
  124. package/css/norm/norm.css +98 -0
  125. package/css/norm/oldies.css +60 -0
  126. package/css/norm/tests/test.html +434 -0
  127. package/css/norm/tests/test.js +103 -0
  128. package/el/accordion/README.md +59 -0
  129. package/el/accordion/accordion.css +7 -0
  130. package/el/accordion/accordion.js +258 -0
  131. package/el/accordion/manifest.json +57 -0
  132. package/el/accordion/tests/minimal.html +44 -0
  133. package/el/accordion/tests/test.html +168 -0
  134. package/el/alert/README.md +67 -0
  135. package/el/alert/alert copy.js +224 -0
  136. package/el/alert/alert.css +73 -0
  137. package/el/alert/alert.js +187 -0
  138. package/el/alert/manifest.json +77 -0
  139. package/el/alert/tests/minimal.html +36 -0
  140. package/el/alert/tests/test.html +105 -0
  141. package/el/buttongroup/README.md +36 -0
  142. package/el/buttongroup/buttongroup.css +30 -0
  143. package/el/buttongroup/buttongroup.js +56 -0
  144. package/el/buttongroup/tests/minimal.html +31 -0
  145. package/el/buttongroup/tests/test.html +83 -0
  146. package/el/bytes/README.md +41 -0
  147. package/el/bytes/bytes.css +6 -0
  148. package/el/bytes/bytes.js +97 -0
  149. package/el/bytes/manifest.json +95 -0
  150. package/el/bytes/tests/minimal.html +19 -0
  151. package/el/bytes/tests/test.html +117 -0
  152. package/el/carousel/README.md +52 -0
  153. package/el/carousel/carousel.css +46 -0
  154. package/el/carousel/carousel.js +371 -0
  155. package/el/carousel/manifest.json +58 -0
  156. package/el/carousel/tests/experiments.html +77 -0
  157. package/el/carousel/tests/minimal.html +31 -0
  158. package/el/carousel/tests/nested.html +54 -0
  159. package/el/carousel/tests/test.html +136 -0
  160. package/el/carousel-nav/README.md +40 -0
  161. package/el/carousel-nav/carousel-nav.js +74 -0
  162. package/el/carousel-nav/tests/minimal.html +32 -0
  163. package/el/carousel-nav/tests/test.html +59 -0
  164. package/el/code/README.md +68 -0
  165. package/el/code/code.css +46 -0
  166. package/el/code/code.js +289 -0
  167. package/el/code/manifest.json +66 -0
  168. package/el/code/tests/minimal.html +35 -0
  169. package/el/code/tests/test.html +162 -0
  170. package/el/copy/README.md +35 -0
  171. package/el/copy/copy.css +3 -0
  172. package/el/copy/copy.js +118 -0
  173. package/el/copy/manifest.json +49 -0
  174. package/el/copy/tests/minimal.html +21 -0
  175. package/el/copy/tests/test.html +75 -0
  176. package/el/counter/README.md +47 -0
  177. package/el/counter/counter.css +8 -0
  178. package/el/counter/counter.js +95 -0
  179. package/el/counter/manifest.json +59 -0
  180. package/el/counter/tests/minimal.html +27 -0
  181. package/el/counter/tests/test.html +106 -0
  182. package/el/ico/README.md +162 -0
  183. package/el/ico/font/Font Awesome.css +22 -0
  184. package/el/ico/font/LigatureSymbols.css +7 -0
  185. package/el/ico/font/Material Icons.css +6 -0
  186. package/el/ico/font/RemixFilled.css +8 -0
  187. package/el/ico/font/RemixOutlined.css +8 -0
  188. package/el/ico/font/old/anicons.css +31 -0
  189. package/el/ico/font/old/devicons.css +210 -0
  190. package/el/ico/font/old/material.all.css +36 -0
  191. package/el/ico/font/old/remix.css +15 -0
  192. package/el/ico/font/old/utf8.css +54 -0
  193. package/el/ico/ico.css +111 -0
  194. package/el/ico/ico.js +189 -0
  195. package/el/ico/manifest.json +86 -0
  196. package/el/ico/tests/combinations.html +86 -0
  197. package/el/ico/tests/emojis.html +213 -0
  198. package/el/ico/tests/fonts.html +110 -0
  199. package/el/ico/tests/ico-directory.html +254 -0
  200. package/el/ico/tests/minimal.html +46 -0
  201. package/el/ico/tests/test.html +210 -0
  202. package/el/ico/tests/util-multi.svg +6 -0
  203. package/el/ico/tests/util.css +2 -0
  204. package/el/ico/tests/util.js +110 -0
  205. package/el/input/README.md +39 -0
  206. package/el/input/input.css +35 -0
  207. package/el/input/input.js +331 -0
  208. package/el/input/tests/formParticipation.html +113 -0
  209. package/el/input/tests/minimal.html +33 -0
  210. package/el/input/tests/test.html +258 -0
  211. package/el/masonry/README.md +51 -0
  212. package/el/masonry/manifest.json +60 -0
  213. package/el/masonry/masonry.css +27 -0
  214. package/el/masonry/masonry.js +92 -0
  215. package/el/masonry/tests/minimal.html +39 -0
  216. package/el/masonry/tests/test.html +42 -0
  217. package/el/number/README.md +47 -0
  218. package/el/number/manifest.json +121 -0
  219. package/el/number/number.css +6 -0
  220. package/el/number/number.js +67 -0
  221. package/el/number/tests/minimal.html +25 -0
  222. package/el/number/tests/test.html +138 -0
  223. package/el/out/README.md +32 -0
  224. package/el/out/manifest.json +38 -0
  225. package/el/out/out.css +2 -0
  226. package/el/out/out.js +59 -0
  227. package/el/out/tests/minimal.html +25 -0
  228. package/el/out/tests/test.html +37 -0
  229. package/el/parallax-bg/README.md +36 -0
  230. package/el/parallax-bg/parallax-bg.css +13 -0
  231. package/el/parallax-bg/parallax-bg.js +186 -0
  232. package/el/parallax-bg/tests/bg.jpg +0 -0
  233. package/el/parallax-bg/tests/bg1.jpg +0 -0
  234. package/el/parallax-bg/tests/bg2.jpg +0 -0
  235. package/el/parallax-bg/tests/demo.html +88 -0
  236. package/el/parallax-bg/tests/minimal.html +30 -0
  237. package/el/parallax-bg/tests/test.html +64 -0
  238. package/el/parallax-bg/tests/visible.html +90 -0
  239. package/el/qrcode/README.md +38 -0
  240. package/el/qrcode/manifest.json +43 -0
  241. package/el/qrcode/package.json +22 -0
  242. package/el/qrcode/qrcode.css +13 -0
  243. package/el/qrcode/qrcode.js +46 -0
  244. package/el/qrcode/tests/minimal.html +26 -0
  245. package/el/qrcode/tests/test.html +31 -0
  246. package/el/rating/README.md +45 -0
  247. package/el/rating/manifest.json +65 -0
  248. package/el/rating/rating.css +11 -0
  249. package/el/rating/rating.js +139 -0
  250. package/el/rating/tests/minimal.html +26 -0
  251. package/el/rating/tests/tests.html +77 -0
  252. package/el/rte/README.md +37 -0
  253. package/el/rte/rte.css +9 -0
  254. package/el/rte/rte.js +56 -0
  255. package/el/rte/tests/minimal.html +25 -0
  256. package/el/rte/tests/test.html +37 -0
  257. package/el/skeleton/README.md +30 -0
  258. package/el/skeleton/manifest.json +51 -0
  259. package/el/skeleton/skeleton.css +61 -0
  260. package/el/skeleton/skeleton.js +72 -0
  261. package/el/skeleton/tests/minimal.html +22 -0
  262. package/el/skeleton/tests/test.html +22 -0
  263. package/el/splitbutton/README.md +39 -0
  264. package/el/splitbutton/splitbutton.css +48 -0
  265. package/el/splitbutton/splitbutton.js +26 -0
  266. package/el/splitbutton/tests/minimal.html +30 -0
  267. package/el/splitbutton/tests/test.html +68 -0
  268. package/el/splitpanel/README.md +39 -0
  269. package/el/splitpanel/manifest.json +49 -0
  270. package/el/splitpanel/splitpanel.css +17 -0
  271. package/el/splitpanel/splitpanel.js +116 -0
  272. package/el/splitpanel/tests/minimal.html +31 -0
  273. package/el/splitpanel/tests/tests.html +121 -0
  274. package/el/table/README.md +68 -0
  275. package/el/table/manifest.json +43 -0
  276. package/el/table/table.css +59 -0
  277. package/el/table/table.js +194 -0
  278. package/el/table/tests/minimal.html +38 -0
  279. package/el/table/tests/test.html +108 -0
  280. package/el/tabs/README.md +50 -0
  281. package/el/tabs/manifest.json +59 -0
  282. package/el/tabs/tabs.css +23 -0
  283. package/el/tabs/tabs.js +210 -0
  284. package/el/tabs/tests/minimal.html +35 -0
  285. package/el/tabs/tests/test.html +180 -0
  286. package/el/textfit/README.md +34 -0
  287. package/el/textfit/manifest.json +45 -0
  288. package/el/textfit/tests/minimal.html +25 -0
  289. package/el/textfit/tests/test.html +26 -0
  290. package/el/textfit/textfit.css +6 -0
  291. package/el/textfit/textfit.js +80 -0
  292. package/el/time/README.md +72 -0
  293. package/el/time/manifest.json +118 -0
  294. package/el/time/tests/minimal.html +19 -0
  295. package/el/time/tests/test.html +160 -0
  296. package/el/time/time copy.js +141 -0
  297. package/el/time/time.js +168 -0
  298. package/el/time/time.old.uhtml.js +129 -0
  299. package/el/tooltip/README.md +48 -0
  300. package/el/tooltip/manifest.json +69 -0
  301. package/el/tooltip/tests/minimal.html +25 -0
  302. package/el/tooltip/tests/test.html +178 -0
  303. package/el/tooltip/tooltip.css +97 -0
  304. package/el/tooltip/tooltip.js +82 -0
  305. package/el/tree1/README.md +111 -0
  306. package/el/tree1/manifest.json +78 -0
  307. package/el/tree1/tests/animated.html +134 -0
  308. package/el/tree1/tests/custom.html +51 -0
  309. package/el/tree1/tests/minimal.html +44 -0
  310. package/el/tree1/tests/test.html +260 -0
  311. package/el/tree1/tree1.css +26 -0
  312. package/el/tree1/tree1.js +265 -0
  313. package/el/typewriter/README.md +62 -0
  314. package/el/typewriter/manifest.json +66 -0
  315. package/el/typewriter/tests/minimal.html +25 -0
  316. package/el/typewriter/tests/test.html +78 -0
  317. package/el/typewriter/typewriter.css +6 -0
  318. package/el/typewriter/typewriter.js +166 -0
  319. package/el/typewriter/typewriter.mp3 +0 -0
  320. package/js/Placer/Placer.js +156 -0
  321. package/js/Placer/README.md +62 -0
  322. package/js/Placer/tests/minimal.html +34 -0
  323. package/js/Placer/tests/test.html +49 -0
  324. package/js/PointerObserver/PointerObserver.js +130 -0
  325. package/js/PointerObserver/README.md +34 -0
  326. package/js/PointerObserver/tests/minimal.html +29 -0
  327. package/js/PointerObserver/tests/test.html +35 -0
  328. package/js/SelectorObserver/README.md +47 -0
  329. package/js/SelectorObserver/SelectorObserver.js +201 -0
  330. package/js/SelectorObserver/tests/minimal.html +21 -0
  331. package/js/SelectorObserver/tests/test.html +57 -0
  332. package/js/SelectorObserver/tests/tests.html +161 -0
  333. package/js/contextmenu/README.md +93 -0
  334. package/js/contextmenu/contextmenu.js +336 -0
  335. package/js/contextmenu/tests/minimal.html +44 -0
  336. package/js/contextmenu/tests/test.html +131 -0
  337. package/js/dialog/README.md +49 -0
  338. package/js/dialog/dialog.js +261 -0
  339. package/js/dialog/notification.mp3 +0 -0
  340. package/js/dialog/tests/minimal.html +29 -0
  341. package/js/dialog/tests/notification.mp3 +0 -0
  342. package/js/dialog/tests/test.html +135 -0
  343. package/js/rte/README.md +44 -0
  344. package/js/rte/old/NodeCleaner.js +315 -0
  345. package/js/rte/old/Rte/Rte.mjs +316 -0
  346. package/js/rte/old/Rte/Rte.ui.items.mjs +543 -0
  347. package/js/rte/old/Rte/Rte.ui.mjs +154 -0
  348. package/js/rte/old/Rte/crossbrowser.mjs +323 -0
  349. package/js/rte/old/Rte/font/tinymce.svg +98 -0
  350. package/js/rte/old/Rte/font/tinymce.woff +0 -0
  351. package/js/rte/old/Rte/helpers.mjs +159 -0
  352. package/js/rte/old/Rte/htmlparser.mjs +178 -0
  353. package/js/rte/old/Rte/index.mjs +5 -0
  354. package/js/rte/old/Rte/main.css +189 -0
  355. package/js/rte/old/old.rte.js +132 -0
  356. package/js/rte/old/range-selection.old.js +394 -0
  357. package/js/rte/rte.js +7 -0
  358. package/js/rte/src/behavior.js +228 -0
  359. package/js/rte/src/events.js +73 -0
  360. package/js/rte/src/fixes.js +251 -0
  361. package/js/rte/src/range.js +472 -0
  362. package/js/rte/src/rte.js +72 -0
  363. package/js/rte/src/ui/items/ai.js +167 -0
  364. package/js/rte/src/ui/items/code.js +93 -0
  365. package/js/rte/src/ui/items/undo.js +183 -0
  366. package/js/rte/src/ui.items.js +571 -0
  367. package/js/rte/src/ui.js +269 -0
  368. package/js/rte/src/util/htmlparser.js +178 -0
  369. package/js/rte/src/util/indentHtml.js +48 -0
  370. package/js/rte/tests/ai.html +81 -0
  371. package/js/rte/tests/behavior.html +88 -0
  372. package/js/rte/tests/events.html +69 -0
  373. package/js/rte/tests/fixes.html +95 -0
  374. package/js/rte/tests/minimal.html +34 -0
  375. package/js/rte/tests/notes.md +6 -0
  376. package/js/rte/tests/range.html +167 -0
  377. package/js/rte/tests/selection-explorer.html +222 -0
  378. package/js/rte/tests/test.html +92 -0
  379. package/js/shortcut/README.md +33 -0
  380. package/js/shortcut/shortcut.js +89 -0
  381. package/js/shortcut/tests/minimal.html +23 -0
  382. package/js/shortcut/tests/test.html +68 -0
  383. package/package.json +12 -0
  384. package/u2/README.md +4 -0
  385. package/u2/auto.js +161 -0
  386. package/u2/auto.ui.js +85 -0
  387. package/u2/experiments/Waiter/test.html +132 -0
  388. package/u2/experiments/getElementByIdPromise/test.html +76 -0
  389. package/u2/experiments/patchInputValue.html +124 -0
  390. package/u2/experiments/radiobutton/test.html +75 -0
  391. package/u2/experiments/tests/test.html +223 -0
  392. package/u2/experiments/u1-responsive/responsive.js +62 -0
  393. package/u2/experiments/u1-responsive/test.html +65 -0
  394. package/u2/experiments/u2Element.js +139 -0
  395. package/u2/experiments/u2Element.test.html +47 -0
  396. package/u2/old-stuff/IterableWeakMap/mod.js +70 -0
  397. package/u2/old-stuff/css/onStyleSheet/mod.js +114 -0
  398. package/u2/old-stuff/css/onStyleSheet/monkeypatches.js +28 -0
  399. package/u2/old-stuff/css/onStyleSheet/test/include.css +19 -0
  400. package/u2/old-stuff/css/onStyleSheet/test/style-has-include.css +6 -0
  401. package/u2/old-stuff/css/onStyleSheet/test/style-no-include.css +3 -0
  402. package/u2/old-stuff/css/onStyleSheet/test/test.html +48 -0
  403. package/u2/old-stuff/css/parser/mod.js +182 -0
  404. package/u2/old-stuff/css/parser/parser_old/mod.js +128 -0
  405. package/u2/old-stuff/css/parser/parser_old/test.html +43 -0
  406. package/u2/old-stuff/css/parser/parser_old/util.js +22 -0
  407. package/u2/old-stuff/css/parser/style.html +52 -0
  408. package/u2/old-stuff/css/parser/test.html +38 -0
  409. package/u2/old-stuff/el/ai-texter/README.md +23 -0
  410. package/u2/old-stuff/el/ai-texter/ai-texter.css +12 -0
  411. package/u2/old-stuff/el/ai-texter/ai-texter.js +153 -0
  412. package/u2/old-stuff/el/ai-texter/tests/minimal.html +47 -0
  413. package/u2/old-stuff/el/ai-texter/tests/test.html +71 -0
  414. package/u2/old-stuff/init.js +38 -0
  415. package/u2/old-stuff/markHashLinks.js +51 -0
  416. package/u2/old-stuff/onElement/mod.js +73 -0
  417. package/u2/old-stuff/test-helpers/mod.js +36 -0
  418. package/u2/old-stuff/test-helpers/test.html +4 -0
  419. package/u2/old-stuff/tests/init.js.html +51 -0
  420. package/u2/old-stuff/viewport.js +64 -0
  421. package/u2/projects.json +468 -0
  422. package/u2/tests/boilerplate.html +46 -0
  423. package/u2/tests/kacheln.html +245 -0
  424. package/u2/tests/showcase.html +270 -0
  425. package/u2/tests/showcase2.html +157 -0
  426. package/u2/tests/test-init.js +35 -0
  427. package/u2/tests/test.html +355 -0
  428. package/u2/tools/baseElement.js +95 -0
  429. package/u2/tools/baseElement.test.html +119 -0
  430. package/u2/tools/ce-inspector.js +308 -0
  431. package/u2/tools/ce-inspector.test.html +66 -0
  432. package/u2/tools/ce-manfest-from-element.js +207 -0
  433. package/u2/tools/dev-iframe.js +213 -0
  434. package/u2/tools/dev-iframe.test.html +75 -0
  435. package/u2/tools/eventsExplorer.js +101 -0
  436. package/u2/tools/logo/u1.svg +9 -0
  437. package/u2/tools/logo/u1ui.svg +6 -0
  438. package/u2/tools/update.repos.json.js +234 -0
  439. package/u2/u2.js +14 -0
  440. package/u2/utils.js +59 -0
@@ -0,0 +1,47 @@
1
+ <!DOCTYPE html>
2
+ <html lang=en>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width">
6
+ <title>Demo Page | U2-Design-System</title>
7
+ <script src="./test-init.js" type=module async></script>
8
+ <script src="../auto.js" type=module async></script>
9
+
10
+
11
+ <body>
12
+
13
+
14
+ <script type=module>
15
+ import {U2Element} from './u2Element.js';
16
+
17
+ class myEl extends U2Element {
18
+ // static outerSheets = [
19
+ // import.meta.resolve('./u2Element.css'),
20
+ // ];
21
+ // static shadowSheets = [
22
+ // import.meta.resolve('./../../css/norm/norm.css'),
23
+ // import.meta.resolve('./../../css/base/base.css'),
24
+ // ];
25
+ static outerCss = 'display:block';
26
+ static css = ' slot { background:red; display:inline-block; } ';
27
+ static shadow = 'Hi <slot></slot>';
28
+ onClick(event) {
29
+ console.log({
30
+ event,
31
+ scope: this,
32
+ })
33
+ alert('clicked (view console)');
34
+ }
35
+ }
36
+
37
+ console.log(myEl.prototype)
38
+
39
+ customElements.define('my-el', myEl);
40
+
41
+ </script>
42
+
43
+
44
+ <my-el id="el1">My Element</my-el>
45
+ <my-el>My Element 2</my-el>
46
+
47
+
@@ -0,0 +1,70 @@
1
+ // IterableWeakSet not complete: https://gist.github.com/seanlinsley/bc10378fd311d75cf6b5e80394be813d
2
+
3
+ export class IterableWeakMap {
4
+ #weakMap = new WeakMap();
5
+ #refSet = new Set();
6
+ #finalizationGroup = new FinalizationRegistry(IterableWeakMap.#cleanup);
7
+
8
+ static #cleanup({ set, ref }) {
9
+ set.delete(ref);
10
+ }
11
+
12
+ constructor(iterable) {
13
+ for (const [key, value] of iterable) {
14
+ this.set(key, value);
15
+ }
16
+ }
17
+
18
+ set(key, value) {
19
+ const ref = new WeakRef(key);
20
+
21
+ this.#weakMap.set(key, { value, ref });
22
+ this.#refSet.add(ref);
23
+ this.#finalizationGroup.register(key, {
24
+ set: this.#refSet,
25
+ ref
26
+ }, ref);
27
+ }
28
+
29
+ get(key) {
30
+ const entry = this.#weakMap.get(key);
31
+ return entry && entry.value;
32
+ }
33
+
34
+ delete(key) {
35
+ const entry = this.#weakMap.get(key);
36
+ if (!entry) {
37
+ return false;
38
+ }
39
+
40
+ this.#weakMap.delete(key);
41
+ this.#refSet.delete(entry.ref);
42
+ this.#finalizationGroup.unregister(entry.ref);
43
+ return true;
44
+ }
45
+
46
+ *[Symbol.iterator]() {
47
+ for (const ref of this.#refSet) {
48
+ const key = ref.deref();
49
+ if (!key) continue;
50
+ const { value } = this.#weakMap.get(key);
51
+ yield [key, value];
52
+ }
53
+ }
54
+
55
+ entries() {
56
+ return this[Symbol.iterator]();
57
+ }
58
+
59
+ *keys() {
60
+ for (const [key, value] of this) {
61
+ yield key;
62
+ }
63
+ }
64
+
65
+ *values() {
66
+ for (const [key, value] of this) {
67
+ yield value;
68
+ }
69
+ }
70
+ }
@@ -0,0 +1,114 @@
1
+ import {SelectorObserver} from '../../../js/SelectorObserver/SelectorObserver.js';
2
+
3
+ const sheets = new WeakSet();
4
+ const elements = new WeakSet();
5
+
6
+ const start = performance.now();
7
+
8
+ async function foundElement(el, byDebug){
9
+ console.log('found new Element by '+byDebug, el, performance.now()-start+'ms');
10
+ if (elements.has(el)) return; // what if element order changes?
11
+ el.setAttribute('crossorigin','');
12
+ elements.add(el);
13
+ const sheet = await elSheetReady(el);
14
+ checkSheet(el.sheet);
15
+ }
16
+
17
+ /*
18
+ document.styleSheets has the right order of sheets, but imported sheets are not included
19
+ */
20
+ for (let sheet of document.styleSheets) {
21
+ if (!sheet.ownerNode) console.warn('are root-sheets without ownerNode possible?');
22
+ foundElement(sheet.ownerNode, 'document.styleSheets');
23
+ }
24
+ for (let sheet of document.adoptedStyleSheets) {
25
+ if (sheet.ownerNode) console.warn('adoptedStyleSheets with a ownerNode possible?');
26
+ foundElement(sheet.ownerNode, 'document.adoptedStyleSheets');
27
+ }
28
+
29
+ /*
30
+ sometimes the load-event comes before mutationobserver? not really
31
+ - first big .css?
32
+ has to listen on document, window triggers on document-load
33
+ */
34
+ document.addEventListener('load',({target})=>{
35
+ foundElement(target, 'load')
36
+ if (!elements.has(target)) console.warn('load was first!!!');
37
+ // console.log('triggered load', target, e);
38
+ // if (target.tagName !== 'LINK') return;
39
+ // if (target.rel !== 'stylesheet') return;
40
+ // foundElement(target)
41
+ },true);
42
+
43
+ new SelectorObserver({
44
+ on: el => {
45
+ // checks all styleSheets and importRules, todo store urls global and check all if used url found
46
+ // console.log(el.sheet)
47
+ foundElement(el, 'SelectorObserver')
48
+ //checkAllSheets();
49
+ },
50
+ }).observe('link[rel="stylesheet"], style');
51
+
52
+
53
+ function checkSheet(sheet){
54
+ let rules = false;
55
+ try { rules = sheet.cssRules; } catch {} // firefox fails sometimes if we access sheet.cssRules immediate after found it, really?
56
+ console.log('sheet found', rules?'rules accessible':'rules fail', sheet)
57
+ if (sheets.has(sheet)) console.error('sheet already added!?');
58
+ sheets.add(sheet);
59
+ rules && checkImportRules(rules);
60
+ }
61
+ function checkImportRules(rules){
62
+ for (let rule of rules) {
63
+ if (rule instanceof CSSImportRule) {
64
+ checkSheet(rule.styleSheet);
65
+ } else continue; // or break? are they always first?
66
+ }
67
+ }
68
+
69
+
70
+ /*
71
+ const urls = {};
72
+ function checkAllSheets(){
73
+ for (let sheet of document.styleSheets) checkSheet(sheet);
74
+ }
75
+ function checkSheet(sheet){
76
+ console.log('sheet',sheet)
77
+ try { // firefox fails sometimes if we access sheet.cssRules immediate after found it
78
+ checkImportRules(sheet.cssRules);
79
+ } catch (e) {
80
+ //console.log('fail',sheet, e) //
81
+ }
82
+ if (!sheet.href) return;
83
+ console.log(urls)
84
+ if (medialistHas(sheet.media, 'once')) {
85
+ sheet.disabled = !!urls[sheet.href];
86
+ urls[sheet.href] = 1;
87
+ }
88
+
89
+ }
90
+ function checkImportRules(rules){
91
+ for (let rule of rules) {
92
+ if (rule instanceof CSSImportRule) checkSheet(rule.styleSheet);
93
+ }
94
+ }
95
+ function medialistHas(mediaList, wanted){
96
+ for (let medium of mediaList) if (medium === wanted) return true;
97
+ }
98
+ */
99
+
100
+ /* utils */
101
+
102
+ function elSheetReady(el){
103
+ return new Promise(function(resolve, reject){
104
+ if (el.sheet) resolve(el.sheet);
105
+ el.addEventListener('load',()=>{
106
+ if (el.sheet) resolve(el.sheet);
107
+ else {
108
+ console.log('no sheet yet', el);
109
+ reject('no sheet!');
110
+ }
111
+ },{once:true})
112
+ setTimeout(()=>reject('timeout'),2000)
113
+ })
114
+ }
@@ -0,0 +1,28 @@
1
+
2
+ const sheetProto = CSSStyleSheet.prototype;
3
+
4
+ // sheetProto.addRule
5
+ // sheetProto.deleteRule
6
+ // sheetProto.insertRule
7
+ // sheetProto.removeRule
8
+ // sheetProto.replace
9
+ // sheetProto.media
10
+ // //sheetProto.disabled ??
11
+
12
+
13
+ const elProto = HTMLElement.prototype
14
+ elProto.style // ??
15
+ elProto.setAttribute // ??
16
+
17
+
18
+ // document.adoptedStyleSheets
19
+
20
+
21
+ const styleProto = CSSStyleDeclaration.prototype
22
+
23
+ // styleProto.cssText
24
+ // styleProto.getPropertyPriority
25
+ // styleProto.getPropertyValue
26
+ // //styleProto.item ??
27
+ // styleProto.removeProperty
28
+ // styleProto.setProperty
@@ -0,0 +1,19 @@
1
+
2
+ @charset "UTF-8";
3
+ body {
4
+ --background:blue;
5
+
6
+ --test:blue
7
+ asdf
8
+ }
9
+
10
+
11
+ {}
12
+
13
+ a{
14
+ background: black;
15
+ }
16
+
17
+ @me🎆dia {
18
+ background: black;
19
+ }
@@ -0,0 +1,6 @@
1
+ @import url(./include.css);
2
+
3
+ body {
4
+ x:y;
5
+ background:transparent;
6
+ }
@@ -0,0 +1,3 @@
1
+ body {
2
+ background:transparent;
3
+ }
@@ -0,0 +1,48 @@
1
+ <!DOCTYPE html>
2
+ <html lang=en>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width">
6
+ <title>u2-ico Test</title>
7
+
8
+ <link rel=stylesheet href="./style-has-include.css" id=aLink media=screen>
9
+ <link rel=stylesheet href="./style-no-include.css" >
10
+
11
+ <link rel=stylesheet href="../../../css/norm/norm.css" crossorigin>
12
+ <link rel=stylesheet href="../../../css/base/base.css">
13
+
14
+ </head>
15
+ <body>
16
+
17
+ <style id=aStyle>
18
+ .style {
19
+ before:x;
20
+ }
21
+ </style>
22
+
23
+ <script type=module>
24
+ import '../mod.js';
25
+
26
+ setTimeout(function(){
27
+
28
+ console.assert(aLink.sheet.media.item(0) === 'screen', {errorMsg: 'sheet has the mediaList of its element'});
29
+
30
+
31
+ console.log('dynamic add <link rel=stylesheet> elements')
32
+ placeholder.innerHTML =
33
+ `<link rel=stylesheet href="./style-has-include.css">
34
+ <link rel=stylesheet href="./style-no-include.css">`;
35
+ },3000)
36
+ </script>
37
+
38
+
39
+ <style>
40
+ .style {
41
+ after:x;
42
+ }
43
+ </style>
44
+
45
+
46
+
47
+ <div id=placeholder>
48
+ </div>
@@ -0,0 +1,182 @@
1
+ // similiar:
2
+ // https://github.com/anatoo/fnparse.js
3
+ // https://github.com/francisrstokes/arcsecond
4
+
5
+
6
+ export function stringIterator(string) {
7
+ let pos = {line:0, column:0, position:0};
8
+
9
+ return object({
10
+ pointer:0,
11
+ char:string[0],
12
+ async next(){
13
+ ++this.pointer;
14
+ this.char = string[this.pointer];
15
+
16
+ // ++pos.position;
17
+ // ++pos.column;
18
+ // if (this.char === "\n") { ++pos.line; pos.column = 0; }
19
+
20
+ return this.char !== undefined;
21
+ },
22
+ async at(pointer){
23
+ return string[pointer];
24
+ },
25
+ take(start, end) {
26
+ return string.slice(start, end);
27
+ /* // remove used part to save memory, only root consumers?
28
+ let part = string.slice(start, end);
29
+ string = string.substring(end);
30
+ this.pointer = 0;
31
+ return part;
32
+ */
33
+ },
34
+ /*
35
+ position(){
36
+ return pos;
37
+ }
38
+ */
39
+ //lookOut(offset) { return string[this.pointer+offset]; }, // char att offset relative to position
40
+ });
41
+ }
42
+
43
+
44
+
45
+
46
+ var errorConsumer = fnConsumer(async strIter=>{
47
+ await strIter.next();
48
+ }, 'no expected');
49
+
50
+
51
+ export async function tokenize(consumers, strIter, parent) { // startedAt needed?
52
+ var tokens = [];
53
+ let activeToken = null;
54
+
55
+ consumers.push(errorConsumer)
56
+
57
+ while (strIter.char !== undefined) {
58
+
59
+ let oldPos = strIter.pointer; // check if moved
60
+
61
+ for (let consumer of consumers) {
62
+ let consumed = await consumer(strIter);
63
+ if (consumed) {
64
+ activeToken = token(strIter, {...consumed, parent, prev:activeToken});
65
+ console.log(activeToken)
66
+ tokens.push(activeToken);
67
+ break;
68
+ }
69
+ }
70
+
71
+ if (oldPos === strIter.pointer) {
72
+ console.warn('strIter position not moved! zzz?');
73
+ await strIter.next();
74
+ }
75
+
76
+ }
77
+ return tokens;
78
+ }
79
+ function token(strIter, data){
80
+ var obj = Object.create(null);
81
+ Object.assign(obj, data);
82
+ obj.text = strIter.take(obj.start, obj.end);
83
+ return obj;
84
+ }
85
+
86
+
87
+
88
+ /* consumer generators */
89
+
90
+ export function charsConsumer(chars, name) {
91
+ const set = new Set(chars);
92
+ return fnConsumer(async strIter=>{
93
+ while (set.has(strIter.char) && await strIter.next());
94
+ }, name??chars);
95
+ }
96
+ export function fnConsumer(fn, name) {
97
+ name ??= fn.name;
98
+ return async strIter=>{
99
+ let start = strIter.pointer;
100
+ var data = await fn(strIter);
101
+ if (start !== strIter.pointer) return Object.assign({name, start, end:strIter.pointer}, data);
102
+ }
103
+ }
104
+ export function startEndConsumer(start, end, escape, name){
105
+ name ??= start;
106
+ var startLen = start.length;
107
+ return fnConsumer(async function(strIter){
108
+ if (! await matchStart(strIter, start)) return;
109
+ for (let i=startLen; i>1; i--) await strIter.next();
110
+ while (await strIter.next()){
111
+
112
+ if (await strIter.at(strIter.pointer-1) === escape) continue; // only works as singel char end
113
+
114
+ if (await matchEnd(strIter, end)) {
115
+ await strIter.next(); // move to the next char
116
+ return;
117
+ }
118
+ }
119
+ }, name);
120
+ }
121
+
122
+
123
+ /* helpers */
124
+
125
+ export async function matchStart(strIter, str){
126
+ var pos = 0;
127
+ while (str[pos] === await strIter.at(strIter.pointer + pos)) {
128
+ if (str[++pos] === undefined) return true;
129
+ }
130
+ }
131
+ export async function matchEnd(strIter, str){
132
+ let length = str.length-1;
133
+ var pos = length;
134
+ while (str[pos] === await strIter.at(strIter.pointer - (length-pos))) {
135
+ if (--pos === -1) return true;
136
+ }
137
+ }
138
+
139
+
140
+
141
+ export function object(obj){
142
+ return Object.setPrototypeOf(obj,null);
143
+ }
144
+
145
+
146
+
147
+
148
+ /*
149
+ async function stringInterator(stream){
150
+ const reader = stream.getReader();
151
+ let result = '';
152
+ let streamDone = false;
153
+
154
+ async function read(){
155
+ let state = await reader.read();
156
+ streamDone = state.done;
157
+ obj.string += state.value;
158
+ }
159
+
160
+ const obj = object({
161
+ string: '',
162
+ position: -1,
163
+ async next(){
164
+ ++this.pointer;
165
+ if (this.string[this.pointer] === undefined) {
166
+ if (!streamDone) await read();
167
+ this.char = string[this.pointer];
168
+ }
169
+ return this.char !== undefined;
170
+ },
171
+ async at(position){
172
+ while(1) {
173
+ let char = this.string[position];
174
+ if (char !== undefined) return char;
175
+ if (streamDone) return false;
176
+ await read();
177
+ }
178
+ }
179
+ });
180
+ return obj;
181
+ }
182
+ */
@@ -0,0 +1,128 @@
1
+ import { stringGenerator } from "./util.js";
2
+
3
+
4
+
5
+ const tokens = {
6
+ anyChar: {
7
+ match:(char)=>{
8
+ return true
9
+ }
10
+ },
11
+ whiteSpace(strGen){
12
+ return strGen.cha === ' ' || strGen.cha === "\n" || strGen.cha === "\t";
13
+ },
14
+ }
15
+
16
+
17
+ export function parse(str) {
18
+ const strGen = stringGenerator(str);
19
+ walkParser(stylesheet, strGen)
20
+ }
21
+
22
+ function walkParser(parser, strGen){
23
+
24
+ let startOuter = strGen.position;
25
+ let endOuter = null;
26
+
27
+ if (parser.start) startOuter -= parser.start.length;
28
+
29
+ let char = strGen.current();
30
+ do {
31
+ if (parser.end && parser.end.match(char)) {
32
+ endOuter = strGen.position + 1;
33
+ break; // reached end
34
+ }
35
+ if (parser.contains) for (let subParser of parser.contains) {
36
+ if (subParser.start.match(char)) {
37
+ // todo: reset all subparser starts?
38
+ strGen.next()
39
+ walkParser(subParser, strGen); // continue in subParser if start matches
40
+ }
41
+ }
42
+ } while(char = strGen.next());
43
+
44
+ endOuter ??= strGen.position;
45
+
46
+ var outer = strGen.string.slice(startOuter, endOuter);
47
+ console.log('----' + parser.name + ': ---- ');
48
+ console.dir('`'+outer+'`');
49
+ }
50
+
51
+
52
+ const comment = parser('comment', '/*', [], '*/');
53
+ const slComment = parser('comment', '//', [], "\n");
54
+
55
+ /*
56
+ const comment = {
57
+ name:'comment'
58
+ start:'/*',
59
+ end:'* /',
60
+ };
61
+ const slComment = {
62
+ name:'slComment'
63
+ start:'//',
64
+ endBefore:"\n",
65
+ }
66
+ const dqString = {
67
+ name:'string double-quote'
68
+ start:'"',
69
+ end:'"',
70
+ }
71
+ */
72
+
73
+
74
+
75
+ const stringDEscape = parser('string dq escape', '\\', [],'"');
76
+ const stringSEscape = parser('string sq escape', '\\', [],"'");
77
+ //const stringD = parser('string dq', '"', [stringDEscape],'"');
78
+
79
+ const stringD = parser('string dq', '"', ['\\"'],'"');
80
+ const stringS = parser('string sq', "'", [stringSEscape],"'");
81
+
82
+ const stylesheet = parser('stylesheet', '', [comment,slComment] );
83
+
84
+ /*
85
+ const comment = parser('comment', '/*', [], '* /');
86
+
87
+ const stringDEscape = parser('string dq escape', '\\', [],'"');
88
+ const stringSEscape = parser('string sq escape', '\\', [],"'");
89
+ const stringD = parser('string dq', '"', [stringDEscape],'"');
90
+ const stringS = parser('string sq', "'", [stringSEscape],"'");
91
+
92
+ const block = parser('block', '{', [stringS],'}');
93
+ const selector = parser('selector', '.', [comment], '{');
94
+ const declaration = parser('declaration', '', [block,stringS,stringD],';');
95
+ const rule = parser('rule', '', [selector, declaration, comment], '}');
96
+ const atStatement = parser('at-statment', '@', [stringD, stringS], ';');
97
+ const atBlock = parser('at-block', '@', [stringS, block],'}');
98
+ const stylesheet = parser('stylesheet', '', [comment, atStatement, atBlock, rule], '}');
99
+ */
100
+
101
+
102
+
103
+
104
+ /*
105
+ stylesheetRule = {
106
+ contains:[whiteSpace,atRule,rule],
107
+ }
108
+ */
109
+ function parser(name, start, contains, end){
110
+ if (!contains) contains = [];
111
+ if (!Array.isArray(contains)) contains = [contains];
112
+ return {
113
+ name,
114
+ contains,
115
+ start: toToken(start),
116
+ end: end&&toToken(end),
117
+ }
118
+ }
119
+
120
+
121
+ function toToken(token){
122
+ if (token === '') return tokens.anyChar;
123
+ return stringGenerator(token);
124
+ if (typeof token === 'string' && token.lenght > 1) {
125
+ return stringGenerator(token);
126
+ }
127
+ if (token.match) return token;
128
+ }
@@ -0,0 +1,43 @@
1
+ <!DOCTYPE html>
2
+ <html lang=en>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width">
6
+ <title>parser</title>
7
+
8
+
9
+ <script="./mod.js"></script>
10
+ </head>
11
+ <body>
12
+
13
+
14
+ <script type=module>
15
+
16
+ import {parse} from './mod.js';
17
+
18
+ // parse(
19
+ // `@import \'xy\\\'z\';
20
+ // .a /* test */ {
21
+ // b:x;
22
+ // a:var(--test);
23
+ // }
24
+ // /* x */
25
+ // hallo welt
26
+ // /* * / */
27
+ // test`
28
+ // );
29
+
30
+ let str = `a /* /* \\*/ b
31
+ //sl
32
+ x
33
+ `
34
+ console.log(str)
35
+
36
+ parse(str);
37
+
38
+
39
+
40
+
41
+
42
+
43
+ </script>