diff --git a/diagrams/tutorials/web/low-level-html/add-element-code.drawio b/diagrams/tutorials/web/low-level-html/add-element-code.drawio deleted file mode 100644 index 2f545c09a1..0000000000 --- a/diagrams/tutorials/web/low-level-html/add-element-code.drawio +++ /dev/null @@ -1 +0,0 @@ -7Zpbc5s4FMc/jSfJQxnu4MfgS7azyW6m7ky3+6aCDNoK5BHybT99JSTMLYnJxMW7bvJgoyPpIJ3/7xzLOCNrku7uKFglDySCeGTq0W5kTUemaeiGzt+EZS8tnm9IQ0xRpAZVhgX6F5YzlXWNIpg3BjJCMEOrpjEkWQZD1rABSsm2OWxJcPOuKxDDjmERAty1fkERS6TVd/TK/htEcVLe2dBVTwrKwcqQJyAi25rJmo2sCSWEyat0N4FYBK+Mi5w3f6b3sDAKM9Znwv7vYP37HQnRH7dw9f0BZZ/T6IMlvWwAXqsNq8WyfRkBStZZBIUTfWQF2wQxuFiBUPRuuebclrAU85bBL5ckY3OQIizk/kS+EUa4tweSEdW5IGtazE0Y4xKajnXLX/iixYsYkGsxITGGYIVyLSRp0RHmxdD5UrrmlwfnjhnU3UuADFu0EcYTggkt9mEF1syZT7gdYBRn3IbhkgcuyBkl32E5MCMZdxB0g6vivYGUwV3NpIJ9B0kKGeVr01WvbfpyiiLf1k3NdcbVnye7txVWpqtsSQ2pkh+gSI4Pd6rE5hdK71dobw+g/c8R/ajWE3/mTsbn09rynWNaG547oNbO5Wo994OgWHIfrXO+I5TF3OCeRnnXs5rKu95R5cf6gMq7F6z8fDYJrOGy3HFfrfWgUnsdqS2Ntyc84lScmxIoPGSrNePvEMOUh+IqP8y4FCyGLv5j3WkVf+voB70xJBd+hwtbcPFYcCCpyOC2YqKg5NA1/fPhYtAY+gzYRsPmkXfdLg6mMyAO4w4OpsBhAQvhmSgIfHuisaQi5E8Xjoth4rznh07xsJ8mxB6SkLI61RAxik8SCgETLIBuybgUGgY+U3jjlv7l84P6gdEd8tPCMDrij0wXiyBEaMMvY1ZsvWPaEO6XLyiKPpMp+chgej3byI8TeMNfRt5hFl/Yy774O0gFJdm3fFW09SXKAJbcCf/CoVicfv9xJhm8vtE0VbhkDxPLEFVLU3t50/3b3sq7XF2dwPE9ypkWJghHnCWNh/BabfPmVc696ctj29Znk9bokbS1xFH50MqZTqqd8eFQVbgN80Tf+ctMPVTububa/hOZaxg/LXW73+1gFMOFahLKEhITnkazyho0K3U15p6QlZL6H8jYXikJ1kUZrYEAd4j9JaZrjmp9rfVMd8pz0dirxrPxz0sEjpUnBmgMWY+BIgIv6kkhBgxtmg98T6+Ndfna+D2l8f9byvR4EAqz6Fb8msBbIQZ5jsJmnJtCDXmeqRQ2+0vMlaV7Ocsel+2v0otnlYZqbtFqTH6EFPHwQ/r2hNZPndC1Auw8UX9LW2+61B0eCSoOM+XJ3Wie3ByrVdblztWs+g8zbUdu60ui33IkI9NxVMB+2PYb+O/xcPh/wH8N/qraHcV/rLtn5n/8jv958e/xhPxi8bdNr4m/7fvD4u+9439e/Lu/Gvw6+LuG08Tftdxh8e97ZH7H/7X482b1zzVyePUvStbsBw== \ No newline at end of file diff --git a/diagrams/tutorials/web/low-level-html/anagram-move.drawio b/diagrams/tutorials/web/low-level-html/anagram-move.drawio deleted file mode 100644 index 8bc4272928..0000000000 --- a/diagrams/tutorials/web/low-level-html/anagram-move.drawio +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/diagrams/tutorials/web/low-level-html/anagram-newletters.drawio b/diagrams/tutorials/web/low-level-html/anagram-newletters.drawio deleted file mode 100644 index 38857ef7de..0000000000 --- a/diagrams/tutorials/web/low-level-html/anagram-newletters.drawio +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/diagrams/tutorials/web/low-level-html/css-code.drawio b/diagrams/tutorials/web/low-level-html/css-code.drawio deleted file mode 100644 index 8a21cb5750..0000000000 --- a/diagrams/tutorials/web/low-level-html/css-code.drawio +++ /dev/null @@ -1 +0,0 @@ -7b1Xl/O4sTb6a2Z9V+PFHC6Zg0iJpBh1xxzEIGZSv/4D1D3jST7e52x7e3y239WvWgQJEKgqVD1PAWT/gAvdoUzxqzKHLG9/wJDs+AEXf8AwlMUI8AuWnF8lNMV8FZRTnX1f9NeCe/3OvwuR79K1zvL5Vxcuw9Au9evXhenQ93m6/KosnqZh//VlxdD++q6vuMx/V3BP4/b3pUGdLdVXKUMify1X87qsfrozinyf6eKfLv4umKs4G/ZfFOHSD7gwDcPy9a07hLyFwvtJLl/15L9x9ueOTXm//FcqzAyt/Jif3p4//fzlbu4y2z+i381scbt+j/i7t8v5kwimYe2zHLaC/IDze1Uv+f0Vp/DsDpQOyqqla8ERCr4WQ7/IcVe3UN/OkAzLAFozh374Pnkf1ulTt1oWoEOMxDnwAXoNP+AF81/KYSjbPH7V81/SofucSOfPpXLx1TT4+nPjJMb/svkvC0IJeFy3rTC0w/QZBy4wEiWwoDxu67IHZW1eAMnx8zINz/ynC/uhBw3w32LJpyU//qbA0Z/VCOw/H7p8mUDfkO8KPzLUV5Vv06eIb0vY/2pIGP1dVv3CiH4qi79tt/y56b+qF3z51vD/G20j/3u0LcuCwAv/Om2TJPVf1Db7z9I29r9J25LA4/86bRMo+V/TNor/0yb3/x5t87hEyv/CuY2j+O+1/ROw+aW22X+WssnfKfujZiBmKN7fqB0MfPm1bv9QUL8U8nfRT/JNgaByUM5DMdYAHXHfJ7o6y+Bt/tCYfm1uf2RP/xxD+r39/ENsAPmVDfw8u39hA3804f9p8536g/lOtVDRWb2Br+XyGfhXERTIr4yCGtfhpxM/zh9RAaEjKPY6/nryp1aSIYOS+IH+ub0fvhTz29uA4j+4+T+8P+B33EEL65P59TlGPvW+TeFT8/98GcP/+QET4I3ifv5xzqe6+HVv/1yDSOL0WX5mzY/p10SE1YPP1OrAhP0z972Lp7LuvyuRoNKfuK+/EG7SApn/efpKi3+Sjny3kkx/0IF/ab/wZfgxG36s+9e6/Mcn/Q8N4hf1iD/31P7U27/jL6zZD1MXt3/mLr/iLKv78qsW9JwYgnw+yZ8//8S9/4Y/nzow90X+mTubDFOWf3t+9CPdeWgBysKQe91uH4T75+373wYHf55u/yd+/RfjV1vPf/bw9Su/hPyJRPj/iD3/1B2FWv/x09yPr2Gul3r47nXdz3X2n3n8bzuP2/rfaTL/24GMr7j9IwDPy9D9MnxnoCT/M8bvf9wE+kPT/9V1fzPLC1N9fy/L+7eTft9J1V/m0rAf/rV54RmM42PFIkr+9dD4dFSk/lriDq/vrOM/IvP385ruT+lf5Pepv5/Lfpn7I/5pyT/27yf75yp+wa9191ni/jl1a8RJ3lo/Rx/xp0nFt/AE/zPK/EW+vfj8++H36d8FypmP59fX0ntRH9Du+M8tuZ9KkZ9KwPcsXmIwb74OMfkFdIkJtc/fnB25KOXAgX/Xu1dJXgm++RL4EDOBi2C5kCKyD7/w6lW4+7YmcKVWcNWzBmUax+uOJHu5TC+9nUeyGWJsyZAXgSNL5O40WvnkEPn0ajKVTEl6vqTB9nZpe6RPwh6FQdB5YxgH3pQ5aX5qPqk97ch49heLZn0w2fiRBh95/+qz7oGvVQZ0xL/BGKz53T/wLAz9iZ4Kqw/GR73pZLqEEeI+QhyoSmbEVH9ynP6URI3XL0qva/o94qS7xkngNFfZjoXZKfd1VSVRnFYN1IWKnpyjlZzLCLIML9SvB8/VDseNkjtotfIehtenHVOwOCn0xL3Fv+8z8EJdD8m1vlegBcfYNYRzWM8S1DuoX9v2rVQu8a2eO137x/cDaREabwgiKtq+31bPBcJqnAG70PO4s4rk3FQ4ATB+u/ZYbIHv/ojmauYS7kGAYi46NSrLX16/J55IG1DW+k7Ohz35z3e8KM/mTkZz7bOv3IlAT+syL6yO3HBQW962rcKrIDf7+wthCuqNbsWeIOxKZytzoyXZKlDbTiVWIeK+X7DGI7Nbbb91hPaPAU/qM7vhedDpzVcn0bxLH7hJvAkp35J5dOicJKFe8YE1+zfJPq71HuVjn2/hWMypm865Lp2ZJCCoIDA5y7Lk5Dd+tva2HgRofmKm9JwWHz/zopAvdx3aCLQv+uuG4Oe53tQGGW94Mj+vK55Qi1Fs0+vFDO8iD3yf3Ud7NExwtXx+asjbNA2qP2GJ3iKKqRe5aBg0g2DvtZowxPfyrXBfcROlN6XYwmRTu4/59n0P6g+ndGPA10agSX1t02Kzl9PROAdISX4h1EOvyv1RCOORgquz2+jnWz/zYlngvfXV6arWkscb+AuZZXVLN5jDld476VjOLfB0YngBMbzagvVJiroHDytcMaz/VIU/RZ4U4Nfckhop2afIr5tZ8jNUPPQUxapPe+MQVJSAIsyC96SjBnpPf2rRZAMTn72VFZZcex9FhRFcJUXJynXuYxwUcFnwJVfwQ7mh0Z73BJicb+PscpIpIiXCtZhx+kuUluXaNqmhMfrgJ+PBgNLCOMnXsp1L937g+A2jr32DPjtLv+PJgtxb42oPnj5ub38H4+DDi+w8348BaImh0lvmGfq3YgvLQGCwkI3m/SU4xeCY8wa+uO6bdIwjfh5uT8Kb5qFzsKwvxTdV6HqXZLA3uyLx40YBaRRJaHVvUTUqRJIDQ+D1+1YEkz+OyR18onfQQCRlgSbSzBoaWRGBAqhr1aOPn+TOa+mIkgMaMztzvrzpBUoTlM62UGcZQz5prealRhZzj8Mw/foMtQe4YkKoaCRxn2QYL3jjz5siytLWevFVGdu38naGQdeTFVwpYnTzjvO8sYfo9W6qnUTVVq6Ph0+7/Jt8AtnnN6iex2VNbvDmC8LYxaywnYAm17nzLo8r5VRCFyRy7WQ8YHobQYi0mBc8Bvyy3NQCIIDXG63eXIopj1iCGiS6UgwCOCsoMlHf8A5YAUVqSVqqA1AhV20pv03wZfdU/K5kSNGmhC3hV1A0+pc22miWxkGNBGO6u+5ab3N6Xcw0udLkTWWTicDomozKk2doGB+GZ2BE5cGL/bgynign15NA3AO0QrFW9wQmt0fP09Gl3ipEqHlmuF5q1wwMeQfVY4OZEHraYFMvV5WsMToOkjauj3fDpU9nuz7WUG8n5YnSe1oUV9684s0eWbfYn4j2/rprnQvU9nxfWqFnmdKZ0OuVMggn2egXSkGttSO7DncyXR8LOaEUdT0fCJ2xAnK7ZEAR42WiPaYa6pg8AWST7XdzTbyb6WevL3PJl4KcSJRi4wcJAUyxNfgtRuM5EFVFUuIiJhIqMZwBSS+MsdJNdMsrC8jyXvkTngEvdrBvKtPa/r1/TTTw834rxt2BFkCr7MjzJf7GYG8Xtz0VGCE0yy8LqGl0XokQRRXqXb3YUlJyntlVEFlkGcerRBm1+eJfntLtqvgyFV/7e1hsNPmgPf0N1YiiKBPmyl2hhNcmDAlBvX+eBR74T+aWUucZdUQMgFrxElw6OIOYULw0/PPdKtlj7Z3XYrMv4Cg7JbPovQiWqtu4urJfQ08jqXebfWMP+Zl5lFihiPcN+Hzv7eJQ/FNSPJmbKpLNo96HaB87lLAfTVbKT6NWC+EkRH5ndVLT8MOzKmLYxHzmgNHKaRo+JtUjoe+NzXNJbQ/vUdRPZSZYFsa6XCtWTY8KmjW6QgedsYRDYCp+2mZ+ZUad87woL7c9UENGutL9qqqNb+W4T7E5uSHcRC1itcPQm/v9xKzrtjEjjuPUZJnM+UhfWgsnrTx5IkuQxXMMDKXLGzyx0bcrhRV/BsYLGe8i87qaj6Fega+Gc26NY1ehSzzsgSaS9kvryXRB+/oxVoROl88dKZKqOiDEIhEh0fxXvYmueRPe69V5q1Z2W0N3PsLF4evjqdOU8GAGribkl3nlxcLwV2wU62F5gln7elpwAqlVV8yWKpZlZc+hPF8nyby6ZpGJmUHTdLO8lV0f6IwOJpQtgH0Og0LeBP6xuiK6V4/lmrHZweD4++1ml0qR0Jh9eHhcTz7FXNZNUHTqIfAZQCkPvHrFg8puqqq+C6OE8c9GU08UIpNDx9aFpo1czUi2CRpgC5b0wCX88n6/sb7p8GiWZHbfOC6Sxtt1OMcMhrwIsQ83Urib1nZg9oQk9ETQVmMqFiOFL1YtDkWeTNGrtceL+0LbMqe6lrCVJKnkGUZS84zM+GrNKdBVvOTyMtlqO5kewBHb93xOlBW52DBQJNmKXbZO4O1Z4t6RJqTCTEdaeFl0kedw6z3vRRzv26PHuXPDl4VlAwPrIiLExm1HLL8PXBVvAEY0t29vwWVhEAGE+EQlGBAXH0TOYaB53sMKq9r1pB4U9pJZan83OFpQfRC72hDEYZm73GSbN3Qt54oLxGBQp9auhg7vHBfwHTkiYXCjl2R7LkI15MqEcBsdb2dLTZgCb5WXS8VzcFwhwGeb53i3Q534iyBcFFHJUNwDrnkB4+ydh01rZkTYid93G1+W4XW5RjCCXMKYd1xVR6hUETmW58Z8qR6bFQvKIcfOHs0y9h7WmsvG82W/uOKKxGs2TTTaCXVzVkYzcY6iXafj3MyqZOK2CG8BstRhvMMYcx5GS4yFuwLPaCYnm2/X0vOCLY+0fZP9Ur4aj0kDV1J6+7ZBpOLvZlf7hG7JnWbJFJNUL4pLhr7KF067oXWCu43ryHLIvwUotXq5prGJv56BJ6O5pVq8c7VfeEeddRYzoXN1RiYbKuKW8IPMiootmXt9wcN7qBTrErrOdKtNLI6GYZOGyLnusbOIdSQiVtjLqdzVFLARvt7VjIG6rftNCbQ05qi5GNSyvwIXyqzP+8PyNC6BYJMHIHJV25JLlb5GlDui+RXdXBLQWf622+dEpp17YEVym8o7hIbTY8KKjK82E70K3ebJkzKUzSbJyBSomKnzN8A4+y1/B8UNQhoYVaygJOcoME2L7+4guuqU7Rk2RyMDXfQSmF3yCvwa/V7dVMDTnKgoDIaZo8ErHmIbVTKJMyADl2Wpt9TnbLect12hGaoF0yzJdNVupPwqsCcFrEa9z3d0UrrVRN50PS5XMNozUxfUGQmhdR8zhl38BofQy8ElTjEYgsqO2xFEJ0KsarrhXy6R0GYlmy2RYf0wRPoQYFpf6RDb18qjqLkbZWgsM5cNu5gNBmIHht2GOLs8hcerL25DeBWtpjQQllZCh0SnRMgVMIXi2bUv7eFSkluJ6x7XMJ5C0yjz3GorkrGsreIqr9zvA+xhQhXXvGQaGuHR654wrZqPEMW9KVW7J4vcbykNtR+VKanjg3Wy28yg7uFmUK4zg/h8RezR5Srj4uX1xjpU7Sc7v80XbBMJmSv6KopMKT+N5lKRW5K86ktU+barWvewDu/a8zGxsbCAjiXOUIogrJ9BAmf2lo/UkM6qje4h7o8poI98Xc2PQm5yVKOqfLZ4Xh2RUop3dlLYtV/zjuFoX59vGyADslOndpaGCN3bS0G3Lcp6mwzHRos8Kt5Zarvd0+u2GRYqZtojCUYfp6whaoYSF2Ijc18I/ciodtHxp7ppopqdAEGo+3MT1WhQ8AkdEX6mjRVlkVq4lOh7aif0hEgmfSvxZDCrEhw5IEH6UdJTKKspLUf8AaLE+61hNvu0n4yV+tF7HMClFZobQJZmJvZbK/nxhoit0+xpCZlDzAiXQ2E0Ha0/SCnHlzi/vcVA5W3BURZepvaaC/lXgET3B69dlMubDmYSyEwAvoIy+WS06GJDiuiwG/rBETZKIIM6A76UjfKpP3zWq+MaEC++tAjmqu2KYqOHvs5PxjsQH0vURgUx7w0IAPZyl0YZhRhSfIJ6WVbDD9I4PAYks5v7MvucNrNBgryI2/oyI1FT8JJqI7TlRIcPjqivd2x8V9xtFhXz/RaMcB7iuwGBHWZPONqVNDZ3FlaKOeAvw+ZLZmKH1RhpIpGOBX4cH+ygQLyx85eICmw0V5/adBtPPuudBmkQReLVAtUi3rHmUKgfZqdw+bEL96ZlQXcVrNxTq2utJyuSZm2/uozQ8dnQnsuGrVleZJzmE5fykZqyZuyHHRWcqTCe30TTftd7VIwmToBTqI8ZjS+xssxd7SBAVDjagxOqrQMUn2+XW3dhhz4gPP+NzeUuRAeRvdxH3ZVrC8K9rM4yS4uPUo2fb8Wf5FsO8US8My7jh/YmRTcAv65v1s0CCSZFELF/PSJCHOqByG6AMHGmULbHfGxWE4gsI0GPuJvuDRMif7BeHc7vTMz45h4eAZdakoAI2eCDKMMHA0dX0VfoNu9Y09u29EqTAFKkpilRZg5RzdKHHNmvdpUmmuNKQximUpFZM183Vsbuy1uy5JO94JdZ0903isrWGM6JwY3WROnyUEIbmeKgJh44pGQUBkVGBAGXZ/pQkAd0+myGo1VB9TmXGa98cKFTtnG0vLA1okZvCoLIADEK3QRDfDE5E0RYpe7KsSga1UBnYcU24oTIydwIJLiYCQifADnLylXPb911Zt74Bh1y/EgXmBWIQ4hY1P1wSis3Oabx1VwRLIUqzEUnXSvnuoGCcyfxk8ksXfp4O06Tv1TraqMWJO4c+Uk3uB0X0kerpwWHVSzzDEkPdJ5nYqR4N4G0w6QEzGiIsZu0C1Mykc0ZwGlWDyVBLv4eQl6q8BSTR0R1quQire98D2lx33HCvePT1caOxlUk63IwrOtD20jju5mmJNoxsxIZI3sieKhYJ2k++dx5bnwYbIRshcejGUkUZt1463Jr7rkVRpQ+rhSThuZA7+LbFiVW0K07UcjlkzNoxMOE6/6y3hXs1d4/90JM4/KdRxW02bWmotD2wrLoXoEuLG8/eEF+bdDOLdem45IbWORF/JJLOGE0dEfOimuz+1WtIuYDZqyzoIlKyHWTg5gutk1LfBDaWboA/VwPU2BsmGKDGZ54bbpotx9kmpfCtE9vPpX4dzpvmy8GrsgrLLof2suZdk0WxoaY3o/9ILhbcFENYWDsxuRUCELLIzn8wu/5s2sL9/XE5Zx/jlNX9oeU8GqWKYrL4wqAHIlxVfubYKrlU5Ec9W67PcefkmxqFxW6OhmC5p7pWDF0YkbFSVFuIN7MOSN8DYzkODq7W9h6in6fC8txm+ktYp4zB91astoFwaYw9CPyY2thglYjFKKW1CCnrojUYF71ybgC7EXvn/TsvdY4znFtIRdPn5dqDuZ3Ny771NU4TZCvkkZYsgdPSaOgMRUBT5WlXWqeZDelmbnfOef67Ffuqw2ttHnlyvGkpdvwlHK53JjPKWmoOU7yEK4vmdaGnbGHYdrVT2cETuAq1xFu4uHzsAuXsra0HJ7SNAl0hgedEVUP6T730eYX/ekMZ9eaxDmNzeXu6X3uU9fN9jnlXMAHL185nbB07zPoy+XC8AjsTFlyYBgIGAbj258uDFpzqvBULfACzFwLN+5Ar/rnPoJxyYmv/LpW85wUIZz6ZNqPPHLnpsF8bWS6mMtZn7FO1ST498ET5BJzdsfLXebgrxZv7FxGapzw4LmFv0ZzoMuIMO63g/FEGxIOjuts+7qDnuqHiWmXT2tldSkFLZY5xPrOxqdQW6l7rYXqS2F3wGCVyr6KJPdpHYfS7aV3VA5fApamcgISZlmYZw6xS+JVAnLti6oswgllVk26m/dNuX94Nh/AfMUaJlmQXLsTJnNQ3OiPzrUN205lXzoIJNE/6V6Y9MiqtJiQOO+TBQKICAanasOTl8+Xe6Rd8y2ErUb4Y0BhXHcxOpsdEjd7kwaokYrngC5Wt0qqaeoBjUVpHmZiAxT99DaKbur9VRRb14YGTBcRL3Xf6sS+rPVaiuJ7L1e82NhaMemH/fL2IRcvS/WFhAE/JzNv9HUZFTS7xwF/m7sloNP6XLMbDBBvVcVZYJGoclMnZFTf53nP7qvKV3H2lWPdXGfB2k+ve5gzScw1u16P2+oCyygxMQ+4TZr98YwMuTsdgUxXQXwhVBbe70L9lZ2brTdFUcxdOszm/tCeXjFXwwt0zL28S7u6gX5l2Uqnl6JIU4JB4sXR7uD8KyKKW+9oeVKpTXU6stDeAXG767GvP89kxK7LtlEYgwiyWI3V+9LGc3yLdeuIVgBNgMDYIC9o7LNEeBnwfhii/GlHpnKpsLWmD/STje7e8Xa+X0A/SKOKx04MxkjCIXgQ5Mv24F26LFPXhCbJanssHZYwU/1+pHMnOjPGSp14KOLBpGlxfrQGcUbATGiW517QVlF+Nbbxk3FKn3CtxZsWLLm3+WbUD5g/QCz0hjXNm7wPL/OIkMcLN+pDFtDYFzwa5uzjubBC34cJzYha7i8+ABxhFTdbe0wGumLuhczWM2nPl+8mQY5i5qgAf/uNQYAd4MaMiapvrXz2ep6Pm7kKajld/Clbw+J6rmIiCK59X/lZW2+jbg/i/SW1TT6aNu8emiRGjKDWZaQAhfAyAsOTQsZPc5bypyI641N98ggRcreiFtZPar5v6SLPnyuV5XP3te7g55e7pbYnlV3aGoiwcYuc4a82rWUDwcgSBmYSdbcWbArcHqepu/08aWPbtpfVHARrTGAC+DypvXZvmVbTrrDefdVtZdP9hF6eTczmq1/0gidkRCeiNNvadUi356Po5xl22QvkcbnrUu1NENwUaZfd6GLcnjrn5YlcHxkQU3L1r8QnS4W+v+KwaK1ZdA2tzXEO1mfvVbZODjyzdn26hhf54T+PYX/ch6YorOvVf9AQzk8loCLxJf/kiMi472kqfsD0qEsSDIDhqthcX6HiG11zf03ySXpL8PrKvngjGl+LoEY8LQ3Qfh/6Zl3zjKkHjyIEXwMhji4jYdKGUeVJyqIXoymjwibT8+HhbZE34Pb7/jCf9U0VW1OveK/XNoSR3wdhCiJgqhjNkpng3BlEOh9m3R+Nh5r0RaxaT/YioTSmHj9JqUc989aMbTC12yVNA5wpCrV2sg5qFIbdFFIGRR6G3RYeZ2KgUDAXX6krtSVzVY1EDFBQniRJXnrcVOEDXOe13MXmYRvbte3A7YepYkQx2slOUm77XgDKCGHiepbQ0UpAXmE17Xwlx+VdqPrXjCfQ2brZ7b6E7wFw77q8fC8xSvaNiPe1TcQqhHZn7cZNaks0IB6eTG3SG2Kh5tvWr2PmAAAvXUyjsVOAEfpILs8CuLvN/2qO4K11Cev6FhzsvRY8k/GI6FAmkgGazwmjKhMH69jwFtzOn9fF6PfNfjn2QtjnAfo61zB3w7yfCX6l6OYUMmDjMOilPkp8Vu9brgBo1VTog5sFdZyDlGYMrE+4gEjt4I4Cz/2+lDvbMYqAlrkCghk12aWkBSk/HU8hx1POM45u4rNRzbun8QregWVKOr9GQ0FVLZY4ryfxwhescXZIr+TNoVN9UCTtBfDANgEFgdJpalYKz0OjRTO0JMo1MHjOysSBGG9J3HjZhQ7E0sw1unnf9/dVvM32ztwFNZ7VE63ICk5UXc7XUKUfYfJC7jliZAvkTsTOvyYfRWu+ZmJjlxAemg+7LFubF8kcWOrTOJyc7o9oMrb5iKinlhpm6pGMRAC/TM8+k3G3XbsiSytK1uM8ZA8rHqh97tqm1kqGjmgCUJZ4dQwcdyUhLdJGO494BW7CV3aL66edkGRePm7KVGHMMiDJlZp4YcWqo4cr12npVDy0I0gWoSLzvEgfSID06rNmn/ytjSeX0EJh2KabBNCMuEQvDHgRVRU2McFgNnIR2uN92CnAZ3EZlRFtEKofM4hOiTJZFW9RTAOMMFpCEGS8VEVB9anhqjY1hRKSyWaayaoK8zZc+YW9gxQxlzsD1FCglKGplxNHnsBdSSGfOT73yLKwSinpkaysZrvlTtjyXWjsKYk8gNe4CEYATVErq4wO7vnmFIGiIB5RLZF8u40scqJ5SUWK6u4N3gHk/TaO+kaQlGbGgAa3d93XiTR/x0u6znuVFYWg7mctB8zN3k/O2RCHzBHLh4Cd41+ex5jzKNH1kTrnFsJVcy2s6P0YzMejSUqlAZgLJTiFsFlTFKRcGKmj4tmW9xrWvfbv8ozk4BLl6hOuwGgXRDEdEUs+sqBwWTTKda0XQqEQpCmT2ijzPs3b1BcFReVjw/UJ3RdEkd/ly4vnRa40cZrJbx7qA4/qPwY8OQmApupKGdEVoeIr038FSf4G7Mb2BlxlgiY0y20uC7xaKTbAk6UJm16VsgMpT2fqj7Su7EETKGujFMDckoE1CL6yzqrJb0wZxbEdvQ8VUwE66AyaJoZqLMdWaary1WpcbOZC1sltqRLUbiKAvp/W+VmFpwZ+9uwnc0dZaeswgF38u7WC6E1PlX5uVx4g08Gf+edFrs/h1TCVldrm3mJYIrcuYmoL9MpIPTxsefYtCe2VjRKnCHpkCROyXeeezzWkaao4LBj/LsWjkk1gGYYox8vOdFn8heFrl78KrkBHzF3TEegY2CcZtsvnbC+4cGeKCxh8twMAfoU7V0q4wlc/Ot4DPOW6P21eRkH0fuuldL9bNuQf+ja0jw/9cVPAStzsZa4M5FFSg/B1V9cJpgdwewzwDULzxDD3fBt5Uuod3rkc6LpVXm6u8bAKuYq04wv9N7ZAM5R8RPVPaL+GO21sAc/vH0ahlPDeVRpo4zej0CCjkLgFf5aQUfBf+3tCub78xCg0yCg44ye+EnP32nveD++z5v9MIPXfXQY/GuZy9BfGrRFfgtyef9UaL20cxaVph50pApg5wNdPVx8bIyqfV+O2GmyuHj0M8ofIwf0NxBu7fujbde8kPXDpXNFhGnQJthACcJHHnutVeWfBSGQrRj+us1TmzU+C5AUfL9rSNrhYZx/BXo+hiSWmqVtwW0UywcyjlEXdbvNb8LiOeEKyZGEZAAVqnxhOk/jPi7cvMiL3xzQGvJmHI+7PGoZWrt6eI4xWdJofAo8HBaNTTlsjU19seDewOj9AZlbrD2FwePda6T6wPy7zx7sUFVjfoiR1dwC+ru2fN6mc7+Bp3/bukbUcYvSYip4ASPJwl4JvedL8iPopSxaMPEmzdFpYMYAJIvn+ipZSc8eZHyaZer9QarSDhLAqad8uaNwCohdvIcUEb7hjUi5oEqGX46HGuQNtyC0Bc8oBKnLXJ/QJ8capPVvdLtoNH7P8ZqDB2N6mmP2iUEVIDIERD8ogCEp9kWMUoVXhxX4S6Y7DlYdTeVXteNSzBLzwCl2K8qw3QCyfvdGedcfTGZj5786+hoAnXlrQ/8FUXF0iI9m3Cwknpmtc8zeYWZ/2G7S3vZJ317vTkIIx64jmm9+EvE5H7lkLWiARj2pmvlawB7opgozIhyu2BS6PfLMFl1QvrdA2SXdlc7b+XFt4yqYO1CvdQpaA5C8TKpv0yuhEEfXCBtNjsgCHyXPk3DNRYSLnW6s3Ia6VgUezZsYwuqqUqoqE1uqb9yi1t95tvVxL3qZNpLfxoTK8PQe8cTCQp0AJRs12LuE015B5PhFVSUuL45qSKaz2DZM/sm8BW2z9kABx+r0Dxk3DqSyVKY9SEZD/MskeOeuEXdFDt1rKxZ1VwBmfPUotvm/IVsLkFghLr0vXOC9d7U9SBaxO7ziS8q8dGsscDxN8xU2RP/sk7pEkGE6pPZ9iqa+AMTYVQvuzp0VFIy3LrDw9gJ0aVedLJB7NpcJeV3ZcLLNzLd8M68fg1wC1dk/Aou9xJ15iQFfYKmR0CYt9E4TM/FnTIxy+KWlW6nlRCTC1rnOEkDRdHVwuyGc3Avi5cfE1dA2fItOxuEC1rFisNGd8U5Waal8NL9OqI6qtoFs7SqHJC8ikcZ5vpxz8S+0AI6N8uDo23ltrAIYytbh/geGk3CPLv8OBd+NNp05+Vew4CSZ/M/IvdMO+oA2NWmnv6epoZIQ04TC9/Ld91zRVchgOBY4+kfMHCbGVjyJKGOAAYAP7Phn2Y2seoHpn98jVF1EjkvggXjcQMdHiQIBrYc+tupPA1XiVfNhw/V4QUyYe3lKEEi9nfaMa7ys0RFwUJZiPazB69SzXHLcVXTsyuSjJMBC5ki0g3rO8TNBvyjo2BMHw6ePdFNBOqerKBFPQBv5cE7JPdBrcRJc4Qec5hYteg2IIUfu19XKG/j6rjRTGJk2Tdphj2wlRfglwP6dT6gjnLI5VXcsOZqUkOwLxoIxmvf7Ks9125TLqiLZ8cnJlKXKXWw3pB+/DTANUrLUU+EsSbzn3IFXE7ouMV6zx9dy0BKY7pXuEf8Wrmef3gzdbz/naW3opQdtylvQbCKSOvlccCKS8Yr41G451gn0PO5REXzM45hyuchznzZ0SjIcxcx+0ilpy/5HAYy/VnAumRV1nv55YMm6BZ3aJOeoJE1+78+VPp31swTrDNccOpnWH1ouy2JE7G8wOSfakodWlOYzctjR4bOMjEmsec+ePyf02M8OztfFkw0ck1nyA+ZWBFPdy/ik2aSA2PUGj2KFdzzVMNjMhnMGUQQvAnOLl8vLO7IXR8aLQZ6TvUNo9IWnVBaZ2XWCpq/CI3ktVeegVo9OYG4fNXa0F8AW4b3XGCst/zuWDodLgjnQVfkPw5CA9fMLpEQm2ec2tZEHoa+UAcg/8riYwKvAQ0C4UrpV0rw5GNreyjsrimWGY/R3X/ROyv4q9gyjowzXCYkLjqX1WnLATdS4tEqDUa0JqSGx65lyKB0KBOX+fQyBV6jOrBrIRw2csPDhO8IGHEWK6k0OS4zjdllrJ9u81w+mg2bG1xIqJlvkF5xJNklhY7poCfMvzPvogbqzurffnq/lUmflK0omarLj49C3CJ15QtEXYAknW3idWEAigiWhMPiDHzs0w7Cv+8I1PRoHZoF9uBNRQaxNilJ3LMmlRN5xe4+Em7lQiLi+Go6t7rE8QqsLlfRpEhdUz/CWoA22/oCcx8zqgknVaPuU0YU9iKLSXT1Ep3JPQAn9s622F48+d03P95OJTH3v08cTxWLgx9x3umDV743m/dkyemHMwOZrxtZWJNzhTEbk6Lh4DEttaXhOd7mXEYE3BTg0OsDpbzznyC7Vp/KS1Y3uvvGLdkuV+5QorfHkmr28LkxYFeqBHks1YADGOfNUxGI38ZDTgFl+ZeoksiB+HRr5NR3gIHLvXhD5eop7qZImEqYVs1m+9WFbAaj42rIrVXpj0VoC284bapKMWmnpkVywpTPKzg2/bCNbKmlPlpYbj9vt9RUOVmANDOBP5huFgBIE7tRh9jpUD0aILHKN1H2WpOR9ggh6QPRbt0b1f+wvOj2cHAuIc0nNVl12jt3XzJkn9eoe5czk02fTGc5tlNTXchz50gF7NNVXHWMaSpIOM4Mat+wLG+X4h9El4hky6eO1JraAW7fkKm6IAiukrkbihGJXpsjc+zNED0xQu5SEhQF/P+uWPfdOfB1wNsO86ocAlLDO+dwjGn0UCwjATUph4nxVVfFhvggkNwLEl3GCwD7YfXgIXv1Xnotyreth3O3reAchdcaM7ExYyE7jXsq90u7jedBiTgRPHuM2REs/d20yrbCIeAqGmWKca4iWeu8Kd4OvXZIQykEybMtCzO3MnuJpaMOzBoLCnqWaK68aZdmd70FpwwQdGn23YJD7BMSdCPyo++acM994vRGvzKpos65uExyUB+F1Jcbr8gKsOObA77bxQUWoqzkMoSFOkS5Pll9vCrRdGdHvp0h6NC60exB+5FG75Res+/KOUIde5s9h2mQHAt0vBhHzkFil2B/1QWPucVPjjSVs5PG4qoazFUXg+oDdsYcdk9DIvb3yEHIiwa250EujOHsBDaK2z81JXQl4C+h6oKdyoi1xuDqwLaJVXj4DXD08UxrpVniHv2tDXo1o9EMguF8G+aD7iAxT37JOlw9rIVIS4CW2zCy+nZusScyif3NHXxgD2OsLE/bOUREB2aB94z8mB6xr2QbcnmYUCTC1VesaveDKRvZHhNAAtFm51b+3iu11hdrzkX3fOuNsgwvAdP8rvxSTtEWZJ3+dJ61+4CKceVo9Rkd63LHwYgPR5aC3JdSQfD3EO9ojHAn6QOAP98h/hhUzX+wVMw3FUxfZ0pDE0OrR7ugc40T9mqkCoqywKkLzLTSTOM4VSlWPjAEJV4eX1qBUYze9lR5BDv2KGLALCPb6SnS0UjdYC/P6S+ktMHcAMB8BTdKnvcSyIlHANXP35EgzgYR1tCk+Srg6CdIaoESfgMvInZqnN1j9LMPtqpRGrEve1PoP7RP2JHym4Z/AJwZ9cQQyyyPoueg6dUexKcZNomv1SWXf3Kx1d8MrXSswY2alFzoDRxe/Pznol1D7PW4zMKQpYDTR1ESi2j99TH2wNkb2NcAGX4ULES0N540ZKH/mH3aRw2xZ9j3OYQb8XQFeA/aHxekazdyE9QED643G4iWg+TlfzTGVDTZulnQTibdqYn3qdKMnBfp6Y0QVCmIZ2AEzHL6TmsbC4VCsEQowy3CowVcC9X4ROCOH6PRALCbyiLj3vM1faANlE2taDWA37SaVUestvePNetM8cTwEedRA6G4+BSG0ok4vRYtRLoHyjRSiGBDF1PJ2i2LAuoyq2EUDFzlnSiBaOdJ0kF9k1gFEbInp7+VBKAJODOafdxJgST5jBCPjyODHR45KLupu0IvGX7h0vDbQ9OSyjmypUYJ4cDtzn8YALcj5Au/hJAI7P2kMBYEQQhIB7tB8vrT8eH6Z4d+DqWCcF6yevnQ/6lq94tl39Wooxg/IIQJ6yc5Q3s4WrtyZgqXmsr+knSSrHXd9vBh0kL2R8jFOdqeQjXYOLJ2VWOCKuvhOeC5hwbaviQXkQ690HYKGBC9hzd6b5FUKKvmHva+gvMIvUgkngPxf4NMxWR9jgkf0GQtlVPXzzuGmRbX/WYnx/bJ3VJ1US+jaHk3ijZO7Oea0qHs8vt0szf7jAvMkdYMneTb2ZdBfBteHUuWnKwCKARiqqe0gOzV1JZg8MH0oEj9DaoURvE4T48xQVaDvCW3UWOdQ4SIZ1OG/G4qsfhF/uAEwVGg7T0OEaqaEUp/TlXbVZ3Lb28egsmHmS98qGj1V5cvyGotR2YYYrynkc9MFzB8e8J8gges6i7kIsPx3A36pj+/Lbz/q1DxpwZJw/n8cnrtgz50gZtkeRVR8eADwqzpGnGGd3PmXy1Hvhgm66yOcprwAEDmLo7hfub/juAcSoslIeIEjoN96H2H2iI4ZCEHDMaVw0DtpRPwT7nxA3/nPv/9z7//O9QwhNd479bIafDzYhFe7z/KjueKQ0PfWyhI8Sf36+nlDlv98PI2Z5Ea/t8o95gBijfvP8MPMHzw/DR89++/zwX99k/Q9/WSj+9x8gzvuMg2/Qhu9/bON5rtNfPzr++9c7/vIx8fyolxCe+wuL49/H0ef480ZGeCge33U/B+cvDqx8qsFAP6r4lPVg0OEvD6JfHvy1oc/RTy19jSjPfveG798oDr4F6PuR9b/zssUlnsp8+XvPZf/eEH6haPIPnhP/qWzK23ipt1939490/30Ha6g/Lyn4tjOc/LWdkehvHj//GuZ3rV++Kvw3DRG/eeCdoH7T0JccftfQxxR/HvZ/wzqJf5114iz53zDPvyAk+ysT/QuO0n/HTD9Hv23yP7b772q7v3817/+Y7VIs89+xXfTXlkv+m9gtSv//wnAx4rcNkf+zhvtHLxT+HzJchvnvYIK/wG2nvzJdGiP+TYz3P073H2K79N+33Z/eh5OuU3vyU5w+oWL+3vuRfv0ypd+9C+lv/BWCH/4BpOE3uiHob1D0q5cO/d40aOpvW8HfoAxwDf/nP0PzpZK//jEfXPq/ \ No newline at end of file diff --git a/diagrams/tutorials/web/low-level-html/css-property-value.drawio b/diagrams/tutorials/web/low-level-html/css-property-value.drawio deleted file mode 100644 index f9456ef81f..0000000000 --- a/diagrams/tutorials/web/low-level-html/css-property-value.drawio +++ /dev/null @@ -1 +0,0 @@ -7VhRb9owEP41qE+gJCZAH0sKazdVqhptbffmJiax6tiRYwrdr985sUlCoFtHWaVuL8j+fD7b9313duihIFt/kjhPr0RMWM9z4nUPnfc873Tiw68Gng3gogpIJI0ryK2BkP4gBnQMuqQxKVqGSgimaN4GI8E5iVQLw1KKVdtsIVh71RwnpAOEEWZd9JbGKq3Qie/U+AWhSWpXdh0zkmFrbIAixbFYNSA066FACqGqVrYOCNOxs3Gp5s33jG42JglXvzMByXtMwy88UZxFX2/uvo6Ht33X0POE2dKc2OxWPdsQSLHkMdFenB6arlKqSJjjSI+ugHPAUpUx6LnQXAiu5jijTPN9Ix6EEgYNxVKWk1KlgDzPR2fwA9vVP9qgGCRCJIzgnBaDSGTlQFSUpvNF5ROaW14rxbhD6BdKiscNTZ62oIwFgglZngQFk9koOAUcM5pwwCKIHZGbqdaUCw5Op90Im6A/EanIugGZiH8iIiNKwjYdM+o7Jp5G/kNkAr6qxTQcVVDa1JExw0a+ycZzzTA0DMmvIXz4LxE+nwfBNPibhA9tZXiJcOc4hJ9dXi5vZ2GI0oCs+MX3mf/5uu97OwgfMVh2GtMnaCaqPDm6ofk3zG8pfwQdQC0ZT60drNsy3TF7hDOtC/5Q5GXf0VT1i5IrYN2BqK4bc//Yo1FF6fOk0sVJzwu0fjEv+gWRdHHgOkC06hu96GU2kjnEaYZlQnlfifzN4vGAo8ekTNV+VMlYOw4ZVmRaUn2Q94bLe1CZvrhe4W98vs92b6lx/6zUeM6V4Hsqjt49VJs9taasNJs6UzucWoeNUmLqg60ijCz0aQrYKeUJABPo5aA9SFkiww3sHLPQoHahQbaqNAqNN9lVaezEN79bum+Jb2Xz494v7/CgQKct2v0d98vI67LujQcIHYn3UYf3aykgHdTzB6b+HZ4WluoXqB/vSHhvfKy3ZJf4DuGEx2f6M0wHiOGioFGb47YgXlvhDyYeRqdN9y8qgKyputM7Hfimd2/2rdvn62bn2XY4RLqa5A6RBcp5gwm8/A1QTy57rdnX9mIx4F4pFTY4v0hUBY8Ron7jzUji1sdxV5kN5fk7lGcxSeBVQp/an9S75GhWuBYUjlbXvJGzJfytG6w6uJnV/ATecjRytx7nky1HVWQ6jsrs2Bz7gIQZ/0+YVyQM8tx3Thj/f8IcKWGgW//1VZnX/x+i2U8= \ No newline at end of file diff --git a/diagrams/tutorials/web/low-level-html/css-rule-explained.drawio b/diagrams/tutorials/web/low-level-html/css-rule-explained.drawio deleted file mode 100644 index 485d8dff36..0000000000 --- a/diagrams/tutorials/web/low-level-html/css-rule-explained.drawio +++ /dev/null @@ -1 +0,0 @@ -7Vhdc5s4FP01nj45Awj88WgTp+3udKYTppumbwrIoImQWCHHzv76vQKB+WzTOPbsZPbFRldXV+Keo6OLJshPDx8lzpIvIiJs4ljRYYKuJ45jW7YFf9ryXFrmjlsaYkkj43Q0BPQfUo001h2NSN5yVEIwRbO2MRSck1C1bFhKsW+7bQVrz5rhmPQMQYhZ33pHI5WU1oVnHe2fCI2TambbMj0prpyNIU9wJPYNE9pMkC+FUOVTevAJ08mr8lKOuxnprRcmCVcvGYDkPabBnzxWnIXfbr9/m7t303kZ5QmznXlhs1j1XGVAih2PiA5iTdB6n1BFggyHuncPmIMtUSmDlg2PW8HVDU4p03DfigehhLEGYieLQYlSgJ3joRX8wGr1j3bIr2IhYkZwRvOrUKRFR5gXrjfbMiY8dqKWhLFdaOdKiscaJUd7UMZ8wYQs3gRt7PVmMwc7ZjTmYAshdUTWQytXLjgEXfcTbHL+RKQih4bJJPwjESlREpZpmV4XLcohhv3INe39kUtLk/KkQaOKM9iwN64jHwGGB4Pxb+Dtvmu8K1wZ2ao+/L7nrzbLc6JdqUKF9szroe1UPk24F97pcK8+f97dbYIAJT7Z808/Nt4fX6eeM4D3jOnkRPQJHmNVvDq6pdlfmN9R/gg0APbN15UfzNtyHRg9w6mmBX/Is6JtaaSmeQEVgG5BWg+Nsa+OaEhRxPxQ0uLDxPE1fTHPpzmRdHviPIC0mhoa6WlqhTglaIplTPlUiezN8vGAw8e42KnTsOSxDhwwrMi6gPqk6I2Q98AyfWr9Rrz59ZjvqNLYr1Max/oi+Ijg6NWD2IxITSE0tcwcA66rgA3pMALREZccVkp5DIYFtDLgHmxZIoPabJ31XOkojWv1lWYxoDQ2OtfJYg8oTQdvqIAy/RjuJHteS6AwUb8Gvs2Svui/QTrR0munE/WFGw1l0z1XNsd1W/O5ldbZ3ztRdTRE13ZBZOrOag/6QQB9cqdVvt6jZciRTaoVsQ3IIKl/smFqDdWAUCitV6YjpVGkpxlkQLsMuWSd8RaEsjuEWvb359D2PNvu9Hp8uiYhwxIrKnj+nmrAsaLvYjX/3Opos9XHfnlJ7Gc97EsVyAmDL2Z4+/eL/uW/+LzOyQx06KFf3xFcBP7lrw9mwqOVvivRCWI4z2k4dgSPafHPKrGTgYfedTN8gwHkQNV3va4rz7TuzZr18/XBLLloPLeKsheVECRq3Q71UW+gOvRhV9kkgcqcPrXvlIaQNjN8FbQ45StJcd1OfdIhS15k3Ixq3gF1As3cZTvQrPPlqeBThaheoIJ49WufUCS+oEr8n4z/bTJ6i05tY72SjO6ic1B61huREZrHe9XS/Xg7jTb/Ag== \ No newline at end of file diff --git a/diagrams/tutorials/web/low-level-html/dart-html-connect.drawio b/diagrams/tutorials/web/low-level-html/dart-html-connect.drawio deleted file mode 100644 index f81447150b..0000000000 --- a/diagrams/tutorials/web/low-level-html/dart-html-connect.drawio +++ /dev/null @@ -1 +0,0 @@ -7VjJkts2EP0WH1SyD6PiquWobTKTZFITM+WJc0lBJEShBiRoENr89WmQAEmIlEdOLCepGh0k9kOjsfR7aAo9d54cfuAo2zywCNOeY0WHnrvoOc5k7MO3BI4KsN0SiDmJSsiugYB8xgq0FLolEc4NR8EYFSQzwZClKQ6FgSHO2d50WzNqjpqhGLeAIES0jT6RSGxKdOxbNX6HSbzRI9uWakmQdlZAvkER2zcgd9lz55wxUT4lhzmmcu/0vpT9bs+0VhPjOBWXdJiOw18eP/x6Txar0U/L6dH+0wluvDLKDtGtWrCarDjqHeBsm0ZYBrF67my/IQIHGQpl6x5SDthGJBQsGx4pWmE6Q+FzXHSbM8o4NKUsBf/ZmqXiFiWESjK8ZysmGIz1wFKmGgO25UXkjRCQYMd3p/AFS5Jf0iEfxIzFFKOM5IOQJUVDmBeut+syNDxWwX1n1gxf0sseKltPr+e4VvEBPBecPePTiRNKG85Le7ZcjgBHlMQpYBSvIQezHeaCAHemCk5IFMltnKldhmZ8OJs+uyIFiAmzBAsOi7FUB3c8LrsoIXn+sLT3NS0r8m0alNT8Q0oJcRW6Jgs8KL58BXfcV+78T7jjeyZ33Ind5o59Le7c32+flkHgbuZ4n979sfR/fLxxhx3kGVKhNlee1CVNAP20lUfkTKdF27KoIIFupP9NzkPDueSAZADk/0z2i9xXma/zXg8wjNVvMTGigQXiQoMQhpw6qhFr+EQVkEhxCVsU1JBIFxEDFdj+Eok02UJgDIbYM1OZ31Z6f2/bm2LrEtcZ0ndI46wOPNcydaA539DBsEMG7rVk4DsvyaCmjaZlyfeCBLDPlu1khzZnSZIxSVKrH0myulNJon6Doyt+ytoa2TGYtHyDIenbd/DQG3V3Q4k8wdNVnpVy/LTF/BhgCu9hjL/tQ/Lek+wDSp9I+kxx/92bQcF8CCjXY/Wf0DOG323Wc+ZyqRTj7FhsPYrenJnsaHGpymqG2y/Xnu9M8bbIT6pBDjMlaQyAB1aGOQHCYR5UcLvcRHiNtlRcSSleWyneuEMqk2u9bdgvKeU/XDDufnv4+bVg/DsF45+9dHumDDznOxaMLhWcrxcR2bWO5qIhq2NWymgcywZ9y26n3DRDnx2tLgRmfLnfKJa3A4OvD6rds8tm91oDjBrwbcnvX1gDhtdif9efhpOM4zSaymsfeXRRlOckNJNsHmP4QMTv8nng+p6yPxb2aDRW9uLQcF4cG8ajTomRC31N5EivFJZdDgClUQMfdQxp1OEL69i0TgcoV4uj1pXViyltpMzvyJjGOKZIkJ0ZviuNaoRHRoraq/9nTsaDiWNVH9vkj20PLMeMmReSUmGal1cnkT3P+lJkf2SGFYjHWLTCFqSrdqWLh2DWN3Kle32t6S7/Ag== \ No newline at end of file diff --git a/diagrams/tutorials/web/low-level-html/dynamic-dart.drawio b/diagrams/tutorials/web/low-level-html/dynamic-dart.drawio deleted file mode 100644 index 7be8cf5404..0000000000 --- a/diagrams/tutorials/web/low-level-html/dynamic-dart.drawio +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/diagrams/tutorials/web/low-level-html/event-listener-exp.drawio b/diagrams/tutorials/web/low-level-html/event-listener-exp.drawio deleted file mode 100644 index db2bc0a8d2..0000000000 --- a/diagrams/tutorials/web/low-level-html/event-listener-exp.drawio +++ /dev/null @@ -1 +0,0 @@ -xVdRb9owEP41SO3DopCEAI9AYdXUTlPRunUvk5uYxK3jixynQH/9zolDEkJXpsH2Ar7Pd+fzfZ+N6bmzZPNRkjS+hZDynmOHm5571XMcx/Yd/NLItkT6/bFBIslCg9XAkr1SA9oGzVlIs5ajAuCKpW0wACFooFoYkRLWbbcV8PaqKYloB1gGhHfRbyxUcYmOBnaNX1MWxdXKfdvMJKRyNkAWkxDWDcid99yZBFDlKNnMKNfdq/pSxi3emN0VJqlQxwT4+dD/rCY/7u7TT69P9ujr9Sr+YLK8EJ6bDZti1bbqgIRchFQnsXvudB0zRZcpCfTsGklHLFYJR6uPwxUItSAJ45rvO3gEBZjtFgSYySXksoiNlUIKnYE7wQ8sWn9oh8yKACJOScoyK4CkmAiywnWxKlPjcJd84Eyb6UsB9T1tM85nwEEW+3AXi/ls6iJOOIsEYpyusHHTTEl4ppWjAIEJpqYtVCq6ebPf/R2LqH8KCVUSa7NNwGBgQoz0Pc/0dl3ryPHHJRY3NFQJhhjpRrvUNbs4MAT/AdnOAbJ9rnsQshccRsWQcqrohHMLxIyz4NniLFNUXFz8vMTgIs4niea98C8O5BXcoJMVxIyH2B8rQP7kxeVlMV8u8SirFSoE99BY90Apx4e+Kdn+EZJtyMSwv6eQjrD+o8gz3AcTkS7FOaN4XdfeE6/dEe+wuuqa4vXOJV63I96J0OvgnrcJ5Jm+3HMRKAYaDumKCVYap77PzsPxae+vWib+aQTh7QnCHXcFsbu5/slt5nWYpSH+dBsTpIohAkH4vEanbe5rnxuA1DD+RJXaGhpIXhDT0APdMPVdh1sDYz00Zq42JnNhbI1R1qmL+33vcS+Vpt65wRWREVXv+XW5lJQTxV7adZycGP/9NwUV4UQ/ztAKOMkyFrTb3Oapbvrw+K5jb+W2QZU2H5pzdVhhnYEt9+/YapyswYGDVWFHk2pW+AIMN7I72COvfbBH+we23KaJar4v9xON24mGw71EZR86iQqN7bZ9SHZo1s/k0r3+t+HOfwE= \ No newline at end of file diff --git a/diagrams/tutorials/web/low-level-html/paragraph-dom.drawio b/diagrams/tutorials/web/low-level-html/paragraph-dom.drawio deleted file mode 100644 index 3c48fadac1..0000000000 --- a/diagrams/tutorials/web/low-level-html/paragraph-dom.drawio +++ /dev/null @@ -1 +0,0 @@ -zVjbUtswEP2azLQPYXyJneYRgtNAywzTzJTSl45iK7aKbLmyQpJ+fSVL8t2E0BDggXiPVytp92hX64E9jbefKUijGxJAPLCMYDuwLweW5bg2/y+AnQKEJICQokBCZgks0F+oQEOhaxTArKbICMEMpXXQJ0kCfVbDAKVkU1dbEVyfNQUhbAELH+A2eocCFkn0k2OU+ByiMNIzm4Z6EwOtrIAsAgHZVCDbG9hTSgiTT/F2CrHwnfaLHDfreVssjMKEPWdAPL/6Nc9mK+uLeZleLyfzaLgequhkbKc3DAO+fyUSyiISkgRgr0QvKFknARRWDS6VOl8JSTlocvA3ZGynggnWjHAoYjFWb+EWsR9i+JmjpPvKm8utspwLOy0kjO4qg4R4X31XDsslPW5FEjYlmNB8d7aR/3E8Y5Q8FCG18nHBuSAMFxOSQInMEMbKkvSUcE9vABSUkTX1ldb51dX6zlss7GgKN8n8p+dc3w5NzWRAQ8ieUrQKovADBkkM+d74QAoxYOixvhKgqB4WeiUb+IMixAHkGL0lOcwKNUqi7CNHjRolUw4kxz4qtMnzFuSwT0WOJ5f5CPBaTTWwXMyUW0WuBWqf7p+1SHIX38iS8HAXsigLgIGh0B9m1K8pR4yJFH8uVmnNhEp2FhISYghSlJ35JOawn3GV2QrECIuYdkxQkleDcracfty4YY7SbXWEG4rfVO9Fza3x1omo830TIQYXqdz4hhfEOrdXnEKab4pYvTx5hJTBbQVqB1q9tceqwugSq0vQplKwFBRVatXIeC1qWF3U0CRA6XeQ3KHkgbtQOXlJC78DCkJxkTirxqTX5+YzfM6jN2sQRKILfRIl1SxH8MERdHP6COdIynFVTTr+2LAqE5s5asSb55epMz33JkcKutsIutsOenEXOUnU7XbUry7bFQRjfnWD++NWD/I7iqJnXnje+DhRHD3j6J44ik5vWg/QY2dC5XtlQ4BRmMiMiuGKtTMq/wWxiDFW+dXQdrMUJJ2Gl8B/CHMeDH3pf2GehssP3FO5galI4BOjeLZs82N7arXhngxUKuuELxfUWHbYUMq94dbQIzkoWWapLF7/4SFzMi69YlgVD9kdHqq7xKhl4R6vvL4f9AxpKwYNPzWLSN/qjl1GLOOGJD156GUXlwttsH1RkHfO498eHLuRgpx2CrK6UtD4CCmos+0Yd2SgZhUpL+g+BlmG/L7icWAPWHSmZrU15eLIfroD4cItpIh7ANJ2y+pW+xJzT1eSS01jR2wwdIp/cYNRYYbTQQyNPbsPUTPcEpT3Dbo2Gj3E1CbkRtWo6oePpiGnp8hqQ9IRLUM5eYttv5zPkzfks6agOTioMa6cg3obPt7zlabjGLwFc/u+m5yIuZM64cbuu2MuF8svj1K9/Hxre/8A \ No newline at end of file diff --git a/diagrams/tutorials/web/low-level-html/remove-all-code.drawio b/diagrams/tutorials/web/low-level-html/remove-all-code.drawio deleted file mode 100644 index 7024a3a2da..0000000000 --- a/diagrams/tutorials/web/low-level-html/remove-all-code.drawio +++ /dev/null @@ -1 +0,0 @@ -7Vlbd9o4EP41nCQP+PgOPGICtD3JblJykmZfchRb2NrIEiuLW3/9SraMLzgJpJB20+UBrNFoJM33zWhkWtYgXo0ZmEWXNIC4ZerBqmWdt0zT7Bmm+JGSdSYxjJ6dSUKGAiUrBBP0HSqhrqRzFMCkosgpxRzNqkKfEgJ9XpEBxuiyqjaluDrrDIRwSzDxAd6W3qGAR5m06+iF/BNEYZTPbOiqJwa5shIkEQjosiSyhi1rwCjl2VO8GkAsvZf7JRs3eqZ3szAGCd9lwLr7qF/rT70vXfxguk/X1CXnbSezsgB4rjasFsvXuQcYnZMASiN6y/KWEeJwMgO+7F0K0IUs4jEWLUM8TinhIxAjLPH+Sh8pp8LaJSVUdU7onKVjI84FhKZj9cWXWLT8kgqJFlIaYghmKNF8GqcdfpKqjqaZafG4Me6YXtl8RiDDlm2E8YBiytJ9WJ41dEYDIQcYhUTIMJwKx3kJZ/QJ5oqEEmHA23au8vcCMg5XJZFy9hjSGHIm1qZvyK+YrqjvdBURlgWPTEPpRCUO5YQBirrhxnSBrnhQADeDfRmCiz9619dj79PdLe/f3uAH1DZ/H7BHXc9Lt7AL2InYISKhELgHgj6HOofesLagt3KdQ0PfGOfubwT9aDjwrHeMc/f1MNePFOaNWNsNWLtYuiBAC/EYykcUzyjjQu0kAOLX6ktwT1KPZLpi6pJ6gwVN03bWnSIC5Lq9OeeUDDGMpb9FWQAx5LCf7ildqv7PHLL1RIh9TtnpicAz02kDjE/OMnfV7eyx6Fz0yOqSV4cuqPC6PNcROZULaXX2mhbEMoTIYzJL26KKOaefyWzONUoGESAh1DBKOCSnIAhuZCeH8dmee6tPsvGvnAQj/ymf4/ThLHe5GqRMpOu6EEqaHyEciLjQfBGk7PRsv7V0zo9CpN3xeza7GTtkt1JGUYmilky2ctBPzIfF8SWq7R9LaSqH2Z3tHNbRG84ro3eAJNZJvk7w5+unTvztr/vh+Lt9dzVqqFX+JLLMlyRumcKmzmBMF1DOnVqDWTKQ2WHKpPt0HsleSfgPe9btVdMevMwxzGqZ4zYcfUcrcxpZY22xph/IpA0kd+AiO3REsg0wZOltUH7HdJ7AnFvJh+XKXnXRwbnStuxaTdxEFutIZGm8DhlbUMNA3P1VU1RHEQ2pqFuGhdSrkqHQuaB0pijwN+R8rXAAc06rBIErxL/J4ZqjWvelnvOVspw21qrxrPuTnEyvlIIcsBDy1/Xk/l8Ek0EMOFpU340cHJjtAnYM+SahP6a1X5HxP27A/tQ7bNt0qgFrN15s3jNgd7jEQhL05Vs/0fIxSBLkV+GuciMPRqMUikVgNgej8ChbZxFs581snOl2ckExNG1Vxl5BhoQ/INsnul+Kk4NFdwlYpwHXXLZzElAzXFGUnrv5fbnGq01hmZvI9q1GlV9o1gxZeq38cGqGMsdsGUq5t9n22+nY+cXoqNtWlZCuZR6NkC+VX/8T8uiEvF/cLd3pXXzTRbdfxnHMh+D2v1bQ1OB/W4Xj7Eg5550KmkZgdnjxXsoU6kR/NU1UPa7vmibcTreaJpy3J4l9IXzpqv9WCN8nSbTrl92e8cYsYXdszemVPhWzjuscKGeIZvHnYqZe/EdrDf8F \ No newline at end of file diff --git a/diagrams/tutorials/web/low-level-html/remove-element-code.drawio b/diagrams/tutorials/web/low-level-html/remove-element-code.drawio deleted file mode 100644 index ca495ac7aa..0000000000 --- a/diagrams/tutorials/web/low-level-html/remove-element-code.drawio +++ /dev/null @@ -1 +0,0 @@ -7Vlbb9s2FP41Ru2HCbrLeowVOyuWbMVcYOteCkaiJS4UaVD0bb9+pEhZtyR1a0dBghqwLH4kD8nzfTxHokdOlO9vGFhndzSBeGSbyX7kXI9s2zZ9W/xI5KAQy3I0kjKUaKwGlug/qEFToxuUwKLVkFOKOVq3wZgSAmPewgBjdNdutqK4PeoapLAHLGOA++hfKOGZQqeeWeO/QpRm1ciWqWtyUDXWQJGBhO4akDMfORGjlKu7fB9BLL1X+UX1WzxRe5wYg4Sf0uHwz2zz2w2N0e9XcP1wh8jnPPnFUVa2AG/0gvVk+aHyAKMbkkBpxBw5s12GOFyuQSxrd4J0gWU8x6JkidsVJXwBcoQl33/Se8qpsHZHCdWVS7phZd+Mc0Gh7TlX4iImLS+yQWGklKYYgjUqjJjmZUVclE0XK2Va3B6Ne/asaV4JyHJlGWEcUUxZuQ4nms79KBQ4wCglAsNwJRw3KzijD7BqSCgRBmZ952p/byHjcN+AtLNvIM0hZ2Jupq71g6nqoqXvTH3D9xW0q6VkOYHCsoaMKs0Ard70aL0mWNxojr+Db28Avl+G6G/yu5jOZuWUT+G3ECtCJBWAfxm2Xfs0tqdDsu2/Y7YX82jmDLebPd9p8+sHhu+F9SfocR2aA1Id9Kj+g8i0iFH8MLIjmTYzKK4Qw1x6wTYZzOlWpFZhmBcQr96NNIYO9GFF6lEaj259oaEB9RD29HCVJHIgqQq4VRLIAEkwZOVzkbzmdFPASjXFuxHE62YGy+3Io+K8qQ1vyFhRPVs3xBExCLikHogvgbtmpHgvKhg4YwSh1+bd7PNuuUPGBMvq8T6yfSydkKCtuE15ufQetKWojB1J8ple048c5uO5DiFwIi6j4NhLTOx5W+IX5FIl5L5Yl2VzhQjASnfSvjQoJ2fefpwrDY4nhiG8zo81XE6DrDfc0Gs5a3w9rkFJJAOfgVHBIRmPv06qAXUXbeDYQaXQ8WTSGOqedQf/kSl1F1gt/MOHCxi+Fesz4gzhRMjbEKyO9YIm32U8uH6+bRd9Mo5YJ8SRxl7WW7SzjXu7/xXfROscYtkXer0wO0nE6wcTd/pIErGsF4sm/ZcJmKRwqYuU8YymVOzseY3O2smjbnNL6VpT/S/k/KCZBJsysjeEAPeI/y27G54ufWnUXO+15bJw0IUn/V9UEvhWxOSApZCf0FB64Fk+GcSAo237dOny3DhvnpvLeVJ3/URRmbGq/WZagdHO0K7rigd38/jp2FRq0WaaB21nW1by6lkuqT+u+Aw1uI/k/a48SHIlj0tFKcagKFDc5rYtjiEf62pV2afLSqiJHVQvN6zKX5SVwKmAum9ZanX+BBkSjofs/CBiXjqINIL+Yy8OFXbmDgmttog9p5NKTt0Qod/ZDdOOoZfW/wmnnm9B/8EP6d/0nfYGcD1v2A0Q/tT/6+r/hHPgN6D/hvjrJ4xLP/EF71OC0+4ZZeheSIKiWP+HqZrXfwU78/8B \ No newline at end of file diff --git a/diagrams/tutorials/web/low-level-html/simple-dom-tree.drawio b/diagrams/tutorials/web/low-level-html/simple-dom-tree.drawio deleted file mode 100644 index 9857a5f3e2..0000000000 --- a/diagrams/tutorials/web/low-level-html/simple-dom-tree.drawio +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/diagrams/tutorials/web/low-level-html/simple-html.drawio b/diagrams/tutorials/web/low-level-html/simple-html.drawio deleted file mode 100644 index e71c584cb6..0000000000 --- a/diagrams/tutorials/web/low-level-html/simple-html.drawio +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/diagrams/tutorials/web/low-level-html/todo-dart.drawio b/diagrams/tutorials/web/low-level-html/todo-dart.drawio deleted file mode 100644 index 7c01cca784..0000000000 --- a/diagrams/tutorials/web/low-level-html/todo-dart.drawio +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/firebase.json b/firebase.json index 733b5f9b0c..a6108a9741 100644 --- a/firebase.json +++ b/firebase.json @@ -120,15 +120,15 @@ { "source": "/docs/spec/deferred-loading?(.html)", "destination": "/language/libraries#lazily-loading-a-library", "type": 301 }, { "source": "/docs/spec{,/**}", "destination": "/guides/language/spec", "type": 301 }, { "source": "/docs/technical-overview{,/**}", "destination": "/overview", "type": 301 }, - { "source": "/docs/tutorials/add-elements", "destination": "/tutorials/web/low-level-html/add-elements", "type": 301 }, + { "source": "/docs/tutorials/add-elements", "destination": "/library/dart-html", "type": 301 }, { "source": "/docs/tutorials/cmdline", "destination": "/tutorials/server/cmdline", "type": 301 }, - { "source": "/docs/tutorials/connect-dart-html", "destination": "/tutorials/web/low-level-html/connect-dart-html", "type": 301 }, + { "source": "/docs/tutorials/connect-dart-html", "destination": "/library/dart-html", "type": 301 }, { "source": "/docs/tutorials/fetchdata", "destination": "/tutorials/server/fetch-data", "type": 301 }, { "source": "/docs/tutorials/futures", "destination": "/codelabs/async-await", "type": 301 }, { "source": "/docs/tutorials/get-started", "destination": "/tutorials/server/get-started", "type": 301 }, { "source": "/docs/tutorials/httpserver", "destination": "/tutorials/server/httpserver", "type": 301 }, { "source": "/docs/tutorials/indexeddb{,/**}", "destination": "https://api.dart.dev/stable/dart-indexed_db/dart-indexed_db-library.html", "type": 301 }, - { "source": "/docs/tutorials/remove-elements", "destination": "/tutorials/web/low-level-html/remove-elements", "type": 301 }, + { "source": "/docs/tutorials/remove-elements", "destination": "/library/dart-html", "type": 301 }, { "source": "/docs/tutorials/shared-pkgs", "destination": "/guides/packages", "type": 301 }, { "source": "/docs/tutorials/streams", "destination": "/tutorials/language/streams", "type": 301 }, { "source": "/docs/tutorials{,/**}", "destination": "/tutorials", "type": 301 }, @@ -290,7 +290,11 @@ { "source": "/tutorials/language/futures", "destination": "/codelabs/async-await", "type": 301 }, { "source": "/tutorials/libraries", "destination": "/libraries", "type": 301 }, { "source": "/tutorials/libraries/shared-pkgs", "destination": "/guides/packages", "type": 301 }, + { "source": "/tutorials/web", "destination": "/web/get-started", "type": 301 }, { "source": "/tutorials/web/fetch-data", "destination": "/tutorials/server/fetch-data", "type": 301 }, + { "source": "/tutorials/web/get-started", "destination": "/web/get-started", "type": 301 }, + { "source": "/tutorials/web/low-level-html", "destination": "/web/get-started", "type": 301 }, + { "source": "/tutorials/web/low-level-html/:rest*", "destination": "/libraries/dart-html", "type": 301 }, { "source": "/web-ui/observables{,/**}", "destination": "https://pub.dev/packages/observable", "type": 301 }, { "source": "/web/dart-2?(.html)", "destination": "/tools/webdev", "type": 301 }, { "source": "/web/js-interop", "destination": "/interop/js-interop", "type": 301 }, diff --git a/src/_data/side-nav.yml b/src/_data/side-nav.yml index 1bf2602663..ced1ae9972 100644 --- a/src/_data/side-nav.yml +++ b/src/_data/side-nav.yml @@ -227,15 +227,7 @@ match-page-url-exactly: true permalink: /web - title: Get started - permalink: /tutorials/web/get-started - - title: Low-level web programming - children: - - title: Connect Dart & HTML - permalink: /tutorials/web/low-level-html/connect-dart-html - - title: Add elements to the DOM - permalink: /tutorials/web/low-level-html/add-elements - - title: Remove DOM elements - permalink: /tutorials/web/low-level-html/remove-elements + permalink: /web/get-started - title: Deployment permalink: /web/deployment - title: Libraries & packages diff --git a/src/_includes/web-tutorials.md b/src/_includes/web-tutorials.md deleted file mode 100644 index a2331b9118..0000000000 --- a/src/_includes/web-tutorials.md +++ /dev/null @@ -1,20 +0,0 @@ -These tutorials cover topics relevant to Dart web apps. - -
-
-

