@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,113 +1,79 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
-
// input/touch-bindings.ts —
|
|
2
|
+
// input/touch-bindings.ts — THE TOUCH CONTROL'S BINDINGS: the gesture becomes a POSITION.
|
|
3
3
|
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
// que tenha aquele código no próprio esquema. O resto do jogo nunca fica sabendo que houve um dedo na tela.
|
|
4
|
+
// This module is the other half of `input/touch.ts`. That one OWNS THE PAD — the physical geometry (mm→px), the
|
|
5
|
+
// settings panel, the remappable map (`getTouchMap`), showing/hiding the buttons. It knows where the thumb lands and
|
|
6
|
+
// how big the target has to be. It does not know what happens after the touch.
|
|
7
|
+
// This is what does. A screen button PRESSES A POSITION on the virtual controller (ADR-0223), stamped `toque`, the
|
|
8
|
+
// same door the eyes, the voice and the keyboard use: in a menu the position becomes the menu's key, in play the
|
|
9
|
+
// controller holds the child's key and delivers the command to the cartridge. On top of that, for a press that reached
|
|
10
|
+
// the game, this module raises the matching edge flag on every player whose scheme holds that key.
|
|
12
11
|
//
|
|
13
|
-
// =======================
|
|
14
|
-
//
|
|
15
|
-
// `input/touch.ts`
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
// (`initTouch` e `initTouchBindings`), nunca como um `ctx` só: o `ctx` unificado teria quinze campos e o
|
|
22
|
-
// módulo passaria a ser "tudo que tem a ver com toque", que é um tema, não uma responsabilidade. O acoplamento
|
|
23
|
-
// real entre os dois é estreitíssimo e já está explícito no `ctx` daqui: `getTouchMap`, `getStickTravelPx`,
|
|
24
|
-
// `getStickDeadPx` e `showTouchControls` — quatro getters, todos de leitura.
|
|
12
|
+
// ======================= WHY A FILE OF ITS OWN, AND NOT INSIDE input/touch.ts =======================
|
|
13
|
+
// Because they are two different questions, and the second depends on things the first does not know.
|
|
14
|
+
// `input/touch.ts` closes over `$`, `store`, `root`, `viewport` — drawing and persistence. This module needs the live KEY
|
|
15
|
+
// SCHEME, the PLAYERS array, the controller's door, `togglePause` and the host's hooks: dependencies that have nothing
|
|
16
|
+
// to do with drawing a pad. So the boundary falls between "where the finger is" (there) and "what the finger means"
|
|
17
|
+
// (here). If they are ever merged, let it be as TWO `init`s in one file, never one `ctx`: a unified ctx would make the
|
|
18
|
+
// module "everything about touch", which is a theme, not a responsibility. The real coupling is narrow and explicit in
|
|
19
|
+
// this ctx: `getTouchMap`, `getStickTravelPx`, `getStickDeadPx` and `showTouchControls` — four read-only getters.
|
|
25
20
|
//
|
|
26
|
-
// =======================
|
|
27
|
-
//
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
// · `
|
|
31
|
-
//
|
|
32
|
-
//
|
|
33
|
-
//
|
|
34
|
-
// conjunto de direções ligadas. Zona morta, quadrantes e a borda da zona morta viram casos de teste.
|
|
35
|
-
// · `initTouchBindings(ctx).attach()` — a metade IMPURA: captura de ponteiro, `preventDefault`, `classList`,
|
|
36
|
-
// `setTimeout`. É a única parte que precisa de navegador de verdade.
|
|
21
|
+
// ======================= DECIDING ≠ DOING =======================
|
|
22
|
+
// Two parts are PURE and kept apart, the same move `input/keydown.ts` made with `decideKeydown`:
|
|
23
|
+
// · `decideTouch(action, on, snapshot) -> TouchDecision` — given (action, P1's scheme, the players' schemes, the keys
|
|
24
|
+
// already held) there is ONE answer. No DOM, no pointer, no `window`: it runs in the `node` project.
|
|
25
|
+
// · `crossDirsAt` / `stickDirsAt` / `stickKnobOffset` — pointer position + the element's rectangle → the set of
|
|
26
|
+
// directions on. Dead zone, quadrants and the dead zone's edge become test cases.
|
|
27
|
+
// · `initTouchBindings(ctx).attach()` — the IMPURE half: pointer capture, `preventDefault`, `classList`,
|
|
28
|
+
// `setTimeout`. The only part that needs a real browser.
|
|
37
29
|
//
|
|
38
|
-
// =======================
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
//
|
|
42
|
-
//
|
|
43
|
-
// !p.easy) p.runEdge = true;`);
|
|
44
|
-
// 3. AQUI (`TOUCH_EDGE_BY_ACTION` + `touchEdgesFor`), que veio dos seis `if` à mão do main.js — e o do `run`
|
|
45
|
-
// **NÃO TEM** a guarda do Fácil.
|
|
46
|
-
// Isso FOI CORRIGIDO: o `run` daqui passou a ter a mesma guarda dos outros dois caminhos.
|
|
30
|
+
// ======================= ONE ACTION → EDGE TABLE, AND ONE EASY-MODE RULE =======================
|
|
31
|
+
// The keyboard, the pad and touch raise edges from the same table and the same guard (`input/edges`). They used to be
|
|
32
|
+
// three hand-written copies, and touch's forgot Easy mode: `runEdge` is not running speed but the trigger that clings
|
|
33
|
+
// to and lets go of a wall, so a child in Easy mode (which exists for motor difficulty) could climb by the screen
|
|
34
|
+
// button and not by keyboard or pad. One table leaves the divergence nowhere to come back.
|
|
47
35
|
//
|
|
48
|
-
//
|
|
49
|
-
//
|
|
50
|
-
//
|
|
51
|
-
//
|
|
52
|
-
//
|
|
53
|
-
//
|
|
54
|
-
//
|
|
55
|
-
//
|
|
36
|
+
// ======================= WHAT STAYED OUT, AND WHY =======================
|
|
37
|
+
// · `hideTouchControls`/`showTouchControls` belong to `input/touch.ts`. Here `showTouchControls` is only CALLED (touch
|
|
38
|
+
// reveals the buttons); hiding belongs to whoever knows the keyboard took over.
|
|
39
|
+
// · The demo's `attractOnInput()` does not become pure, for the same reason as in `keydown.ts`'s header: it DECIDES AND
|
|
40
|
+
// ACTS in one call (resets idleness, ends the demo, returns whether it ended). It stays in the listener.
|
|
41
|
+
// · The d-pad's PHYSICAL geometry (how many px the travel is, how many px the stick's dead zone is) is
|
|
42
|
+
// `input/touch.ts`'s, recomputed on every `applyPadPhysical()`. It comes in by getter and is read ON EVERY MOVE —
|
|
43
|
+
// turning the device mid-gesture changes the travel on the next gesture.
|
|
44
|
+
// · The CROSS's dead zone, by contrast, is not configurable: 18% of the side (`CROSS_DEAD_FRACTION`).
|
|
56
45
|
//
|
|
57
|
-
// =======================
|
|
58
|
-
//
|
|
59
|
-
//
|
|
60
|
-
//
|
|
61
|
-
//
|
|
62
|
-
//
|
|
63
|
-
//
|
|
64
|
-
// MOVIMENTO, verbatim — girar o aparelho no meio de um gesto muda o curso no gesto seguinte.
|
|
65
|
-
// · A zona morta da CRUZ, ao contrário, não é configurável: são 18% do lado, escritos no lugar. Continua
|
|
66
|
-
// assim (`CROSS_DEAD_FRACTION`), agora com nome.
|
|
46
|
+
// ======================= BOOT-ORDER TRAPS =======================
|
|
47
|
+
// `initTouchBindings(ctx)` touches no DOM: it only closes over the `ctx` and returns the api. Every effect is in
|
|
48
|
+
// `attach()`, which is where `#touch-controls` is looked up (and where the whole function gives up if it is missing).
|
|
49
|
+
// Even so, the ctx is almost all GETTERS: what the host REASSIGNS (the players, the controls) comes in by getter, and
|
|
50
|
+
// what is a `const` mutated in place (`keys`) comes in by VALUE.
|
|
51
|
+
// REGISTRATION ORDER: `attach()` installs a CAPTURE `pointerdown` on the window, which is what ends a demo on the first
|
|
52
|
+
// touch; registering later only matters if another window pointer listener is ever born in between.
|
|
67
53
|
//
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
// a guarda `if(!tc)return` do original).
|
|
72
|
-
// MESMO ASSIM, o ctx é quase todo GETTER, e por dois motivos independentes:
|
|
73
|
-
// 1. TDZ. No main.js, `attractCtl` é `const` declarado ABAIXO do ponto onde este bloco mora. O IIFE original
|
|
74
|
-
// só funcionava porque o corpo dos ouvintes é preguiçoso. Passar `attractCtl` por VALOR derruba o boot.
|
|
75
|
-
// 2. Reatribuição. A regra da casa: o que o main.js REATRIBUI entra por getter. `keys` é `const` de
|
|
76
|
-
// `input/state.ts`, mutado in place → entra por VALOR (é sempre o mesmo objeto, para sempre).
|
|
77
|
-
// ORDEM DE REGISTRO: `attach()` instala um `pointerdown` de CAPTURA na janela. Ele é hoje o primeiro ouvinte
|
|
78
|
-
// de ponteiro do jogo e é ele que encerra a demo; registrar mais tarde só passa a importar se algum dia nascer
|
|
79
|
-
// outro ouvinte de ponteiro de janela no meio. Mantenha a chamada no lugar exato onde o IIFE estava.
|
|
80
|
-
//
|
|
81
|
-
// SEM I/O NO IMPORT: o corpo do módulo só declara constantes congeladas e funções puras.
|
|
82
|
-
//
|
|
83
|
-
// Ver docs/5-Refactoring/plano-modularizacao-mapa.md (D3-b).
|
|
84
|
-
/* ===================== interfaces mínimas ===================== */
|
|
85
|
-
/** `ui/dom.ts` `$` — injetado; o módulo nunca alcança `document`. */
|
|
54
|
+
// NO I/O ON IMPORT: the module body only declares frozen constants and pure functions.
|
|
55
|
+
/* ===================== minimal interfaces ===================== */
|
|
56
|
+
/** `ui/dom.ts` `$` — injected; the module never reaches `document`. */
|
|
86
57
|
import { EDGE_BY_ACTION, edgeAllowed } from './edges.js';
|
|
87
|
-
import {
|
|
88
|
-
// `isAction`
|
|
89
|
-
//
|
|
90
|
-
//
|
|
58
|
+
import { fromCentre } from './pointer-space.js';
|
|
59
|
+
// `isAction` guards the door: the `act` arrives as a string from a `data-` of the touch markup, and since #118 the
|
|
60
|
+
// scheme only accepts the fourteen positions. A string that is not a position returns `null` — the touch does nothing,
|
|
61
|
+
// which is what this function's header promises.
|
|
91
62
|
import { isAction } from '../core/actions.js';
|
|
92
|
-
/* =====================
|
|
93
|
-
/**
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
*/
|
|
99
|
-
export { EDGE_BY_ACTION as TOUCH_EDGE_BY_ACTION } from './edges.js'; // MESMA tabela dos outros dois caminhos
|
|
100
|
-
/** `?touch=1` na URL força os controles de toque a aparecerem no desktop (atalho de teste do José). */
|
|
101
|
-
export const TOUCH_FORCE_RE = /[?&]touch=1/;
|
|
102
|
-
/** Predicado do `?touch=1`, isolado para o teste não repetir o regex. */
|
|
63
|
+
/* ===================== PURE (no DOM — node project) ===================== */
|
|
64
|
+
/** Action → edge: the ONE table keyboard, pad and touch share (`input/edges`), re-exported under touch's old name. */
|
|
65
|
+
export { EDGE_BY_ACTION as TOUCH_EDGE_BY_ACTION } from './edges.js'; // the SAME table as the other two paths
|
|
66
|
+
/** `?touch=1` in the URL forces the touch controls to show on a desktop (the Dev's testing shortcut). */
|
|
67
|
+
const TOUCH_FORCE_RE = /[?&]touch=1/;
|
|
68
|
+
/** The `?touch=1` predicate, isolated so the test does not repeat the regex. */
|
|
103
69
|
export function wantsForcedTouch(search) {
|
|
104
70
|
return TOUCH_FORCE_RE.test(search || '');
|
|
105
71
|
}
|
|
106
72
|
/**
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
* `null` =
|
|
73
|
+
* Which KEY does this screen button's position hold? The 1st in Player 1's scheme for that action — the 1st and not all,
|
|
74
|
+
* because only one has to enter `keys` for the whole game to react. Remapping the keyboard remaps touch along with it,
|
|
75
|
+
* for free: it is the same table.
|
|
76
|
+
* `null` = the action is not in the scheme (or the touch map's slot is empty) → no key, and so no edge.
|
|
111
77
|
*/
|
|
112
78
|
export function codeForAction(act, controls) {
|
|
113
79
|
if (!act || !isAction(act))
|
|
@@ -116,30 +82,25 @@ export function codeForAction(act, controls) {
|
|
|
116
82
|
return (list && list[0]) || null;
|
|
117
83
|
}
|
|
118
84
|
/**
|
|
119
|
-
*
|
|
85
|
+
* The edges this touch raises, and on whom.
|
|
120
86
|
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
* da parede (`game/physics.ts:177` e `:179`), e não a velocidade de corrida, o efeito prático é que no modo
|
|
125
|
-
* Fácil a escalada existe pelo botão da tela e não existe pelo teclado nem pelo controle.
|
|
126
|
-
* NÃO acrescente a guarda aqui sem consertar as três cópias de uma vez — ver o cabeçalho.
|
|
87
|
+
* WITH THE EASY-MODE GUARD (`edgeAllowed`, from `input/edges`), the same as the keyboard and the pad: `runEdge` is the
|
|
88
|
+
* trigger that clings to and lets go of a wall, not running speed, so without the guard a child in Easy mode could
|
|
89
|
+
* climb by the screen button and not by keyboard or pad.
|
|
127
90
|
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
* `&&` — assimetria sem intenção. Trocar um TypeError por um no-op não remove rede de conserto nenhuma; é o
|
|
131
|
-
* mesmo precedente que `input/keydown.ts:edgesFor` já abriu, e está anotado lá pelo mesmo motivo.
|
|
91
|
+
* `p.ctrl[a] || []` and not a raw `p.ctrl[a]`: a scheme without the action turns a TypeError into a no-op — the same
|
|
92
|
+
* choice `input/keydown`'s `edgesFor` makes, for the same reason.
|
|
132
93
|
*/
|
|
133
94
|
export function touchEdgesFor(act, code, players) {
|
|
134
95
|
const out = [];
|
|
135
96
|
players.forEach((p, idx) => {
|
|
136
97
|
if (!p.ctrl)
|
|
137
|
-
return; //
|
|
98
|
+
return; // a player with no scheme (screen not activated) gets no edge
|
|
138
99
|
for (const [a, edge] of EDGE_BY_ACTION) {
|
|
139
100
|
if (a !== act)
|
|
140
101
|
continue;
|
|
141
102
|
if (!edgeAllowed(a, p.easy))
|
|
142
|
-
continue; //
|
|
103
|
+
continue; // Easy: no running (input/edges.ts)
|
|
143
104
|
if ((p.ctrl[a] || []).includes(code))
|
|
144
105
|
out.push({ playerIndex: idx, edge });
|
|
145
106
|
}
|
|
@@ -147,64 +108,68 @@ export function touchEdgesFor(act, code, players) {
|
|
|
147
108
|
return out;
|
|
148
109
|
}
|
|
149
110
|
/**
|
|
150
|
-
*
|
|
151
|
-
* `pause`
|
|
111
|
+
* THE DECISION. A gesture (mapped action + press/release) + the world → what it means.
|
|
112
|
+
* `pause` first, because it is the only one that is not a position. Then the position and its key; without a key, the
|
|
113
|
+
* press still happens, with no edge.
|
|
152
114
|
*/
|
|
153
115
|
export function decideTouch(act, on, s) {
|
|
154
116
|
if (act === 'start')
|
|
155
|
-
return on ? { kind: 'pause' } : { kind: 'noop' }; //
|
|
156
|
-
|
|
157
|
-
|
|
117
|
+
return on ? { kind: 'pause' } : { kind: 'noop' }; // RELEASING START does not unpause
|
|
118
|
+
// ⚠️ THE SLOT MAY BE EMPTY OR CARRY A STRING THAT IS NOT A POSITION: the value comes from a markup `data-`, and since
|
|
119
|
+
// #118 the scheme only accepts the fourteen. Then there really is nothing to press — a VALID position with no mapped
|
|
120
|
+
// key does not land here.
|
|
121
|
+
if (!act || !isAction(act))
|
|
158
122
|
return { kind: 'noop' };
|
|
159
123
|
if (!on)
|
|
160
|
-
return { kind: 'release',
|
|
161
|
-
|
|
162
|
-
//
|
|
163
|
-
|
|
124
|
+
return { kind: 'release', action: act };
|
|
125
|
+
const code = codeForAction(act, s.controls);
|
|
126
|
+
// EDGE: only the FIRST time the code enters `keys`. If the keyboard (or the other thumb) already held it, touch does
|
|
127
|
+
// not raise the edges again — but `hideTips` runs all the same. With no key there is no edge to raise.
|
|
128
|
+
const fresh = !!code && !s.heldKeys.has(code);
|
|
164
129
|
return {
|
|
165
|
-
kind: 'press',
|
|
166
|
-
edges: fresh ? touchEdgesFor(act, code, s.players) : [],
|
|
130
|
+
kind: 'press', action: act, addKey: fresh,
|
|
131
|
+
edges: fresh && code ? touchEdgesFor(act, code, s.players) : [],
|
|
167
132
|
hideTips: act === 'action2',
|
|
168
133
|
};
|
|
169
134
|
}
|
|
170
|
-
/* ---
|
|
171
|
-
/**
|
|
172
|
-
*
|
|
135
|
+
/* --- d-pad geometry (pure: position + rectangle → directions) --- */
|
|
136
|
+
/** The CROSS's dead zone: ~18% of the SIDE from the centre, on each axis. See the note on `crossDirsAt` about `width`
|
|
137
|
+
* also counting for the vertical axis — it is a real asymmetry. */
|
|
173
138
|
export const CROSS_DEAD_FRACTION = 0.18;
|
|
174
139
|
/**
|
|
175
|
-
*
|
|
176
|
-
*
|
|
177
|
-
*
|
|
140
|
+
* Cross (D-pad): where the finger is → which directions turn on. A neutral core so brushing the middle does not fire.
|
|
141
|
+
* The four comparisons are INDEPENDENT: outside the core, a diagonal turns on TWO directions (which gives a physical
|
|
142
|
+
* 8-sector D-pad's behaviour). The exact centre turns on none.
|
|
178
143
|
*
|
|
179
|
-
*
|
|
180
|
-
*
|
|
181
|
-
*
|
|
144
|
+
* Including the asymmetry: both axes' dead zone comes from `rect.width` — the height never enters. On a square cross
|
|
145
|
+
* (what the CSS `--dpad-span` produces) it is the same; on a flattened one, the vertical core would be proportionally
|
|
146
|
+
* larger or smaller than the horizontal. Noted, not fixed.
|
|
182
147
|
*/
|
|
183
148
|
export function crossDirsAt(px, py, rect) {
|
|
184
|
-
const { dx, dy } =
|
|
149
|
+
const { dx, dy } = fromCentre(px, py, rect);
|
|
185
150
|
const dead = rect.width * CROSS_DEAD_FRACTION;
|
|
186
151
|
return { left: dx < -dead, right: dx > dead, up: dy < -dead, down: dy > dead };
|
|
187
152
|
}
|
|
188
153
|
/**
|
|
189
|
-
*
|
|
190
|
-
*
|
|
154
|
+
* Virtual stick: the cross's rule, but the dead zone comes in PX from `input/touch.ts` (derived from the configurable
|
|
155
|
+
* mm), not as a fraction of the element.
|
|
191
156
|
*/
|
|
192
157
|
export function stickDirsAt(px, py, rect, deadPx) {
|
|
193
|
-
const { dx, dy } =
|
|
158
|
+
const { dx, dy } = fromCentre(px, py, rect);
|
|
194
159
|
return { left: dx < -deadPx, right: dx > deadPx, up: dy < -deadPx, down: dy > deadPx };
|
|
195
160
|
}
|
|
196
161
|
/**
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
*
|
|
162
|
+
* Where the stick's knob goes (px, relative to the base's centre): it follows the finger up to the `travelPx` limit
|
|
163
|
+
* and STOPS there, keeping the angle (a radial clip, not per axis — hence `hypot` and not `clamp`).
|
|
164
|
+
* The `|| 1` avoids a division by zero when the finger lands on the exact centre.
|
|
200
165
|
*/
|
|
201
166
|
export function stickKnobOffset(px, py, rect, travelPx) {
|
|
202
|
-
const { dx, dy } =
|
|
167
|
+
const { dx, dy } = fromCentre(px, py, rect);
|
|
203
168
|
const m = Math.hypot(dx, dy) || 1;
|
|
204
169
|
const f = m > travelPx ? travelPx / m : 1;
|
|
205
170
|
return { x: dx * f, y: dy * f };
|
|
206
171
|
}
|
|
207
|
-
/**
|
|
172
|
+
/** How long START holds the action when it is momentary (not `pause`). */
|
|
208
173
|
export const START_TAP_MS = 140;
|
|
209
174
|
export function initTouchBindings(ctx) {
|
|
210
175
|
const later = ctx.defer || ((fn, ms) => { setTimeout(fn, ms); });
|
|
@@ -214,8 +179,8 @@ export function initTouchBindings(ctx) {
|
|
|
214
179
|
function decide(act, on) {
|
|
215
180
|
return decideTouch(act, on, snapshot());
|
|
216
181
|
}
|
|
217
|
-
/**
|
|
218
|
-
*
|
|
182
|
+
/** The IMPURE half: takes the ready decision and stamps it on the world. The press first, then the edges, and
|
|
183
|
+
* `hideTips` after everything. */
|
|
219
184
|
function apply(d) {
|
|
220
185
|
if (d.kind === 'noop')
|
|
221
186
|
return;
|
|
@@ -224,24 +189,35 @@ export function initTouchBindings(ctx) {
|
|
|
224
189
|
return;
|
|
225
190
|
}
|
|
226
191
|
if (d.kind === 'release') {
|
|
227
|
-
ctx.
|
|
192
|
+
ctx.release(d.action, 'toque');
|
|
228
193
|
return;
|
|
229
194
|
}
|
|
195
|
+
/*
|
|
196
|
+
* 🔴 TOUCH PRESSES THE VIRTUAL CONTROLLER (ADR-0223). What a press means — going to the menu, holding the key,
|
|
197
|
+
* delivering nothing — is exactly the decision `input/virtual-controller` exists to take ONCE: with a menu open the
|
|
198
|
+
* position becomes the menu's key (ADR-0157), in play it holds the child's key AND delivers the command.
|
|
199
|
+
*
|
|
200
|
+
* 📌 ITS ANSWER IS WHAT SAYS THERE WAS PLAY. The question "is a menu open?" has one answer, the controller's — two
|
|
201
|
+
* answers to one question is how the two doors once came to disagree.
|
|
202
|
+
*
|
|
203
|
+
* ⚠️ `'toque'` is the stamp, and it is ADR-0109's rule 2 kept executable: it is THIS transport whose latch turns on,
|
|
204
|
+
* and the controller is what carries it to the key and the command.
|
|
205
|
+
*/
|
|
206
|
+
if (!ctx.press(d.action, 'toque'))
|
|
207
|
+
return; // a menu took the press: no edge and no tip to touch
|
|
230
208
|
if (d.addKey) {
|
|
231
|
-
// ⚠️ `'toque'` é o carimbo, e é a regra 2 do ADR-0109 a tornar-se executável: é ESTE transporte cuja
|
|
232
|
-
// alternância liga. Enquanto o código entrava cru no conjunto, a regra não tinha como se aplicar.
|
|
233
|
-
ctx.marcarTecla(d.code, 'toque');
|
|
234
209
|
const players = ctx.getPlayers();
|
|
235
210
|
for (const { playerIndex, edge } of d.edges) {
|
|
236
211
|
const p = players[playerIndex];
|
|
237
|
-
|
|
212
|
+
// 📌 THE EDGE PER PLAYER, beside the flag it raises — and not once per touch: the same code may belong to more
|
|
213
|
+
// than one seat (`d.edges` is built with `includes` over each one's scheme), and the transport in use is a
|
|
214
|
+
// question PER CHILD. Marking only player 0 would give the first seat's latch to whoever plays in the second.
|
|
215
|
+
// (The guard on `p` is defensive: `d.edges` comes from the same frame's players, so an index without one does
|
|
216
|
+
// not happen today.)
|
|
217
|
+
if (p) {
|
|
238
218
|
p[edge] = true;
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
// um), e o transporte em uso é uma pergunta POR CRIANÇA. Marcar só o jogador 0 daria a alternância do
|
|
242
|
-
// primeiro assento a quem joga no segundo.
|
|
243
|
-
if (p)
|
|
244
|
-
ctx.arestaDoJogador(playerIndex, 'toque');
|
|
219
|
+
ctx.playerEdge(playerIndex, 'toque');
|
|
220
|
+
}
|
|
245
221
|
}
|
|
246
222
|
}
|
|
247
223
|
if (d.hideTips)
|
|
@@ -255,15 +231,15 @@ export function initTouchBindings(ctx) {
|
|
|
255
231
|
return;
|
|
256
232
|
}
|
|
257
233
|
doTouch(a, true);
|
|
258
|
-
later(() => doTouch(a, false), START_TAP_MS); //
|
|
234
|
+
later(() => doTouch(a, false), START_TAP_MS); // a momentary action: press and release by itself
|
|
259
235
|
}
|
|
260
236
|
function revealForTests() {
|
|
261
237
|
const tc = ctx.$('#touch-controls');
|
|
262
238
|
if (tc)
|
|
263
239
|
tc.hidden = false;
|
|
264
240
|
}
|
|
265
|
-
/**
|
|
266
|
-
*
|
|
241
|
+
/** The d-pad (stick or cross): one pattern — state per direction, dispatched only on a CHANGE. Without it, dragging
|
|
242
|
+
* the thumb inside the same quadrant would raise the edge again on every `pointermove`. */
|
|
267
243
|
function makeDirGate(onChange) {
|
|
268
244
|
const state = { left: false, right: false, up: false, down: false };
|
|
269
245
|
const set = (dir, on) => {
|
|
@@ -278,28 +254,28 @@ export function initTouchBindings(ctx) {
|
|
|
278
254
|
reset: () => { ['left', 'right', 'up', 'down'].forEach((d) => set(d, false)); },
|
|
279
255
|
};
|
|
280
256
|
}
|
|
281
|
-
/* ---
|
|
257
|
+
/* --- the diamond's .touch-btn buttons --- */
|
|
282
258
|
function wireButtons(tc) {
|
|
283
259
|
tc.querySelectorAll('.touch-btn').forEach((b) => {
|
|
284
|
-
const slot = 'b' + (b.dataset.btn || ''); //
|
|
260
|
+
const slot = 'b' + (b.dataset.btn || ''); // the function comes from the (remappable) touchMap, not from a data attribute
|
|
285
261
|
const down = (e) => { e.preventDefault(); doTouch(ctx.getTouchMap()[slot], true); };
|
|
286
262
|
const up = (e) => { e.preventDefault(); doTouch(ctx.getTouchMap()[slot], false); };
|
|
287
263
|
b.addEventListener('pointerdown', down);
|
|
288
264
|
b.addEventListener('pointerup', up);
|
|
289
|
-
b.addEventListener('pointerleave', up); //
|
|
265
|
+
b.addEventListener('pointerleave', up); // the finger slid off: counts as a release
|
|
290
266
|
b.addEventListener('pointercancel', up);
|
|
291
|
-
b.addEventListener('contextmenu', (e) => e.preventDefault()); //
|
|
267
|
+
b.addEventListener('contextmenu', (e) => e.preventDefault()); // holding does not open the system menu
|
|
292
268
|
});
|
|
293
269
|
}
|
|
294
270
|
/**
|
|
295
|
-
*
|
|
296
|
-
*
|
|
297
|
-
*
|
|
271
|
+
* Stick and cross share the WHOLE pointer lifecycle (capture, one finger at a time, release/cancel, losing the
|
|
272
|
+
* capture). Only the direction arithmetic and the visual feedback differ — so both come in here and the difference
|
|
273
|
+
* becomes two callbacks.
|
|
298
274
|
*/
|
|
299
275
|
function wirePointerPad(el, dirsAt, onMove, onReset, onDirVisual) {
|
|
300
276
|
let pid = null;
|
|
301
277
|
const gate = makeDirGate((dir, on) => {
|
|
302
|
-
doTouch(ctx.getTouchMap()[dir], on); //
|
|
278
|
+
doTouch(ctx.getTouchMap()[dir], on); // PHYSICAL direction → mapped function (the cross is remappable too)
|
|
303
279
|
if (onDirVisual)
|
|
304
280
|
onDirVisual(dir, on);
|
|
305
281
|
});
|
|
@@ -315,16 +291,16 @@ export function initTouchBindings(ctx) {
|
|
|
315
291
|
e.preventDefault();
|
|
316
292
|
const id = e.pointerId;
|
|
317
293
|
pid = id;
|
|
318
|
-
//
|
|
294
|
+
// capture: the finger can leave the element without ending the gesture (it is what makes a d-pad usable)
|
|
319
295
|
try {
|
|
320
296
|
el.setPointerCapture(id);
|
|
321
297
|
}
|
|
322
|
-
catch { /*
|
|
298
|
+
catch { /* no pointer capture: the gesture still works over the element */ }
|
|
323
299
|
at(e.clientX, e.clientY);
|
|
324
300
|
});
|
|
325
301
|
el.addEventListener('pointermove', (e) => {
|
|
326
302
|
if (pid !== e.pointerId)
|
|
327
|
-
return; //
|
|
303
|
+
return; // one finger at a time: the second pointer is ignored, not contested
|
|
328
304
|
e.preventDefault();
|
|
329
305
|
at(e.clientX, e.clientY);
|
|
330
306
|
});
|
|
@@ -332,36 +308,45 @@ export function initTouchBindings(ctx) {
|
|
|
332
308
|
return; e.preventDefault(); reset(); };
|
|
333
309
|
el.addEventListener('pointerup', end);
|
|
334
310
|
el.addEventListener('pointercancel', end);
|
|
335
|
-
el.addEventListener('lostpointercapture', reset); //
|
|
311
|
+
el.addEventListener('lostpointercapture', reset); // a net: capture lost = release everything (nothing stays stuck)
|
|
336
312
|
el.addEventListener('contextmenu', (e) => e.preventDefault());
|
|
337
313
|
}
|
|
338
314
|
function attach() {
|
|
339
315
|
const tc = ctx.$('#touch-controls');
|
|
340
316
|
if (!tc)
|
|
341
|
-
return; //
|
|
342
|
-
//
|
|
317
|
+
return; // without the buttons in the document there is nothing to wire
|
|
318
|
+
// switching by modality: a touch/click SHOWS; the keyboard/pad HIDES (over there).
|
|
343
319
|
if (wantsForcedTouch(ctx.getSearch()))
|
|
344
320
|
ctx.showTouchControls();
|
|
345
321
|
const onPointerDown = () => { if (ctx.attractOnInput())
|
|
346
|
-
return; ctx.showTouchControls(); }; //
|
|
322
|
+
return; ctx.showTouchControls(); }; // touch reveals (and ends the demo)
|
|
347
323
|
const onTouchStart = () => { ctx.showTouchControls(); };
|
|
348
324
|
ctx.win.addEventListener('pointerdown', onPointerDown, true);
|
|
349
325
|
ctx.win.addEventListener('touchstart', onTouchStart, { capture: true, passive: true });
|
|
326
|
+
rewire();
|
|
327
|
+
}
|
|
328
|
+
function rewire() {
|
|
329
|
+
const tc = ctx.$('#touch-controls');
|
|
330
|
+
if (!tc)
|
|
331
|
+
return;
|
|
350
332
|
wireButtons(tc);
|
|
351
333
|
const startBtn = ctx.$('#touch-start');
|
|
352
334
|
if (startBtn)
|
|
353
335
|
startBtn.addEventListener('click', pressStart);
|
|
354
|
-
|
|
336
|
+
const selectBtn = ctx.$('#touch-select');
|
|
337
|
+
if (selectBtn)
|
|
338
|
+
selectBtn.addEventListener('click', () => ctx.openMenus?.());
|
|
339
|
+
// stick: a base (the large circle) + a knob that slides toward the touched direction
|
|
355
340
|
const stick = ctx.$('#touch-stick');
|
|
356
341
|
const knob = stick && stick.querySelector('.touch-knob');
|
|
357
342
|
if (stick && knob) {
|
|
358
|
-
wirePointerPad(stick, (px, py, rect) => stickDirsAt(px, py, rect, ctx.getStickDeadPx()), // px/mm
|
|
343
|
+
wirePointerPad(stick, (px, py, rect) => stickDirsAt(px, py, rect, ctx.getStickDeadPx()), // px/mm reread on every move
|
|
359
344
|
(px, py, rect) => {
|
|
360
345
|
const o = stickKnobOffset(px, py, rect, ctx.getStickTravelPx());
|
|
361
346
|
knob.style.transform = `translate(${o.x}px,${o.y}px)`;
|
|
362
347
|
}, () => { knob.style.transform = 'translate(0,0)'; }, null);
|
|
363
348
|
}
|
|
364
|
-
//
|
|
349
|
+
// cross (the alternative to the stick): a surface split by hit-test, with a neutral core
|
|
365
350
|
const cross = ctx.$('#touch-cross');
|
|
366
351
|
if (cross) {
|
|
367
352
|
const arms = {
|
|
@@ -373,5 +358,5 @@ export function initTouchBindings(ctx) {
|
|
|
373
358
|
wirePointerPad(cross, crossDirsAt, null, null, (dir, on) => { arms[dir]?.classList.toggle('on', on); });
|
|
374
359
|
}
|
|
375
360
|
}
|
|
376
|
-
return { decide, doTouch, pressStart, revealForTests, attach };
|
|
361
|
+
return { decide, doTouch, pressStart, revealForTests, attach, rewire };
|
|
377
362
|
}
|