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,130 @@
1
+
2
+ const d = document;
3
+
4
+ export class PointerObserver {
5
+ constructor(el, options) {
6
+
7
+ this.options = Object.assign({
8
+ mouse: true,
9
+ touch: true,
10
+ passive: true,
11
+ }, options);
12
+
13
+ this.el = el;
14
+ this.pos = {};
15
+ this.last = {};
16
+ this.posStart = {};
17
+
18
+ this.start = this.start.bind(this);
19
+ this.move = this.move.bind(this);
20
+ this.stop = this.stop.bind(this);
21
+
22
+
23
+ el.addEventListener('mousedown', this.start); // why mousedown when only options.touch? To be able to change options after creating the observer?
24
+ el.addEventListener('touchstart', this.start, {passive: this.options.passive});
25
+ }
26
+ start(e) {
27
+ if (this.running) return;
28
+ if (e.type === 'mousedown' && !this.options.mouse) return;
29
+ if (e.type === 'touchstart' && !this.options.touch) return;
30
+ //if (e.type === 'touchstart') this.touching = true;
31
+ //if (this.touching && e.type === 'mousedown') return;
32
+
33
+ let pointer = e;
34
+ if (e.touches) {
35
+ pointer = e.touches[0];
36
+ if (e.touches.length > 1) return; // only the first finger is interesting
37
+ this.identifier = pointer.identifier;
38
+ }
39
+
40
+
41
+ this.abortCtrl = new AbortController();
42
+ let signal = this.abortCtrl.signal;
43
+
44
+ this.posStart = this.pos = {
45
+ x:pointer.pageX,
46
+ y:pointer.pageY
47
+ };
48
+
49
+ this.onstart && this.onstart(e);
50
+
51
+ if (this.options.mouse) {
52
+ d.addEventListener('mousemove', this.move, {signal});
53
+ d.addEventListener('mouseup' , this.stop, {signal});
54
+ d.addEventListener('dragstart', this.stop, {signal});
55
+ }
56
+ if (this.options.touch) {
57
+ d.addEventListener('touchmove', this.move, {signal, passive: this.options.passive});
58
+ d.addEventListener('touchend' , this.stop, {signal});
59
+ //d.addEventListener('touchstart', gstart);
60
+ }
61
+ this.running = true;
62
+ }
63
+ move(e) {
64
+
65
+ let pointer = e;
66
+
67
+ if (e.touches) {
68
+ pointer = e.touches[0];
69
+
70
+ // const finger2 = e.touches[1];
71
+ // if (finger2 && this.ongesture) {
72
+ // const deltaX = pointer.pageX - finger2.pageX;
73
+ // const deltaY = pointer.pageY - finger2.pageY;
74
+ // const deg = Math.atan2(deltaY, deltaX) * 180 / Math.PI;
75
+ // e.rotate = deg -= this.degStart;
76
+ // const dist = Math.sqrt(deltaX*deltaX + deltaY*deltaY);
77
+ // e.scale = dist / this.distStart;
78
+ // this.ongesture && this.ongesture(e);
79
+ // }
80
+
81
+ if (pointer.identifier !== this.identifier) return;
82
+ }
83
+
84
+ this.last = this.pos;
85
+ this.pos = {
86
+ x: pointer.pageX,
87
+ y: pointer.pageY,
88
+ time: e.timeStamp,
89
+ };
90
+ if (this.last.x===this.pos.x && this.last.y === this.pos.y) return;
91
+
92
+ this.onmove && this.onmove(e);
93
+ }
94
+ stop(e) {
95
+ if (e.changedTouches && e.changedTouches[0].identifier !== this.identifier) return;
96
+ this.onstop && this.onstop(e);
97
+ this.abortCtrl.abort();
98
+ this.running = false;
99
+ }
100
+
101
+ get diff() { // should we direct calculate this before onmove? i think .startDiff is almost ever used
102
+ return {
103
+ x: this.pos.x - this.last.x,
104
+ y: this.pos.y - this.last.y,
105
+ time: this.pos.time - this.last.time,
106
+ };
107
+ }
108
+ get startDiff() {
109
+ return {
110
+ x: this.pos.x - this.posStart.x,
111
+ y: this.pos.y - this.posStart.y,
112
+ time: this.pos.time - this.posStart.time,
113
+ };
114
+ }
115
+
116
+ }
117
+
118
+
119
+ // todo?
120
+ // gstart = function(e) {
121
+ // var pointer = e.touches[0];
122
+ // var finger2 = e.touches[1];
123
+ // if (finger2) {
124
+ // var deltaX = pointer.pageX - finger2.pageX;
125
+ // var deltaY = pointer.pageY - finger2.pageY;
126
+ // self.degStart = Math.atan2(deltaY, deltaX) * 180 / Math.PI;
127
+ // self.distStart = Math.sqrt(deltaX*deltaX + deltaY*deltaY);
128
+ // self.ongesturestart && self.ongesturestart(e);
129
+ // }
130
+ // },
@@ -0,0 +1,34 @@
1
+ # PointerObserver.js
2
+ Observe mouse and touches
3
+
4
+ ## Usage
5
+
6
+ ```js
7
+ import {PointerObserver} from "../PointerObserver.js";
8
+ new PointerObserver(el).onmove = function(e){
9
+ console.log(this.pos);
10
+ }
11
+ ```
12
+
13
+ ```html
14
+ <div id=el style="position:absolute;">
15
+ StartObserving
16
+ </div>
17
+ ```
18
+
19
+ ## Install
20
+
21
+ ```js
22
+ import * as module from "https://cdn.jsdelivr.net/gh/u2ui/u2@x.x.x/js/PointerObserver/PointerObserver.min.js"
23
+ ```
24
+
25
+ ## Demos
26
+
27
+ [minimal.html](http://gcdn.li/u2ui/u2@main/js/PointerObserver/tests/minimal.html)
28
+ [test.html](http://gcdn.li/u2ui/u2@main/js/PointerObserver/tests/test.html)
29
+
30
+ ## About
31
+
32
+ - MIT License, Copyright (c) 2022 <u2> (like all repositories in this organization) <br>
33
+ - Suggestions, ideas, finding bugs and making pull requests make us very happy. ♥
34
+
@@ -0,0 +1,29 @@
1
+ <!DOCTYPE HTML>
2
+ <html lang=en>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name=viewport content="width=device-width">
6
+ <script src="../../../u2/tests/test-init.js" type=module async></script>
7
+
8
+ <link rel=stylesheet href="../../../css/classless/full.css">
9
+ <link rel=stylesheet href="../../../css/classless/aria.css">
10
+ <link rel=stylesheet href="../../../css/classless/simple.css">
11
+
12
+
13
+
14
+ <body>
15
+
16
+ <section class="main">
17
+
18
+ <div id=el style="position:absolute;">
19
+ StartObserving
20
+ </div>
21
+
22
+ </section>
23
+
24
+ <script type=module class="main">
25
+ import {PointerObserver} from "../PointerObserver.js";
26
+ new PointerObserver(el).onmove = function(e){
27
+ console.log(this.pos);
28
+ }
29
+ </script>
@@ -0,0 +1,35 @@
1
+ <!DOCTYPE HTML>
2
+ <html lang=en>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name=viewport content="width=device-width">
6
+ <script src="../../../u2/tests/test-init.js" type=module async></script>
7
+
8
+ <link rel=stylesheet href="../../../css/classless/full.css">
9
+ <link rel=stylesheet href="../../../css/classless/aria.css">
10
+ <link rel=stylesheet href="../../../css/classless/simple.css">
11
+
12
+ <body>
13
+
14
+ <section>
15
+
16
+ <div id=el style="user-select:none; -webkit-user-select:none; position:absolute; padding:2rem; background:#eee; box-shadow: 0 0 10px #0007; z-index:9">
17
+ StartObserving
18
+ <span id=hover style="border:1px solid; font-size:12px">hover to start</span>
19
+ </div>
20
+
21
+ <script type=module style="display:block">
22
+ import {PointerObserver} from "../PointerObserver.js";
23
+
24
+ const observer = new PointerObserver(el);
25
+ observer.onmove = function(e){
26
+ el.style.left = this.pos.x + "px";
27
+ el.style.top = this.pos.y + "px";
28
+ }
29
+ hover.addEventListener("mouseover", function(e){
30
+ observer.start(e);
31
+ });
32
+ </script>
33
+
34
+
35
+ </section>
@@ -0,0 +1,47 @@
1
+ # SelectorObserver.js
2
+ Monitor elements by CSS selector
3
+
4
+ ## Usage
5
+
6
+ ```js
7
+ import {SelectorObserver} from '../SelectorObserver.js';
8
+ new SelectorObserver({
9
+ on: el => el.innerHTML = 'found!' ,
10
+ off: el => el.innerHTML = 'lost!' ,
11
+ }).observe('#SOTargets div');
12
+ ```
13
+
14
+ ```html
15
+ <div class=container id=SOTargets contenteditable>
16
+ Find all bold divs (press enter)
17
+ </div>
18
+ ```
19
+
20
+ ## Install
21
+
22
+ ```js
23
+ import * as module from "https://cdn.jsdelivr.net/gh/u2ui/u2@x.x.x/js/SelectorObserver/SelectorObserver.min.js"
24
+ ```
25
+
26
+ ## Demos
27
+
28
+ [minimal.html](http://gcdn.li/u2ui/u2@main/js/SelectorObserver/tests/minimal.html)
29
+ [test.html](http://gcdn.li/u2ui/u2@main/js/SelectorObserver/tests/test.html)
30
+ [tests.html](http://gcdn.li/u2ui/u2@main/js/SelectorObserver/tests/tests.html)
31
+
32
+ ## Options - "checkAnimation" (beta)
33
+
34
+ ```javascript
35
+ o.observer('.el', {checkAnimation: true});
36
+
37
+ ```
38
+
39
+ Like this, you can event watch selectors like `.el:has(img:hover) > tr:nth-child(2)`
40
+ Trigger only `on` and not `off` right now.
41
+ -->
42
+
43
+ ## About
44
+
45
+ - MIT License, Copyright (c) 2022 <u2> (like all repositories in this organization) <br>
46
+ - Suggestions, ideas, finding bugs and making pull requests make us very happy. ♥
47
+
@@ -0,0 +1,201 @@
1
+ const observers = new Set();
2
+
3
+ // global mutation observer
4
+ const muObserver = new MutationObserver(checkMutations);
5
+ muObserver.observe(document, {
6
+ childList: true,
7
+ subtree: true,
8
+ attributes: true
9
+ });
10
+ function addTree(el) {
11
+ for (const observer of observers) observer._addTree(el);
12
+ }
13
+ function removeTree(el) {
14
+ for (const observer of observers) observer._removeTree(el);
15
+ }
16
+ function treeModified(el) {
17
+ for (const observer of observers) observer._treeModified(el);
18
+ }
19
+ function checkMutations(mutations) {
20
+ for (const mutation of mutations) {
21
+ if (mutation.type==='childList') {
22
+ for (const target of mutation.addedNodes) {
23
+ target.nodeType === 1 && addTree(target);
24
+ }
25
+ for (const target of mutation.removedNodes) {
26
+ target.nodeType === 1 && removeTree(target);
27
+ }
28
+ }
29
+ if (mutation.type==='attributes') {
30
+ treeModified(mutation.target);
31
+ }
32
+ }
33
+ }
34
+
35
+
36
+ // animation observer (beta), todo:refine and performance tests, problem: can not set multiple animation per selector => can be overwritten
37
+ /*
38
+ let animationCounter = 0;
39
+ let aObservers = new Set();
40
+ class _animationObserver {
41
+ constructor(selector, on) {
42
+ this.on = on;
43
+ // todo?: reuse style element if selector already exists
44
+ // or better: use same style element for all selectors?
45
+ // this way we dont overwrite elements targeting by multiple observers,
46
+ // but we have to match the selector for every observer
47
+ this.style = document.createElement('style');
48
+ this.animationName = `u2-selObs-${animationCounter++}`;
49
+
50
+ this.style.innerHTML =
51
+ `@keyframes ${this.animationName}{}\n`+
52
+ `${selector}{animation:${this.animationName} .1ms}`+
53
+ `.u2sOTracked:not(${selector}){animation:${this.animationName} .1ms .1ms}`+
54
+ ``; // todo: :where() when supported
55
+ document.head.append(this.style);
56
+ aObservers.add(this);
57
+ }
58
+ disconnect(){
59
+ this.style.remove();
60
+ aObservers.delete(this);
61
+ }
62
+ }
63
+ document.addEventListener('animationstart', e => { // todo: remove/add listener by usage
64
+ for (const observer of aObservers) {
65
+ if (e.animationName === observer.animationName) {
66
+ observer.on(e.target);
67
+ e.target.classList.add('u2sOTracked'); // can be removed if none of the listeners tracking it
68
+ }
69
+ }
70
+ });
71
+ */
72
+
73
+
74
+
75
+
76
+
77
+ export class SelectorObserver {
78
+
79
+ /**
80
+ * @param {Object} options
81
+ * @param {Function} options.on
82
+ * @param {Function} options.off
83
+ */
84
+ constructor({on, off}) {
85
+ this.targets = new Set(); // was WeakSet, but we clean targets anyway. Better WeakRef-Set? // rename to targets?
86
+ this._on = on;
87
+ this._off = off;
88
+ }
89
+
90
+ /**
91
+ * @param {String} selector
92
+ */
93
+ observe(selector, options={}) {
94
+ this.selector = selector;
95
+ this.options = options;
96
+ const els = document.querySelectorAll(this.selector);
97
+ for (const el of els) this._add(el);
98
+
99
+ //if (options.checkMutations!==false) {
100
+ observers.add(this);
101
+ //}
102
+ /*
103
+ if (options && options.checkAnimation) {
104
+ this.aniObserver = new _animationObserver(this.selector, el=>{
105
+ el.matches(this.selector) ? this._add(el) : this._remove(el);
106
+ });
107
+ }
108
+ */
109
+ }
110
+
111
+
112
+ /**
113
+ * @description disconnects the observer
114
+ */
115
+ disconnect() {
116
+ this.targets.clear();
117
+ observers.delete(this);
118
+ //this.aniObserver && this.aniObserver.disconnect();
119
+ }
120
+
121
+ /**
122
+ * @private
123
+ */
124
+ _add(el) {
125
+ if (this.targets.has(el)) return;
126
+ this.targets.add(el);
127
+ this._on && this._on(el);
128
+ }
129
+
130
+ /**
131
+ * @private
132
+ */
133
+ _remove(el) {
134
+ if (!this.targets.has(el)) return;
135
+ this.targets.delete(el);
136
+ this._off && this._off(el);
137
+ }
138
+
139
+ /**
140
+ * @private
141
+ */
142
+ _addTree(target) {
143
+ target.matches(this.selector) && this._add(target);
144
+ if (document.readyState === 'complete') { // Before domready MutationObserver reports every node, ok?
145
+ for (const el of target.querySelectorAll(this.selector)) this._add(el);
146
+ }
147
+ }
148
+
149
+ /**
150
+ * @private
151
+ */
152
+ _removeTree(target) {
153
+ //if (!this._off) return; // performance
154
+ this._remove(target);
155
+ for (const el of target.querySelectorAll('*')) this._remove(el);
156
+ }
157
+
158
+ /**
159
+ * @private
160
+ */
161
+ _treeModified(target) {
162
+ target.matches(this.selector) ? this._add(target) : this._remove(target);
163
+ // for the moment subtree not checked
164
+ if (this.options.deep) {
165
+
166
+ for (const el of target.querySelectorAll('*')) { // expected to be expensiv
167
+ el.matches(this.selector) ? this._add(el) : this._remove(el);
168
+ }
169
+ //for (const el of this.targets) if (!el.matches(this.selector)) this._remove(el); // not iterable, use WeekRef if supported
170
+ //for (const el of target.querySelectorAll(this.selector)) this._add(el);
171
+ }
172
+ }
173
+ }
174
+
175
+
176
+ /* nice shorthands, todo:test *
177
+
178
+ export function observe(selector, on, off) {
179
+ const observer = new SelectorObserver({on, off})
180
+ observer.observe(selector);
181
+ return observer;
182
+ }
183
+
184
+ export function on(selector, fn){
185
+ const observer = new SelectorObserver({on:fn});
186
+ observer.observe(selector);
187
+ }
188
+
189
+ export function off(selector, fn){
190
+ const observer = new SelectorObserver({off:fn});
191
+ observer.observe(selector);
192
+ }
193
+
194
+ export function one(selector, fn){
195
+ const observer = new SelectorObserver({on:el=>{
196
+ observer.disconnect();
197
+ fn(el);
198
+ }});
199
+ observer.observe(selector);
200
+ }
201
+ /* */
@@ -0,0 +1,21 @@
1
+ <!DOCTYPE html>
2
+ <html lang=en>
3
+ <head>
4
+ <meta charset=utf-8>
5
+ <meta name=viewport content="width=device-width">
6
+
7
+ <body>
8
+
9
+ <section class="main">
10
+ <div class=container id=SOTargets contenteditable>
11
+ Find all bold divs (press enter)
12
+ </div>
13
+ </section>
14
+
15
+ <script type=module class="main">
16
+ import {SelectorObserver} from '../SelectorObserver.js';
17
+ new SelectorObserver({
18
+ on: el => el.innerHTML = 'found!' ,
19
+ off: el => el.innerHTML = 'lost!' ,
20
+ }).observe('#SOTargets div');
21
+ </script>
@@ -0,0 +1,57 @@
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
+ <link rel=stylesheet href="../../../css/base/full.css">
8
+ <link rel=stylesheet href="../../../css/classless/variables.css">
9
+ <link rel=stylesheet href="../../../css/classless/classless.css">
10
+ <link rel=stylesheet href="../../../css/classless/simple.css">
11
+ <body>
12
+
13
+ <section>
14
+ <button onclick="targets.append(document.createElement('div'))">add item</button>
15
+ <button onclick="nonTargets.append(targets.lastElementChild )">remove item</button>
16
+ <h3>Targets</h3>
17
+ <div class=container id=targets>
18
+ <div></div>
19
+ </div>
20
+ <h3>Non targets</h3>
21
+ <div class=container id=nonTargets>
22
+ </div>
23
+ </section>
24
+
25
+
26
+ <script type=module style="display:block;">
27
+ import {SelectorObserver} from '../SelectorObserver.js';
28
+ let o = new SelectorObserver({
29
+ on: el => el.innerHTML = 'found!' ,
30
+ off: el => el.innerHTML = 'lost!' ,
31
+ });
32
+ o.observe('#targets > div');
33
+ </script>
34
+
35
+ <style>
36
+ .container {
37
+ display:flex;
38
+ flex-wrap:wrap;
39
+ background:#f5f5f5;
40
+ }
41
+ .container div {
42
+ background-color:var(--color-light);
43
+ margin:.5rem;
44
+ padding:.5rem;
45
+ }
46
+ #nonTargets div {
47
+ background-color: red;
48
+ }
49
+ button {
50
+ text-align: left;
51
+ }
52
+ button::after {
53
+ content: " " attr(onclick);
54
+ display: block;
55
+ font-size:.7rem;
56
+ }
57
+ </style>