Connect Dart and HTML

-

Include a Dart script in an HTML page.

-
-
-

Add elements to the DOM

-

Add elements to the web page and move them.

-
-
-

Remove DOM elements

-

Delete elements from the web page.

-
-
-

Use Flutter Web

-

Write your first Flutter app on the web.

-
-
diff --git a/src/assets/img/tutorials/web/add-element-code.png b/src/assets/img/tutorials/web/add-element-code.png deleted file mode 100644 index fd4da9f995..0000000000 Binary files a/src/assets/img/tutorials/web/add-element-code.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/add-element.png b/src/assets/img/tutorials/web/add-element.png deleted file mode 100644 index 956c306e32..0000000000 Binary files a/src/assets/img/tutorials/web/add-element.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/anagram-move.png b/src/assets/img/tutorials/web/anagram-move.png deleted file mode 100644 index 430dcb8291..0000000000 Binary files a/src/assets/img/tutorials/web/anagram-move.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/anagram-newletters.png b/src/assets/img/tutorials/web/anagram-newletters.png deleted file mode 100644 index f7ebb348ab..0000000000 Binary files a/src/assets/img/tutorials/web/anagram-newletters.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/child-references.png b/src/assets/img/tutorials/web/child-references.png deleted file mode 100644 index 7a38b148d3..0000000000 Binary files a/src/assets/img/tutorials/web/child-references.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/css-code.png b/src/assets/img/tutorials/web/css-code.png deleted file mode 100644 index e4b1bf2090..0000000000 Binary files a/src/assets/img/tutorials/web/css-code.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/css-property-value.png b/src/assets/img/tutorials/web/css-property-value.png deleted file mode 100644 index de6994e5b7..0000000000 Binary files a/src/assets/img/tutorials/web/css-property-value.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/css-rule-explained.png b/src/assets/img/tutorials/web/css-rule-explained.png deleted file mode 100644 index dcf5398ff6..0000000000 Binary files a/src/assets/img/tutorials/web/css-rule-explained.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/dart-html-connect-full.png b/src/assets/img/tutorials/web/dart-html-connect-full.png deleted file mode 100644 index 6a9da776e1..0000000000 Binary files a/src/assets/img/tutorials/web/dart-html-connect-full.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/dart-html-connect.png b/src/assets/img/tutorials/web/dart-html-connect.png deleted file mode 100644 index 7a00f7601b..0000000000 Binary files a/src/assets/img/tutorials/web/dart-html-connect.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/dynamic-dart.png b/src/assets/img/tutorials/web/dynamic-dart.png deleted file mode 100644 index 602731b1ce..0000000000 Binary files a/src/assets/img/tutorials/web/dynamic-dart.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/event-handler-idiom.png b/src/assets/img/tutorials/web/event-handler-idiom.png deleted file mode 100644 index 142c3ed13f..0000000000 Binary files a/src/assets/img/tutorials/web/event-handler-idiom.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/event-handler-todo.png b/src/assets/img/tutorials/web/event-handler-todo.png deleted file mode 100644 index 5875f34065..0000000000 Binary files a/src/assets/img/tutorials/web/event-handler-todo.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/event-listener-exp.png b/src/assets/img/tutorials/web/event-listener-exp.png deleted file mode 100644 index 669a7daabf..0000000000 Binary files a/src/assets/img/tutorials/web/event-listener-exp.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/paragraph-dom.png b/src/assets/img/tutorials/web/paragraph-dom.png deleted file mode 100644 index e8f501b300..0000000000 Binary files a/src/assets/img/tutorials/web/paragraph-dom.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/parent-reference.png b/src/assets/img/tutorials/web/parent-reference.png deleted file mode 100644 index bf1ba6a83d..0000000000 Binary files a/src/assets/img/tutorials/web/parent-reference.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/relationships.png b/src/assets/img/tutorials/web/relationships.png deleted file mode 100644 index 7b96804ee0..0000000000 Binary files a/src/assets/img/tutorials/web/relationships.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/remove-all-code.png b/src/assets/img/tutorials/web/remove-all-code.png deleted file mode 100644 index bdd32d8b82..0000000000 Binary files a/src/assets/img/tutorials/web/remove-all-code.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/remove-all-elements.png b/src/assets/img/tutorials/web/remove-all-elements.png deleted file mode 100644 index 8ff3e79fcf..0000000000 Binary files a/src/assets/img/tutorials/web/remove-all-elements.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/remove-element-code.png b/src/assets/img/tutorials/web/remove-element-code.png deleted file mode 100644 index 2b47a07a4c..0000000000 Binary files a/src/assets/img/tutorials/web/remove-element-code.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/remove-element.png b/src/assets/img/tutorials/web/remove-element.png deleted file mode 100644 index cd0b86b1b0..0000000000 Binary files a/src/assets/img/tutorials/web/remove-element.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/simple-dom-tree.png b/src/assets/img/tutorials/web/simple-dom-tree.png deleted file mode 100644 index 54d1cd63ff..0000000000 Binary files a/src/assets/img/tutorials/web/simple-dom-tree.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/simple-html.png b/src/assets/img/tutorials/web/simple-html.png deleted file mode 100644 index d69b959604..0000000000 Binary files a/src/assets/img/tutorials/web/simple-html.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/todo-dart.png b/src/assets/img/tutorials/web/todo-dart.png deleted file mode 100644 index 23296b5851..0000000000 Binary files a/src/assets/img/tutorials/web/todo-dart.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/todo-dom.png b/src/assets/img/tutorials/web/todo-dom.png deleted file mode 100644 index ad312fb1a5..0000000000 Binary files a/src/assets/img/tutorials/web/todo-dom.png and /dev/null differ diff --git a/src/assets/img/tutorials/web/todo-html.png b/src/assets/img/tutorials/web/todo-html.png deleted file mode 100644 index ba8c087c42..0000000000 Binary files a/src/assets/img/tutorials/web/todo-html.png and /dev/null differ diff --git a/src/guides/whats-new.md b/src/guides/whats-new.md index a8fcdc6b23..1dde22b6f2 100644 --- a/src/guides/whats-new.md +++ b/src/guides/whats-new.md @@ -501,7 +501,7 @@ we made the following changes to this site: [`webdev`]: /tools/webdev [Other operators]: /language/operators#other-operators -[Low-level HTML tutorials]: /tutorials/web/low-level-html +[Low-level HTML tutorials]: /web/get-started [native types]: /interop/c-interop#interfacing-with-native-types [initializing formal parameters]: /language/constructors#initializing-formal-parameters diff --git a/src/overview.md b/src/overview.md index ec327f5049..71b03a4c34 100644 --- a/src/overview.md +++ b/src/overview.md @@ -236,7 +236,8 @@ Dart web contains two compilation modes: techniques such as dead-code elimination. More information: -* [Get started: Web apps](/tutorials/web/get-started) + +* [Build a web app with Dart](/web/get-started) * [`dart compile js`](/tools/dart-compile#js) * [`webdev` tool](/tools/webdev) * [Web deployment tips](/web/deployment) diff --git a/src/tools/dartpad/troubleshoot.md b/src/tools/dartpad/troubleshoot.md index 6895473f2b..acb00f635f 100644 --- a/src/tools/dartpad/troubleshoot.md +++ b/src/tools/dartpad/troubleshoot.md @@ -74,10 +74,8 @@ Here are some possible causes and fixes: make sure you have the proper project setup. For example, the `HTML` tab doesn't show all the necessary markup to run Dart code. - To learn about connecting Dart code to the web, - see [HTML and Dart connections][]. To get started creating web apps with Dart, - see [Get started: Web apps](/tutorials/web/get-started). + check out [Build a web app with Dart](/web/get-started). ## Analysis issues and compilation results don't match displayed code @@ -121,4 +119,3 @@ If you have any other problems when using DartPad, [chrome-cookies]: https://support.google.com/chrome/answer/95647 [new-issue]: https://github.com/dart-lang/dart-pad/issues/new [null safety]: /null-safety -[HTML and Dart connections]: /tutorials/web/low-level-html/connect-dart-html#connections diff --git a/src/tutorials/index.md b/src/tutorials/index.md index 743719ffd9..f1c97658df 100644 --- a/src/tutorials/index.md +++ b/src/tutorials/index.md @@ -38,10 +38,6 @@ which are fundamental to most Dart programs. {% include server-tutorials.md %} -## Web apps - -{% include web-tutorials.md %} - ## More tutorials Check out the [Flutter codelabs and tutorials]({{site.flutter-docs}}/codelabs). diff --git a/src/tutorials/web/get-started.md b/src/tutorials/web/get-started.md deleted file mode 100644 index de0dc868f2..0000000000 --- a/src/tutorials/web/get-started.md +++ /dev/null @@ -1,235 +0,0 @@ ---- -title: "Get started: Web apps" -description: A guide to get you quickly writing web apps in Dart. -js: [{url: 'https://dartpad.dev/inject_embed.dart.js', defer: true}] ---- - -Follow these steps to start using Dart to develop **web-only** apps. -If you want to write a **multi-platform** app, then -[try Flutter.]({{site.flutter}}/web) - -Still here? -First you'll play with Dart in your browser, no download required. -Then you'll install Dart and build a small web app. - - -## 1. Play with a web app in DartPad - -With [DartPad][DartPad documentation] -you can experiment with the Dart language and APIs, -no download necessary. - -For example, here's an embedded DartPad that lets you play with -the code for a todo-list generator. -Click **Run** to run the app; -the UI output appears to the right of the code. -Try editing the source code—perhaps you'd like to add "horses" -to the list of pets. - -{{site.alert.note}} - {% include dartpad-embedded-troubleshooting.md %} -{{site.alert.end}} - -```dart:run-dartpad:mode-html:ga_id-play_with_a_web_app -{$ begin main.dart $} -import 'dart:html'; - -Iterable thingsTodo() sync* { - const actions = ['Walk', 'Wash', 'Feed']; - const pets = ['cats', 'dogs']; - - for (final action in actions) { - for (final pet in pets) { - if (pet != 'cats' || action == 'Feed') { - yield '$action the $pet'; - } - } - } -} - -void addTodoItem(String item) { - final listElement = LIElement()..text = item; - todoList.children.add(listElement); -} - -final UListElement todoList = querySelector('#todolist') as UListElement; - -void main() { - thingsTodo().forEach(addTodoItem); -} - -{$ end main.dart $} -{$ begin index.html $} -

