From a8c2b82c00b031c8fc9270aefed536f6329fb56e Mon Sep 17 00:00:00 2001 From: Misha Holtz <36575242+mnholtz@users.noreply.github.com> Date: Fri, 17 Nov 2023 09:13:12 -0800 Subject: [PATCH] #6800 Page Editor Walkthrough Modal (#6894) * implement iframe/showModal approach * add static modal via Modal.Dialog * add close behavior to modal * add modal header function close button * add content for first step in walkthrough * import pixiebrix bootstrap theme * add fixed height to modal body * add carousel indicators' * trigger the page editor modal from the mod launcher footer link * refactor walkthroughModalProtocol * add style to close button & sticky footer * fix mod launcher footer link * add inline icons * add alt text to images * update snapshots * fix lint errors * fix casing on devtools toolbar tab image * remove commented out height * rearrange paragraph elements in modal body * convert some images to webp format * swap svg/webp with png * add step telemetry * add modal close telemetry * move showWalkthroughModal into own module * change DeferredPromise type to void * add sticky header --- img/devtools-dock-bottom-icon.svg | 8 + img/devtools-docking-context-menu.png | Bin 0 -> 28274 bytes img/devtools-pixiebrix-toolbar-hidden.png | Bin 0 -> 19639 bytes img/devtools-pixiebrix-toolbar-screenshot.png | Bin 0 -> 25213 bytes img/devtools-pixiebrix-toolbar-tab.png | Bin 0 -> 21413 bytes img/devtools-shortcut-mac.svg | 66 +++++ img/devtools-shortcut-windows.svg | 66 +++++ img/inspect-context-menu.png | Bin 0 -> 24089 bytes src/components/quickBar/defaultActions.tsx | 3 +- .../WalkthroughModal.module.scss | 92 +++++++ .../walkthroughModal/WalkthroughModalApp.tsx | 248 ++++++++++++++++++ .../walkthroughModal/showWalkthroughModal.ts | 45 ++++ src/contentScript/messenger/api.ts | 4 + src/contentScript/messenger/registration.ts | 7 + .../walkthroughModalProtocol.tsx | 33 +++ src/domConstants.ts | 2 + src/manifest.json | 1 + .../ConnectedSidebar.test.tsx.snap | 6 +- src/sidebar/__snapshots__/Tabs.test.tsx.snap | 6 +- .../modLauncher/ModLauncher.module.scss | 17 +- src/sidebar/modLauncher/ModLauncher.tsx | 15 +- src/telemetry/events.ts | 2 + src/themes/colors.scss | 4 + src/tinyPages/walkthroughModal.html | 35 +++ src/tinyPages/walkthroughModal.tsx | 33 +++ webpack.config.js | 1 + webpack.sharedConfig.js | 2 +- 27 files changed, 681 insertions(+), 15 deletions(-) create mode 100644 img/devtools-dock-bottom-icon.svg create mode 100644 img/devtools-docking-context-menu.png create mode 100644 img/devtools-pixiebrix-toolbar-hidden.png create mode 100644 img/devtools-pixiebrix-toolbar-screenshot.png create mode 100644 img/devtools-pixiebrix-toolbar-tab.png create mode 100644 img/devtools-shortcut-mac.svg create mode 100644 img/devtools-shortcut-windows.svg create mode 100644 img/inspect-context-menu.png create mode 100644 src/components/walkthroughModal/WalkthroughModal.module.scss create mode 100644 src/components/walkthroughModal/WalkthroughModalApp.tsx create mode 100644 src/components/walkthroughModal/showWalkthroughModal.ts create mode 100644 src/contentScript/walkthroughModalProtocol.tsx create mode 100644 src/tinyPages/walkthroughModal.html create mode 100644 src/tinyPages/walkthroughModal.tsx diff --git a/img/devtools-dock-bottom-icon.svg b/img/devtools-dock-bottom-icon.svg new file mode 100644 index 0000000000..8deed88b51 --- /dev/null +++ b/img/devtools-dock-bottom-icon.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/img/devtools-docking-context-menu.png b/img/devtools-docking-context-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..9a2462b619e98894b7196afb92095beb82a0a3b7 GIT binary patch literal 28274 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 W6|Cx;mcV6#46c}5F1>g={C@#rgoA*%&; zkR{?t+F;QLfoSi=LM#Si$GEV1ZG`zNs@yXK0#6Oe9_}4iT7~od*HJnj?We3y6V>@! z*mLIC568V>@lTJpri@yY8*A<6P&>LfYQZy871yW7sz(%Uic z9Q?7yqxv*SfoV_ zII)AQwRJe|lr_qtH|?4}&zy8DoxYn(0-v3#QHmLczEFLUpc}YzAnDUcLtGbm`Ze`3 zoP0NiZ2pehOhe)Tt3lx(G0{jLJ_p#U*Qf(u=1-sF5jj<%-`YUX2<0#daTe5ljp;{_GG6uH2tV(`QFI$ zs9RaC_H8J5Q=cBZSte`Nz9O*Y30XAS98Q%- zbP75%-fw%}9mv3o^`S!KcEo#6@O<3MNDkQ$ufSjLh-h!+#>%i8yXoOSkWjtklawNcVPhn(A%nl;_`@{5HooH z#B_I($P14@77=HF+#+*NvYl7QBk-7UfZ0iGtet5`w7iaSh}r%Y!(A)=E6i|J=_z_w zW(j$2AC{WracM-!G?yuJhmX3aIN+|gwr+^1i};{><$e};E;SqZjR}F}N)yrk^KVTw zId6bh8YNIzyJ_A?q8*>toHFwlD8Ii&7t_4%C17&@L!NEKC(V+03+(f*uwHEaXK)+m zV{EWm2r9V>D>w_k|Ca?6PxUEJg+mc5qjSXgIhr^eDR5fif)p1TLd-jYZ3Cf++hNZA z>4Zo|gp*|~7~l(@iPw_Xx6Qr&USGIF3N7zXGfw9F?$+h0U5;P`^y`A!dt4n#In%BjRx2vByus-T^lf55@OrXCiuftWzK?@7G0_ z@)S?kK4aJ>GEt$`cr}g2j4|gfYxI<6R72vrw{~D*!GyE#tWvhKNJK3=e^_JT-f%;y zNj{qe;93>Autyp)Q<^wbZZ4%92xYu(7^2{c7ubLwzj*;TlkD6kARVyPF6Z^sVKXy6s5(O~F6q4=^$tK2M~_Iu z^sSyC*h*DsLuuTHdX(H~^{*Sr{_;WSefcNyp`cy4%7;7Wp^1m^p~?PY#!`+X>BVg` zPC>yU>B8o&ba}~(+#h!;!nk*wdhN6>Q2{3Y}?|bruUmQ4xCI-mq9cY%wWSdF2 zoP*$%kX1u97JI#d#d7Juw<))WhsRbbRN)C_bCxQ;B>Yg)IXeRyON5YuLNCkJd|LQM zSJkujCZE?Ekk`f8B}Lpf^uYI2uX_;V9sZ{)n%sPjaC^s_>ZuvE!$o8P;|>=g;eEd< zmV`I`FSsd--mw>u$)c+_|JY8-m^c^Mv`4KCdh9-Z{5w>549Ke5)kR_4nu?3_mad@9 zdjGpBrq6V5vZZ8@h5$_h3}a~)-U!c=#sYsP<1i;cI)NXp;WtCpjGj8|*w8R4*63dM z%z*EXWxYCT6g|~pflz;fu4cr)(bcuqE}-(L)A!I%4Y?GDwfgFVhdK-WFdB}BgoHQs zVF{C`=mXqSVb1-8RC-0120P}03zLu%+KlObqp0yhs+I>C+~v3hFIF>>dz%KO zAmI+tQO~jVjHZw&oWpMmJkh5W7-4G2-NF6p){(R!)b=cmH$ezb+ng!39XPB?=DFJJ zgFK8hkdL{4e~7z;df}XAJ&U-^L|li|6VB?YvaC+BSydb{YN)Ye<1c;E>*RzOBO@Sk zrdpT!21_!h81I-UX0WNM(#h>x6hhThzqeWpRjMw=);6EYKr-)mJpa+4wiZb)DI_HH z@$mev^Ul_!h{*A~tvsMXSOkBtS*&Glo)&@@tD)K3lCr>CJ)Qh~1s26e`O!62Zhi>x z>&<^1uBR8dbr1g>JyFiw=Hr;3rdari;*86ypS=g)f6UY8 z@(^!wH5DTEv@J7g4g7jXjiZb;t7nIuSQ0EFuBhVh^&j0fwDhLfik{;^4qN4{Yr0xR z%b#$HVJ4rqAJcZIs-@*V9BH%Qs3kI+Vty?`$tX6py=mA#i+9e4D2XERv1jl1d}PaG z@z9nNW zlezmNJ8tdNQ@^G|{YU;N5ZSBZg^zI%BWy;nE3zi~{X^X<*bZ~Kc6@$}JWy?Xxj!pVol<{L^wsWIl=u3G*83TI_!52#6{ukB*lWE@H77hiwNg8VYyGeaGV;s2R>-jtxD-cOTKYsap z)$68a##`TG^wmJ~>6w%fe)Gh1q5zVUwF{6^P$P8*yqwlN(e!*87pmGHGaFIw02H}s zv+_&;VOB~355a-ovMFLKjZDL7zdD=Vy8nptJ!l(L5Ns$pYZRbQ(la<)opkBnQ^uwG z6v0+|{4y4B9(Pc~7}EziZ17uf94W14W}CvH_C zOM%o8on8if$qj1#ad}$U24Y@eZ(|Yxtz}8V)^*ja;lj}%C9KTZ9ilSl*`uw%lpJIY ze_dAfUGm?O;XB_pQ!2-VR*f;bFauwFK^ssIfB_!UKWToS;WT$rb2J7i)zCA5=jxd+ zPUB~PuVT=b>CB}oRF4~!mK~USj+@kk}ZIU^cuvo3AWCnr$!VS>&{nfR`K)0$y>=`(M%oK`C7X03?*( z26~9R{~;TTrN0FKwf%o!o?fm+nj*k|C`(@C|2+up5<=~V(EpH98+d9K7K3%2n6T&Rc8llP zuE%2YUkA+pp|go0>N~ymYhdGU?={5emcpc1jbE&s{qla#Xt|Ya&5c6D1MGXoGwy!S z5@M(NKiFm?$L|0iX@5TCc6xWZ{{Vz1prPhFz$P9@Z(V1|9HH%xjb#E|hUu>}V!e#> zEHkmS^=vdc12Mpt&_!;U+)eL3JKgS*v9{mtxy>2s+r6Sm8~W|Qz5TiWn#q*<`EH24OVwNX|`_XK`wjt*KFr{InDw#kt#H3X)-+$6O zV$5-?xbn6?;(tp~si=@~u?D$^yJaB#4~NQQPTHWXuMmSg?LekG=^>5TUK2C${Ac7y zzF|;`y50HgA*o)yeT!4VzO}!nK>bp-Lbl6Q;UF_hMa%oP_kn+JZ45RvWb;uWY zSY4xZ2_${3?4q}5@w$VY(j`V}*k~!3a_Wq|d->j}wXw{IL%er>RsZ;L&$_G(AIc{u zvHGe&p~#okWRM2qpM(53d=#%-(ZF7R$KIEj&X*a~Ge)FP^$Yj&`#=If>S8Ks=0%|6S4YyY}iEgdP%5C zN|HbICy4inp$eJJxpFYQkh3++)8v#iB<0o<;zL^*Y9isUnNOfe&?3~q4)wA(=yzG1 z2Ra$9b2P)kuu!(%uHlg7IpadFr^@I)ZnDU_VC8Dlv-@^Ov9{$m;!$?W7&@Qx^fh#P-GsZmSJ$#CmTuST0`lV6pZf$`rgTVH5nxC8( zLzh?HDk~ewR*vlw;_$qID57~6G^D<7Tzee)JIQH`m>t9j{xzN1qIx*Xa!Hg)kXfGwz^aTVM1J54xOrr zsZvVuf{(Ei8)gS(MO4|^-2(HTvV>L($&vp~o*K#pua@2&BV_^Xc6D=brIz`)k$YKsoO( zViuZ`ZP?D45BZg`R}PZDYS$e+TZw(3>hCnwndM2uUykrV^Ea**aTMD_ah;~2p3q5< zYxa$NQ{BK2=UGB5r#+{+pQu7~D#QiT-#DRv$hC3q02tMUy+r*<{5H%S(cvY=SAE$K zr_e+Wy=n8uP@6Yi)vr#ERrY}g{x#OE<K2-lFn#FL zo0oS_UG=mh*T$+tF`WZq68Kesfg#}PQl+;;a?@RFibv|&47BqU^h+G-?|TR}{=nvc z+*yEM&}-^8_g3KYw0K+K6LmUH7EL-3C3g=OIS%C4#+fEQIq1fT!VB)PWabsV7YvCN z(-p26g5{z5tyT^cK_mG)n-*h43wlf>EaF98Lj9Lf7z60VbR_o_tOxXCvdMgpyRM!B zn{NL3Tul5*?B}2tQ6V+;w}~R-g||BXYZ~4bO(zeQz7*eLXm;FAD%Q4g4QxNxNqZWw zDh=0YzFyu&1-bG3)nZKrZ>BQ_!i!ue{ce^O&F<9V)z0TqDG%i-4L3U6uJKQA#ZQbC zR{tH5-DWY(iDw*g9elhFfFydgAxa|6avR?r;c-NUc|MmL37>V+4nGBHQDX!FQ*&`*wN1^9=*b~V zhT^FzciWni{3r6ZtukXxyp{0qB%qMaP>^si*hujLW*fbXW?EJEP36>(=~^a3;e4{A zln0qE*yPCZGNh`7wSOW_SkdUgC%II`?Jv>aHdl1Su$z-_bc zsf1sKw$r<vfHjE$ni7-yIHxWU1iNg z=eQ9@_zkmHwn)ez{H9tA>}d~U2I!yvxaL`K%5mvkVUAnLBs%A^xzf-?TaV{)!fkvB zVBVn?El#4UYZQS$Q2o1ow?=Y?^SodSITPq)0foIYrQ*bpIUx3M3*)|;96UG!ua;-~ z$_ndK!&tbe+PwpXGso}|ffthrbAw=)RY;)m-W@>*YX8|QR2 z0#f62a*J3*qODn+&QyIaCP2hJ?DO?wC-e>eLqDa_VP&Z#BF&liQ zVvBkEZ7QMwsy$!`-Ojkwe6`P#U|saEJOBJQvgt0Usg%I{kF815oO7uCan{FcVp($5^GM{$!A3N+FxKF#94ek$?j-<{K$NTfb?c zr+!wFrenR&&5w2*w<#Vr2IZG%#-6QuvIp}T!n_@SdQn?Kpubor_?;|4P zFF*R=PU_#0qV|wrqLa8{pzz$%p3B5ZLfZC)P6s_4$Kbl}_Pz%`g+sYFi$8ilD{V#X zjB#;4fU--M{9nqTC@03)vdL7U`S%Z6Sd3VU#CXEZ==tlhKGD)*ZE z*)oUg@(bFfv^koYg(}!THH)?okyH8u2B0S+Hg3dx!AjMrOa@h0vp#(@l){BZgSp9; z;SL9Xe0DpLt2AcF#B`m6>60i?XD}BvFgG~=d)Pr(3=4;jpGC=)JwD)`LQ>tP8n_pT_6CK0f`kw-Dl8aB$P(*7EbX-DVAAhsx;>hO69y5&>!* zF3aE()d^9$$$VwD9#VQl;CE0CE9W98aqL3mAk(YQ??F>Js6pNMig0^|iy)iz#B_$N zC=`lu68$VdEgo6V0&=R?BvVkkwYWD%Fj`; zj*Ch2y`jNQBnJos(ERR24D&)t2>&d(vZ+6Z z)_o`k!)FIsZBTTmrE8CPB zbEW^iVZ4v+`u;xgZ}y{8DOmCC*TNltW0@|pE8PJnD%qep{c}T1D0%r`x`>PmfmLe_DcF}uDhV^ znTTE+AGL?u*^7+#yVV<@AYlmQD_e{I#oreT<~CovW!`Wu(Bp~9K>j}SvcrkvZc52l zN8LT<&V)HaVWz*nbW0%69A^$-z|IQ_r9@>j_yy;+3FNF$$G1xz<1XETzR6<9;&6N8 zOyRjuT6~nO1;7>UlkA%?=ZX(eleV5;%Os_;XDWz~&H3~6Z^)O9kH1})B*D|TuPNZZ zeAX)037G&fo%z&%IbFCYusiaxfbWyA7#qtdCxrkAfud0>+Rk~%KTMLuSQ3c=$g5wc zr#r2~RL0eJGA49r5&^g}910KbfJVm8M2D#gg>6{AH)=-Y@bu27=DTuUW(T%PQ-gMa zxE{h19oVs%mpZ&s&i$&cI4arjecYf1q{}jV!>yeHTMD0rZLl%6Es~dYiQOTI`DlfQ zq}gF}(_62?su!wd0)vKWPUUJA&%H+v>6M6JQ5`r5zeR&M291OCz;rV(m1zL+Nvem& z&;5@=PY2tI_gACowWh@_N`R8J{RR6wjPs4%Axt-XG%_a{cxHe3p3irM@nyKY`MAR7 z;N)|%M~OppgW?h*!SEX6M-p|!=3F9)r^qpyJku_-yG1@XlZYLs4wJdS@l<0OO*u(M zl>WdizPs}nUD^@6?R&^vBjS|+B`S#O$9s$H)x186SP%S;hQfiFzA6sb-5G8u(rSo3 z3=w0aa$1(L3#EjjP%TB-l=v|VDC{Bp6qUO+ruaCW?@8DgYuFou_i!ja!&{{?YK}Ig zBr`onzO@?U=Urf|0|>R!Ml*lPy9#q;W6vmAWu4q>QXt0aIUJo)+uUZ+Tf{ZD$!s1H zHS!%!p~BAaN}MeAPUgiH;@u)wM&Ii}|I;U(WhYiTEH1m$*x^gg;?0V+qyG9h)VpEyPb)G@RU&dFLRY03!9_AY)BwKM{66rEBe}N4_1q%Oc~d?tJX0 zLFF61R_#8H*ln4d)bhMK??GO<8L`fB@L)~t+`@rBtb;Rl4J4V>I%m^;aDJzC@Eluj zKB4#zGSd5#RRQd)xHh8Z3UD7TLAPy>eQ$>wak?6igAWUQiD$^>K9COF=s-RO6+TU7 zU&z|4pUl|^qnO>u1QK*N`&|28wiXop#U`I#qu_y;)KTv&zvip)z6A`dH11;8&L1Vi zpzZ%=rl*Uhv_8!)VV~Oy`5!Yo{syvAF~(4CeSLa*dAehpn?)xKO8L?^`AQ7H)i9DY zDUGk6Q2_C=TDq<@Aa6}Jf9W8@w(w=v%R-fTl=EI$U96e_vzc~CBcCovJY?%b&+gBn z%Tt<+7@mg2#Lv(@w?^k8sXJ_XP-w?7b6=IP8vf)J*WG=3EJ^yWS%x33P5(98=FmzDCa*!*CFaDpM<=(%r^!G2VH4>`338)ComgU*4BH|(Y@J;{%c z0m3wfGu%2jNt*czO`RP2Otx*W(SFDmnMx++5r=gPUY!30q83TeR(6IzMODkDF*d)b zw6|t`2nc=nj{s0hmB~66gKm6FqrVY4EJjKR324I%G&%PRN939s7-pnXve~+X3Vir^ zM}kIm5W< zZt-u1_z&2bWCbY)z3eC0RnA!8W7~a8T6~ma@i^i(K z);3c`^##sz!HFytml_1Lc!u{|#SP@@D?XBNo_h~}<5IL}fRpr1uwit$PnB8n{PL?- z6KEae`x5AEP+buJ7%f0wQ2fVRi;2o3kR`Nlc-B%ZLK0)D_t1*%u*Q*$Ss+Ppl4>oW zUSD6Jiw<93G3l4JeeWxMXd5=K2NeqcSKSo{|TUz z@p#F31}z19pBz3%5>VRnaD>_M^3}xZt5sCA?HZ490z<3o9x{-l?T*2OdQdn`lq4$pBi)HO2LFqpv$MKCf&!prqJXmd_OZ!!NIj zQPSsW*Pn0yk&MBo%BCePj0e~d-l;?hE*R&Z%GBUc)%C2D`*0Gc`=npjue*C@Y)}w! zIl&)N(;pSLq)aySrd-pJHOf)N`D1+a-hR_d3BLSyGSfXII!&#&%oxPJ=Bup;L|$i? zC0T@JHlenEWxf%Aqe068b{V3c#56u%<{cLeXN#&zbz=Y??Q3~RDCC>4*wQ~hx~z$G zRf@abklABKvvM!$i7a-7sDboOKS# ztCZmiSj_62@6s_R!%==icH+AyqmC?3&ZEG4Vf5fZ3e0?Z@r4K8dS0f^stgeQJ<_O% z_vaJW3NeG2k>W_Ws~Azlsc^q*(Y8`=R?^}jubSw~-`?wOA!99KXjK0@#|ajfd$0N* zTNfpS1qXC~J!37u>LRdJ#Gi)WMeZruHGM;ISMvTz$@ai>Y(s@`i1CeXss7=CIu4#v zqt3ny`Zr{I!A)zAC*RHDSYcY_QcGah;E=lKB_J3T4`EjK?>pjPJL?vQ+?~cQWJekw zP>)n+Yh2cufXGF|DD74iOi2s(-}4eAqVgY2h}wu`z?RFd5;`}u zTK>xU;s^v|1j4c`!XUw@4?hyb{Tn!MPk409EEW4wRUmteAS%P%Br>bt{+ey8GMmuU z8-)8wskAwDBf1lX>?)m%k6+Ks7c@YRsh-aHvHN?5nEfw*CZYEex7$yC0b8>YV&;@V z5LB+CT#2FUzOMPFUZ7kr6H>IXUeHyS&{ij7FZKv(Qy(jWgKc|I>S@{uj-ZpygFwo2 zMs2_Ai-=cZ%xZ0{0NJ5p8wp{UM1S(rNr+Z$$n30Z%e z1i+OSSrMtR(GgZHopBe+9x)-^NS-b*$7o^O{%8Z14@P^CpZuZi9`>OFNZ&t8?J0@R zr}G<{w#nXbpl;5pC4nc*ZCY5gfH&vSRLQ96d>J`6LjVe9Z)4(PW1^kFQZ%_x!Ymd$ z;aU;HHdy3dju%P!%;m)O)kWG*C-w*pgx|1HBH&)njt;ZBZYZhc#jKpS_J*_XS2Del zEAuHz#Vw$p&}0CUTN1+}#!iJpm?%*TTTM#59ASshdF`kVJpH-5 z=b{R_#(sWS?jbVCYZ5ZxcFWekVe^d(3bc9<^_=f~k_?5La@^_G0ih+iuIzK?S#Di# zA0xbTfllJ0YhrHqPRotOUsx2_{>0q^!VomLep90WHu~QnA7BggW8+1GL~`z0)@ei) z_2KrX2%_f@7GGo10Tf1Xyqelv(%!ee@}Rzd93UkN*SwRX@b@y01ye=lu@|=!wh5oa z39WP!C^Z4|#Y;Ixof|v?mp`Mf#P=`22tYyaNp_{VdtXOJoPnqbSKvF!G0Uov6&PUBQcLM0rn8td0Ou z&*XGV4>!&*_v)ulMQr9u(Lfc(ltD;vh=)=to(RWRcslU{R)0?MYCZd5Y>0C=`s4S{ z!MfyX`coS}!7GeR)S)V?b!~r`>e+(Yv|q$jT3WJ^TBE27mw8VMz_?Wq{FhJem1Mrl z)C*XQ6(QZFd>1o5(>2t<{ppq|ialn|mD+DU@3A-h()_%GhLY?gWLKWhTzl5@MZ}cF z3Mb2b5lfsg!>oj{#oNtA6wu1YwRb-F$>XJ14XovSa8b|UnGEYu^dDFXPYDC1BD+hz zvoYnp{0S|HLmxg2#=jx#7QOu0abV44Bn+PGs&0>iZ9omG-D``g+mAfv4T;`Id}>N9 zOKC1Ld!G9y(^FwsewmvKFeV#4yzNEYxbCV5?7zk9&@KJrmqN~g zO?3Y5In$OBc4E|}hAYNG^gZ9EGyA&U5$3pD=OwP@VCkXflX(4+6~eiq*F&uKv< z0Qgt;pc`(kvV89M_`uN(CYSOPHC}7JR65x9O1sObOJ=j3LFKpoObxWyM@(KTJ(9jP zZ+IkJcvIJPLUOdj%2!d%p?K7iZUVnpzU@2ujhpV~O6MLmQ=E|#G>e{{Vy)HMO4xc4 zpP~d^ajESA2h1B!M+)#xN|SW^%WE^+QL z@w-ul_4OvkRkJC=(5lj+#$mzo{1%rxRXh(sb%(caXT3W_d6N{^ou0DFv-+0qhh~fz zPax%$fjJHI?`V~n-dCP^Ep=J^fq3NW?;7KKuGyt6Jka(?casK83u74&`MkNX1AHa)YzI>Q1qt*2|}OD;7yCEkuSDJrMKDM za^WgwH7_4Bp#5g3V*s@m)e9Sp)GjS)es`6q4r2wB?L+{BkKgM3=GvqT?Vgwa_{BmE z0jPG}JCRc1GHNU&v3r=MX_Drl8WF0n<$X4(-N<0X^F;=xlT^j?W~<{p5GbNyu(H<3Y!WaoN8Re^|saFugK zlk?$rcT7K~9S<9-t{R3vsyNwZzx>4c25b<;QR3G~@(_M-P4mR%m*pHmcjIPU+&RZ%ZzR8>GQqw#bFAi53zH2!4NMN* zIa86vdpSQv)n$)boEFqBMY7fEOBk2$rCV0QR`WlAf{u7{FTyNUP|Z0&4Gq6Nh>E#) zo@k*F#r>zY5xNGVpYJb&B>$RFjBXiZ2n0Z+{uMSdUwdQjB~yECRS^;eZ_^}qEKzx> z_FyFoi!tI~`GFE2vblZ?eH%O>MPW(5YN`MkaCv_7%~SF%6^^MNE&!Lz6_4Lg7L%N% zO^DCWVFrXFI6v}uKusC$5KaRb00DOoEJCq+fWq~au!(xVsNCN|0R3-hD^xyn^w^oG zN&~%VB=~cmy_qI0(x1&OX-$2Ohdq^}wQHO3h;mT~8;dNLCyYwKjuvqyS+S-Avfm

