@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,81 +1,77 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
-
// render/viz-setters —
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
// entram AQUI por injeção. Ver docs/5-Refactoring/plano-modularizacao-mapa.md (A16/B2).
|
|
2
|
+
// render/viz-setters — APPLYING the accessible vision modes (colour blindness, low vision, blindness, high contrast), per
|
|
3
|
+
// player and globally. It is the POLICY layer — "which mode counts where" — and not the FACTORY: whoever builds pixels
|
|
4
|
+
// (pixiFilterFor / parallaxTexFor / playerVizTex / lvOverlayTex / renderVpOverlay) is `render/viewports`, and those
|
|
5
|
+
// come in HERE by injection.
|
|
7
6
|
//
|
|
8
|
-
//
|
|
9
|
-
// ·
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
//
|
|
15
|
-
// (binding importado não pode ser reatribuído).
|
|
7
|
+
// Boundaries this module does NOT reopen:
|
|
8
|
+
// · The host keeps the "mode the STATIC render pipeline last applied" record — not a vision cache, a record several
|
|
9
|
+
// places write. It comes in through `getSharedViz`/`setSharedViz`/`invalidateSharedViz`.
|
|
10
|
+
// · The selected player of the visual panel likewise: several writers (renderVizGroup, a player tab, the visual
|
|
11
|
+
// panel, the pause menu) → get/set through the ctx.
|
|
12
|
+
// · The outlined-player-frame cache belongs to render/viewports and is reassigned by these functions → cleared through
|
|
13
|
+
// the ctx (an imported binding cannot be reassigned).
|
|
16
14
|
//
|
|
17
|
-
//
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
//
|
|
15
|
+
// The PIXI layers and sprites (camera/worldSprite/parallaxLayers/decoSprites/vpSpr/vpDots) are CREATED by the host — the
|
|
16
|
+
// addChild order is the drawing order — and come in injected through a STRUCTURAL interface, so the module runs in the
|
|
17
|
+
// `node` project without importing PIXI.
|
|
18
|
+
// NO I/O on import: initVizSetters(ctx) only closes closures, it calls nothing.
|
|
21
19
|
import { VIZ_MODES, VIZ_BY_KEY, VIZ_FILTER, simulatesDisability } from './viz-modes.js';
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
|
|
28
|
-
import { lqFilter } from './lq-filter.js';
|
|
29
|
-
import { setVizModeValue, setModoCegoValue } from '../core/state.js';
|
|
30
|
-
import * as store from '../platform/storage.js';
|
|
31
|
-
/* ===================== PURO (sem PIXI, sem DOM) — o que rende teste de verdade ===================== */
|
|
20
|
+
import { migrateVisual, filterKey, textureKey, legacyKey, isSimulation, isLowVision, isBlind, hasHighContrast, DEFAULT_VISUAL, } from './viz-axes.js';
|
|
21
|
+
import { axesHtml, buttonChoice, THEME_LABEL, CORRECTION_LABEL, } from './viz-axes-labels.js';
|
|
22
|
+
import { simulationRefusal } from './viz-refusal.js';
|
|
23
|
+
import { DIRECT_CFG } from './high-contrast.js';
|
|
24
|
+
import { KEYS } from '../platform/storage-keys.js';
|
|
25
|
+
/* ===================== PURE (no PIXI, no DOM) — what really earns a test ===================== */
|
|
32
26
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
27
|
+
* How far this mode's filter reaches. ENHANCEMENT reaches the menus; EMPATHY stays in the world (see `FilterReach`).
|
|
28
|
+
* Derived from the catalogue's `sim` — the same flag that already tells the two apart, not a second list for someone
|
|
29
|
+
* to forget to update.
|
|
36
30
|
*/
|
|
37
|
-
export function
|
|
31
|
+
export function reachOfMode(mode) {
|
|
38
32
|
return simulatesDisability(mode) ? 'mundo' : 'mundo-e-menus';
|
|
39
33
|
}
|
|
40
|
-
/**
|
|
34
|
+
/** The mode by key, with a fallback: an unknown (or null) key FALLS to `normal`. */
|
|
41
35
|
export function resolveViz(key) {
|
|
42
36
|
return VIZ_BY_KEY[key] || VIZ_BY_KEY.normal;
|
|
43
37
|
}
|
|
44
38
|
/**
|
|
45
|
-
*
|
|
39
|
+
* This player's STORED VISUAL STATE, in either of its two shapes (issue #104).
|
|
46
40
|
*
|
|
47
|
-
* ⚠️
|
|
48
|
-
*
|
|
41
|
+
* ⚠️ THIS FUNCTION IS THE definition of done's box that says a setting saved before the split restores the same visible
|
|
42
|
+
* state, and the order of the two reads is the whole decision:
|
|
49
43
|
*
|
|
50
|
-
* 1.
|
|
51
|
-
* 2.
|
|
52
|
-
*
|
|
53
|
-
* 3.
|
|
44
|
+
* 1. the NEW key (`visualP`), the only one that can express two axes;
|
|
45
|
+
* 2. without it, the OLD key (`vizP`), which keeps the single string — and where the setting of every child who
|
|
46
|
+
* played this game before the split lives;
|
|
47
|
+
* 3. without either, the default.
|
|
54
48
|
*
|
|
55
|
-
* ⚠️
|
|
56
|
-
*
|
|
57
|
-
*
|
|
49
|
+
* ⚠️ THE FALLBACK IS NOT ZEAL: without it, the first session after the update would erase the visual mode the child
|
|
50
|
+
* chose — and whoever chose `fix-deuter` or `hc-direto-7` chose it because that is how they see. It is the difference
|
|
51
|
+
* between migrating and starting over.
|
|
58
52
|
*
|
|
59
|
-
* `
|
|
53
|
+
* `migrateVisual` accepts both shapes and is idempotent, so this can run as many times as needed.
|
|
54
|
+
*
|
|
55
|
+
* 📌 THE STORE IS A PARAMETER (ADR-0232, issue #207): the page's store, built by whoever composes the page.
|
|
60
56
|
*/
|
|
61
|
-
export function
|
|
62
|
-
const
|
|
63
|
-
if (
|
|
64
|
-
return
|
|
65
|
-
return
|
|
57
|
+
export function readStoredVisual(store, i) {
|
|
58
|
+
const storedVisual = store.getJSON(KEYS.visualP(i), null);
|
|
59
|
+
if (storedVisual !== null)
|
|
60
|
+
return migrateVisual(storedVisual);
|
|
61
|
+
return migrateVisual(store.get(KEYS.vizP(i), null));
|
|
66
62
|
}
|
|
67
|
-
/**
|
|
63
|
+
/** Is it one of the three Direct Rendering (high contrast) levels? The test is `!!DIRECT_CFG[mode]`. */
|
|
68
64
|
export function isDirectMode(mode) { return !!DIRECT_CFG[mode]; }
|
|
69
|
-
/**
|
|
65
|
+
/** The canvas's CSS filter in SOLO: vision simulation/correction + the L→Q enhancement, composed and with no gaps. */
|
|
70
66
|
export function cssFilterFor(mode, lq) {
|
|
71
67
|
return [VIZ_FILTER[mode] || '', lq].filter(Boolean).join(' ');
|
|
72
68
|
}
|
|
73
|
-
/**
|
|
69
|
+
/** A viewport's indicator dot: only blindness (white) and low vision (green) light it. */
|
|
74
70
|
export function vizDotFor(m) {
|
|
75
71
|
const on = !!m && (m.kind === 'blind' || m.kind === 'lowvision');
|
|
76
72
|
return { visible: on, fill: on ? (m.kind === 'blind' ? 0xffffff : 0x36d36a) : null };
|
|
77
73
|
}
|
|
78
|
-
/**
|
|
74
|
+
/** The GLOBAL dot (#viz-indicator) for a `kind`: visible, classes and screen-reader label. */
|
|
79
75
|
export function vizIndicatorFor(kind) {
|
|
80
76
|
return {
|
|
81
77
|
on: kind === 'blind' || kind === 'lowvision',
|
|
@@ -83,46 +79,47 @@ export function vizIndicatorFor(kind) {
|
|
|
83
79
|
label: (kind === 'blind' ? 'Modo cegueira total' : 'Modo baixa visão') + '. Toque duas vezes para voltar às cores normais.',
|
|
84
80
|
};
|
|
85
81
|
}
|
|
86
|
-
/**
|
|
82
|
+
/** The low-vision DOM overlay's class (`lv-haze`/`lv-tunnel`/…); '' for any other kind. */
|
|
87
83
|
export function lvOverlayClassFor(m) {
|
|
88
84
|
return m.kind === 'lowvision' ? 'lv-' + m.lv : '';
|
|
89
85
|
}
|
|
90
|
-
/** HTML
|
|
91
|
-
export function vizGroupHtml(modes, cur) {
|
|
86
|
+
/** The HTML of the vision modes' radio group (one row per mode; the current one marked). */
|
|
87
|
+
export function vizGroupHtml(t, modes, cur) {
|
|
92
88
|
return modes.map((m) => {
|
|
93
89
|
const sel = m.key === cur;
|
|
94
|
-
return `<div class="ctrl-row"><span><strong>${t(m.
|
|
90
|
+
return `<div class="ctrl-row"><span><strong>${t(m.name)}</strong><br><span class="opt-hint" style="margin:0">${t(m.desc)}</span></span>`
|
|
95
91
|
+ `<button class="mode-btn${sel ? ' is-on' : ''}" role="radio" aria-checked="${sel}" data-viz="${m.key}" type="button">${sel ? '✓ Selecionado' : 'Selecionar'}</button></div>`;
|
|
96
92
|
}).join('');
|
|
97
93
|
}
|
|
98
|
-
/**
|
|
99
|
-
export function vizGroupSay(numPlayers, sel,
|
|
100
|
-
return (numPlayers > 1 ? 'Jogador ' + (sel + 1) + ': ' : '') +
|
|
94
|
+
/** The screen reader's line when a mode is chosen: prefixed with the player only on several screens. */
|
|
95
|
+
export function vizGroupSay(numPlayers, sel, name) {
|
|
96
|
+
return (numPlayers > 1 ? 'Jogador ' + (sel + 1) + ': ' : '') + name + '.';
|
|
101
97
|
}
|
|
102
98
|
export function initVizSetters(ctx) {
|
|
103
|
-
|
|
99
|
+
const { t } = ctx;
|
|
100
|
+
// the statics (world/parallax/items) only reapply when the mode changes (the host keeps the record)
|
|
104
101
|
function applySharedTextures(mode) {
|
|
105
102
|
if (mode !== ctx.getSharedViz()) {
|
|
106
103
|
ctx.setSharedViz(mode);
|
|
107
|
-
ctx.setFrontDim(!!DIRECT_CFG[mode]); // HC:
|
|
108
|
-
ctx.worldSprite.texture = worldTexFor(mode);
|
|
104
|
+
ctx.setFrontDim(!!DIRECT_CFG[mode]); // HC: foreground props darken like the background
|
|
105
|
+
ctx.worldSprite.texture = ctx.hc.worldTexFor(mode);
|
|
109
106
|
ctx.parallaxLayers.forEach((ts, j) => { ts.texture = ctx.parallaxTexFor(j, mode); });
|
|
110
107
|
ctx.decoSprites.forEach((s) => { s.texture = ctx.treeTexFor(mode); });
|
|
111
108
|
for (const s of ctx.getItemSprites()) {
|
|
112
109
|
if (s)
|
|
113
|
-
s.texture = spriteTexFor(ctx.itemTexId, mode);
|
|
110
|
+
s.texture = ctx.hc.spriteTexFor(ctx.itemTexId, mode);
|
|
114
111
|
}
|
|
115
112
|
for (const pu of ctx.getPowerups()) {
|
|
116
113
|
if (pu.sprite)
|
|
117
|
-
pu.sprite.texture = pupTexFor(pu.kind, mode);
|
|
114
|
+
pu.sprite.texture = ctx.pupTexFor(pu.kind, mode);
|
|
118
115
|
}
|
|
119
116
|
}
|
|
120
117
|
for (const pl of ctx.getPlayers()) {
|
|
121
118
|
if (pl.sprite && pl._tx)
|
|
122
119
|
pl.sprite.texture = ctx.playerVizTex(pl._tx, mode);
|
|
123
|
-
} // player
|
|
120
|
+
} // the player changes frame every tick
|
|
124
121
|
}
|
|
125
|
-
//
|
|
122
|
+
// per-viewport indicator dots (over the output sprites → they do NOT get the viewport's filter, e.g. blindness)
|
|
126
123
|
function updateVpDots() {
|
|
127
124
|
const dots = ctx.getVpDots(), players = ctx.getPlayers();
|
|
128
125
|
for (let i = 0; i < dots.length; i++) {
|
|
@@ -142,56 +139,54 @@ export function initVizSetters(ctx) {
|
|
|
142
139
|
}
|
|
143
140
|
function applyVpFilters() {
|
|
144
141
|
const spr = ctx.getVpSpr(), players = ctx.getPlayers();
|
|
145
|
-
// ⚠️ `
|
|
146
|
-
//
|
|
147
|
-
//
|
|
148
|
-
//
|
|
142
|
+
// ⚠️ `filterKey` AND NOT `p.viz` (#104). The THEME goes through the texture (`playerVizTex`/`applySharedTextures`)
|
|
143
|
+
// and the CORRECTION or SIMULATION through the FILTER — and it is precisely because they are two paths that the two
|
|
144
|
+
// axes can coexist. `null` (no filter) enters as `'normal'`, the key `pixiFilterFor` already uses for "none", and it
|
|
145
|
+
// caches by it.
|
|
149
146
|
for (let i = 0; i < ctx.getNumPlayers(); i++) {
|
|
150
147
|
const p = players[i];
|
|
151
148
|
if (spr[i])
|
|
152
|
-
spr[i].filters = ctx.pixiFilterFor((p.visual &&
|
|
149
|
+
spr[i].filters = ctx.pixiFilterFor((p.visual && filterKey(p.visual)) || 'normal');
|
|
153
150
|
}
|
|
154
151
|
}
|
|
155
152
|
/**
|
|
156
|
-
*
|
|
153
|
+
* THE REAL WRITER (#104): it takes the STATE, not a key.
|
|
157
154
|
*
|
|
158
|
-
* ⚠️
|
|
159
|
-
*
|
|
160
|
-
*
|
|
161
|
-
* ser com honestidade: **a CHAVE DE TEXTURA** — `simulação ?? tema ?? normal`, o que mais muda o que se vê.
|
|
155
|
+
* ⚠️ AND HERE THE MIRROR CHANGES MEANING. While the controls wrote one value at a time, `viz` could be "the equivalent
|
|
156
|
+
* mode". With two axes no single key describes `hc7 + fix-deuter`, so the mirror is exactly what it can still honestly
|
|
157
|
+
* be: the legacy key (`legacyKey`) — simulation, else theme, else correction, else default.
|
|
162
158
|
*
|
|
163
|
-
*
|
|
164
|
-
*
|
|
165
|
-
* que ele deixa de ver é a metade que a forma antiga nunca soube dizer.
|
|
159
|
+
* It is not a hidden loss: an old reader still sees something true about the screen; what it stops seeing is the half
|
|
160
|
+
* the old shape never could say.
|
|
166
161
|
*/
|
|
167
|
-
function
|
|
162
|
+
function writePlayerVisual(i, v) {
|
|
168
163
|
const p = ctx.getPlayers()[i];
|
|
169
164
|
p.visual = v;
|
|
170
|
-
p.viz =
|
|
171
|
-
store.set(
|
|
172
|
-
store.setJSON(
|
|
173
|
-
|
|
165
|
+
p.viz = legacyKey(v);
|
|
166
|
+
ctx.store.set(KEYS.vizP(i), p.viz); // legacy: an old reader would do `VIZ_BY_KEY[v]` and refuse JSON
|
|
167
|
+
ctx.store.setJSON(KEYS.visualP(i), v); // new: the two axes, which the old key cannot say
|
|
168
|
+
applyPlayerVisual(i, v);
|
|
174
169
|
}
|
|
175
|
-
/**
|
|
176
|
-
function
|
|
170
|
+
/** Changes ONLY this player's theme. The correction and the simulation stay where they were — the point of #104. */
|
|
171
|
+
function writePlayerTheme(i, theme) {
|
|
177
172
|
const p = ctx.getPlayers()[i];
|
|
178
|
-
|
|
173
|
+
writePlayerVisual(i, { ...(p.visual ?? DEFAULT_VISUAL), tema: theme });
|
|
179
174
|
}
|
|
180
|
-
/**
|
|
181
|
-
function
|
|
175
|
+
/** Changes ONLY this player's colour correction. The theme and the simulation stay where they were. */
|
|
176
|
+
function writePlayerCorrection(i, correction) {
|
|
182
177
|
const p = ctx.getPlayers()[i];
|
|
183
|
-
|
|
178
|
+
writePlayerVisual(i, { ...(p.visual ?? DEFAULT_VISUAL), correcao: correction });
|
|
184
179
|
}
|
|
185
|
-
/**
|
|
180
|
+
/** The old API, by a single key. It still holds: a game that picks a whole mode goes through here. */
|
|
186
181
|
function setPlayerViz(i, mode) {
|
|
187
|
-
|
|
182
|
+
writePlayerVisual(i, migrateVisual(resolveViz(mode).key));
|
|
188
183
|
}
|
|
189
|
-
/**
|
|
190
|
-
*
|
|
191
|
-
function
|
|
184
|
+
/** The side effects of having changed a player's visual. Separate from WRITING on purpose: the two per-axis writers
|
|
185
|
+
* and the old per-key one share them, and one more copy would be one more copy to drift. */
|
|
186
|
+
function applyPlayerVisual(i, v) {
|
|
192
187
|
ctx.invalidateSharedViz();
|
|
193
|
-
if (
|
|
194
|
-
|
|
188
|
+
if (isBlind(v))
|
|
189
|
+
ctx.setBlindMode(true); // total-blindness empathy turns blind mode (audio) on by default
|
|
195
190
|
if (ctx.getNumPlayers() <= 1 && i === 0) {
|
|
196
191
|
applyVizGlobal(v);
|
|
197
192
|
}
|
|
@@ -204,64 +199,60 @@ export function initVizSetters(ctx) {
|
|
|
204
199
|
ctx.renderEmpathyPanel();
|
|
205
200
|
}
|
|
206
201
|
/**
|
|
207
|
-
* ⚠️
|
|
202
|
+
* ⚠️ THIS IS WHERE THE TWO AXES COEXIST (#104, ADR-0076), and the function did not grow — it SPLIT.
|
|
208
203
|
*
|
|
209
|
-
*
|
|
210
|
-
*
|
|
211
|
-
*
|
|
204
|
+
* With one key, every line below asked the same thing (`mode`, `m.kind`) and the answer had to be one. With two axes,
|
|
205
|
+
* the same lines fall into three groups that never touch — which is why the composition is mechanically possible, as
|
|
206
|
+
* `viz-axes` records:
|
|
212
207
|
*
|
|
213
|
-
* ·
|
|
214
|
-
* ·
|
|
215
|
-
* ·
|
|
208
|
+
* · THEME (contrast) → texture and DOM class. `textureKey` and `hasHighContrast`.
|
|
209
|
+
* · CORRECTION or SIMULATION → CSS filter. `filterKey`.
|
|
210
|
+
* · SIMULATION → the body classes, the overlay, the touch controls, the dot.
|
|
216
211
|
*
|
|
217
|
-
* ⚠️
|
|
218
|
-
*
|
|
219
|
-
*
|
|
212
|
+
* ⚠️ AND THE FILTER'S REACH STILL DEPENDS ON SIMULATING OR CORRECTING, ADR-0046's distinction: a CORRECTION reaches the
|
|
213
|
+
* menus, because the child needs it to READ the menu; a SIMULATION stays in the world, because whoever simulates has to
|
|
214
|
+
* be able to leave.
|
|
220
215
|
*
|
|
221
|
-
* `
|
|
222
|
-
*
|
|
223
|
-
* sério são os dois eixos, e esta linha sai quando o último leitor da chave velha sair.
|
|
216
|
+
* `ctx.setVizMode` keeps writing the single legacy key. It is a mirror, not a source: the real state is the two axes,
|
|
217
|
+
* and this line goes when the last reader of the old key goes.
|
|
224
218
|
*/
|
|
225
219
|
function applyVizGlobal(v) {
|
|
226
|
-
const
|
|
227
|
-
const
|
|
228
|
-
// ⚠️ `
|
|
229
|
-
//
|
|
230
|
-
|
|
231
|
-
//
|
|
232
|
-
//
|
|
233
|
-
//
|
|
234
|
-
|
|
235
|
-
//
|
|
236
|
-
|
|
237
|
-
ctx.
|
|
238
|
-
//
|
|
239
|
-
ctx.
|
|
240
|
-
ctx.
|
|
241
|
-
ctx.
|
|
242
|
-
ctx.worldSprite.texture = worldTexFor(textura); // alto contraste direto = Renderização Direta · resto=normal
|
|
243
|
-
ctx.parallaxLayers.forEach((ts, i) => { ts.texture = ctx.parallaxTexFor(i, textura); });
|
|
244
|
-
ctx.decoSprites.forEach((s) => { s.texture = ctx.treeTexFor(textura); });
|
|
220
|
+
const filterName = filterKey(v);
|
|
221
|
+
const textureForMode = textureKey(v);
|
|
222
|
+
// ⚠️ `legacyKey` AND NOT the texture key: that one returns `normal` for a colour correction, and writing it here
|
|
223
|
+
// would make an old reader of the global key lose the child's correction. See the note on `legacyKey`.
|
|
224
|
+
ctx.setVizMode(legacyKey(v)); // the settings store: value + persistence (incl_viz) + event — the legacy mirror
|
|
225
|
+
// There is no separate "high contrast is on" flag: deriving it from VIZ_BY_KEY costs a comparison and cannot drift,
|
|
226
|
+
// where a copied flag once disagreed with its own setter.
|
|
227
|
+
// --- the CORRECTION/SIMULATION axis: the CSS filter ---
|
|
228
|
+
ctx.applyCssFilter(cssFilterFor(filterName ?? '', ctx.lqFilter()), isSimulation(v) ? 'mundo' : 'mundo-e-menus');
|
|
229
|
+
// --- the THEME axis: DOM and texture. It is not a filter (see `ApplyHighContrastToDom`), which is why it composes.
|
|
230
|
+
ctx.applyHighContrastToDom(hasHighContrast(v));
|
|
231
|
+
ctx.camera.filters = hasHighContrast(v) ? ctx.pixiFilterFor(textureForMode) : null; // solo: high contrast on the camera
|
|
232
|
+
ctx.setFrontDim(hasHighContrast(v)); // HC: the foreground props darken like the background
|
|
233
|
+
ctx.worldSprite.texture = ctx.hc.worldTexFor(textureForMode); // direct high contrast = Direct Rendering · else normal
|
|
234
|
+
ctx.parallaxLayers.forEach((ts, i) => { ts.texture = ctx.parallaxTexFor(i, textureForMode); });
|
|
235
|
+
ctx.decoSprites.forEach((s) => { s.texture = ctx.treeTexFor(textureForMode); });
|
|
245
236
|
ctx.rebuildExtras();
|
|
246
237
|
ctx.rebuildCoins();
|
|
247
|
-
// ---
|
|
248
|
-
//
|
|
249
|
-
ctx.body.classList.toggle('lowvision-mode',
|
|
250
|
-
ctx.body.classList.toggle('blind-mode',
|
|
238
|
+
// --- SIMULATION: low vision = haze+spots (overlay) + green dot; blindness = black screen + hidden controls + white
|
|
239
|
+
// dot. None of them looks at the theme, which is why the theme does not erase them.
|
|
240
|
+
ctx.body.classList.toggle('lowvision-mode', isLowVision(v));
|
|
241
|
+
ctx.body.classList.toggle('blind-mode', isBlind(v));
|
|
251
242
|
const ov = ctx.$('#viz-overlay');
|
|
252
243
|
if (ov) {
|
|
253
|
-
ov.hidden = !
|
|
254
|
-
ov.className =
|
|
244
|
+
ov.hidden = !isLowVision(v);
|
|
245
|
+
ov.className = isLowVision(v) ? 'lv-' + String(v.simulacao).slice(3) : '';
|
|
255
246
|
}
|
|
256
|
-
if (
|
|
247
|
+
if (isBlind(v)) {
|
|
257
248
|
ctx.hideTouchControls('cegueira');
|
|
258
249
|
}
|
|
259
|
-
updateVizIndicator(
|
|
260
|
-
ctx.reflectVizButtons();
|
|
250
|
+
updateVizIndicator(isBlind(v) ? 'blind' : isLowVision(v) ? 'lowvision' : 'normal');
|
|
251
|
+
ctx.reflectVizButtons();
|
|
261
252
|
ctx.renderVisualPanel();
|
|
262
253
|
ctx.renderEmpathyPanel();
|
|
263
254
|
}
|
|
264
|
-
//
|
|
255
|
+
// the indicator dot (top right corner): white=blindness, green=low vision; a double tap/click goes back to normal
|
|
265
256
|
function updateVizIndicator(kind) {
|
|
266
257
|
const el = ctx.$('#viz-indicator');
|
|
267
258
|
if (!el)
|
|
@@ -272,14 +263,14 @@ export function initVizSetters(ctx) {
|
|
|
272
263
|
el.classList.toggle('low', s.low);
|
|
273
264
|
el.setAttribute('aria-label', s.label);
|
|
274
265
|
}
|
|
275
|
-
//
|
|
266
|
+
// several screens: the global CSS filter/overlay/dot OFF (per viewport now)
|
|
276
267
|
function reapplyVizAll() {
|
|
277
268
|
ctx.invalidateSharedViz();
|
|
278
269
|
if (ctx.getNumPlayers() <= 1) {
|
|
279
|
-
applyVizGlobal(ctx.getPlayers()[0].visual ??
|
|
270
|
+
applyVizGlobal(ctx.getPlayers()[0].visual ?? DEFAULT_VISUAL);
|
|
280
271
|
}
|
|
281
272
|
else {
|
|
282
|
-
ctx.
|
|
273
|
+
ctx.applyCssFilter(ctx.lqFilter(), 'mundo-e-menus'); // the L/Q enhancement is an enhancement: it reaches the menu
|
|
283
274
|
ctx.camera.filters = null;
|
|
284
275
|
ctx.body.classList.remove('lowvision-mode', 'blind-mode');
|
|
285
276
|
const ov = ctx.$('#viz-overlay');
|
|
@@ -289,15 +280,15 @@ export function initVizSetters(ctx) {
|
|
|
289
280
|
applyVpFilters();
|
|
290
281
|
}
|
|
291
282
|
}
|
|
292
|
-
//
|
|
283
|
+
// invalidates the direct texture caches (the world depends on bg; sprites on fg) and re-renders
|
|
293
284
|
function rebakeDirect() {
|
|
294
|
-
clearWorldTexCache();
|
|
295
|
-
clearSpriteTexCache();
|
|
296
|
-
resetPupTexCache();
|
|
285
|
+
ctx.hc.clearWorldTexCache();
|
|
286
|
+
ctx.hc.clearSpriteTexCache();
|
|
287
|
+
ctx.resetPupTexCache();
|
|
297
288
|
ctx.clearPlayerDirectCache();
|
|
298
289
|
ctx.invalidateSharedViz();
|
|
299
290
|
if (ctx.getNumPlayers() <= 1)
|
|
300
|
-
applyVizGlobal(ctx.getPlayers()[0].visual ??
|
|
291
|
+
applyVizGlobal(ctx.getPlayers()[0].visual ?? DEFAULT_VISUAL);
|
|
301
292
|
else
|
|
302
293
|
applyVpFilters();
|
|
303
294
|
}
|
|
@@ -309,10 +300,10 @@ export function initVizSetters(ctx) {
|
|
|
309
300
|
ctx.setSelVizPlayer(0);
|
|
310
301
|
const tabs = ctx.$(tabsSel);
|
|
311
302
|
if (tabs) {
|
|
312
|
-
tabs.hidden = true; //
|
|
303
|
+
tabs.hidden = true; // no tabs — each player edits only their own
|
|
313
304
|
tabs.innerHTML = '';
|
|
314
|
-
//
|
|
315
|
-
//
|
|
305
|
+
// ⚠️ DEAD CODE, kept as it was: the innerHTML above has already emptied `tabs`, so this querySelectorAll finds
|
|
306
|
+
// nothing and the listener is never wired.
|
|
316
307
|
tabs.querySelectorAll('button[data-vp]').forEach((b) => b.addEventListener('click', () => {
|
|
317
308
|
ctx.setSelVizPlayer(+b.dataset.vp);
|
|
318
309
|
ctx.renderVisualPanel();
|
|
@@ -320,49 +311,49 @@ export function initVizSetters(ctx) {
|
|
|
320
311
|
}));
|
|
321
312
|
}
|
|
322
313
|
const players = ctx.getPlayers(), sel = ctx.getSelVizPlayer();
|
|
323
|
-
const v = players[sel]?.visual ??
|
|
324
|
-
const cur =
|
|
325
|
-
el.innerHTML = vizGroupHtml(modes, cur);
|
|
326
|
-
// ⚠️
|
|
327
|
-
//
|
|
328
|
-
//
|
|
329
|
-
//
|
|
314
|
+
const v = players[sel]?.visual ?? DEFAULT_VISUAL;
|
|
315
|
+
const cur = legacyKey(v);
|
|
316
|
+
el.innerHTML = vizGroupHtml(t, modes, cur);
|
|
317
|
+
// ⚠️ THE SIMULATION'S REFUSAL (#104, ADR-0076 §4). With either axis off its default, a demonstration does not show
|
|
318
|
+
// the disability — it shows the SETTING it runs over, and that teaches something false. The row STAYS on screen,
|
|
319
|
+
// disabled and with the reason: vanishing would teach that the thing does not exist, and an adult would conclude it
|
|
320
|
+
// was taken away instead of noticing they turned the contrast on themselves.
|
|
330
321
|
//
|
|
331
|
-
//
|
|
332
|
-
//
|
|
322
|
+
// The prose goes into an `.opt-hint`, which the shell (`ui/settings-panel.fillExplain`) MOVES to the footer — the
|
|
323
|
+
// three-zone rule in CLAUDE.md: the explanation lives in the footer, never in the row.
|
|
333
324
|
//
|
|
334
|
-
// ⚠️
|
|
335
|
-
//
|
|
336
|
-
//
|
|
337
|
-
const
|
|
325
|
+
// ⚠️ ONLY THE ROWS THAT SIMULATE. This function draws the list of simulations (the visual panel uses
|
|
326
|
+
// `drawVisualAxes`), but it still gets the modes as a parameter — and a colour correction in this list must not be
|
|
327
|
+
// refused because of its own axis.
|
|
328
|
+
const refusal = simulationRefusal(v);
|
|
338
329
|
el.querySelectorAll('button[data-viz]').forEach((btn) => {
|
|
339
330
|
const key = btn.dataset.viz;
|
|
340
|
-
if (
|
|
331
|
+
if (refusal && simulatesDisability(key)) {
|
|
341
332
|
btn.setAttribute('aria-disabled', 'true');
|
|
342
|
-
const
|
|
343
|
-
if (
|
|
344
|
-
|
|
345
|
-
return; //
|
|
333
|
+
const explanation = btn.closest('.ctrl-row')?.querySelector('.opt-hint');
|
|
334
|
+
if (explanation)
|
|
335
|
+
explanation.textContent = `${explanation.textContent} ${t(refusal.key)}`.trim();
|
|
336
|
+
return; // no listener: accepting the click and ignoring it is the other half of what the ADR forbids
|
|
346
337
|
}
|
|
347
338
|
btn.addEventListener('click', () => {
|
|
348
339
|
setPlayerViz(ctx.getSelVizPlayer(), key);
|
|
349
|
-
ctx.srSay(vizGroupSay(ctx.getNumPlayers(), ctx.getSelVizPlayer(), t(VIZ_MODES.find((m) => m.key === key).
|
|
340
|
+
ctx.srSay(vizGroupSay(ctx.getNumPlayers(), ctx.getSelVizPlayer(), t(VIZ_MODES.find((m) => m.key === key).name)));
|
|
350
341
|
});
|
|
351
342
|
});
|
|
352
343
|
}
|
|
353
344
|
/**
|
|
354
|
-
*
|
|
345
|
+
* The TWO AXES in the VISUAL panel (#104). The sibling of `renderVizGroup`, and SEPARATE from it on purpose.
|
|
355
346
|
*
|
|
356
|
-
* ⚠️
|
|
357
|
-
*
|
|
358
|
-
*
|
|
359
|
-
*
|
|
347
|
+
* ⚠️ DOING THIS INSIDE `renderVizGroup` WOULD BREAK THE EMPATHY PANEL. That function serves BOTH panels —
|
|
348
|
+
* `#visual-modes` with the seven modes and `#empathy-list` with the nine simulations —, and changing its body would put
|
|
349
|
+
* the two axes into the list of simulations. There the single radio stays RIGHT: the simulations really are exclusive
|
|
350
|
+
* among themselves; what stopped being exclusive is something else.
|
|
360
351
|
*
|
|
361
|
-
* ⚠️
|
|
362
|
-
*
|
|
363
|
-
*
|
|
352
|
+
* ⚠️ AND THE TWO GROUPS GO INTO THE CONTAINER THAT ALREADY EXISTS, with no new host markup. Requiring one more element
|
|
353
|
+
* would make every game have to remember it — the shape of defect ADR-0106 measured in five games with no accessibility
|
|
354
|
+
* bar at all.
|
|
364
355
|
*/
|
|
365
|
-
function
|
|
356
|
+
function drawVisualAxes(listSel, tabsSel) {
|
|
366
357
|
const el = ctx.$(listSel);
|
|
367
358
|
if (!el)
|
|
368
359
|
return;
|
|
@@ -374,27 +365,27 @@ export function initVizSetters(ctx) {
|
|
|
374
365
|
tabs.innerHTML = '';
|
|
375
366
|
}
|
|
376
367
|
const sel = ctx.getSelVizPlayer();
|
|
377
|
-
const v = ctx.getPlayers()[sel]?.visual ??
|
|
378
|
-
el.innerHTML =
|
|
368
|
+
const v = ctx.getPlayers()[sel]?.visual ?? DEFAULT_VISUAL;
|
|
369
|
+
el.innerHTML = axesHtml(v, t);
|
|
379
370
|
el.querySelectorAll('button[data-eixo]').forEach((btn) => btn.addEventListener('click', () => {
|
|
380
|
-
const
|
|
381
|
-
if (!
|
|
382
|
-
return; //
|
|
371
|
+
const choice = buttonChoice(btn.dataset);
|
|
372
|
+
if (!choice)
|
|
373
|
+
return; // a button of another subject, or a hand-edited `data-`: no guessing
|
|
383
374
|
const i = ctx.getSelVizPlayer();
|
|
384
|
-
if (
|
|
385
|
-
|
|
386
|
-
ctx.srSay(vizGroupSay(ctx.getNumPlayers(), i, t(
|
|
375
|
+
if (choice.axis === 'tema') {
|
|
376
|
+
writePlayerTheme(i, choice.value);
|
|
377
|
+
ctx.srSay(vizGroupSay(ctx.getNumPlayers(), i, t(THEME_LABEL[choice.value])));
|
|
387
378
|
}
|
|
388
379
|
else {
|
|
389
|
-
|
|
390
|
-
ctx.srSay(vizGroupSay(ctx.getNumPlayers(), i, t(
|
|
380
|
+
writePlayerCorrection(i, choice.value);
|
|
381
|
+
ctx.srSay(vizGroupSay(ctx.getNumPlayers(), i, t(CORRECTION_LABEL[choice.value])));
|
|
391
382
|
}
|
|
392
383
|
}));
|
|
393
384
|
}
|
|
394
385
|
return {
|
|
395
386
|
applySharedTextures, updateVpDots, applyVpFilters, setPlayerViz, applyVizGlobal, reapplyVizAll,
|
|
396
|
-
updateVizIndicator, rebakeDirect, renderVizGroup,
|
|
397
|
-
//
|
|
398
|
-
|
|
387
|
+
updateVizIndicator, rebakeDirect, renderVizGroup, renderVisualAxes: drawVisualAxes,
|
|
388
|
+
// The TWO per-axis writers (#104): what a two-control panel calls.
|
|
389
|
+
setPlayerVisual: writePlayerVisual, setPlayerTheme: writePlayerTheme, setPlayerCorrection: writePlayerCorrection,
|
|
399
390
|
};
|
|
400
391
|
}
|