A Simple To-Do List

- -

Things to do:

- - -{$ end index.html $} -``` - -More information: - -* [DartPad documentation][] -* [Dart language tour][] -* [Dart core library documentation][] -* [Tutorial introduction to using Dart for basic web programming][] - -## 2. Install Dart - -{% include get-sdk.md %} - -## 3. Get CLI tools or an IDE (or both) - -terminal -If you like to use the command line, install the [`webdev`][] package: - -```terminal -$ dart pub global activate webdev -``` - -web -Although using an IDE is optional, we highly recommend using one. -For a list of available IDEs, see the -[overview of editors & debuggers][]. - - -## 4. Create a web app - -terminal -To create a web app from the command line, use these commands: - -```terminal -$ dart create -t web quickstart -``` - -web -To create the same web app from an IDE that has Dart integration, -create a project using the template named **Bare-bones Web App**. - - -## 5. Run the app - -terminal -To run the app from the command line, -use [`webdev`][] to build and serve the app: - -```terminal -$ cd quickstart -$ webdev serve -``` - -web -Or run the app from your IDE. - -To view your app, use the Chrome browser -to visit the app's URL—for example, -[localhost:8080](http://localhost:8080). - -Whether you use an IDE or the command line, -[`webdev serve`][] builds and serves your app -using the development JavaScript compiler. -Startup is slowest the first time the -development compiler builds and serves your app. -After that, assets are cached on disk and incremental builds are much faster. - -Once your app has compiled, the browser should display -"Your Dart app is running." - -![Launched bare-bones app](/assets/img/bare-bones-web-app.png){:width="500"} - - -## 6. Add custom code to the app - -Let's customize the app you just created. - - 1. Copy the `thingsTodo()` function from the DartPad above - to the `web/main.dart` file. - - 2. Add the `newLI()` function (as shown below). - It creates a new `LIElement` containing the specified `String`. - - {% prettify dart tag=pre+code %} - Iterable thingsTodo() sync* { ... } - - [!LIElement newLI(String itemText) => LIElement()..text = itemText;!] - - void main() { ... } - {% endprettify %} - - 3. In the `main()` function, initialize the `output` element using - `thingsTodo()`: - - {% prettify dart tag=pre+code %} - Iterable thingsTodo() sync* { ... } - - LIElement newLI(String itemText) => LIElement()..text = itemText; - - void main() { - querySelector('#output')?[!.children.addAll(thingsTodo().map(newLI));!] - } - {% endprettify %} - - 4. Save your changes. - - 5. The webdev tool automatically rebuilds your app. - Refresh the app's browser window. - Now your simple Dart app has a todo list! - It should look something like this:
- ![Running the revised app](/assets/img/bare-bones-todo.png){:width="500"} - - 6. Optionally, improve the formatting by editing `web/styles.css`, - then reload the app to check your changes. - - {% prettify css tag=pre+code %} - #output { - padding: 20px; - [!text-align: left;!] - } - {% endprettify %} - - -## 7. Use Dart DevTools to inspect the app - -Use Dart DevTools to set breakpoints, view values and types, -and step through your app's Dart code. -For setup details and a walkthrough, see -[Debugging Dart Web Apps][]. - -{{site.alert.info}} - **Feeling lost? Don't worry!** This was a whirlwind introduction to Dart and - web programming that left out many details. For a gentler approach, try a - [low-level HTML tutorial for Dart][]. -{{site.alert.end}} - - -## What next? - -Check out these resources: - -* Tutorials and codelabs for Dart - * [Tutorials](/tutorials) - * [Codelabs](/codelabs) -* Dart language, libraries, and conventions - * [Language tour](/language) - * [Core library documentation](/libraries) - * [Effective Dart](/effective-dart) -* Tools & libraries - * [Dart SDK](/tools/sdk) - * [Dart tools](/tools) - * [IDEs](/tools#ides-and-editors) - * [Web libraries and packages](/web/libraries) - -If you get stuck, find help at [Community and support.](/community) - -[DartPad documentation]: /tools/dartpad -[Dart language tour]: /language -[Dart core library documentation]: /libraries -[Dart tools]: /tools -[Debugging Dart Web Apps]: /web/debugging -[low-level HTML tutorial for Dart]: /tutorials/web/low-level-html -[overview of editors & debuggers]: /tools#ides-and-editors -[Tutorial introduction to using Dart for basic web programming]: /tutorials/web/low-level-html/connect-dart-html -[`webdev`]: /tools/webdev -[`webdev serve`]: /tools/webdev#serve diff --git a/src/tutorials/web/index.md b/src/tutorials/web/index.md deleted file mode 100644 index 585e2b430d..0000000000 --- a/src/tutorials/web/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Tutorials: web apps" -description: Tutorials for writing Dart web apps. -toc: false ---- - -{% include web-tutorials.md %} - -For more tutorials, see the [Dart tutorials page](/tutorials). diff --git a/src/tutorials/web/low-level-html/add-elements.md b/src/tutorials/web/low-level-html/add-elements.md deleted file mode 100644 index af91f5487c..0000000000 --- a/src/tutorials/web/low-level-html/add-elements.md +++ /dev/null @@ -1,527 +0,0 @@ ---- -title: Add elements to the DOM -description: Learn how to add created elements to the DOM. -js: [{url: 'https://dartpad.dev/inject_embed.dart.js', defer: true}] - -nextpage: - url: /tutorials/web/low-level-html/remove-elements - title: Remove DOM elements -prevpage: - url: /tutorials/web/low-level-html/connect-dart-html - title: Connect Dart and HTML ---- - -
-

What's the point?

- - * In Dart, page elements are of type `Element`. - * An `Element` knows its parent. - * An `Element` keeps its children in a `List`. - * Change the DOM by adding or removing children of elements. - * Respond to user input with an `EventListener`. -
- -{{site.alert.note}} - This page uses embedded DartPads to display runnable examples. - {% include dartpads-embedded-troubleshooting.md %} -{{site.alert.end}} - -As you learned in the previous tutorial, -the DOM represents the structure -of a web page document using a simple tree structure. -Each node in the tree represents an item on the page. -Each node in the tree keeps track of both -its parent and its children. -In Dart, the -[`Node`]({{site.dart-api}}/{{site.data.pkg-vers.SDK.channel}}/dart-html/Node-class.html){:target="_blank" rel="noopener"} -class contains the methods and properties -that implement a node's tree functionality. - -HTML page elements are one kind of node that can be in the DOM tree. -They have a rectangular area on the page and can receive events. -Examples of elements include -heading elements, paragraph elements, table elements, -button elements, and so on. - -In Dart, -elements are implemented by the -[`Element`]({{site.dart-api}}/{{site.data.pkg-vers.SDK.channel}}/dart-html/Element-class.html){:target="_blank" rel="noopener"} -class, which is a subclass of `Node`. -Because the nodes you care about most are usually elements, -this tutorial focuses on `Element`, -rather than on `Node`. - -## Running the Todo app {#try-app} - -In this tutorial, you will be working with a sample web app -that is a partial implementation of a todo list. -This program dynamically changes the DOM, -and therefore the web page, -by adding elements to the DOM tree. - -**Try it!** -Click **Run** to start the web app. -Then type in the app's text field, and press return. -The app adds an item to the list. -Enter a few items into the input field. - -```dart:run-dartpad:mode-html:ga_id-running_the_todo_app:null_safety-true -{$ begin main.dart $} -import 'dart:html'; - -final InputElement toDoInput = querySelector('#to-do-input') as InputElement; -final UListElement toDoList = querySelector('#to-do-list') as UListElement; - -void main() { - toDoInput.onChange.listen(addToDoItem); -} - -void addToDoItem(Event e) { - final newToDo = LIElement()..text = toDoInput.value; - toDoInput.value = ''; - toDoList.children.add(newToDo); -} -{$ end main.dart $} -{$ begin index.html $} -