2;GOi*EhS?DS=q#|6t~cyWVg4dGkyeNr8kFt=EC7CS{9Pm+K;AAZrS5u{-f&;%Reg3h3eb-URS!&-&Uozb8bqMs0@PK z(DzRbs$a#G??&*69CD7pck(%I{vAxfN`b{n7R}~KDWT5a28uvFTSk3`V{wm*86}4Vp%1Qg%j+{NuC*(BO|YN(5wM zpklE!52FVDZ4?yh%=@fRoYCKDX*<(3f0sULk$o1-pXV>+fcd$veX=cE0mPgn&aPrt zFWe$_EzU&>2_tp>^t@}da&D$P9w6xzS~$^mPNY2lWwUd~xv;eX`@ z|50yF)DXtqk*}t7a6dun(F9HZwa$iV5V937e)^ZnSlZ|y3ccj;dOw%XL>KFjOWtE$ zGJlPgjCa*v3GWLd+4qPqDE* zgYt_o%VEt$|CP|OP~6Tec$X=3?cvV)#^5KjK3ONd8TztuH1Wx*5WPJN@oX(xpNLi>Y6(UX9qS2`?55#8nSyzg z%^~#*m-j^0b*94ZhudSqM{KuKInTWQ6{ej5r;HN!kr{$6d3I`1KA2{sHK{8_>2bzY zQjg6X^kUm2q*v*MD#o_nRCoCe#+-qaAYhl8VVWh0e zPBl4wbFDmrZ>7m;OvRb88fu=1!*-w%GKD z6RRpskat;niC~TrJht366z|gtj;AzvNay1Or;2P&Iakj{FZ`ry%RZy(z!U3jJ=KkO zF-{dYFM6Myl{ zN|w<8b|n)?C;r`DGdSmeo8Wj!0Sq#PGXW%?FXBvIo}X468dr9GZjKGkKoHY9oA^vJ zZcD|*5L}RoS7@QL*qq#eFmVy!JV?~%;^LWR-hlEg>GQY>W2+uj%MyEfK;p~FfCM>J zvs7>AQTUJ6kEh+-rnUBw#Iuk0k83HuajjOd%RrUAm9tOmcZq>NS+>1MP|YtqUnvQ- z;e~rOVT2K0-rwEb$X5E3#&C&?9FYs6;nf$ob7rHpBaEz>8=F>2dMQ->Z{MV@NJh{+JhstsIUa6Qkg?lfA$X>+D~UnA)(wrG0FhO z8>w)Qbq^e}5EynXu2pMMM&=9dTwYTl>58=}_iO6P-iyoh4k3G-6Pd#3ImWMYRd_k< z@o}jZAsx<739uE=gN>oqBp)K|#gutcAU;h*%Maa#^uJ_W*%C$sES+N<(dl){7|E-6QHomg^cGtii<$~Kw2mKuAw=q5&S*fjw zr~XO=hyhz_tX1UcvjNT75y+Jf-#(x==|aV5JI!Sg=V|T!gMk zJvD{8mcGk5DXu(I*H!E3A$>+=0mC5;GOndMr!pv?GPk0KXtOnFVj?1|!7($>wIhcnf1V8gFsELb zU5x50XNVJSb5~c532zzp>BVPrLor z!&LUXpIwIly=U@h;I59K)|EQLuoO{00R9wtk1)jSW;HP4;=l4GJx{~u5lI&N`4nARmyry9ln$RaPR7VGVCXtOXuSHN@Hf{}?f9TnN zth{Tn!*bexx_D-=x1pEmb9&AG{n*4CanuTU^IJJL9tvw9)1PixEJ$6~tT}#~H)4$B zq$ETA887oK?ktH2@5H~K{p=?_asi_BzzcqH76w{$R~eow8Y19I1s>0upv1MhLzoa2 z*EX;VO$~WZihhW{%@2Eyc20PBRodfZVbp)QHTAJGux+nndf*1zM&0jjL-_WfIAao{ zt3)$@S?qQ>(FGe(+?KMd&UR{ zBtViTu|v(J{}hMztY}6%4*59$HZ>+FVC{ST%R!L4_1}NxTuc|jy1WVf2Kf|wU;mnn zxd)y1(SHPiJH0}e!Bv^YuV#>Skyn|HI#YWrq?Sp_@yZT;KWE~qFoZ#FxB(&8W1bZb z-d`x2(MoA)=Tufm_$^f$#a|eCsdG$H6MK?h!3RDtV_Whw;<84va*Wk8>&cB2tVpb) z9?2iI%q9p^PR3z~{Zei;Cf430Y)#IT*%CrgQ5Ng*CUkc-m6i<6LLAMc4FL^={GsQ? zNnm-eBVfVy^Ph;|v?EO{+{N6UpUBdF2Nm~u0C)~C(RXWKqeuBnNdMO*B`(!KA_OSK zv^7(pj`%>|mgTZve(p61%mbAC$$KKc%@>vIcrH=zj$G!tbfiXDoseoOgd&7ex?h zaBXhu0N*gPDneh(3W2|HO; zsTfo@Sx1<{)9kH&B&S#k$yk_fOgu*N*xq>M8gbmhwr*PT$(Jt6G-Rva)1ALr?}s+< zfQ;|#T1bj#oi!8-Pa=zkW1j!qjz-EGteDWi3mhmIB0JOa^XT;Xf`LNMiX{^sd^t^a z`XoS=eYW~A9KE^t@&HwHD_pIQ69{7e=<@Xb`vp-6*X|iJ%u$UMiwQyL)MtOM*ZVcj z7HORv7vh{S*~MSFVT?c!ckanQt#8f*s4}b&)!(newET0J0X#B7E*JHuT`t~_Jut{Bf@Fhh>Fucm_V2eWXAIyKY z!r*oNxkQ7sf--Wpl-!V#+A7&dVP{(@;vS~q8Ch?PYlSD1bcISl@XV%jOd5i9Zb}Ax z=h;Y+P7?5@n#K6jz&nfnU|r0_ST9SWSD#>c2D2ZM(ryPrAn*ddbN6?;lL?l#Qw#6y z8SeZn-R_6ZBfJnAFun?VAHbi^ksM)yE*q7U1e5=oM7N-5)D;tJREBGB<^FV;h?VYk z$;wIg*Op_N!X(7;{(Qi_<CGqx6N^i$E)RiecHo zUgTxJ!(cS&QO<7}m#nm_FxG0tfI-PGdzgVc9@mbZ$X+%M7T;>>TOI^&AT*;=`~jrS8g!Itg|81&a92+ zxDZc(6J3b__uTb;7vYHYPzAl?y~vrhy%WUEfkW`mGfXj~!0~x&GIuj(>sOI#wH)`* z;aQa!i$A+l-8l5An@ZbCtx-PKshHCBQdeDZ*<2!6;e4+n5WN@ZeGzNm7{lZnao;jO z%xX30H2E=$Uzcs#4$>hX02FaeLlbbZeYsTi z_K8(#6@7P)%A6%Ea_>rTdJeZ3?y9}Uz5d0Xn_vH<$^6cm5hVYP#^K|Q^m*tR_R;fs zfeb-vjm>0QEX*}PR$1_9IYh7qKj+p1SKjJtF!``zcW^he)ekrQtb2w>+dZ9<0XpIkIiUqZ&kL>#BGmw!qjZELi)$$% za*)9%Xl2z7E6?+(9(^U)ZeGM8%q%DpZMXf8%Ilbd4{@Q_smT_ro8WZ#}Bw*@M6tA(!@!_QY0ZI zz74orWNG~COL7D2MK*>N*E+t|bp{L2BHLvJgajzCz0gD`=MWh@`Twny*#7Y`B>a#6 z$=SXW`2W;#?(t0aZyevK2usR2jL?*%gGiWAwBpf|XDH{S$f2C(G}}a$9H!(@iKkTZ z&``;-VM}5;MRS~Eh%sX}W1Ia(y?(zxp4ac+`*mN}_jBL(_4?kg`?~JWI}!uMh7O?p zJWf|Nv28q*%AVBTm?a0bLAq|{b#>SC<@_M}Z(hU93s2_zjDL0VIT2F$^!yMfqhNjX z{ms}W5dQ{vh3_I?lT3GiNXPm*c&u6K3;GZIsKO%N^Z0jm8M5rTjeu{6iZ9KzBiZDk z_sve#nb08F(}|5I?CW52=4-bW*R?9d_LUW>ldd#9eKYpgU&t0dyR!a%(yi#ZR$cvw z0vlY`#1Pigl*f1$vd+*A0$8hhd;ntq>}}I&_9&+=3>^{f&78_Rfj>p~!@jjP_{cU7YCfC=@ z9D>iDSv|~gH`Wm-8ZIs~$MEjVq6E9<5(!cxcaBcTxOX0}IsmcasPHnWKF`&9_nV#9 zq@|fM%<`n$Ol~XtGrR3vhAg;qSu)n*D{4O`lpb9KaO@Nx#tCOx^xIPctS0;1bkfmr zBQIYRY|o4ms#DsaDfcjB`Fw zC7=+&5h#dvNLH2771L92I_g#mLlb8u7QvS$JjT~+oeZa1K<~VDXg#?wOJ#|3I*elX zS=KLc1@=UXXFrWSrHvsY+y#y1>V?cl%%M1QGh@|l=;{x}3WlyWCx)0USen}kHTv$w za)+;bPI;UGTjv*qCjWH6cvBJk$z?wu?ZI4_R^fLTp+b^fMUQ?`T=qzvNq)V1Kq^OAj4vF@bb`T z#XkqXzgQH5^(Cz4_1c~#F@!CxZvW1yyMCmi$>jFm^&U+HI|ryyuWTV9BD=W zNW<4^*^V0dX}KY%FUyJ(HR>w%OVvJn@%je>D>^IQ1o%MFc7z_C-CYs(n^lVpcO$OafYdCIR#_g*giv$9{^3^MI z1!{1XyY0z0501T9Tzs{y7#w#GK77&h*=~Jzkm^2PDV^OqQn6gNUG_+_eqF#5pwgg` zGy75LoKm1%f;nlcNu+N67-kAkiDr%aPN9)YV0n~A#-mF3ErCa{^?K6F!Mz7KO2U!X zu5}Ez&IYH3f7zHiB1`n}I+TzFCT;Un`(?AcUgEr#7WIoNV)iep$QQ#>0ApCQ)a$V3 zgEum(ZIq-pkM|*3$nQGs;WzAoRj6n<#pimzKeX3g#1>GILwiBJ!n&T8zf6U{74 zQwQCemxe9cnV(p=V6+RL_^cjQyo<2AWwGkYGn&7yGvfy9ofziwd{-7;|I5-7-uE_# zz9GoaS)X=Zr4I}ag&QA4B`Vy7sJWZ+H>D{mzXYh4$V>&;IXgK)$g=;agPLb#T1!H| z5<%iV(304%kUB9SwqZKbXOgm2w+bhh@&Ivc@4@kLwYn`jz?yBxB=;wrOQL5=iKEkk z^Ck`+m3h8rKu0_b;VX&=@1}D9AUvqZrCoJnqkObyv^_78&0I;UcPuD(S9(>1hLV(z zqLwErg_Ey65p$>dhcorA0=0E)H#sy067nK9#C07@UNbAn9!7&2wK4S{rK0P&gOa@X@>~n1IYbhK5t~3eD1wgS?D49hp`ZY@<{>|MUHFyaAq?I_gnjdT{=qsL2qDk5#01*+Q(S>;B1Jh&bg zjHFKIwOz<#$(xwGY4TDUP-14a%9pyjhzESSZ?K4)KmO=cRj;3PD>l5=!fd-<#q!Gy zmnYkgp>@i2DLBHQ9-edbAjTw5PmWbd9B4gRRC>hMRXj{Cjn-RgkA?�xyW%#f?ZA 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 A(EtDd literal 0 HcmV?d00001 diff --git a/img/devtools-shortcut-mac.svg b/img/devtools-shortcut-mac.svg new file mode 100644 index 0000000000..c286e91f54 --- /dev/null +++ b/img/devtools-shortcut-mac.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/devtools-shortcut-windows.svg b/img/devtools-shortcut-windows.svg new file mode 100644 index 0000000000..e2f7fb1d71 --- /dev/null +++ b/img/devtools-shortcut-windows.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/inspect-context-menu.png b/img/inspect-context-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..08dde0df05350ad2e213c445fe090df56149d748 GIT binary patch literal 24089 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. + */ +@import "@/themes/colors"; + +.root { + color: $S800; + font-weight: 400; + + p, + li { + font-size: 15px; + } + + :global(.modal-title) { + color: $S700; + font-size: 24px; + } + + :global(.modal-content) { + background-color: $S0; + border-color: $S0; + } + + :global(.modal-header) { + border-bottom: none; + } + + small { + font-size: 12px; + color: $S600; + } + + button:global(.close) { + font-weight: 100; + font-size: 33px; + color: $S4; + padding: 16px 24px; + } +} + +.carouselIndicators { + position: inherit; + margin: 0; + + li { + width: 8px; + height: 8px; + margin: 4px; + border-radius: 50%; + background-color: $S4; + opacity: 1; + + &:global(.active) { + background-color: $primary-bg; + } + } +} + +.modalFooter { + position: sticky; + bottom: 0; + background-image: linear-gradient( + to bottom, + rgba(255, 0, 0, 0), + rgb(255, 255, 255) 33% + ); +} + +.modalHeader { + position: sticky; + top: 0; + z-index: 1; + background-image: linear-gradient( + to top, + rgba(255, 0, 0, 0), + rgb(255, 255, 255) 10% + ); +} diff --git a/src/components/walkthroughModal/WalkthroughModalApp.tsx b/src/components/walkthroughModal/WalkthroughModalApp.tsx new file mode 100644 index 0000000000..25674c7676 --- /dev/null +++ b/src/components/walkthroughModal/WalkthroughModalApp.tsx @@ -0,0 +1,248 @@ +/* + * Copyright (C) 2023 PixieBrix, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import styles from "./WalkthroughModal.module.scss"; + +import { Button, Carousel, Col, Container, Modal, Row } from "react-bootstrap"; +import React, { useEffect, useState } from "react"; +import { closeWalkthroughModal } from "@/contentScript/messenger/api"; +import { type Target } from "@/types/messengerTypes"; +import { Events } from "@/telemetry/events"; +import inspectContextMenuImage from "@img/inspect-context-menu.png"; +import devtoolsShortcutWindowsImage from "@img/devtools-shortcut-windows.svg"; +import devtoolsShortcutMacImage from "@img/devtools-shortcut-mac.svg"; +import devtoolsDockingContextMenu from "@img/devtools-docking-context-menu.png"; +import devtoolsToolbarScreenshot from "@img/devtools-pixiebrix-toolbar-screenshot.png"; +import devtoolsPixieBrixToolbarTab from "@img/devtools-pixiebrix-toolbar-tab.png"; +import devtoolsPixieBrixToolbarTabHidden from "@img/devtools-pixiebrix-toolbar-hidden.png"; +import devtoolsDockBottomIcon from "@img/devtools-dock-bottom-icon.svg"; +import cx from "classnames"; +import { isMac } from "@/utils/browserUtils"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faEllipsisV } from "@fortawesome/free-solid-svg-icons"; +import reportEvent from "@/telemetry/reportEvent"; + +type WalkthroughModalStep = { + title: string; + body: React.ReactNode; +}; + +const steps: WalkthroughModalStep[] = [ + { + title: "Opening the Chrome DevTools", + body: ( + <> + + + The right-click browser context menu with the 'Inspect' option included + + + {isMac() ? ( + Keyboard shortcut to open devtools on Mac systems: Command + Option + I + ) : ( + Keyboard shortcut to open devtools on Windows systems: Control + Shift + I + )} + + +

