@the-inclusionist/engine 8.0.0 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -78
- package/app/css/style.css +584 -374
- package/app/public/vendor/fonts/bitter-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/bitter-var.woff2 +0 -0
- package/app/public/vendor/fonts/bodonimoda-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/bodonimoda-var.woff2 +0 -0
- package/app/public/vendor/fonts/cat-abril_fatface-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-abril_fatface-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-adlam_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-adlam_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-agu_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-agu_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-alfa_slab_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-alfa_slab_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-are_you_serious-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-are_you_serious-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-asimovian-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-asimovian-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-atkinson_hyperlegible_next-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-atkinson_hyperlegible_next-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bakbak_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bakbak_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bangers-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bangers-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-barriecito-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-barriecito-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-berkshire_swash-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-berkshire_swash-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bevan-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bevan-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bitcount-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bitcount-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bowlby_one_sc-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bowlby_one_sc-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bungee_shade-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bungee_shade-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-charm-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-charm-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-charm-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-charm-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-cherry_bomb_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-cherry_bomb_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-chokokutai-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-chokokutai-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-chonburi-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-chonburi-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-climate_crisis-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-climate_crisis-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-cookie-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-dela_gothic_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-dela_gothic_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-fascinate_inline-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-fascinate_inline-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ga_maamli-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ga_maamli-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-itim-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-itim-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-jacquard_24-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-jacquard_24-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kablammo-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kablammo-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kalam-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kalam-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kalam-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kalam-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-katibeh-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-katibeh-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lemonada-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lemonada-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lilita_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lilita_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lobster-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lobster-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-luckiest_guy-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-luckiest_guy-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-marhey-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-marhey-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-modak-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-modak-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-momo_signature-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-momo_signature-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monofett-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monofett-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monomakh-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monomakh-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monoton-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monoton-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-nerko_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-nerko_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_adlam-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_adlam-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_arabic-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_arabic-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_devanagari-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_devanagari-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_hebrew-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_hebrew-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_jp-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_jp-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_khmer-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_khmer-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_kr-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_kr-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_sc-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_sc-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_thai-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_thai-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ole-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ole-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-pacifico-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-pacifico-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-patrick_hand-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-patrick_hand-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-petit_formal_script-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-petit_formal_script-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-pixelify_sans-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-pixelify_sans-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-plaster-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-plaster-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ar_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_at-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_at_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_nsw-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_nsw_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_qld-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_qld_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_sa-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_sa_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_tas-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_tas_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_vic-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_vic_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_be_vlg-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_be_vlg_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_be_wal-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_be_wal_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_br_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ca_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_cl_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_co_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_cu_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_cz-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_cz_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_grund-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_grund_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_la-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_la_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_sas-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_sas_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_va-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_va_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_dk_loopet-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_dk_loopet_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_dk_uloopet-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_dk_uloopet_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_es_deco_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_es_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_fr_moderne-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_fr_moderne_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_fr_trad-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_fr_trad_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_gb_j_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_gb_s_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hr-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hr_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hr_lijeva-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hr_lijeva_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hu-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hu_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_id-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_id_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ie-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ie_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_in-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_in_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_is-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_is_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_it_moderna-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_it_moderna_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_it_trad-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_it_trad_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_mx_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ng_modern-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ng_modern_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nl-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nl_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_no-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_no_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nz-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nz_basic-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nz_basic_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nz_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_pe_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_pl-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_pl_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_pt_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ro-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ro_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_sk-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_sk_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_tz-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_tz_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_us_modern_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_us_trad_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_vn-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_vn_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_za-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_za_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-potta_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-potta_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranchers-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranchers-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranga-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranga-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranga-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranga-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-risque-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-risque-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-rowdies-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-rowdies-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-rowdies-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-rowdies-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ruge_boogie-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ruge_boogie-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ruslan_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ruslan_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sacramento-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sacramento-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sancreek-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sancreek-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sankofa_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sankofa_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sedgwick_ave_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sedgwick_ave_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-shantell_sans-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-shantell_sans-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-smokum-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-smokum-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-solitreo-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-solitreo-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-spicy_rice-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-spicy_rice-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sriracha-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sriracha-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-srisakdi-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-srisakdi-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-srisakdi-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-srisakdi-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-stix_two_math-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-tillana-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-tillana-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-tillana-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-tillana-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-titan_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-titan_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-yatra_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-yatra_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-yomogi-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-yomogi-400.woff2 +0 -0
- package/app/public/vendor/fonts/dmserifdisplay-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/dmserifdisplay-400.woff2 +0 -0
- package/app/public/vendor/fonts/domine-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/domine-var.woff2 +0 -0
- package/app/public/vendor/fonts/fraunces-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/fraunces-var.woff2 +0 -0
- package/app/public/vendor/fonts/fredoka-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/fredoka-var.woff2 +0 -0
- package/app/public/vendor/fonts/jakarta-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/jakarta-var.woff2 +0 -0
- package/app/public/vendor/fonts/lora-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/lora-var.woff2 +0 -0
- package/app/public/vendor/fonts/merriweather-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/merriweather-var.woff2 +0 -0
- package/app/public/vendor/fonts/notosans-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/notosans-var.woff2 +0 -0
- package/app/public/vendor/fonts/nunito-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/nunito-var.woff2 +0 -0
- package/app/public/vendor/fonts/playfair-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/playfair-var.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-cu.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-es-deco.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-es.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-gb-j.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-gb-s.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-pe.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-pt.woff2 +0 -0
- package/app/public/vendor/fonts/quicksand-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/quicksand-var.woff2 +0 -0
- package/app/public/vendor/fonts/robotoflex-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/robotoflex-var.woff2 +0 -0
- package/app/public/vendor/fonts/sora-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/sora-var.woff2 +0 -0
- package/app/public/vendor/fonts/spacegrotesk-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/spacegrotesk-var.woff2 +0 -0
- package/app/public/vendor/fonts/spectral-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/spectral-400.woff2 +0 -0
- package/app/public/vendor/fonts/spectral-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/spectral-700.woff2 +0 -0
- package/app/public/vendor/fonts/teachers-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/teachers-var.woff2 +0 -0
- package/app/public/vendor/fonts/ubuntu-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/ubuntu-400.woff2 +0 -0
- package/app/public/vendor/fonts/ubuntu-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/ubuntu-700.woff2 +0 -0
- package/app/public/vendor/fonts.css +1167 -51
- package/dist-pkg/boot/create-game.d.ts +467 -162
- package/dist-pkg/boot/create-game.js +3563 -426
- package/dist-pkg/core/a11y-sr.d.ts +25 -3
- package/dist-pkg/core/a11y-sr.js +40 -19
- package/dist-pkg/core/accessible-label.d.ts +17 -0
- package/dist-pkg/core/accessible-label.js +37 -0
- package/dist-pkg/core/accommodation-subjects.d.ts +26 -0
- package/dist-pkg/core/accommodation-subjects.js +32 -0
- package/dist-pkg/core/accommodations.d.ts +107 -0
- package/dist-pkg/core/accommodations.js +178 -0
- package/dist-pkg/core/actions.d.ts +75 -51
- package/dist-pkg/core/actions.js +98 -69
- package/dist-pkg/core/calm-mode.d.ts +31 -0
- package/dist-pkg/core/calm-mode.js +47 -0
- package/dist-pkg/core/camera-cycle.d.ts +15 -0
- package/dist-pkg/core/camera-cycle.js +7 -0
- package/dist-pkg/core/caption-duration.d.ts +15 -0
- package/dist-pkg/core/caption-duration.js +19 -0
- package/dist-pkg/core/cartridge-problems.d.ts +34 -0
- package/dist-pkg/core/cartridge-problems.js +53 -0
- package/dist-pkg/core/constants.d.ts +0 -54
- package/dist-pkg/core/constants.js +9 -76
- package/dist-pkg/core/contract.d.ts +143 -163
- package/dist-pkg/core/contract.js +223 -207
- package/dist-pkg/core/dom-query.d.ts +4 -4
- package/dist-pkg/core/dom-query.js +12 -20
- package/dist-pkg/core/entity.d.ts +62 -77
- package/dist-pkg/core/entity.js +18 -32
- package/dist-pkg/core/escape-html.d.ts +9 -10
- package/dist-pkg/core/escape-html.js +16 -20
- package/dist-pkg/core/flash-threshold.d.ts +17 -0
- package/dist-pkg/core/flash-threshold.js +113 -0
- package/dist-pkg/core/game-speed.d.ts +11 -0
- package/dist-pkg/core/game-speed.js +16 -0
- package/dist-pkg/core/genres.d.ts +20 -0
- package/dist-pkg/core/genres.js +44 -0
- package/dist-pkg/core/i18n.d.ts +87 -41
- package/dist-pkg/core/i18n.js +206 -153
- package/dist-pkg/core/loop.d.ts +17 -6
- package/dist-pkg/core/loop.js +26 -26
- package/dist-pkg/core/pause-icon-catalogue.d.ts +15 -0
- package/dist-pkg/core/pause-icon-catalogue.js +54 -0
- package/dist-pkg/core/ring.d.ts +17 -0
- package/dist-pkg/core/ring.js +29 -0
- package/dist-pkg/core/rng.d.ts +7 -12
- package/dist-pkg/core/rng.js +23 -53
- package/dist-pkg/core/route.d.ts +26 -26
- package/dist-pkg/core/route.js +126 -121
- package/dist-pkg/core/scenes.d.ts +37 -40
- package/dist-pkg/core/scenes.js +41 -43
- package/dist-pkg/core/screens.d.ts +4 -4
- package/dist-pkg/core/screens.js +11 -16
- package/dist-pkg/core/setting-defaults.d.ts +61 -0
- package/dist-pkg/core/setting-defaults.js +66 -0
- package/dist-pkg/core/speech-rate.d.ts +29 -0
- package/dist-pkg/core/speech-rate.js +47 -0
- package/dist-pkg/core/state.d.ts +118 -118
- package/dist-pkg/core/state.js +322 -297
- package/dist-pkg/core/visual-cycles.d.ts +30 -0
- package/dist-pkg/core/visual-cycles.js +52 -0
- package/dist-pkg/core/visual-state.d.ts +13 -0
- package/dist-pkg/core/visual-state.js +6 -0
- package/dist-pkg/educational/activities-registry.d.ts +1 -1
- package/dist-pkg/educational/activities-registry.js +9 -8
- package/dist-pkg/educational/adaptive-engine.d.ts +11 -11
- package/dist-pkg/educational/adaptive-engine.js +17 -17
- package/dist-pkg/educational/segment-bar.d.ts +12 -12
- package/dist-pkg/educational/segment-bar.js +9 -9
- package/dist-pkg/i18n/en.js +321 -215
- package/dist-pkg/i18n/es.js +320 -215
- package/dist-pkg/i18n/pt.js +342 -215
- package/dist-pkg/input/default-bindings.d.ts +37 -38
- package/dist-pkg/input/default-bindings.js +127 -144
- package/dist-pkg/input/devices.d.ts +7 -7
- package/dist-pkg/input/devices.js +17 -16
- package/dist-pkg/input/edges.d.ts +23 -32
- package/dist-pkg/input/edges.js +23 -28
- package/dist-pkg/input/empathy-filter.d.ts +22 -0
- package/dist-pkg/input/empathy-filter.js +34 -0
- package/dist-pkg/input/face-map.d.ts +96 -0
- package/dist-pkg/input/face-map.js +255 -0
- package/dist-pkg/input/face-signals.d.ts +40 -0
- package/dist-pkg/input/face-signals.js +48 -0
- package/dist-pkg/input/gamepad.d.ts +164 -145
- package/dist-pkg/input/gamepad.js +351 -559
- package/dist-pkg/input/gaze-cycle.d.ts +64 -0
- package/dist-pkg/input/gaze-cycle.js +133 -0
- package/dist-pkg/input/gaze-relative.d.ts +68 -0
- package/dist-pkg/input/gaze-relative.js +142 -0
- package/dist-pkg/input/hand-map.d.ts +28 -0
- package/dist-pkg/input/hand-map.js +142 -0
- package/dist-pkg/input/input-cooldown.d.ts +17 -0
- package/dist-pkg/input/input-cooldown.js +39 -0
- package/dist-pkg/input/keyboard-runtime.d.ts +18 -20
- package/dist-pkg/input/keyboard-runtime.js +23 -27
- package/dist-pkg/input/keyboard.d.ts +68 -62
- package/dist-pkg/input/keyboard.js +83 -105
- package/dist-pkg/input/keydown.d.ts +124 -132
- package/dist-pkg/input/keydown.js +283 -288
- package/dist-pkg/input/latch-edge.d.ts +25 -21
- package/dist-pkg/input/latch-edge.js +33 -35
- package/dist-pkg/input/latch-scope.d.ts +43 -47
- package/dist-pkg/input/latch-scope.js +66 -75
- package/dist-pkg/input/latch-store.d.ts +28 -29
- package/dist-pkg/input/latch-store.js +44 -47
- package/dist-pkg/input/latch-sync.d.ts +28 -29
- package/dist-pkg/input/latch-sync.js +25 -25
- package/dist-pkg/input/latch.d.ts +14 -17
- package/dist-pkg/input/latch.js +29 -37
- package/dist-pkg/input/pad-defaults.d.ts +13 -16
- package/dist-pkg/input/pad-defaults.js +21 -28
- package/dist-pkg/input/pad-reading.d.ts +76 -0
- package/dist-pkg/input/pad-reading.js +164 -0
- package/dist-pkg/input/pad-wizard.d.ts +96 -0
- package/dist-pkg/input/pad-wizard.js +205 -0
- package/dist-pkg/input/pointer-space.d.ts +19 -20
- package/dist-pkg/input/pointer-space.js +27 -32
- package/dist-pkg/input/pointer.d.ts +39 -40
- package/dist-pkg/input/pointer.js +42 -45
- package/dist-pkg/input/state.d.ts +101 -89
- package/dist-pkg/input/state.js +54 -134
- package/dist-pkg/input/switch-scan.d.ts +42 -0
- package/dist-pkg/input/switch-scan.js +54 -0
- package/dist-pkg/input/synthetic-source.d.ts +42 -0
- package/dist-pkg/input/synthetic-source.js +57 -0
- package/dist-pkg/input/touch-bindings.d.ts +127 -113
- package/dist-pkg/input/touch-bindings.js +158 -173
- package/dist-pkg/input/touch.d.ts +130 -70
- package/dist-pkg/input/touch.js +321 -123
- package/dist-pkg/input/transport-in-use.d.ts +107 -0
- package/dist-pkg/input/transport-in-use.js +130 -0
- package/dist-pkg/input/transports.d.ts +96 -114
- package/dist-pkg/input/transports.js +104 -106
- package/dist-pkg/input/virtual-controller.d.ts +46 -0
- package/dist-pkg/input/virtual-controller.js +41 -0
- package/dist-pkg/input/vocabulary-migration.d.ts +50 -49
- package/dist-pkg/input/vocabulary-migration.js +80 -79
- package/dist-pkg/input/voice-map.d.ts +43 -0
- package/dist-pkg/input/voice-map.js +125 -0
- package/dist-pkg/platform/audio-ambient.d.ts +13 -1
- package/dist-pkg/platform/audio-ambient.js +11 -13
- package/dist-pkg/platform/audio-earcons.d.ts +20 -19
- package/dist-pkg/platform/audio-earcons.js +51 -42
- package/dist-pkg/platform/audio-jingles.js +9 -10
- package/dist-pkg/platform/audio-mixer.d.ts +14 -2
- package/dist-pkg/platform/audio-mixer.js +36 -39
- package/dist-pkg/platform/audio-sonar.d.ts +96 -113
- package/dist-pkg/platform/audio-sonar.js +245 -238
- package/dist-pkg/platform/audio.d.ts +53 -19
- package/dist-pkg/platform/audio.js +161 -169
- package/dist-pkg/platform/flash-sampler.d.ts +19 -0
- package/dist-pkg/platform/flash-sampler.js +79 -0
- package/dist-pkg/platform/guide-intensity.d.ts +26 -27
- package/dist-pkg/platform/guide-intensity.js +50 -52
- package/dist-pkg/platform/heavy-catalogue.d.ts +31 -0
- package/dist-pkg/platform/heavy-catalogue.js +223 -0
- package/dist-pkg/platform/heavy-mirror.d.ts +26 -0
- package/dist-pkg/platform/heavy-mirror.js +76 -0
- package/dist-pkg/platform/heavy.d.ts +104 -0
- package/dist-pkg/platform/heavy.js +169 -0
- package/dist-pkg/platform/interruptible-speech.d.ts +16 -16
- package/dist-pkg/platform/interruptible-speech.js +50 -51
- package/dist-pkg/platform/kokoro-port.d.ts +27 -0
- package/dist-pkg/platform/kokoro-port.js +50 -0
- package/dist-pkg/platform/kokoro-runtime.d.ts +20 -0
- package/dist-pkg/platform/kokoro-runtime.js +52 -0
- package/dist-pkg/platform/kokoro.d.ts +70 -0
- package/dist-pkg/platform/kokoro.js +133 -0
- package/dist-pkg/platform/listener-scope.d.ts +12 -0
- package/dist-pkg/platform/listener-scope.js +81 -0
- package/dist-pkg/platform/locale-host.d.ts +10 -0
- package/dist-pkg/platform/locale-host.js +34 -0
- package/dist-pkg/platform/microphone.d.ts +51 -0
- package/dist-pkg/platform/microphone.js +118 -0
- package/dist-pkg/platform/onnx-runtime.d.ts +34 -0
- package/dist-pkg/platform/onnx-runtime.js +42 -0
- package/dist-pkg/platform/reading-in-worker.d.ts +40 -0
- package/dist-pkg/platform/reading-in-worker.js +87 -0
- package/dist-pkg/platform/reading-model.d.ts +73 -0
- package/dist-pkg/platform/reading-model.js +247 -0
- package/dist-pkg/platform/reading-runtime.d.ts +24 -0
- package/dist-pkg/platform/reading-runtime.js +159 -0
- package/dist-pkg/platform/reading-worker.d.ts +41 -0
- package/dist-pkg/platform/reading-worker.js +58 -0
- package/dist-pkg/platform/reading.d.ts +69 -0
- package/dist-pkg/platform/reading.js +128 -0
- package/dist-pkg/platform/speech-recognition.d.ts +51 -0
- package/dist-pkg/platform/speech-recognition.js +84 -0
- package/dist-pkg/platform/speech.d.ts +14 -1
- package/dist-pkg/platform/speech.js +13 -13
- package/dist-pkg/platform/storage-keys.d.ts +96 -0
- package/dist-pkg/platform/storage-keys.js +106 -0
- package/dist-pkg/platform/storage.d.ts +46 -111
- package/dist-pkg/platform/storage.js +104 -169
- package/dist-pkg/platform/tts.d.ts +51 -38
- package/dist-pkg/platform/tts.js +217 -119
- package/dist-pkg/platform/vision-loop.d.ts +23 -0
- package/dist-pkg/platform/vision-loop.js +56 -0
- package/dist-pkg/platform/vision.d.ts +132 -0
- package/dist-pkg/platform/vision.js +117 -0
- package/dist-pkg/platform/voice-listener.d.ts +36 -0
- package/dist-pkg/platform/voice-listener.js +88 -0
- package/dist-pkg/platform/voice-plan.d.ts +6 -102
- package/dist-pkg/platform/voice-plan.js +9 -151
- package/dist-pkg/platform/vosk-runtime.d.ts +71 -0
- package/dist-pkg/platform/vosk-runtime.js +93 -0
- package/dist-pkg/render/canvas.d.ts +13 -7
- package/dist-pkg/render/canvas.js +13 -13
- package/dist-pkg/render/crt.d.ts +46 -12
- package/dist-pkg/render/crt.js +82 -80
- package/dist-pkg/render/cvd-matrices.d.ts +18 -18
- package/dist-pkg/render/cvd-matrices.js +33 -38
- package/dist-pkg/render/hc-role-data.d.ts +7 -7
- package/dist-pkg/render/hc-role-data.js +14 -14
- package/dist-pkg/render/high-contrast.d.ts +66 -54
- package/dist-pkg/render/high-contrast.js +221 -216
- package/dist-pkg/render/low-vision-drawing.d.ts +5 -0
- package/dist-pkg/render/low-vision-drawing.js +46 -0
- package/dist-pkg/render/lq-filter.d.ts +32 -20
- package/dist-pkg/render/lq-filter.js +59 -65
- package/dist-pkg/render/port.d.ts +86 -88
- package/dist-pkg/render/port.js +17 -23
- package/dist-pkg/render/screen-pipeline.d.ts +42 -42
- package/dist-pkg/render/screen-pipeline.js +80 -87
- package/dist-pkg/render/sprite-fx.d.ts +2 -1
- package/dist-pkg/render/sprite-fx.js +16 -14
- package/dist-pkg/render/viewports.d.ts +20 -15
- package/dist-pkg/render/viewports.js +83 -114
- package/dist-pkg/render/viz-axes-labels.d.ts +47 -0
- package/dist-pkg/render/viz-axes-labels.js +88 -0
- package/dist-pkg/render/viz-axes.d.ts +80 -86
- package/dist-pkg/render/viz-axes.js +115 -116
- package/dist-pkg/render/viz-modes.d.ts +28 -29
- package/dist-pkg/render/viz-modes.js +40 -45
- package/dist-pkg/render/viz-refusal.d.ts +32 -0
- package/dist-pkg/render/viz-refusal.js +57 -0
- package/dist-pkg/render/viz-setters.d.ts +104 -66
- package/dist-pkg/render/viz-setters.js +182 -191
- package/dist-pkg/ui/aac-sets.d.ts +40 -0
- package/dist-pkg/ui/aac-sets.js +49 -0
- package/dist-pkg/ui/audio-choices.d.ts +63 -0
- package/dist-pkg/ui/audio-choices.js +94 -0
- package/dist-pkg/ui/audio-rows-that-apply.d.ts +12 -0
- package/dist-pkg/ui/audio-rows-that-apply.js +43 -0
- package/dist-pkg/ui/camera-control.d.ts +6 -0
- package/dist-pkg/ui/camera-control.js +14 -0
- package/dist-pkg/ui/changed-mark.d.ts +9 -8
- package/dist-pkg/ui/changed-mark.js +22 -53
- package/dist-pkg/ui/control-choices.d.ts +37 -0
- package/dist-pkg/ui/control-choices.js +84 -0
- package/dist-pkg/ui/debug-panel.d.ts +59 -43
- package/dist-pkg/ui/debug-panel.js +68 -69
- package/dist-pkg/ui/dom.d.ts +10 -14
- package/dist-pkg/ui/dom.js +10 -47
- package/dist-pkg/ui/drawing-problems.d.ts +25 -0
- package/dist-pkg/ui/drawing-problems.js +93 -0
- package/dist-pkg/ui/eye-control.d.ts +36 -0
- package/dist-pkg/ui/eye-control.js +178 -0
- package/dist-pkg/ui/face-control.d.ts +25 -0
- package/dist-pkg/ui/face-control.js +183 -0
- package/dist-pkg/ui/focus-trap.d.ts +39 -49
- package/dist-pkg/ui/focus-trap.js +56 -65
- package/dist-pkg/ui/fonts.d.ts +118 -63
- package/dist-pkg/ui/fonts.js +267 -111
- package/dist-pkg/ui/game-options.d.ts +42 -0
- package/dist-pkg/ui/game-options.js +138 -0
- package/dist-pkg/ui/gaze-overlay.d.ts +64 -0
- package/dist-pkg/ui/gaze-overlay.js +165 -0
- package/dist-pkg/ui/hand-control.d.ts +25 -0
- package/dist-pkg/ui/hand-control.js +143 -0
- package/dist-pkg/ui/help-panel.d.ts +76 -0
- package/dist-pkg/ui/help-panel.js +232 -0
- package/dist-pkg/ui/hud-bands.d.ts +45 -0
- package/dist-pkg/ui/hud-bands.js +108 -0
- package/dist-pkg/ui/hud.d.ts +73 -70
- package/dist-pkg/ui/hud.js +94 -98
- package/dist-pkg/ui/item-announcement.d.ts +13 -12
- package/dist-pkg/ui/item-announcement.js +25 -26
- package/dist-pkg/ui/latch-refusal.d.ts +22 -21
- package/dist-pkg/ui/latch-refusal.js +37 -37
- package/dist-pkg/ui/layout.d.ts +103 -28
- package/dist-pkg/ui/layout.js +114 -99
- package/dist-pkg/ui/locale-flags.d.ts +16 -0
- package/dist-pkg/ui/locale-flags.js +30 -0
- package/dist-pkg/ui/loop-crash.d.ts +17 -17
- package/dist-pkg/ui/loop-crash.js +33 -62
- package/dist-pkg/ui/menu-intent.d.ts +32 -0
- package/dist-pkg/ui/menu-intent.js +54 -0
- package/dist-pkg/ui/menu-items.d.ts +10 -0
- package/dist-pkg/ui/menu-items.js +22 -0
- package/dist-pkg/ui/menu-nav.d.ts +60 -90
- package/dist-pkg/ui/menu-nav.js +301 -274
- package/dist-pkg/ui/mobility-choices.d.ts +26 -0
- package/dist-pkg/ui/mobility-choices.js +41 -0
- package/dist-pkg/ui/motion-choices.d.ts +31 -0
- package/dist-pkg/ui/motion-choices.js +68 -0
- package/dist-pkg/ui/motion-scene.d.ts +24 -19
- package/dist-pkg/ui/motion-scene.js +29 -61
- package/dist-pkg/ui/mount-panel.d.ts +81 -0
- package/dist-pkg/ui/mount-panel.js +61 -0
- package/dist-pkg/ui/panel-shell.d.ts +65 -31
- package/dist-pkg/ui/panel-shell.js +92 -66
- package/dist-pkg/ui/panel-widgets.d.ts +116 -0
- package/dist-pkg/ui/panel-widgets.js +208 -0
- package/dist-pkg/ui/pause-buttons.d.ts +35 -0
- package/dist-pkg/ui/pause-buttons.js +66 -0
- package/dist-pkg/ui/pause-icons.d.ts +250 -343
- package/dist-pkg/ui/pause-icons.js +614 -605
- package/dist-pkg/ui/pause-markup.d.ts +86 -0
- package/dist-pkg/ui/pause-markup.js +125 -0
- package/dist-pkg/ui/reach-notice.d.ts +22 -23
- package/dist-pkg/ui/reach-notice.js +55 -58
- package/dist-pkg/ui/scan-overlay.d.ts +23 -0
- package/dist-pkg/ui/scan-overlay.js +42 -0
- package/dist-pkg/ui/settings-aac.d.ts +68 -0
- package/dist-pkg/ui/settings-aac.js +189 -0
- package/dist-pkg/ui/settings-audio.d.ts +91 -113
- package/dist-pkg/ui/settings-audio.js +407 -405
- package/dist-pkg/ui/settings-controls.d.ts +53 -92
- package/dist-pkg/ui/settings-controls.js +143 -215
- package/dist-pkg/ui/settings-empathy.d.ts +39 -30
- package/dist-pkg/ui/settings-empathy.js +53 -60
- package/dist-pkg/ui/settings-mobility.d.ts +195 -0
- package/dist-pkg/ui/settings-mobility.js +374 -0
- package/dist-pkg/ui/settings-motion.d.ts +91 -70
- package/dist-pkg/ui/settings-motion.js +287 -198
- package/dist-pkg/ui/settings-panel.d.ts +48 -45
- package/dist-pkg/ui/settings-panel.js +164 -93
- package/dist-pkg/ui/settings-typo.d.ts +28 -76
- package/dist-pkg/ui/settings-typo.js +145 -125
- package/dist-pkg/ui/settings-visual.d.ts +29 -87
- package/dist-pkg/ui/settings-visual.js +240 -193
- package/dist-pkg/ui/shell.d.ts +113 -134
- package/dist-pkg/ui/shell.js +143 -216
- package/dist-pkg/ui/simulation-list.d.ts +27 -0
- package/dist-pkg/ui/simulation-list.js +76 -0
- package/dist-pkg/ui/simulation-over-the-world.d.ts +23 -0
- package/dist-pkg/ui/simulation-over-the-world.js +131 -0
- package/dist-pkg/ui/simulation-refusal.d.ts +5 -31
- package/dist-pkg/ui/simulation-refusal.js +8 -56
- package/dist-pkg/ui/switchable-control.d.ts +11 -0
- package/dist-pkg/ui/switchable-control.js +19 -0
- package/dist-pkg/ui/title.d.ts +4 -4
- package/dist-pkg/ui/title.js +11 -13
- package/dist-pkg/ui/top-band.d.ts +24 -0
- package/dist-pkg/ui/top-band.js +100 -0
- package/dist-pkg/ui/typo-choices.d.ts +71 -0
- package/dist-pkg/ui/typo-choices.js +84 -0
- package/dist-pkg/ui/visual-axes-panel.d.ts +11 -47
- package/dist-pkg/ui/visual-axes-panel.js +12 -94
- package/dist-pkg/ui/visual-choices.d.ts +77 -0
- package/dist-pkg/ui/visual-choices.js +107 -0
- package/dist-pkg/ui/vlibras.d.ts +33 -10
- package/dist-pkg/ui/vlibras.js +58 -81
- package/dist-pkg/ui/voice-control.d.ts +46 -0
- package/dist-pkg/ui/voice-control.js +143 -0
- package/dist-pkg/ui/voice-settings.d.ts +96 -0
- package/dist-pkg/ui/voice-settings.js +302 -0
- package/dist-pkg/ui/where-the-child-is.d.ts +31 -0
- package/dist-pkg/ui/where-the-child-is.js +70 -0
- package/docs/CREDITS.md +198 -54
- package/docs/LICENSES.md +160 -145
- package/package.json +24 -25
- package/scripts/heavy-into-the-delivery.mjs +144 -0
- package/scripts/licences/Apache-2.0.txt +176 -0
- package/scripts/licences/GPL-3.0.txt +674 -0
- package/scripts/licences/MIT.txt +17 -0
- package/scripts/licences/third-party.mjs +287 -0
- package/scripts/licences/vosk-browser.NOTICE.txt +268 -0
- package/app/public/vendor/fonts/comicneue-400.woff2 +0 -0
- package/app/public/vendor/fonts/comicneue-700.woff2 +0 -0
- package/dist-pkg/core/anel.d.ts +0 -17
- package/dist-pkg/core/anel.js +0 -31
- package/dist-pkg/core/collision.d.ts +0 -21
- package/dist-pkg/core/collision.js +0 -62
- package/dist-pkg/core/layers.d.ts +0 -63
- package/dist-pkg/core/layers.js +0 -95
- package/dist-pkg/core/letter-grid.d.ts +0 -55
- package/dist-pkg/core/letter-grid.js +0 -116
- package/dist-pkg/core/password.d.ts +0 -34
- package/dist-pkg/core/password.js +0 -205
- package/dist-pkg/core/rotulo-acessivel.d.ts +0 -17
- package/dist-pkg/core/rotulo-acessivel.js +0 -41
- package/dist-pkg/core/run-state.d.ts +0 -115
- package/dist-pkg/core/run-state.js +0 -40
- package/dist-pkg/core/tiles.d.ts +0 -12
- package/dist-pkg/core/tiles.js +0 -61
- package/dist-pkg/core/world.d.ts +0 -4
- package/dist-pkg/core/world.js +0 -58
- package/dist-pkg/input/origem-sintetica.d.ts +0 -44
- package/dist-pkg/input/origem-sintetica.js +0 -60
- package/dist-pkg/input/transporte-em-uso.d.ts +0 -101
- package/dist-pkg/input/transporte-em-uso.js +0 -130
- package/dist-pkg/platform/audio-nav.d.ts +0 -51
- package/dist-pkg/platform/audio-nav.js +0 -99
- package/dist-pkg/platform/pesados-catalogo.d.ts +0 -14
- package/dist-pkg/platform/pesados-catalogo.js +0 -177
- package/dist-pkg/platform/pesados.d.ts +0 -31
- package/dist-pkg/platform/pesados.js +0 -75
- package/dist-pkg/platform/vozes-prontas.d.ts +0 -28
- package/dist-pkg/platform/vozes-prontas.js +0 -61
- package/dist-pkg/render/camera.d.ts +0 -58
- package/dist-pkg/render/camera.js +0 -105
- package/dist-pkg/render/cenario-data.d.ts +0 -127
- package/dist-pkg/render/cenario-data.js +0 -145
- package/dist-pkg/render/city-tex.d.ts +0 -63
- package/dist-pkg/render/city-tex.js +0 -228
- package/dist-pkg/render/city-tiles.d.ts +0 -11
- package/dist-pkg/render/city-tiles.js +0 -140
- package/dist-pkg/render/draw.d.ts +0 -149
- package/dist-pkg/render/draw.js +0 -231
- package/dist-pkg/render/fx.d.ts +0 -63
- package/dist-pkg/render/fx.js +0 -123
- package/dist-pkg/render/minimap.d.ts +0 -11
- package/dist-pkg/render/minimap.js +0 -94
- package/dist-pkg/render/parallax.d.ts +0 -85
- package/dist-pkg/render/parallax.js +0 -158
- package/dist-pkg/render/player-anim.d.ts +0 -71
- package/dist-pkg/render/player-anim.js +0 -152
- package/dist-pkg/render/recycling-tex.d.ts +0 -48
- package/dist-pkg/render/recycling-tex.js +0 -164
- package/dist-pkg/render/scene-city.d.ts +0 -77
- package/dist-pkg/render/scene-city.js +0 -181
- package/dist-pkg/render/scene-parallax.d.ts +0 -72
- package/dist-pkg/render/scene-parallax.js +0 -426
- package/dist-pkg/render/scene-sky.d.ts +0 -126
- package/dist-pkg/render/scene-sky.js +0 -295
- package/dist-pkg/render/set-cenario.d.ts +0 -54
- package/dist-pkg/render/set-cenario.js +0 -103
- package/dist-pkg/render/textures.d.ts +0 -75
- package/dist-pkg/render/textures.js +0 -240
- package/dist-pkg/render/title-scene.d.ts +0 -46
- package/dist-pkg/render/title-scene.js +0 -75
- package/dist-pkg/render/weather.d.ts +0 -96
- package/dist-pkg/render/weather.js +0 -171
- package/dist-pkg/render/wheelchair-sprites.d.ts +0 -32
- package/dist-pkg/render/wheelchair-sprites.js +0 -69
- package/dist-pkg/render/world-tex.d.ts +0 -18
- package/dist-pkg/render/world-tex.js +0 -87
- package/dist-pkg/ui/activities-menu.d.ts +0 -258
- package/dist-pkg/ui/activities-menu.js +0 -648
- package/dist-pkg/ui/caa-sets.d.ts +0 -39
- package/dist-pkg/ui/caa-sets.js +0 -65
- package/dist-pkg/ui/map-hub.d.ts +0 -56
- package/dist-pkg/ui/map-hub.js +0 -138
- package/dist-pkg/ui/settings-caa.d.ts +0 -45
- package/dist-pkg/ui/settings-caa.js +0 -137
- package/dist-pkg/ui/settings-motor.d.ts +0 -175
- package/dist-pkg/ui/settings-motor.js +0 -342
- package/dist-pkg/ui/webcam.d.ts +0 -7
- package/dist-pkg/ui/webcam.js +0 -93
|
@@ -1,67 +1,83 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
-
import type { JuiceFlags } from '../render/fx.js';
|
|
3
2
|
type Tune = Record<string, number>;
|
|
4
3
|
type Anim = Record<string, number>;
|
|
5
|
-
type Juice =
|
|
4
|
+
type Juice = {
|
|
5
|
+
dust: boolean;
|
|
6
|
+
sparkle: boolean;
|
|
7
|
+
squash: boolean;
|
|
8
|
+
hitstop: boolean;
|
|
9
|
+
shake: boolean;
|
|
10
|
+
shimmer: boolean;
|
|
11
|
+
};
|
|
6
12
|
/**
|
|
7
|
-
*
|
|
13
|
+
* A SNAPSHOT OF THE CHARACTER in one frame — DATA, and no PixiJS object.
|
|
8
14
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
15
|
+
* The composition root, the only place where PixiJS is known, takes the snapshot and hands over strings. It is the
|
|
16
|
+
* same choice as `RenderInto` and `CreateSprite` in render/port: asking for the VERB fits where lending the object does
|
|
17
|
+
* not — and here it pays twice, because it keeps `ui/debug-panel` testable in the `node` project.
|
|
12
18
|
*/
|
|
13
|
-
export interface
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
+
export interface CharacterSample {
|
|
20
|
+
/** Identity of the texture WITHIN this recording. Not geometry: the four idle frames share it. */
|
|
21
|
+
textureId: number;
|
|
22
|
+
/** The crop, "x,y WxH". */
|
|
23
|
+
crop: string;
|
|
24
|
+
/** The texture base, "WxH". */
|
|
19
25
|
base: string;
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
|
|
26
|
+
/** The sprite position, "x,y". */
|
|
27
|
+
position: string;
|
|
28
|
+
/** The scale, "x,y" — squash & stretch moves it. */
|
|
29
|
+
scale: string;
|
|
30
|
+
/** How many camera SIBLINGS were drawing a texture of the character in this frame. */
|
|
31
|
+
siblingsDrawing: number;
|
|
32
|
+
/** Where they were, in case there is one. */
|
|
33
|
+
siblingPositions: string;
|
|
28
34
|
}
|
|
29
|
-
/**
|
|
30
|
-
export interface
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
/**
|
|
35
|
+
/** What the probe answers. Three questions, because they are what separates the remaining causes. */
|
|
36
|
+
export interface ProbeSummary {
|
|
37
|
+
frames: number;
|
|
38
|
+
textures: number;
|
|
39
|
+
maxSiblings: number;
|
|
40
|
+
siblingExample: string;
|
|
41
|
+
/** The textures whose crop is too large for a character frame — atlas bleeding. */
|
|
36
42
|
sangramento: string[];
|
|
37
|
-
|
|
38
|
-
|
|
43
|
+
scales: string[];
|
|
44
|
+
verdict: string;
|
|
39
45
|
}
|
|
40
46
|
/**
|
|
41
|
-
*
|
|
47
|
+
* Reduces the recording to three questions and a verdict.
|
|
42
48
|
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
49
|
+
* THE ORDER OF THE VERDICT IS THE DECISION: a sibling drawing beats bleeding, because it is what produces WHOLE copies
|
|
50
|
+
* at different positions. And when the three questions come back clean the verdict does NOT say "all is well": it says
|
|
51
|
+
* WHERE to look next. Absence of evidence in the three is not evidence of absence, and ending the search here would end
|
|
52
|
+
* it in the wrong place.
|
|
47
53
|
*/
|
|
48
|
-
export declare function
|
|
54
|
+
export declare function summariseProbe(samples: readonly CharacterSample[]): ProbeSummary;
|
|
49
55
|
export interface DebugPanelCtx {
|
|
50
56
|
TUNE: Tune;
|
|
51
57
|
ANIM: Anim;
|
|
52
58
|
JUICE: Juice;
|
|
53
59
|
saveJuice: () => void;
|
|
54
60
|
/**
|
|
55
|
-
*
|
|
61
|
+
* A snapshot of the character NOW, or `null` if there is no character in the scene yet.
|
|
56
62
|
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
63
|
+
* OPTIONAL: a host with no character (the quiz) does not provide it, and the probe simply does not appear. The
|
|
64
|
+
* panel still does not know PixiJS.
|
|
59
65
|
*/
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
|
|
66
|
+
sampleCharacter?: () => CharacterSample | null;
|
|
67
|
+
/** Calls `fn` every frame and returns how to cancel. It is the render clock, injected as a verb. */
|
|
68
|
+
onFrame?: (fn: () => void) => () => void;
|
|
69
|
+
/**
|
|
70
|
+
* The page's query string (`location.search`): the panel exists only under `?debug=true`. REQUIRED (ADR-0232 D4): the
|
|
71
|
+
* host reads its own location, and this module reaches none.
|
|
72
|
+
*/
|
|
73
|
+
search: string;
|
|
74
|
+
/** The document the panel is built in and appended to (its `body`). REQUIRED (ADR-0232 D4): never the global one. */
|
|
75
|
+
doc: Document;
|
|
76
|
+
/**
|
|
77
|
+
* Where the probe's RAW recording goes, for whoever wants more than the summary without 180 lines in the panel — the
|
|
78
|
+
* platformer puts it on `window.__sonda`. REQUIRED (ADR-0232 D4): the module used to write that global itself.
|
|
79
|
+
*/
|
|
80
|
+
expose: (samples: readonly CharacterSample[]) => void;
|
|
65
81
|
}
|
|
66
82
|
export declare function initDebugPanel(ctx: DebugPanelCtx): HTMLElement | null;
|
|
67
83
|
export {};
|
|
@@ -1,43 +1,42 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
2
|
// ui/debug-panel — the ?debug=true live-tuning panel (physics/animation sliders + juice toggles). Leaf UI module.
|
|
3
3
|
// Built via closure DI: receives the LIVE TUNE/ANIM/JUICE objects (mutated in place) + saveJuice from the composition
|
|
4
|
-
// root, so the sliders/checkboxes tune the same state the game reads.
|
|
4
|
+
// root, so the sliders/checkboxes tune the same state the game reads.
|
|
5
5
|
// Returns the panel element (or null when not in ?debug=true) — testable without booting the game.
|
|
6
|
-
/**
|
|
7
|
-
const
|
|
6
|
+
/** A crop larger than this is not a character frame: it is a piece of the atlas. The largest real one is 31x35. */
|
|
7
|
+
const MAX_CHARACTER_FRAME_SIDE = 64;
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* Reduces the recording to three questions and a verdict.
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* THE ORDER OF THE VERDICT IS THE DECISION: a sibling drawing beats bleeding, because it is what produces WHOLE copies
|
|
12
|
+
* at different positions. And when the three questions come back clean the verdict does NOT say "all is well": it says
|
|
13
|
+
* WHERE to look next. Absence of evidence in the three is not evidence of absence, and ending the search here would end
|
|
14
|
+
* it in the wrong place.
|
|
15
15
|
*/
|
|
16
|
-
export function
|
|
17
|
-
if (!
|
|
18
|
-
return {
|
|
16
|
+
export function summariseProbe(samples) {
|
|
17
|
+
if (!samples.length) {
|
|
18
|
+
return { frames: 0, textures: 0, maxSiblings: 0, siblingExample: '', sangramento: [], scales: [], verdict: 'não gravou nada — o personagem existia?' };
|
|
19
19
|
}
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const
|
|
20
|
+
const textureCount = new Set(samples.map((a) => a.textureId)).size;
|
|
21
|
+
const withSiblings = samples.filter((a) => a.siblingsDrawing > 0);
|
|
22
|
+
const mostSiblings = withSiblings.reduce((m, a) => Math.max(m, a.siblingsDrawing), 0);
|
|
23
|
+
const isAtlasPiece = (r) => {
|
|
24
24
|
const m = /(\d+)x(\d+)$/.exec(r);
|
|
25
|
-
return !!m && (+m[1] >
|
|
25
|
+
return !!m && (+m[1] > MAX_CHARACTER_FRAME_SIDE || +m[2] > MAX_CHARACTER_FRAME_SIDE);
|
|
26
26
|
};
|
|
27
|
-
const sangramento = [...new Set(
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
? 'ALGUÉM DESENHA DUAS VEZES: até ' +
|
|
27
|
+
const sangramento = [...new Set(samples.filter((a) => isAtlasPiece(a.crop)).map((a) => a.crop + ' (base ' + a.base + ')'))];
|
|
28
|
+
const distinctScales = [...new Set(samples.map((a) => a.scale))].sort();
|
|
29
|
+
const finding = mostSiblings > 0
|
|
30
|
+
? 'ALGUÉM DESENHA DUAS VEZES: até ' + mostSiblings + ' irmão(s) da câmera com a textura do personagem'
|
|
31
31
|
: sangramento.length
|
|
32
32
|
? 'RECORTE GRANDE DEMAIS: o quadro está pegando pedaço do atlas'
|
|
33
33
|
: 'sprite limpo (uma textura por quadro, sem irmão, recorte de quadro) — procure em composição: filtro, pós-efeito ou câmera';
|
|
34
|
-
return {
|
|
34
|
+
return { frames: samples.length, textures: textureCount, maxSiblings: mostSiblings, siblingExample: withSiblings.length ? withSiblings[0].siblingPositions : '', sangramento, scales: distinctScales, verdict: finding };
|
|
35
35
|
}
|
|
36
36
|
export function initDebugPanel(ctx) {
|
|
37
|
-
|
|
38
|
-
if (!/[?&]debug=true/.test(search))
|
|
37
|
+
if (!/[?&]debug=true/.test(ctx.search))
|
|
39
38
|
return null;
|
|
40
|
-
const { TUNE, ANIM, JUICE, saveJuice } = ctx;
|
|
39
|
+
const { TUNE, ANIM, JUICE, saveJuice, doc } = ctx;
|
|
41
40
|
const KNOBS = [
|
|
42
41
|
{ h: 'Movimento (valores absolutos)' },
|
|
43
42
|
{ label: 'Velocidade de andar', get: () => TUNE.hWalk, set: (v) => (TUNE.hWalk = v), min: 0.5, max: 5, step: 0.1 },
|
|
@@ -55,10 +54,10 @@ export function initDebugPanel(ctx) {
|
|
|
55
54
|
{ label: 'Queda máxima', get: () => TUNE.maxFall, set: (v) => (TUNE.maxFall = v), min: 3, max: 14, step: 0.5 },
|
|
56
55
|
{ label: 'Queda máxima na água', get: () => TUNE.waterMaxFall, set: (v) => (TUNE.waterMaxFall = v), min: 1, max: 8, step: 0.5 },
|
|
57
56
|
{ h: 'Animação (cadência: ticks/quadro)' },
|
|
58
|
-
{ label: 'Andar', get: () => ANIM.walkHold, set: (v) => (ANIM.walkHold = v), min: 1, max: 20, step: 1,
|
|
59
|
-
{ label: 'Correr', get: () => ANIM.runHold, set: (v) => (ANIM.runHold = v), min: 1, max: 20, step: 1,
|
|
60
|
-
{ label: 'Parado (idle)', get: () => ANIM.idleHold, set: (v) => (ANIM.idleHold = v), min: 2, max: 40, step: 1,
|
|
61
|
-
{ label: 'Nado', get: () => ANIM.swimHold, set: (v) => (ANIM.swimHold = v), min: 2, max: 24, step: 1,
|
|
57
|
+
{ label: 'Andar', get: () => ANIM.walkHold, set: (v) => (ANIM.walkHold = v), min: 1, max: 20, step: 1, cadence: true },
|
|
58
|
+
{ label: 'Correr', get: () => ANIM.runHold, set: (v) => (ANIM.runHold = v), min: 1, max: 20, step: 1, cadence: true },
|
|
59
|
+
{ label: 'Parado (idle)', get: () => ANIM.idleHold, set: (v) => (ANIM.idleHold = v), min: 2, max: 40, step: 1, cadence: true },
|
|
60
|
+
{ label: 'Nado', get: () => ANIM.swimHold, set: (v) => (ANIM.swimHold = v), min: 2, max: 24, step: 1, cadence: true },
|
|
62
61
|
{ h: 'Juice (efeitos de resposta) — toggles independentes' },
|
|
63
62
|
{ label: '💨 Poeira (pulo/pouso/corrida)', chk: () => JUICE.dust, set: (v) => { JUICE.dust = v; saveJuice(); } },
|
|
64
63
|
{ label: '✨ Brilho ao coletar', chk: () => JUICE.sparkle, set: (v) => { JUICE.sparkle = v; saveJuice(); } },
|
|
@@ -66,44 +65,44 @@ export function initDebugPanel(ctx) {
|
|
|
66
65
|
{ label: '⏱️ Hit-stop (impacto)', chk: () => JUICE.hitstop, set: (v) => { JUICE.hitstop = v; saveJuice(); } },
|
|
67
66
|
{ label: '📳 Tremor de tela', chk: () => JUICE.shake, set: (v) => { JUICE.shake = v; saveJuice(); } },
|
|
68
67
|
{ label: '🌟 Cintilar dos itens', chk: () => JUICE.shimmer, set: (v) => { JUICE.shimmer = v; saveJuice(); } },
|
|
69
|
-
]; //
|
|
70
|
-
const p =
|
|
68
|
+
]; // The CRT look is not here: it lives in the visual sensitivity panel (the Dev's request).
|
|
69
|
+
const p = doc.createElement('div');
|
|
71
70
|
p.id = 'debug-panel';
|
|
72
|
-
p.hidden = true; //
|
|
71
|
+
p.hidden = true; // starts hidden; opened by the 🐞 Debug button
|
|
73
72
|
p.setAttribute('role', 'group');
|
|
74
73
|
p.setAttribute('aria-label', 'Painel de depuração');
|
|
75
74
|
p.style.cssText = 'position:fixed;top:8px;right:8px;z-index:200;background:rgba(11,16,32,.97);color:#fff;border:2px solid #ffd23f;border-radius:8px;padding:.6rem .7rem;font:13px/1.4 system-ui,sans-serif;max-width:270px;max-height:86vh;overflow:auto;box-shadow:0 4px 16px rgba(0,0,0,.5)';
|
|
76
75
|
p.innerHTML = '<strong>🔧 ?debug — valores ao vivo</strong>';
|
|
77
76
|
for (const k of KNOBS) {
|
|
78
77
|
if ('h' in k) {
|
|
79
|
-
const h =
|
|
78
|
+
const h = doc.createElement('div');
|
|
80
79
|
h.textContent = k.h;
|
|
81
80
|
h.style.cssText = 'margin:.7rem 0 .1rem;font-weight:700;color:#ffd23f;border-bottom:1px solid rgba(255,210,63,.4)';
|
|
82
81
|
p.appendChild(h);
|
|
83
82
|
continue;
|
|
84
83
|
}
|
|
85
84
|
if ('chk' in k) {
|
|
86
|
-
const row =
|
|
85
|
+
const row = doc.createElement('label');
|
|
87
86
|
row.style.cssText = 'display:flex;gap:.4rem;align-items:center;margin-top:.4rem;font-size:12px;cursor:pointer';
|
|
88
|
-
const inp =
|
|
87
|
+
const inp = doc.createElement('input');
|
|
89
88
|
inp.type = 'checkbox';
|
|
90
89
|
inp.checked = k.chk();
|
|
91
90
|
inp.addEventListener('change', () => k.set(inp.checked));
|
|
92
91
|
row.appendChild(inp);
|
|
93
|
-
row.appendChild(
|
|
92
|
+
row.appendChild(doc.createTextNode(k.label));
|
|
94
93
|
p.appendChild(row);
|
|
95
94
|
continue;
|
|
96
95
|
}
|
|
97
|
-
const row =
|
|
96
|
+
const row = doc.createElement('div');
|
|
98
97
|
row.style.cssText = 'margin-top:.5rem';
|
|
99
|
-
const lab =
|
|
98
|
+
const lab = doc.createElement('label');
|
|
100
99
|
lab.style.cssText = 'display:block;font-size:12px;margin-bottom:2px';
|
|
101
|
-
const val =
|
|
100
|
+
const val = doc.createElement('strong');
|
|
102
101
|
val.style.cssText = 'color:#ffd23f;float:right';
|
|
103
|
-
const upd = () => { val.textContent = k.
|
|
102
|
+
const upd = () => { val.textContent = k.cadence ? `${k.get()} (${Math.round(60 / k.get())}fps)` : String(k.get()); };
|
|
104
103
|
lab.textContent = k.label;
|
|
105
104
|
lab.appendChild(val);
|
|
106
|
-
const inp =
|
|
105
|
+
const inp = doc.createElement('input');
|
|
107
106
|
inp.type = 'range';
|
|
108
107
|
inp.min = String(k.min);
|
|
109
108
|
inp.max = String(k.max);
|
|
@@ -117,23 +116,23 @@ export function initDebugPanel(ctx) {
|
|
|
117
116
|
p.appendChild(row);
|
|
118
117
|
upd();
|
|
119
118
|
}
|
|
120
|
-
/* =====================
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
119
|
+
/* ===================== THE CHARACTER PROBE =====================
|
|
120
|
+
It lives HERE, and not in a script to paste into the console, because that is what the Dev asked for — an
|
|
121
|
+
instrument that exists only while someone remembers to paste it is not an instrument, it is a memory. Here it
|
|
122
|
+
sits beside the other live values, behind the same `?debug=true`.
|
|
124
123
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
if (ctx.
|
|
128
|
-
const
|
|
129
|
-
const h =
|
|
124
|
+
It only appears if the host can take the snapshot: a game with no character does not get a button that does
|
|
125
|
+
nothing. */
|
|
126
|
+
if (ctx.sampleCharacter && ctx.onFrame) {
|
|
127
|
+
const sampleCharacter = ctx.sampleCharacter, everyFrame = ctx.onFrame;
|
|
128
|
+
const h = doc.createElement('div');
|
|
130
129
|
h.textContent = 'Sonda do personagem';
|
|
131
130
|
h.style.cssText = 'margin:.7rem 0 .1rem;font-weight:700;color:#ffd23f;border-bottom:1px solid rgba(255,210,63,.4)';
|
|
132
131
|
p.appendChild(h);
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
const btn =
|
|
132
|
+
const migrated = doc.createElement('pre');
|
|
133
|
+
migrated.style.cssText = 'margin:.4rem 0 0;font:11px/1.35 ui-monospace,monospace;white-space:pre-wrap;color:#cfe';
|
|
134
|
+
migrated.setAttribute('aria-live', 'polite');
|
|
135
|
+
const btn = doc.createElement('button');
|
|
137
136
|
btn.type = 'button';
|
|
138
137
|
btn.textContent = '🥷 Gravar 180 quadros';
|
|
139
138
|
btn.style.cssText = 'margin-top:.4rem;width:100%;min-height:32px;font:inherit;font-weight:700;cursor:pointer;border-radius:6px;border:1px solid #ffd23f;background:#1a2740;color:#fff';
|
|
@@ -141,33 +140,33 @@ export function initDebugPanel(ctx) {
|
|
|
141
140
|
if (btn.disabled)
|
|
142
141
|
return;
|
|
143
142
|
btn.disabled = true;
|
|
144
|
-
const
|
|
143
|
+
const samples = [];
|
|
145
144
|
let n = 0;
|
|
146
|
-
|
|
147
|
-
const
|
|
148
|
-
const a =
|
|
145
|
+
migrated.textContent = 'gravando… PULE agora';
|
|
146
|
+
const stopSampling = everyFrame(() => {
|
|
147
|
+
const a = sampleCharacter();
|
|
149
148
|
if (a)
|
|
150
|
-
|
|
149
|
+
samples.push(a);
|
|
151
150
|
if (++n < 180)
|
|
152
151
|
return;
|
|
153
|
-
|
|
152
|
+
stopSampling();
|
|
154
153
|
btn.disabled = false;
|
|
155
|
-
const r =
|
|
156
|
-
|
|
157
|
-
'quadros: ' + r.
|
|
158
|
-
'irmãos desenhando: ' + r.
|
|
154
|
+
const r = summariseProbe(samples);
|
|
155
|
+
migrated.textContent = [
|
|
156
|
+
'quadros: ' + r.frames + ' texturas: ' + r.textures,
|
|
157
|
+
'irmãos desenhando: ' + r.maxSiblings + (r.siblingExample ? ' em ' + r.siblingExample : ''),
|
|
159
158
|
'recorte grande: ' + (r.sangramento.length ? r.sangramento.join(' ') : 'nenhum'),
|
|
160
|
-
'escalas: ' + r.
|
|
159
|
+
'escalas: ' + r.scales.join(' '),
|
|
161
160
|
'',
|
|
162
|
-
'→ ' + r.
|
|
161
|
+
'→ ' + r.verdict,
|
|
163
162
|
].join(String.fromCharCode(10));
|
|
164
|
-
//
|
|
165
|
-
|
|
163
|
+
// The RAW recording stays reachable for whoever wants more than the summary — without filling the panel with 180 lines.
|
|
164
|
+
ctx.expose(samples);
|
|
166
165
|
});
|
|
167
166
|
});
|
|
168
167
|
p.appendChild(btn);
|
|
169
|
-
p.appendChild(
|
|
168
|
+
p.appendChild(migrated);
|
|
170
169
|
}
|
|
171
|
-
|
|
170
|
+
doc.body.appendChild(p);
|
|
172
171
|
return p;
|
|
173
172
|
}
|
package/dist-pkg/ui/dom.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
-
|
|
3
|
-
export declare const $$: <T extends Element = HTMLElement>(s: string) => T[];
|
|
2
|
+
import type { Translate } from '../core/i18n.js';
|
|
4
3
|
/**
|
|
5
4
|
* Reflects an on/off state onto a toggle button: the visual class AND `aria-pressed`.
|
|
6
5
|
* Lives here because the two must never drift apart — a button that looks pressed but does not
|
|
@@ -8,17 +7,14 @@ export declare const $$: <T extends Element = HTMLElement>(s: string) => T[];
|
|
|
8
7
|
*/
|
|
9
8
|
export declare function toggleBtn(b: Element | null, on: boolean): void;
|
|
10
9
|
/**
|
|
11
|
-
*
|
|
10
|
+
* The TEXT of a toggle button: 'On' / 'Off' in English.
|
|
12
11
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* (`settings-empathy.toggleLabel` e `settings-motor.onOffLabel`, ambos apagados agora).
|
|
17
|
-
*
|
|
18
|
-
* O custo dessa dispersão não era estético: com o texto em treze lugares, traduzir o jogo exigiria achar os
|
|
19
|
-
* treze, e esquecer um deixaria um botão em português no meio do inglês — sem erro, sem teste vermelho.
|
|
12
|
+
* It lives here for the same reason as `toggleBtn` just above — the two are halves of one gesture, and must not
|
|
13
|
+
* drift apart. A text copied into each panel is a text that translating the game has to find everywhere, and the
|
|
14
|
+
* one copy it misses leaves a button in the wrong language — with no error and no red test.
|
|
20
15
|
*/
|
|
21
|
-
export declare function toggleLabel(on: boolean): string;
|
|
22
|
-
/**
|
|
23
|
-
*
|
|
24
|
-
|
|
16
|
+
export declare function toggleLabel(t: Translate, on: boolean): string;
|
|
17
|
+
/** The `aria-label` of the same toggle: '{alvo}: on' (`{alvo}` is the dictionary's interpolation key). Separate from
|
|
18
|
+
* the visible label because a screen reader needs the NAME of the target with it, and the screen does not (the
|
|
19
|
+
* name is already on the row beside the button). */
|
|
20
|
+
export declare function toggleAria(t: Translate, target: string, on: boolean): string;
|
package/dist-pkg/ui/dom.js
CHANGED
|
@@ -1,38 +1,4 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
-
// ui/dom.ts — atalhos de seleção do DOM, usados em toda a UI (menus/HUD/pausa/quiz/opções). PURO no import:
|
|
3
|
-
// só define as funções (não toca no DOM → importável em node). $ = querySelector; $$ = querySelectorAll
|
|
4
|
-
// como Array. Genéricos: $<HTMLInputElement>('#x') já tipa o retorno. (Fase 2.27 / Tier 1)
|
|
5
|
-
//
|
|
6
|
-
// DEIXOU DE SER FOLHA no item 14, e de propósito: passou a importar `core/i18n` para que `toggleLabel` (o
|
|
7
|
-
// texto do botão de alternância) more ao lado do `toggleBtn` (a classe e o `aria-pressed`). A propriedade que
|
|
8
|
-
// importa — importável em node, sem I/O no import — continua valendo; o que se perdeu foi a contagem de zero
|
|
9
|
-
// dependências, e o que se ganhou está escrito no comentário de `toggleLabel`.
|
|
10
|
-
import { t } from '../core/i18n.js';
|
|
11
|
-
// O PADRAO E `HTMLElement`, NAO `Element`, e a diferenca aparece em dezessete pontos de chamada: `.hidden`,
|
|
12
|
-
// `.focus()` e `.value` nao existem em `Element`, e sao exatamente o que uma aplicacao faz com o que
|
|
13
|
-
// seleciona. `Element` e o padrao do lib.dom porque `querySelector` tambem serve para SVG e MathML —
|
|
14
|
-
// nenhum seletor deste projeto pega um desses (conferido). Quem precisar de um tipo mais estreito passa
|
|
15
|
-
// o parametro: `$<HTMLSelectElement>('#pad-design')`.
|
|
16
|
-
/**
|
|
17
|
-
* ⚠️ RESOLVIDO POR `globalThis` E NÃO PELO GLOBAL CRU, e a diferença é entre devolver `null` e LANÇAR.
|
|
18
|
-
*
|
|
19
|
-
* `document.querySelector(...)` com `document` inexistente dá `ReferenceError` — não `undefined` —, e a
|
|
20
|
-
* assinatura destas duas funções promete `T | null`. Uma consulta que lança onde promete `null` é um defeito
|
|
21
|
-
* pela própria assinatura, e ele viajava longe: medido em 2026-09-08, o `core/a11y-sr.srAlert` chama o `$`
|
|
22
|
-
* daqui, e o `createGame` chama o `srAlert` ao mostrar o aviso de alcance — logo bootar a engine contra um
|
|
23
|
-
* documento INJECTADO (um iframe, um editor ao lado do jogo, um teste) rebentava o boot inteiro num anúncio.
|
|
24
|
-
*
|
|
25
|
-
* 📌 É o ACHADO 15 do `boot/create-game` outra vez, e sobreviveu pela mesma razão: enquanto toda raiz era um
|
|
26
|
-
* `main.ts` num navegador, o global ERA o documento certo. `globalThis.document` é a mesma coisa onde ele
|
|
27
|
-
* existe, e é `undefined` — em vez de explosão — onde não existe.
|
|
28
|
-
*
|
|
29
|
-
* ⚠️ E ELAS CONTINUAM A OLHAR PARA O GLOBAL, de propósito: quem precisa de consultar OUTRO documento injecta
|
|
30
|
-
* o seu (`create-game` tem um `$` próprio ligado ao `doc` do hospedeiro, e o `ui/pause-icons` tem o
|
|
31
|
-
* `docDaMontagem`). O que este conserto muda não é ONDE se procura — é o que acontece quando não há onde.
|
|
32
|
-
*/
|
|
33
|
-
const docGlobal = () => globalThis.document;
|
|
34
|
-
export const $ = (s) => docGlobal()?.querySelector(s) ?? null;
|
|
35
|
-
export const $$ = (s) => [...(docGlobal()?.querySelectorAll(s) ?? [])];
|
|
36
2
|
/**
|
|
37
3
|
* Reflects an on/off state onto a toggle button: the visual class AND `aria-pressed`.
|
|
38
4
|
* Lives here because the two must never drift apart — a button that looks pressed but does not
|
|
@@ -45,21 +11,18 @@ export function toggleBtn(b, on) {
|
|
|
45
11
|
b.setAttribute('aria-pressed', String(on));
|
|
46
12
|
}
|
|
47
13
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* Mora aqui pelo mesmo motivo do `toggleBtn` logo acima — os dois são as duas metades do mesmo gesto, e a
|
|
51
|
-
* nota daquela função diz que elas "não podem se separar". Elas tinham se separado em TREZE cópias, em nove
|
|
52
|
-
* arquivos, e dois deles declaravam um helper que se chamava compartilhado e servia um chamador só
|
|
53
|
-
* (`settings-empathy.toggleLabel` e `settings-motor.onOffLabel`, ambos apagados agora).
|
|
14
|
+
* The TEXT of a toggle button: 'On' / 'Off' in English.
|
|
54
15
|
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
16
|
+
* It lives here for the same reason as `toggleBtn` just above — the two are halves of one gesture, and must not
|
|
17
|
+
* drift apart. A text copied into each panel is a text that translating the game has to find everywhere, and the
|
|
18
|
+
* one copy it misses leaves a button in the wrong language — with no error and no red test.
|
|
57
19
|
*/
|
|
58
|
-
export function toggleLabel(on) {
|
|
20
|
+
export function toggleLabel(t, on) {
|
|
59
21
|
return t(on ? 'ui.toggle.on' : 'ui.toggle.off');
|
|
60
22
|
}
|
|
61
|
-
/**
|
|
62
|
-
*
|
|
63
|
-
|
|
64
|
-
|
|
23
|
+
/** The `aria-label` of the same toggle: '{alvo}: on' (`{alvo}` is the dictionary's interpolation key). Separate from
|
|
24
|
+
* the visible label because a screen reader needs the NAME of the target with it, and the screen does not (the
|
|
25
|
+
* name is already on the row beside the button). */
|
|
26
|
+
export function toggleAria(t, target, on) {
|
|
27
|
+
return t(on ? 'ui.toggle.ariaOn' : 'ui.toggle.ariaOff', { alvo: target });
|
|
65
28
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
import { type Scale } from './layout.js';
|
|
3
|
+
export interface DrawingProblemsCtx {
|
|
4
|
+
/** `#game-region`, read at EVERY call — see the note at the top of this file. */
|
|
5
|
+
readonly region: () => HTMLElement | null;
|
|
6
|
+
/** The accessibility bar, or `null` where the game declined it. Read at every call, for the same reason. */
|
|
7
|
+
readonly bar: () => Element | null;
|
|
8
|
+
/** The scale the engine forced, or `null` before the first layout has run. */
|
|
9
|
+
readonly scale: () => Scale | null;
|
|
10
|
+
/** `window.getComputedStyle`, absent in a host that has none — then a node is counted rather than guessed about. */
|
|
11
|
+
readonly computedStyle?: (el: Element) => CSSStyleDeclaration;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* ADR-0163 rule 4, second half: the text and the targets the CARTRIDGE draws under the floor, named — read when `problems` is.
|
|
15
|
+
* `null` when there is nothing to say, which is what a clean page answers.
|
|
16
|
+
*/
|
|
17
|
+
export declare function drawnBelowTheFloor(ctx: DrawingProblemsCtx): string | null;
|
|
18
|
+
/**
|
|
19
|
+
* The nodes that PAINT over the accessibility bar's rectangle (ADR-0148 §3).
|
|
20
|
+
*
|
|
21
|
+
* 📏 ONLY WHAT PAINTS, and it was measured in `dist/quiz.html`: the quiz was accused at every boot because `#quiz-app` — a
|
|
22
|
+
* transparent box the size of the region, whose top padding IS the bar's room — intersects the bar's rectangle and draws
|
|
23
|
+
* nothing there. A node counts when it has text of its own, is a control or a medium, or paints a background.
|
|
24
|
+
*/
|
|
25
|
+
export declare function barIntruderProblems(ctx: DrawingProblemsCtx): string[];
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
// ui/drawing-problems — WHAT A CARTRIDGE DREW THAT THE CHILD PAYS FOR, named (ADR-0163 rule 4, ADR-0148 §3; issue #203).
|
|
3
|
+
//
|
|
4
|
+
// Two questions the engine asks about its own region, and both answer with the sentence a `problems` line needs: text and
|
|
5
|
+
// targets drawn UNDER the floor, and the nodes drawn OVER the accessibility bar. They are one subject — the engine measuring
|
|
6
|
+
// what somebody else drew — and they lived inside `boot/create-game`, which is why this module exists: 📏 that file reached
|
|
7
|
+
// 2185 lines and 330 decision nodes (ADR-0221), and the debt is paid by SUBJECT, never by slicing.
|
|
8
|
+
//
|
|
9
|
+
// ⚠️ THE READERS ARE FUNCTIONS AND NOT VALUES, and that is the whole care in this file. `#game-region`, the bar and the applied
|
|
10
|
+
// scale are all things the root REPLACES: a `mount()` swaps the cartridge and the bar is built after the root is. Taking them
|
|
11
|
+
// as values here would freeze the first answer and report, forever, about a region that is no longer on the page — silently,
|
|
12
|
+
// because a stale element still answers `getBoundingClientRect()`.
|
|
13
|
+
import { barIntruders, belowFloor, minimumTarget } from './layout.js';
|
|
14
|
+
/** The engine's OWN nodes inside the region — their sizes are held by their own gates — and what is not drawn for the eye. */
|
|
15
|
+
const ENGINE_NODES = '#title-icons, .screen-pause, .overlay, #touch-controls, .rodape-da-tela, .pausa-rapida, #incl-parou, .sr-only, .hud-faixa';
|
|
16
|
+
/** What a finger is meant to hit; anything else has no target floor to fail. */
|
|
17
|
+
const TOUCH_TARGET = 'button, a[href], input:not([type="hidden"]), select, textarea, [role="button"], [tabindex]:not([tabindex="-1"])';
|
|
18
|
+
/**
|
|
19
|
+
* A node named the way a developer finds it: `tag#id.firstClass`.
|
|
20
|
+
*
|
|
21
|
+
* 📌 It is NOT exported, and the `exports-without-consumer` gate is what said so: exporting it would publish a name only this
|
|
22
|
+
* file uses, and an export with no consumer is surface somebody has to maintain with nobody needing it (ADR-0170 §3).
|
|
23
|
+
*/
|
|
24
|
+
function nodeName(el) {
|
|
25
|
+
return el.tagName.toLowerCase() + (el.id ? `#${el.id}` : '')
|
|
26
|
+
+ (el.className ? `.${String(el.className).trim().split(/\s+/)[0]}` : '');
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* ADR-0163 rule 4, second half: the text and the targets the CARTRIDGE draws under the floor, named — read when `problems` is.
|
|
30
|
+
* `null` when there is nothing to say, which is what a clean page answers.
|
|
31
|
+
*/
|
|
32
|
+
export function drawnBelowTheFloor(ctx) {
|
|
33
|
+
const region = ctx.region();
|
|
34
|
+
const scale = ctx.scale();
|
|
35
|
+
if (!scale || !region || typeof region.querySelectorAll !== 'function' || !ctx.computedStyle)
|
|
36
|
+
return null;
|
|
37
|
+
const nodes = [...region.querySelectorAll('*')].map((el) => {
|
|
38
|
+
const b = el.getBoundingClientRect();
|
|
39
|
+
const hasText = [...el.childNodes].some((c) => c.nodeType === 3 && (c.textContent ?? '').trim() !== '');
|
|
40
|
+
return {
|
|
41
|
+
name: nodeName(el),
|
|
42
|
+
daEngine: el.closest(ENGINE_NODES) !== null,
|
|
43
|
+
fontPx: hasText && b.width > 0 && b.height > 0 ? parseFloat(ctx.computedStyle(el).fontSize) : null,
|
|
44
|
+
target: el.matches(TOUCH_TARGET) ? { w: b.width, h: b.height } : null,
|
|
45
|
+
};
|
|
46
|
+
});
|
|
47
|
+
const { text: smallText, targets: smallTargets } = belowFloor(nodes, scale.k);
|
|
48
|
+
if (!smallText.length && !smallTargets.length)
|
|
49
|
+
return null;
|
|
50
|
+
const k = minimumTarget(scale.k) / 22;
|
|
51
|
+
const parts = [
|
|
52
|
+
smallText.length ? `text under ${8 * k} px (${smallText.slice(0, 4).join(', ')})` : '',
|
|
53
|
+
smallTargets.length ? `targets under ${22 * k} px (${smallTargets.slice(0, 4).join(', ')})` : '',
|
|
54
|
+
].filter(Boolean);
|
|
55
|
+
return `the cartridge draws ${parts.join(' and ')} in #game-region: a child with low vision or unsteady hands cannot `
|
|
56
|
+
+ 'read or hit them — text and targets start at 16 and 44 px at 640×360 and grow with the scale (ADR-0163): size them '
|
|
57
|
+
+ 'from `--ui-fs` and `--alvo-min`';
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The nodes that PAINT over the accessibility bar's rectangle (ADR-0148 §3).
|
|
61
|
+
*
|
|
62
|
+
* 📏 ONLY WHAT PAINTS, and it was measured in `dist/quiz.html`: the quiz was accused at every boot because `#quiz-app` — a
|
|
63
|
+
* transparent box the size of the region, whose top padding IS the bar's room — intersects the bar's rectangle and draws
|
|
64
|
+
* nothing there. A node counts when it has text of its own, is a control or a medium, or paints a background.
|
|
65
|
+
*/
|
|
66
|
+
export function barIntruderProblems(ctx) {
|
|
67
|
+
const region = ctx.region();
|
|
68
|
+
const bar = ctx.bar();
|
|
69
|
+
if (!bar || !region || typeof bar.getBoundingClientRect !== 'function')
|
|
70
|
+
return [];
|
|
71
|
+
const boxOf = (el) => {
|
|
72
|
+
const b = el.getBoundingClientRect();
|
|
73
|
+
return { x: b.x, y: b.y, w: b.width, h: b.height };
|
|
74
|
+
};
|
|
75
|
+
const paints = (el) => {
|
|
76
|
+
if ([...el.childNodes].some((c) => c.nodeType === 3 && (c.textContent ?? '').trim() !== ''))
|
|
77
|
+
return true;
|
|
78
|
+
if (/^(img|canvas|svg|video|input|button|select|textarea)$/i.test(el.tagName))
|
|
79
|
+
return true;
|
|
80
|
+
if (!ctx.computedStyle)
|
|
81
|
+
return true; // no way to tell: count it, as before
|
|
82
|
+
const cs = ctx.computedStyle(el);
|
|
83
|
+
return (cs.backgroundColor !== '' && cs.backgroundColor !== 'transparent' && cs.backgroundColor !== 'rgba(0, 0, 0, 0)')
|
|
84
|
+
|| (cs.backgroundImage !== '' && cs.backgroundImage !== 'none');
|
|
85
|
+
};
|
|
86
|
+
const nodes = [...region.querySelectorAll('*')].filter((el) => paints(el)).map((el) => ({
|
|
87
|
+
name: nodeName(el),
|
|
88
|
+
box: boxOf(el),
|
|
89
|
+
// the engine's HUD bands are placed by the ENGINE: if one reaches the bar, that is the engine's defect and not the game's
|
|
90
|
+
isBar: el === bar || bar.contains(el) || el.closest('.hud-faixa') !== null,
|
|
91
|
+
}));
|
|
92
|
+
return barIntruders(boxOf(bar), nodes);
|
|
93
|
+
}
|