Procrastinator's Todo

- -
- -
- -
-
    -
-
-{$ end index.html $} -{$ begin styles.css $} -body { - font-family: 'Roboto', sans-serif; - background-color: WhiteSmoke; - margin: 15px; - color: black; -} - -h2 { - color: black; -} - -#to-do-input { - font-family: 'Roboto', sans-serif; - font-size: 14px; - font-weight: normal; - padding: 5px 0px 5px 5px; - width: 100%; - border: 1px solid Silver; - background-color: White; -} - -#to-do-list { - padding: 0; - margin: 0; - list-style-position: inside; -} - -#to-do-list li { - padding: 5px 0px 5px 5px; - border-bottom: 1px dotted Silver; -} -{$ end styles.css $} -``` - -This is the beginning of an app to manage a list of things to do. -Right now, this app is for procrastinators only -because the program can only add items to your to do list -but not remove them. - -## About parent and child Elements in Dart {#tree-structure} - -The `Node` class implements the basic treeing behavior -for nodes in the Dart DOM. -The `Element` class is a subclass of `Node` that implements -the behavior specific to page element nodes. -For example, -an element knows the width and height of -its enclosing rectangle on the page -and it can receive events. - -You can manipulate the DOM tree by adding and deleting nodes. -However, many Dart apps are concerned only with page elements. -So for convenience and code simplicity, -the `Element` class implements API -for interacting with -a subset of the DOM that includes -only the nodes that are elements. -You can work with a virtual tree of elements -rather than the more complex tree of `Node` objects. -This tutorial shows you how to manipulate the -DOM through the `Element` class. - -An `Element` object has a parent `Element` -and maintains references to its children elements in a list. - -An element with multiple child elements and a parent element - -An `Element` object has at most one parent `Element`. -An `Element` object's parent is final and cannot be changed. -So you cannot move an `Element` by changing its parent. -Get an `Element`'s parent with the getter `parent`. -For example, if you have an `Element` with the name `anElement` -you would refer to its parent element with `anElement.parent`. - -Dart code reference to anElement's parent - -An `Element` object maintains references to its child elements in a list. -[`List`]({{site.dart-api}}/{{site.data.pkg-vers.SDK.channel}}/dart-core/List-class.html){:target="_blank" rel="noopener"}is a class in the dart:core library -that implements an indexable collection with a length. -A list can be of fixed size or extendable. - -`List` is an example of a _generic_ (or _parameterized_) type—a type -that can declare formal type parameters. -This means that a list can be declared -to contain only objects of a particular type. -For example: - -| List declaration | List description | -|------------------|------------------| -| `List` | List of strings | -| `List` | List of integers | -| `List` | List of elements | -{: .table} - -An `Element` maintains references to its child element in a `List`, -which your Dart code can refer to with the getter `children`. -The `List` class has various methods and operators -whereby you can refer to each child element individually, -iterate over the list, and add and remove elements. - -Dart code references to anElement's list of children and individual child Elements - -You can change the tree structure by adding children to -and removing children from an element's list of children. - -Add a child element - -When you change an `Element` or its child elements in your Dart program, -you change the DOM and therefore the web page. -The browser re-renders the page automatically. - -## Setting up the page in HTML {#html-code} - -Let's take a look at the todo app -to see how it dynamically -adds an element to the DOM -and displays a new item in the list of things to do. - -The HTML code for the todo app sets up the initial HTML page, -and thereby the initial DOM tree. -You could get the same results using Dart code, -but it's usually better to define the primary page elements -in HTML code (easier to read, quicker to load). - -todo app and its corresponding HTML code - -The following diagram shows a partial DOM tree for the todo app. - -The todo app and part of its DOM tree - -Of interest are the two-page elements that have IDs: -`to-do-input` and `to-do-list`. -The first identifies the `` element into which the user types. -The second identifies the `
    ` (unordered list) element -containing the task items. -Dart code adds elements to this list -whenever the user enters text into the input element. - -## Getting an element from the DOM {#dart-code} - -The following diagram shows -the Dart code for the todo app. - -todo app and its corresponding Dart code - -The top-level variables are initialized using -the `dart:html` library's top-level `querySelector()` function -to get the interesting elements from the DOM. -Because calling `querySelector()` isn't free, -if a program refers to an element more than once -it should stash a reference to the element if possible. - -This program stashes a reference -to the input element -in a top-level variable called `toDoInput`. -The unordered list -is in the top-level variable `toDoList`. - -Note the types of these variables: `InputElement` and `UListElement`. -These are both subclasses of `Element`. -The `dart:html` library has dozens of `Element` subclasses, -many of which correspond to certain HTML tags. -This program uses three: - -| HTML tag | Dart class | -|-----------|-------------------------------------------------------------------------------------------------------------------------------------------| -| `` | [`InputElement`]({{site.dart-api}}/{{site.data.pkg-vers.SDK.channel}}/dart-html/InputElement-class.html){:target="_blank" rel="noopener"} | -| `
      ` | [`UListElement`]({{site.dart-api}}/{{site.data.pkg-vers.SDK.channel}}/dart-html/UListElement-class.html){:target="_blank" rel="noopener"} | -| `
    • ` | [`LIElement`]({{site.dart-api}}/{{site.data.pkg-vers.SDK.channel}}/dart-html/LIElement-class.html){:target="_blank" rel="noopener"} | -{: .table} - -## Registering an event handler {#event-handler} - -When a user enters text into the input field, -a _change_ event fires, -indicating that the value in the input field has just changed. -The todo app defines a function, `addToDoItem()`, -that can handle these change events. -The following code connects `addToDoItem()` to the input field: - -Add an event handler to the toDoInput element - -Rather than dissect this busy line of code, -think of it as a Dart idiom -for adding an event handler to an `Element` object. - -Dart idiom: Add an event handler to an Element - -A change event is just one of many types of events -that an input element can generate. -For example, you can use `click` to handle mouse clicks, -or `keyDown` for when the user presses a key on the keyboard. - -## About EventListener functions {#about-event-listeners} - -The argument passed to the `listen()` method is a _callback function_ -of type -[`EventListener`]({{site.dart-api}}/{{site.data.pkg-vers.SDK.channel}}/dart-html/EventListener.html){:target="_blank" rel="noopener"}. -`EventListener` is a typedef defined in the `dart:html` library as follows: - -```dart -typedef void EventListener(Event event) -``` - -As you can see, an EventListener returns no value (`void`) and takes an -[`Event`]({{site.dart-api}}/{{site.data.pkg-vers.SDK.channel}}/dart-html/Event-class.html){:target="_blank" rel="noopener"}object as an argument. -Any function with this signature is an `EventListener`. -Based on its signature, the `addToDoItem()` function is an `EventListener`. - -```dart -void addToDoItem(Event e) { ... } -``` - -The `Event` object passed into an `EventListener` function -carries information about the `Event` that occurred. -For example, the `Event` object knows which `Element` fired the event, -and when. -For location-specific events such as mouse clicks, -the `Event` object also knows where the event occurred. - -The `addToDoItem()` function ignores the Event object passed to it. - -## Adding an element to the DOM tree {#add-elem} - -The change event handler has the following code: - -The addToDoItem() function explained - -The final line of code is where the DOM gets changed. - -An `Element` object keeps references to all of its children -in a list called `children`. -By adding and removing elements to and from this list, -the code changes the DOM. -When the DOM changes, the browser re-renders the browser page. -The effect, in our todo app, is that a new bullet item appears -in the to do list. - -## Styling the page elements {#about-css} - -Let's take a look at the CSS file for this app. - -The effect of CSS styles - -This code uses three different kinds of CSS selectors. -The first is an HTML element selector that matches the `` element -and sets some basic style attributes, -such as the background color, -for the entire page. -Next in the file are two ID selectors: -`#to-do-input` controls the appearance of the input field -and `#to-do-list` sets the appearance of the unordered list element -in general. -The elements in the list are controlled by the final rule, -which uses both an ID selector and an HTML selector. -This rule matches all `
    • ` elements in the -element with the ID `to-do-list`, thus styling -each item in the to do list. - -## Moving elements within the DOM tree {#moving-elements} - -The Anagram app shows how to move an element within the DOM. - -**Try it!** -Click **Run** to start the web app. -Then form a word by clicking the app's letter tiles. - -```dart:run-dartpad:mode-html:ga_id-moving_elements_within_the_dom_tree -{$ begin main.dart $} -import 'dart:html'; -import 'dart:math'; - -// Should remove tiles from here when they are selected -// otherwise the ratio is off. -const String scrabbleLetters = - 'aaaaaaaaabbccddddeeeeeeeeeeeeffggghhiiiiiiiiijkllllmmnnnnnnooooooooppqrrrrrrssssttttttuuuuvvwwxyyz**'; -const Map scrabbleValues = { - 'a': 1, 'e': 1, 'i': 1, 'l': 1, 'n': 1, - 'o': 1, 'r': 1, 's': 1, 't': 1, 'u': 1, - 'd': 2, 'g': 2, 'b': 3, 'c': 3, 'm': 3, - 'p': 3, 'f': 4, 'h': 4, 'v': 4, 'w': 4, - 'y': 4, 'k': 5, 'j': 8, 'x': 8, 'q': 10, - 'z': 10, '*': 0 -}; - -final List buttons = []; -final Element letterpile = querySelector('#letterpile') as Element; -final Element result = querySelector('#result') as Element; -final Element value = querySelector('#value') as Element; -final ButtonElement clearButton = - querySelector('#clear-button') as ButtonElement; -int wordValue = 0; - -void main() { - clearButton.onClick.listen(newLetters); - generateNewLetters(); -} - -void moveLetter(MouseEvent e) { - final letter = e.target; - if (letter is! Element) { - return; - } - if (letter.parent == letterpile) { - result.children.add(letter); - wordValue += scrabbleValues[letter.text] ?? 0; - value.text = '$wordValue'; - } else { - letterpile.children.add(letter); - wordValue -= scrabbleValues[letter.text] ?? 0; - value.text = '$wordValue'; - } -} - -void newLetters(Event e) { - letterpile.children.clear(); - result.children.clear(); - generateNewLetters(); -} - -void generateNewLetters() { - final indexGenerator = Random(); - wordValue = 0; - value.text = '0'; - buttons.clear(); - for (var i = 0; i < 7; i++) { - final letterIndex = indexGenerator.nextInt(scrabbleLetters.length); - // Should remove the letter from scrabbleLetters to keep the - // ratio correct. - final button = ButtonElement(); - button.classes.add('letter'); - button.onClick.listen(moveLetter); - button.text = scrabbleLetters[letterIndex]; - buttons.add(button); - letterpile.children.add(button); - } -} -{$ end main.dart $} -{$ begin index.html $} -

      Anagram

      - -

      Pile:

      -
      -
      -

      Word:

      -
      -
      - -

      Scrabble Value:

      -

      - - -{$ end index.html $} -{$ begin styles.css $} -body { - background-color: #F8F8F8; - font-family: 'Roboto', sans-serif; - font-size: 14px; - font-weight: normal; - line-height: 1.2em; - margin: 15px; -} - -h1, h3, p { - color: black; -} - -.letter { - width: 48px; - height: 48px; - font-size: 32px; - background-color: Lavender; - color: purple; - border: 1px solid black; - margin: 2px 2px 2px 2px; -} -{$ end styles.css $} -``` - -When the program starts, -it creates one button element for each of seven -randomly selected letters. -The program adds each button to a DOM element—a simple -`
      ` element identified by the CSS selector `letterpile`—with -a call to `letterpile.children.add()`. - -Dart code populates the letter pile with buttons - -Each button element in the letter pile -has a mouse click handler called `moveLetter()`. -If the button is in the letter pile, -the mouse click handler moves the button to the end of the word. -If the button is in the word, -the mouse click handler moves the button back to the letter pile. - -To move the button from the letter pile to the word or back, -the code simply adds the button to a DOM element -that is different from the button's current parent. -Because an element can have only one parent, -adding the button to a different parent -automatically removes it from its previous parent. - -The mouse click handler adds the button to the word, thus moving it - -The `+=` operator is a compound assignment operator, -which combines an operation (`+`) with an assignment. - -The `scrabbleValues` variable is a -[`Map`]({{site.dart-api}}/{{site.data.pkg-vers.SDK.channel}}/dart-core/Map-class.html){:target="_blank" rel="noopener"}—a -data structure that contains key/value pairs. -Use the square bracket syntax to retrieve a value by its key -and the `length` property to get the number of pairs it contains. - -## What next? - -The next tutorial, [Remove DOM Elements](remove-elements), -describes how to remove elements from the DOM and items off your todo list. diff --git a/src/tutorials/web/low-level-html/connect-dart-html.md b/src/tutorials/web/low-level-html/connect-dart-html.md deleted file mode 100644 index 90e7d30ab6..0000000000 --- a/src/tutorials/web/low-level-html/connect-dart-html.md +++ /dev/null @@ -1,543 +0,0 @@ ---- -title: Connect Dart and HTML -description: Learn how to set up basic scaffolding of a Dart web app. -nextpage: - url: /tutorials/web/low-level-html/add-elements - title: Add elements to the DOM ---- - -This tutorial is the first of a series on -basic, low-level web programming with the dart:html library. -If you use a web framework, -some of these concepts might be useful, -but you might not need to use the dart:html library at all. - -
      -

      What's the point?

      - - * DartPad lets you write a simple Dart web app without HTML boilerplate. - * A Dart web app has Dart, HTML, and (usually) CSS code. - * Compile a web app's Dart code to JavaScript to run the app in any modern browser. - * An HTML file hosts your Dart code in a browser page. - * The DOM models a browser page in a tree/node structure. - * Use `querySelector()` with an ID to get an element from the DOM. - * CSS selectors are patterns used to select matching elements in the DOM. - * Use CSS rules to style elements. -
      - -To write a low-level web app with Dart, -you need to understand -several topics—the DOM tree, nodes, elements, -HTML, and the Dart language and libraries. - -The interdependencies are circular, -but we have to begin somewhere, -so we begin with a simple HTML file, -which introduces the DOM tree and nodes. -From there, -you build a bare bones, stripped-down -Dart app -that contains just enough code to -dynamically put text on the page from the Dart side. - -Though simple, -this example shows you how to connect a Dart -app to an HTML page and -one way that a Dart app can interact with items on the page. -These concepts provide the foundation -for more interesting and useful web apps. - -## About the Dart, HTML, and CSS triumvirate {#source-files} - -If you've used -[DartPad]({{site.dartpad}}){:target="_blank" rel="noopener"}, -you may have already seen the Dart, HTML, and CSS tabs -that let you write the code for a web app. -Each of these three languages -is responsible for a different aspect of the web app. - -| Language | Purpose | -|----------|----------------------------------------------------------------------------------------------| -| Dart | Implements the interactivity and dynamic behavior of the web app | -| HTML | Describes the content of the web app's page (the elements in the document and the structure) | -| CSS | Governs the appearance of page elements | -{: .table} - -A Dart program can -respond to events such as mouse clicks, -manipulate the elements on a web page dynamically, -and save information. -Before the web app is deployed, -the Dart code must be compiled into JavaScript code. - -HTML is a language for describing web pages. -Using tags, HTML sets up the initial page structure, -puts elements on the page, -and embeds any scripts for page interactivity. -HTML sets up the initial document tree -and specifies element types, classes, and IDs, -which allow HTML, CSS, and Dart programs to refer to the same elements. - -CSS, which stands for _Cascading Style Sheets_, describes the appearance -of the elements within a document. -CSS controls many aspects of formatting: -type face, font size, color, background color, -borders, margins, and alignment, to name a few. - - -## About the DOM {#dom-intro} - -The Document Object Model (DOM) -represents the structure of a web document as a tree of nodes. -When an HTML file is loaded into a browser, -the browser interprets the HTML -and displays the document in a window. -The following diagram shows a simple HTML file and -the resulting web browser page in Chrome. - -A simple HTML file and its resulting web page - -HTML uses tags to describe the document. -For example, the simple HTML code above -uses the `` tag for the page title, -`<h1>` for a level-one header, -and `<p>` for a paragraph. -Some tags in the HTML code, -such as `<head>` and `<body>`, -are not visible on the web page, -but do contribute to the structure of the document. - -In the DOM, -the document object sits at the root of the tree -(it has no parent). -Different kinds of nodes in the tree -represent different kinds of objects in the document. -For example, the tree has page elements, -text nodes, and attribute nodes. -Here is the DOM tree for the simple HTML file above. - -<img class="scale-img-max" src="/assets/img/tutorials/web/simple-dom-tree.png" - alt="A Dart dynamically changing the DOM"> - -Notice that some tags, such as the `<p>` paragraph tag, -are represented by multiple nodes. -The paragraph itself is an element node. -The text within the paragraph is a text node -(and in some cases, might be a subtree containing many nodes). -And the ID is an attribute node. - -Except for the root node, each node in the tree has exactly one parent. -Each node can have many children. - -An HTML file defines the initial structure of a document. -Dart or JavaScript can dynamically modify that document -by adding, deleting, and modifying the nodes in the DOM tree. -When the DOM is changed, -the browser immediately re-renders the window. - -<img class="scale-img-max" src="/assets/img/tutorials/web/dynamic-dart.png" - alt="A Dart program can dynamically change the DOM"> - -The diagram shows a small Dart program that makes -a modest change to the DOM by dynamically -changing a paragraph's text. -A program could add and delete nodes, -or even insert an entire subtree of nodes. - - -## Create a new Dart app {#create-dart-app} - -1. Go to the [DartPad]({{site.dartpad}}){:target="_blank" rel="noopener"}. -2. Click the **New Pad** button to undo any changes you might have made - the last time you visited DartPad. -3. Click **Dart**. -4. Select **HTML** (below **Dart**), - so you can edit HTML and CSS in DartPad. - -{{site.alert.note}} - These instructions feature DartPad, - which hides some HTML boilerplate code. - If you want to use any other editor, - then we recommend starting with a small Dart web app sample - and modifying the non-script tags inside the `<body>` section. - [HTML and Dart connections](#connections) shows the full HTML code. -{{site.alert.end}} - -## Edit the HTML source code {#create-html} - -1. Click **HTML**, at the upper left of DartPad. - The view switches from Dart code to the (currently non-existent) HTML code. - -2. Add the following HTML code: - - ```html - <p id="RipVanWinkle"> - RipVanWinkle paragraph. - </p> - ``` - -3. Expand the output pane to see how a browser would render your HTML. - - -## About the HTML source code {#about-html-code} - -This HTML code is similar to the HTML code in the -various diagrams earlier in this tutorial, -but it's even simpler. - -In DartPad you need only the tags you really care about—in this case: `<p>`. -You don't need surrounding tags such as `<html>` and `<body>`. -Because DartPad knows where your Dart code is, -you don't need a `<script>` tag. - -{{site.alert.info}} - [HTML and Dart connections](#connections) shows the full HTML code - that you need to run your web app outside DartPad. -{{site.alert.end}} - -The paragraph tag has the identifier `RipVanWinkle`. -The Dart code you create in the next step uses this ID -to get the paragraph element. - - -## Edit the Dart source code {#dart-editor-happiness} - -1. Click **Dart** at the upper right of DartPad. - The view switches from HTML code to Dart code. - -2. Change the Dart code to the following: - - ```dart - import 'dart:html'; - - void main() { - querySelector('#RipVanWinkle')!.text = 'Wake up, sleepy head!'; - } - ``` - -3. Click **Run** to execute your code. - -The text in the output pane changes to "Wake up, sleepy head!" - - -## About the Dart source code {#about-dart-code} - -Let's step through the Dart code. - -### Importing libraries - -The import directive imports the specified library, -making all the classes and functions -in that library -available to your program. - -The following `import` statement imports Dart's HTML library, -which contains key classes and functions for programming the DOM: - -```dart -import 'dart:html'; -``` - -This program imports Dart's HTML library, -which contains key classes and functions for programming the DOM. -Key classes include: - -| Dart class | Description | -|------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------| -| <a href="{{site.dart-api}}/{{site.data.pkg-vers.SDK.channel}}/dart-html/Node-class.html" target="_blank" rel="noopener">Node</a> | Implements a DOM node. | -| <a href="{{site.dart-api}}/{{site.data.pkg-vers.SDK.channel}}/dart-html/Element-class.html" target="_blank" rel="noopener">Element</a> | A subclass of Node; implements a web page element. | -| <a href="{{site.dart-api}}/{{site.data.pkg-vers.SDK.channel}}/dart-html/Document-class.html" target="_blank" rel="noopener">Document</a> | Another subclass of Node; implements the document object. | -{: .table} - -The `dart:core` library, which is automatically imported, -contains many other useful classes, such as: -[`List`]({{site.dart-api}}/{{site.data.pkg-vers.SDK.channel}}/dart-core/List-class.html){:target="_blank" rel="noopener"}, -a parameterized class that can specify the type of its members. -An instance of `Element` keeps its list of child Element objects -in a `List<Element>`. - -### Using the querySelector() function - -This app's `main()` function contains a single -line of code that is a little like a run-on sentence -with multiple things happening one after another. -Let's deconstruct it. - -`querySelector()` is a top-level function provided by the `dart:html` library -that gets an `Element` object from the DOM. - -{% prettify dart tag=pre+code %} -[!querySelector!]('#RipVanWinkle')!.text = 'Wake up, sleepy head!'; -{% endprettify %} - -The argument to `querySelector()` is a string -containing a CSS selector that identifies the object. -Most commonly CSS selectors specify classes, identifiers, or attributes. -We'll look at these in more detail later, -when we add a CSS file to the mini app. -In this case, RipVanWinkle is the unique ID for a paragraph element -declared in the HTML file, -and `#RipVanWinkle` specifies that ID. - -Another useful function for getting elements from the DOM -is `querySelectorAll()`, -which returns multiple `Element` objects via -a list of elements—`List<Element>`—all -of which match the provided selector. - -### Handling nullable elements - -Because DOM elements might be missing, -the `querySelector()` function returns a nullable result, -as indicated by the `?` in the function's return type (`Element?`). -A `null` return value means that -no element matches the specified CSS selector. - -To use the `text` property of a returned `Element?`, -the type must be promoted to `Element`. -Because we wrote the HTML and know that the element is always present, -we can use the -[null assertion operator](/null-safety/understanding-null-safety#null-assertion-operator) (`!`) -when referring to the element's properties: - -{% prettify dart tag=pre+code %} -querySelector('#RipVanWinkle')[!!!].text = 'Wake up, sleepy head!'; -{% endprettify %} - -If the element with the `#RipVanWinkle` ID -isn't guaranteed to be present in the DOM, -you can instead use the conditional member access operator (`?.`) -to set `text` only if the returned element is not `null`: - -{% prettify dart tag=pre+code %} -querySelector('#RipVanWinkle')[!?!].text = 'Wake up, sleepy head!'; -{% endprettify %} - -If you plan to access the element multiple times -and know its type, -another option is to -[typecast](/language/operators#type-test-operators) -the queried element to the expected type: - -{% prettify dart tag=pre+code %} -final paragraph = querySelector('#RipVanWinkle') [!as ParagraphElement!]; -paragraph.text = 'Wake up, sleepy head!'; -{% endprettify %} - -To learn more about nullable types and null safety in general, -see [Sound null safety](/null-safety). - -### Setting the text of an Element - -In the DOM, the text of a page element is contained -in a child node, specifically, a text node. -In the following diagram, -the node containing the string -"RipVanWinkle paragraph." -is a text node. - -<img class="scale-img-max" src="/assets/img/tutorials/web/paragraph-dom.png" - alt="DOM tree for a paragraph element"> - -More complex text, -such as text with style changes or -embedded links and images, -would be represented with a subtree of text nodes and other objects. - -In Dart, -you can simply use the Element `text` property, -which has a getter and setter -that walk the subtree of nodes for you and extract or set their text: - -{% prettify dart tag=pre+code %} -querySelector('#RipVanWinkle')![!.text!] = 'Wake up, sleepy head!'; -{% endprettify %} - -However, if the text node has styles (and thus a subtree), -getting text and then setting it immediately is likely -to change the DOM, as a result of losing subtree information. -Often, as with our RipVanWinkle example, -this simplification has no adverse effects. - -The assignment operator (`=`) sets the text -of the `Element` returned by the `querySelector()` function -to the string "Wake up, sleepy head!". - -{% prettify dart tag=pre+code %} -querySelector('#RipVanWinkle')!.text [!=!] 'Wake up, sleepy head!'; -{% endprettify %} - -This causes the browser to immediately re-render -the browser page containing this app, -thus dynamically displaying the text on the browser page. - - -## HTML and Dart connections {#connections} - -The Dart web app changed -the text in the browser window dynamically at runtime. -Of course, placing text on a browser page -and doing nothing else -could be accomplished with straight HTML. -This little app only shows you how to make a connection -from a Dart app to a browser page. - -In DartPad, the only visible connection between -the Dart code and the HTML code -is the `RipVanWinkle` ID. - -<img class="scale-img-max" src="/assets/img/tutorials/web/dart-html-connect.png" - alt="The RipVanWinkle ID is used by both Dart and HTML"> - -To run your app outside DartPad, -you need to compile your Dart code to JavaScript. -Use the [`webdev build`][build] command -to compile your app to deployable JavaScript. -Then you need to make another connection between the HTML and -generated JavaScript: -you must add a `<script>` tag to the HTML -to tell the browser where to find the compiled Dart code. - -Here's the full HTML code for this app, -assuming that the Dart code is in a file named `main.dart`: - -```html -<!DOCTYPE html> - -<html> - <head> - <title>A Minimalist App - - - -

      - RipVanWinkle paragraph. -

      - - -``` - -The `