+ The Page Editor lives in the Chrome DevTools. You can open the + DevTools in two different ways. +

+
    +
  • Right click anywhere on the page and select “Inspect”
  • +
  • Or, utilize the keyboard shortcut for your system
  • +
+ + ), + }, + { + title: "Docking the DevTools", + body: ( + <> + + + DevTools toolbar with three-dot menu icon included + + + The context menu that will show after clicking the DevTools three-dot menu, with 'Dock Side' option included + + +

+ Dock the DevTools to the bottom of the screen, if necessary. The Page + Editor is a powerful tool that needs a bit of room to work its magic. +

+

+ Click the ‘ + + ’ menu in the top right of the DevTools +
+ Select the ‘ + DevTools dock bottom icon + ’ (third option) under ‘Dock side’ +

+ + ), + }, + { + title: "Opening the Page Editor", + body: ( + <> + DevTools toolbar with the PixieBrix tab included + DevTools toolbar with the PixieBrix tab included under the chevron icon +

+ Last step is to select the PixieBrix tab from the tab bar. If you + don’t see the tab, it’s probably behind the double-chevron menu. +

+ + ), + }, +]; + +const WalkthroughModalApp: React.FunctionComponent = () => { + const [stepIndex, setStepIndex] = useState(0); + const params = new URLSearchParams(location.search); + const opener = JSON.parse(params.get("opener")) as Target; + + useEffect(() => { + reportEvent(Events.PAGE_EDITOR_WALKTHROUGH_MODAL_VIEW, { + stepNumber: stepIndex + 1, + // eslint-disable-next-line security/detect-object-injection -- steps are constants defined in this file + stepTitle: steps[stepIndex].title, + }); + }, [stepIndex]); + + return ( + { + closeWalkthroughModal(opener); + }} + className={styles.root} + > + + + + Step {stepIndex + 1} of {steps.length} + + {steps[stepIndex].title} + + + + {steps.map((step, index) => ( + + + {step.body} + + + ))} + + + + + {stepIndex > 0 && ( + + )} + + +
    + {steps.map((_, index) => ( + // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions -- Navigation can be done via prev/next buttons +
  1. { + setStepIndex(index); + }} + /> + ))} +
+ + + + +
+
+
+ ); +}; + +export default WalkthroughModalApp; diff --git a/src/components/walkthroughModal/showWalkthroughModal.ts b/src/components/walkthroughModal/showWalkthroughModal.ts new file mode 100644 index 0000000000..93d977159e --- /dev/null +++ b/src/components/walkthroughModal/showWalkthroughModal.ts @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2023 PixieBrix, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import { expectContext } from "@/utils/expectContext"; +import { getThisFrame } from "webext-messenger"; +import { registerWalkthroughModal } from "@/contentScript/walkthroughModalProtocol"; +import { showModal } from "@/bricks/transformers/ephemeralForm/modalUtils"; +import reportEvent from "@/telemetry/reportEvent"; +import { Events } from "@/telemetry/events"; + +const showWalkthroughModal = async () => { + expectContext("contentScript"); + + const controller = new AbortController(); + const target = await getThisFrame(); + + const frameSource = new URL(browser.runtime.getURL("walkthroughModal.html")); + frameSource.searchParams.set("opener", JSON.stringify(target)); + + const modal = registerWalkthroughModal(); + showModal({ url: frameSource, controller }); + + try { + await modal; + } finally { + reportEvent(Events.PAGE_EDITOR_WALKTHROUGH_MODAL_CLOSE); + controller.abort(); + } +}; + +export default showWalkthroughModal; diff --git a/src/contentScript/messenger/api.ts b/src/contentScript/messenger/api.ts index 86fda78928..364d7a0ef8 100644 --- a/src/contentScript/messenger/api.ts +++ b/src/contentScript/messenger/api.ts @@ -21,6 +21,10 @@ import { getMethod, getNotifier } from "webext-messenger"; export const getFormDefinition = getMethod("FORM_GET_DEFINITION"); export const resolveForm = getMethod("FORM_RESOLVE"); export const cancelForm = getNotifier("FORM_CANCEL"); + +export const closeWalkthroughModal = getNotifier("WALKTHROUGH_MODAL_CLOSE"); +export const showWalkthroughModal = getNotifier("WALKTHROUGH_MODAL_SHOW"); + export const getPanelDefinition = getMethod("PANEL_GET_DEFINITION"); export const cancelTemporaryPanel = getNotifier("TEMPORARY_PANEL_CANCEL"); export const closeTemporaryPanel = getNotifier("TEMPORARY_PANEL_CLOSE"); diff --git a/src/contentScript/messenger/registration.ts b/src/contentScript/messenger/registration.ts index e93ce9dce7..f7562c73f9 100644 --- a/src/contentScript/messenger/registration.ts +++ b/src/contentScript/messenger/registration.ts @@ -78,6 +78,8 @@ import { } from "@/bricks/transformers/temporaryInfo/temporaryPanelProtocol"; import { reloadActivationEnhancements } from "@/contentScript/loadActivationEnhancementsCore"; import { getAttributeExamples } from "@/contentScript/pageEditor/elementInformation"; +import { closeWalkthroughModal } from "@/contentScript/walkthroughModalProtocol"; +import showWalkthroughModal from "@/components/walkthroughModal/showWalkthroughModal"; expectContext("contentScript"); @@ -86,6 +88,8 @@ declare global { FORM_GET_DEFINITION: typeof getFormDefinition; FORM_RESOLVE: typeof resolveForm; FORM_CANCEL: typeof cancelForm; + WALKTHROUGH_MODAL_CLOSE: typeof closeWalkthroughModal; + WALKTHROUGH_MODAL_SHOW: typeof showWalkthroughModal; TEMPORARY_PANEL_CLOSE: typeof stopWaitingForTemporaryPanels; TEMPORARY_PANEL_CANCEL: typeof cancelTemporaryPanels; PANEL_GET_DEFINITION: typeof getPanelDefinition; @@ -150,6 +154,9 @@ export default function registerMessenger(): void { FORM_RESOLVE: resolveForm, FORM_CANCEL: cancelForm, + WALKTHROUGH_MODAL_CLOSE: closeWalkthroughModal, + WALKTHROUGH_MODAL_SHOW: showWalkthroughModal, + TEMPORARY_PANEL_CLOSE: stopWaitingForTemporaryPanels, TEMPORARY_PANEL_CANCEL: cancelTemporaryPanels, TEMPORARY_PANEL_RESOLVE: resolveTemporaryPanel, diff --git a/src/contentScript/walkthroughModalProtocol.tsx b/src/contentScript/walkthroughModalProtocol.tsx new file mode 100644 index 0000000000..1ba4c7be25 --- /dev/null +++ b/src/contentScript/walkthroughModalProtocol.tsx @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2023 PixieBrix, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import pDefer, { type DeferredPromise } from "p-defer"; + +let modal: DeferredPromise | null = null; + +export async function registerWalkthroughModal() { + if (!modal) { + modal = pDefer(); + } + + return modal.promise; +} + +export function closeWalkthroughModal() { + modal.resolve(); + modal = null; +} diff --git a/src/domConstants.ts b/src/domConstants.ts index aea97b11a1..9f3e34ab54 100644 --- a/src/domConstants.ts +++ b/src/domConstants.ts @@ -29,6 +29,8 @@ export const PIXIEBRIX_DATA_ATTR = "data-pb-uuid"; export const PIXIEBRIX_QUICK_BAR_CONTAINER_ID = "pixiebrix-quickbar-container"; +export const PIXIEBRIX_WALKTHROUGH_MODAL_ID = "pixiebrix-walkthrough-modal"; + export const EXTENSION_POINT_DATA_ATTR = "data-pb-extension-point"; /** diff --git a/src/manifest.json b/src/manifest.json index 35d2023d3c..529f66afcb 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -68,6 +68,7 @@ "pageEditor.css", "pageScript.js", "ephemeralForm.html", + "walkthroughModal.html", "ephemeralPanel.html", "ephemeralModal.css", "audio/*", diff --git a/src/sidebar/__snapshots__/ConnectedSidebar.test.tsx.snap b/src/sidebar/__snapshots__/ConnectedSidebar.test.tsx.snap index a7dbf01791..6a3f0f015f 100644 --- a/src/sidebar/__snapshots__/ConnectedSidebar.test.tsx.snap +++ b/src/sidebar/__snapshots__/ConnectedSidebar.test.tsx.snap @@ -133,11 +133,9 @@ exports[`SidebarApp renders 1`] = `