@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,59 +1,82 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
-
// render/viewports —
|
|
2
|
+
// render/viewports — the IMAGE FACTORY of the accessible vision modes: how a MODE becomes a PIXEL.
|
|
3
3
|
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
// · `pixiFilterFor` —
|
|
7
|
-
// · `parallaxTexFor` —
|
|
8
|
-
// · `treeTexFor` —
|
|
9
|
-
// · `playerVizTex` —
|
|
10
|
-
// · `lvOverlay*` / `renderVpOverlay` —
|
|
11
|
-
// Os quatro primeiros entravam em viz-setters por injeção (`parallaxTexFor`/`treeTexFor`/`playerVizTex`/
|
|
12
|
-
// `pixiFilterFor` no `VizSettersCtx`) enquanto ainda moravam no game.js; a partir daqui quem os fornece é este
|
|
13
|
-
// módulo. Ver docs/5-Refactoring/plano-modularizacao-mapa.md (B2).
|
|
4
|
+
// The pair of render/viz-setters, which holds the POLICY ("which mode counts where": per player, global, overlays,
|
|
5
|
+
// panels). Here lives the other half — producing the pixel itself, which the policy consumes:
|
|
6
|
+
// · `pixiFilterFor` — mode → the viewport's GPU filter (colour blindness, blindness, low vision)
|
|
7
|
+
// · `parallaxTexFor` — background layer i, recoloured (or not) for the mode
|
|
8
|
+
// · `treeTexFor` — background decoration, likewise
|
|
9
|
+
// · `playerVizTex` — the player's frame with a dark outline in high contrast
|
|
10
|
+
// · `lvOverlay*` / `renderVpOverlay` — low vision's haze/tunnel/spot INSIDE the viewport's render texture
|
|
14
11
|
//
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
//
|
|
19
|
-
//
|
|
12
|
+
// THE DUPLICATION THIS CURES: the six colour-blindness matrices were once written twice — as `<feColorMatrix>` in a
|
|
13
|
+
// page's HTML (the single-screen path) and as a `PIXI.ColorMatrixFilter` (the multi-screen path). They live in
|
|
14
|
+
// render/cvd-matrices (a leaf, zero deps); `pixiFilterFor` reads from there and `initViewports` GENERATES the document's
|
|
15
|
+
// `<filter>`s from there too. A divergence would be silent and about accessibility: the same colour-blind person would
|
|
16
|
+
// see different colours on one screen and on several.
|
|
20
17
|
//
|
|
21
|
-
//
|
|
22
|
-
// · `parallaxTexNormal`
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
// módulo rodar no project `node` sem importar PIXI. Mesmo precedente de render/scene-sky e game/traffic.
|
|
29
|
-
// · `_lastSharedViz` NÃO é daqui (é o registro do render estático, fica no game.js) — ver o topo de viz-setters.
|
|
18
|
+
// Boundaries this module does NOT reopen:
|
|
19
|
+
// · `parallaxTexNormal` and the tree texture (the RAW textures, the recolour's source) are born in the host — the
|
|
20
|
+
// first filled by the host's scenery loader (a PNG per theme), the second by its procedural drawing. They come in
|
|
21
|
+
// injected. `parallaxTexNormal` is an array whose ELEMENTS the host swaps in place → it comes in by VALUE (the array
|
|
22
|
+
// is the same object); the viewport textures are REASSIGNED whenever the number of screens changes → by GETTER.
|
|
23
|
+
// · The overlay sprite and the renderer are PIXI objects the host creates and come in through a STRUCTURAL
|
|
24
|
+
// interface, so the module runs in the `node` project without importing PIXI.
|
|
30
25
|
//
|
|
31
|
-
//
|
|
32
|
-
//
|
|
33
|
-
//
|
|
34
|
-
// `
|
|
35
|
-
// chamada não cair em TDZ; com valores, o `const` ainda não inicializado derrubaria a restauração do tema
|
|
36
|
-
// dentro de um `try/catch` que apenas cai para 'cidade' — o jogador perderia o cenário escolhido em silêncio.
|
|
26
|
+
// WHY `getTreeTexNormal`/`getLvOverlaySpr` are GETTERS and not values: BOOT ORDER, not reassignment. A host may call
|
|
27
|
+
// `clearParallaxTexCache` while restoring a saved scenery before those objects exist; with getters, `initViewports`
|
|
28
|
+
// can be called early enough for that call to work, where a value would be read before it exists — and a scenery
|
|
29
|
+
// restore inside a `try/catch` that falls back to a default would lose the chosen scenery silently.
|
|
37
30
|
//
|
|
38
|
-
//
|
|
39
|
-
//
|
|
31
|
+
// NO I/O on import: no makeCanvas/tex in the module body. `initViewports`'s one effect is generating the SVG `<filter>`s,
|
|
32
|
+
// which is precisely the point of curing the duplication.
|
|
40
33
|
import { LOGICAL_W, LOGICAL_H } from '../core/constants.js';
|
|
41
34
|
import { makeCanvas, tex } from './canvas.js';
|
|
42
|
-
import { DIRECT_CFG
|
|
35
|
+
import { DIRECT_CFG } from './high-contrast.js';
|
|
43
36
|
import { VIZ_BY_KEY } from './viz-modes.js';
|
|
37
|
+
import { drawLowVision } from './low-vision-drawing.js';
|
|
44
38
|
import { CVD_MATRIX, installCvdFilters } from './cvd-matrices.js';
|
|
39
|
+
/**
|
|
40
|
+
* The modes a COLOUR MATRIX draws, besides colour vision (which reads the single source, `CVD_MATRIX`). Blindness is
|
|
41
|
+
* brightness 0 NOT multiplied — black, not darkened; the cataract's haze is contrast lowered and THEN a multiplied
|
|
42
|
+
* brightness, and the order is the effect.
|
|
43
|
+
*/
|
|
44
|
+
const MATRIX_OF = {
|
|
45
|
+
blind: (c) => { c.brightness(0, false); },
|
|
46
|
+
'lv-haze': (c) => { c.contrast(-0.45, false); c.brightness(1.12, true); },
|
|
47
|
+
};
|
|
48
|
+
/** The modes a BLUR draws, and how strong. The tunnel and the spots are also drawn as a texture on top (`renderVpOverlay`). */
|
|
49
|
+
const BLUR_OF = { 'lv-blur': 5, 'lv-tunnel': 1.5, 'lv-diabetic': 2, 'lv-macular': 2 };
|
|
50
|
+
/**
|
|
51
|
+
* A mode's viewport filter, or `null` for a mode with none — and for one whose PIXI constructor is missing, which falls back
|
|
52
|
+
* to no filter instead of throwing. High contrast is never here: it is a texture, not a filter.
|
|
53
|
+
*/
|
|
54
|
+
function filterFor(mode, CM, BL) {
|
|
55
|
+
const cvd = CVD_MATRIX[mode]; // the single source: the SAME numbers that build the HTML `<feColorMatrix>`
|
|
56
|
+
// a COPY of the matrix: holding the module's array, the filter's own calls would rewrite the source every mode reads
|
|
57
|
+
const paint = cvd ? (c) => { c.matrix = cvd.slice(); } : MATRIX_OF[mode];
|
|
58
|
+
if (paint)
|
|
59
|
+
return CM ? [matrixWith(CM, paint)] : null;
|
|
60
|
+
const strength = BLUR_OF[mode];
|
|
61
|
+
return strength !== undefined && BL ? [new BL(strength)] : null;
|
|
62
|
+
}
|
|
63
|
+
function matrixWith(CM, paint) {
|
|
64
|
+
const c = new CM();
|
|
65
|
+
paint(c);
|
|
66
|
+
return c;
|
|
67
|
+
}
|
|
45
68
|
export function initViewports(ctx) {
|
|
46
|
-
//
|
|
47
|
-
//
|
|
69
|
+
// Generates the document's six colour-blindness <filter>s from render/cvd-matrices — the SAME source pixiFilterFor
|
|
70
|
+
// reads just below. That is why one screen and several can no longer diverge.
|
|
48
71
|
installCvdFilters(ctx.cvdDefsHost);
|
|
49
|
-
/* =====================
|
|
72
|
+
/* ===================== background: parallax and decoration ===================== */
|
|
50
73
|
const _parallaxTexHC = {}; // {mode: [tex,tex,tex]}
|
|
51
74
|
function parallaxTexFor(i, mode) {
|
|
52
75
|
if (DIRECT_CFG[mode]) {
|
|
53
76
|
(_parallaxTexHC[mode] = _parallaxTexHC[mode] || []);
|
|
54
77
|
if (!_parallaxTexHC[mode][i])
|
|
55
|
-
_parallaxTexHC[mode][i] = directBgTexture(ctx.parallaxTexNormal[i], mode);
|
|
56
|
-
return _parallaxTexHC[mode][i]; //
|
|
78
|
+
_parallaxTexHC[mode][i] = ctx.hc.directBgTexture(ctx.parallaxTexNormal[i], mode);
|
|
79
|
+
return _parallaxTexHC[mode][i]; // direct: the background steps back
|
|
57
80
|
}
|
|
58
81
|
return ctx.parallaxTexNormal[i];
|
|
59
82
|
}
|
|
@@ -63,14 +86,14 @@ export function initViewports(ctx) {
|
|
|
63
86
|
function treeTexFor(mode) {
|
|
64
87
|
if (DIRECT_CFG[mode]) {
|
|
65
88
|
if (!_treeTexHC[mode])
|
|
66
|
-
_treeTexHC[mode] = directBgTexture(ctx.getTreeTexNormal(), mode);
|
|
67
|
-
return _treeTexHC[mode]; //
|
|
89
|
+
_treeTexHC[mode] = ctx.hc.directBgTexture(ctx.getTreeTexNormal(), mode);
|
|
90
|
+
return _treeTexHC[mode]; // direct: the decoration steps back
|
|
68
91
|
}
|
|
69
92
|
return ctx.getTreeTexNormal();
|
|
70
93
|
}
|
|
71
|
-
/* =====================
|
|
72
|
-
// {mode: Map<
|
|
73
|
-
//
|
|
94
|
+
/* ===================== foreground: the player ===================== */
|
|
95
|
+
// {mode: Map<baseTexture, outlinedTexture>} — keyed by the SOURCE texture because the player changes frame every tick;
|
|
96
|
+
// a Map per mode avoids outlining the same frame again on every loop of the animation.
|
|
74
97
|
let _playerDirect = {};
|
|
75
98
|
function playerVizTex(base, mode) {
|
|
76
99
|
if (!base)
|
|
@@ -78,94 +101,40 @@ export function initViewports(ctx) {
|
|
|
78
101
|
if (DIRECT_CFG[mode]) {
|
|
79
102
|
const mm = (_playerDirect[mode] = _playerDirect[mode] || new Map());
|
|
80
103
|
if (!mm.has(base))
|
|
81
|
-
mm.set(base, directSpriteTexture(base, mode));
|
|
82
|
-
return mm.get(base); //
|
|
104
|
+
mm.set(base, ctx.hc.directSpriteTexture(base, mode));
|
|
105
|
+
return mm.get(base); // direct: the player with a dark outline → it jumps out
|
|
83
106
|
}
|
|
84
107
|
return base;
|
|
85
108
|
}
|
|
86
109
|
function clearPlayerDirectCache() { _playerDirect = {}; }
|
|
87
|
-
/* =====================
|
|
88
|
-
//
|
|
89
|
-
//
|
|
90
|
-
//
|
|
110
|
+
/* ===================== the viewport's filter ===================== */
|
|
111
|
+
// Cached per MODE and by identity: the same filter array always comes back, so switching viewport does not rebuild the
|
|
112
|
+
// filter (nor invalidate PIXI's shader). It keeps `null` too — `mode in cache` and not `cache[mode]` — so a mode with
|
|
113
|
+
// no filter (normal, hc-*) is not reprocessed every frame.
|
|
91
114
|
const _vpFilterCache = {};
|
|
92
115
|
function pixiFilterFor(mode) {
|
|
93
116
|
if (mode in _vpFilterCache)
|
|
94
117
|
return _vpFilterCache[mode];
|
|
95
|
-
|
|
96
|
-
const CM = ctx.ColorMatrixFilter, BL = ctx.BlurFilter;
|
|
97
|
-
const cvd = CVD_MATRIX[mode]; // fonte única: os MESMOS números que geram o <feColorMatrix> do HTML
|
|
98
|
-
if (cvd && CM) {
|
|
99
|
-
const c = new CM();
|
|
100
|
-
c.matrix = cvd.slice();
|
|
101
|
-
f = [c];
|
|
102
|
-
} // slice: o filtro não fica com o array do módulo
|
|
103
|
-
else if (mode === 'blind' && CM) {
|
|
104
|
-
const c = new CM();
|
|
105
|
-
c.brightness(0, false);
|
|
106
|
-
f = [c];
|
|
107
|
-
}
|
|
108
|
-
else if (mode === 'lv-blur' && BL) {
|
|
109
|
-
f = [new BL(5)];
|
|
110
|
-
}
|
|
111
|
-
else if (mode === 'lv-haze' && CM) {
|
|
112
|
-
const c = new CM();
|
|
113
|
-
c.contrast(-0.45, false);
|
|
114
|
-
c.brightness(1.12, true);
|
|
115
|
-
f = [c];
|
|
116
|
-
}
|
|
117
|
-
else if ((mode === 'lv-tunnel' || mode === 'lv-diabetic' || mode === 'lv-macular') && BL) {
|
|
118
|
-
f = [new BL(mode === 'lv-tunnel' ? 1.5 : 2)];
|
|
119
|
-
}
|
|
120
|
-
return _vpFilterCache[mode] = f;
|
|
118
|
+
return _vpFilterCache[mode] = filterFor(mode, ctx.ColorMatrixFilter, ctx.BlurFilter);
|
|
121
119
|
}
|
|
122
|
-
/* =====================
|
|
123
|
-
//
|
|
124
|
-
//
|
|
120
|
+
/* ===================== low vision: the overlay as a texture ===================== */
|
|
121
|
+
// What the GPU filter cannot do: a cataract's haze, glaucoma's tunnel, macular degeneration's central spot and
|
|
122
|
+
// retinopathy's scattered spots. They are drawing, not a colour transform — they come as a texture.
|
|
125
123
|
function lvOverlayCanvas(lv) {
|
|
126
|
-
const W = LOGICAL_W, H = LOGICAL_H, cv = makeCanvas(W, H), c = cv.getContext('2d')
|
|
127
|
-
|
|
128
|
-
c.fillStyle = 'rgba(244,246,250,0.42)';
|
|
129
|
-
c.fillRect(0, 0, W, H);
|
|
130
|
-
}
|
|
131
|
-
else if (lv === 'tunnel') {
|
|
132
|
-
const g = c.createRadialGradient(cx, cy, H * 0.12, cx, cy, H * 0.6);
|
|
133
|
-
g.addColorStop(0, 'rgba(0,0,0,0)');
|
|
134
|
-
g.addColorStop(.5, 'rgba(0,0,0,.55)');
|
|
135
|
-
g.addColorStop(1, 'rgba(0,0,0,.99)');
|
|
136
|
-
c.fillStyle = g;
|
|
137
|
-
c.fillRect(0, 0, W, H);
|
|
138
|
-
}
|
|
139
|
-
else if (lv === 'macular') {
|
|
140
|
-
const g = c.createRadialGradient(cx, cy, 2, cx, cy, H * 0.34);
|
|
141
|
-
g.addColorStop(0, 'rgba(12,12,15,.95)');
|
|
142
|
-
g.addColorStop(.55, 'rgba(12,12,15,.5)');
|
|
143
|
-
g.addColorStop(1, 'rgba(12,12,15,0)');
|
|
144
|
-
c.fillStyle = g;
|
|
145
|
-
c.fillRect(0, 0, W, H);
|
|
146
|
-
}
|
|
147
|
-
else if (lv === 'diabetic') {
|
|
148
|
-
for (const [fx, fy, fr] of [[.22, .3, .1], [.64, .22, .075], [.8, .58, .11], [.4, .7, .085], [.16, .8, .07], [.54, .48, .06]]) {
|
|
149
|
-
const x = fx * W, y = fy * H, r = fr * W, g = c.createRadialGradient(x, y, 1, x, y, r);
|
|
150
|
-
g.addColorStop(0, 'rgba(10,10,14,.95)');
|
|
151
|
-
g.addColorStop(.5, 'rgba(10,10,14,.7)');
|
|
152
|
-
g.addColorStop(1, 'rgba(10,10,14,0)');
|
|
153
|
-
c.fillStyle = g;
|
|
154
|
-
c.fillRect(x - r, y - r, 2 * r, 2 * r);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
124
|
+
const W = LOGICAL_W, H = LOGICAL_H, cv = makeCanvas(ctx.doc, W, H), c = cv.getContext('2d');
|
|
125
|
+
drawLowVision(c, lv, W, H); // one drawing for the viewports and for the world `createGame` declares (issue #182)
|
|
157
126
|
return cv;
|
|
158
127
|
}
|
|
159
128
|
const _lvOverlayTex = {};
|
|
160
129
|
function lvOverlayTex(lv) {
|
|
161
130
|
if (lv === 'blur')
|
|
162
|
-
return null; //
|
|
131
|
+
return null; // blur is a pure filter, there is nothing to stamp
|
|
163
132
|
if (!_lvOverlayTex[lv])
|
|
164
133
|
_lvOverlayTex[lv] = tex(lvOverlayCanvas(lv));
|
|
165
134
|
return _lvOverlayTex[lv];
|
|
166
135
|
}
|
|
167
|
-
//
|
|
168
|
-
//
|
|
136
|
+
// The overlay INSIDE the render texture (the viewport's indicator dot sits on top, OUTSIDE the filter — which is why
|
|
137
|
+
// it stays visible in blindness mode; see updateVpDots in render/viz-setters).
|
|
169
138
|
function renderVpOverlay(i, mode) {
|
|
170
139
|
const m = VIZ_BY_KEY[mode];
|
|
171
140
|
if (!m || m.kind !== 'lowvision')
|
|
@@ -174,7 +143,7 @@ export function initViewports(ctx) {
|
|
|
174
143
|
if (t) {
|
|
175
144
|
const spr = ctx.getLvOverlaySpr();
|
|
176
145
|
spr.texture = t;
|
|
177
|
-
ctx.
|
|
146
|
+
ctx.renderInto(spr, ctx.getVpTex()[i], false);
|
|
178
147
|
}
|
|
179
148
|
}
|
|
180
149
|
return {
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
import { type Theme, type Correction, type VisualState } from './viz-axes.js';
|
|
3
|
+
/** Each theme's label. An i18n key — whoever shows it resolves it, like the rest of the menu. */
|
|
4
|
+
export declare const THEME_LABEL: Readonly<Record<Theme, string>>;
|
|
5
|
+
/** Each colour correction's label. */
|
|
6
|
+
export declare const CORRECTION_LABEL: Readonly<Record<Correction, string>>;
|
|
7
|
+
/**
|
|
8
|
+
* The SHORT labels, for the quick bar's icons — «7:1», «deuteranopia».
|
|
9
|
+
*
|
|
10
|
+
* ⚠️ THEY ARE THE KEYS THAT ALREADY EXISTED (`contrast.*`, `cvd.*`), rekeyed per axis. The quick bar speaks short
|
|
11
|
+
* because it announces ONE icon at a time, and the panel speaks in full because the child is reading a list — the
|
|
12
|
+
* difference is one of context. Reusing instead of translating again keeps the same word in both places.
|
|
13
|
+
*/
|
|
14
|
+
export declare const SHORT_THEME: Readonly<Record<Theme, string>>;
|
|
15
|
+
export declare const SHORT_CORRECTION: Readonly<Record<Correction, string>>;
|
|
16
|
+
/** The two axes, as the panel identifies them in the DOM (stored values, and so Portuguese). */
|
|
17
|
+
export type VisualAxis = 'tema' | 'correcao';
|
|
18
|
+
/** A translator, the same the rest of the interface gets. */
|
|
19
|
+
export type Translator = (key: string, params?: Record<string, string | number>) => string;
|
|
20
|
+
/**
|
|
21
|
+
* ONE axis's rows, in the radio shape the panel already uses.
|
|
22
|
+
*
|
|
23
|
+
* ⚠️ A RADIO AND NOT SEVEN BUTTONS: WITHIN an axis the values stay exclusive — one theme at a time, one correction at a
|
|
24
|
+
* time. What stopped being exclusive is the relation BETWEEN the axes, which is why they become two radios instead of
|
|
25
|
+
* one.
|
|
26
|
+
*
|
|
27
|
+
* ⚠️ AND THE VISIBLE-ROW SHAPE STAYS, not a `<select>`. The visual panel records the mistake the Dev caught on the first
|
|
28
|
+
* attempt: inside a closed box, a control whose reason to exist is to be FOUND by whoever sees poorly becomes «quase o
|
|
29
|
+
* mesmo que não ter movido».
|
|
30
|
+
*/
|
|
31
|
+
export declare function axisRows(axisName: VisualAxis, options: readonly string[], optionLabels: Readonly<Record<string, string>>, selected: string, t: Translator): string;
|
|
32
|
+
/**
|
|
33
|
+
* The TWO axes, one after the other, with a title each.
|
|
34
|
+
*
|
|
35
|
+
* The title exists because two unnamed radios in a row are one radio of eight for whoever reads fast — and that reading
|
|
36
|
+
* is exactly the misunderstanding the split exists to undo.
|
|
37
|
+
*/
|
|
38
|
+
export declare function axesHtml(v: VisualState, t: Translator): string;
|
|
39
|
+
/** What a click on a panel button means. `null` when the button belongs to no axis. */
|
|
40
|
+
export interface AxisChoice {
|
|
41
|
+
readonly axis: VisualAxis;
|
|
42
|
+
readonly value: string;
|
|
43
|
+
}
|
|
44
|
+
export declare function buttonChoice(dataset: {
|
|
45
|
+
eixo?: string;
|
|
46
|
+
valor?: string;
|
|
47
|
+
}): AxisChoice | null;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
// render/viz-axes-labels — THE VISUAL MENU WITH TWO CONTROLS (ADR-0076, issue #104), the pure half.
|
|
3
|
+
//
|
|
4
|
+
// ========================= WHY TWO CONTROLS AND NOT ONE =========================
|
|
5
|
+
// A SINGLE control was the honest way to state a REAL exclusivity while `p.viz` kept ONE value: two separate controls
|
|
6
|
+
// would overwrite each other silently — the child would pick the correction, then the contrast, and lose the correction
|
|
7
|
+
// with nothing saying so. ⚠️ THAT REASON IS GONE: `p.viz` keeps two axes plus the simulation, and the per-axis writers
|
|
8
|
+
// (`setPlayerTheme`/`setPlayerCorrection`) change one without touching the other. Keeping the single control would state
|
|
9
|
+
// an exclusivity that no longer exists — and keep denying both to whoever needs both.
|
|
10
|
+
//
|
|
11
|
+
// ========================= THE DEFAULTS' NAMES ARE A DECISION, NOT ROUTINE =========================
|
|
12
|
+
// ⚠️ «Tema padrão» and «Visão tricromática», and ADR-0076 closes its *definition of done* with the rule that chose them:
|
|
13
|
+
// **no default label diagnoses the reader**. `modo sem deficiência visual` was offered and refused — it tells the child
|
|
14
|
+
// what they are NOT, in the menu they opened to be able to play. A default is named by what it IS.
|
|
15
|
+
//
|
|
16
|
+
// And `Modo padrão` (`viz.normal`) does not serve here: it was the SHARED neutral from when the two axes were one. With
|
|
17
|
+
// two controls, a «padrão» that does not say the default of WHAT is ambiguous in both.
|
|
18
|
+
//
|
|
19
|
+
// A pure module: it returns HTML and i18n keys and touches no document. `render/viz-setters`, in the same layer,
|
|
20
|
+
// mounts it (issue #167).
|
|
21
|
+
import { THEMES, CORRECTIONS } from './viz-axes.js';
|
|
22
|
+
/** Each theme's label. An i18n key — whoever shows it resolves it, like the rest of the menu. */
|
|
23
|
+
export const THEME_LABEL = Object.freeze({
|
|
24
|
+
padrao: 'eixo.tema.padrao',
|
|
25
|
+
hc3: 'viz.hc-direto',
|
|
26
|
+
hc45: 'viz.hc-direto-45',
|
|
27
|
+
hc7: 'viz.hc-direto-7',
|
|
28
|
+
});
|
|
29
|
+
/** Each colour correction's label. */
|
|
30
|
+
export const CORRECTION_LABEL = Object.freeze({
|
|
31
|
+
tricro: 'eixo.correcao.tricro',
|
|
32
|
+
protan: 'viz.fix-protan',
|
|
33
|
+
deuter: 'viz.fix-deuter',
|
|
34
|
+
tritan: 'viz.fix-tritan',
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* The SHORT labels, for the quick bar's icons — «7:1», «deuteranopia».
|
|
38
|
+
*
|
|
39
|
+
* ⚠️ THEY ARE THE KEYS THAT ALREADY EXISTED (`contrast.*`, `cvd.*`), rekeyed per axis. The quick bar speaks short
|
|
40
|
+
* because it announces ONE icon at a time, and the panel speaks in full because the child is reading a list — the
|
|
41
|
+
* difference is one of context. Reusing instead of translating again keeps the same word in both places.
|
|
42
|
+
*/
|
|
43
|
+
export const SHORT_THEME = Object.freeze({
|
|
44
|
+
padrao: 'contrast.off', hc3: 'contrast.3', hc45: 'contrast.45', hc7: 'contrast.7',
|
|
45
|
+
});
|
|
46
|
+
export const SHORT_CORRECTION = Object.freeze({
|
|
47
|
+
tricro: 'cvd.off', protan: 'cvd.protan', deuter: 'cvd.deuter', tritan: 'cvd.tritan',
|
|
48
|
+
});
|
|
49
|
+
/**
|
|
50
|
+
* ONE axis's rows, in the radio shape the panel already uses.
|
|
51
|
+
*
|
|
52
|
+
* ⚠️ A RADIO AND NOT SEVEN BUTTONS: WITHIN an axis the values stay exclusive — one theme at a time, one correction at a
|
|
53
|
+
* time. What stopped being exclusive is the relation BETWEEN the axes, which is why they become two radios instead of
|
|
54
|
+
* one.
|
|
55
|
+
*
|
|
56
|
+
* ⚠️ AND THE VISIBLE-ROW SHAPE STAYS, not a `<select>`. The visual panel records the mistake the Dev caught on the first
|
|
57
|
+
* attempt: inside a closed box, a control whose reason to exist is to be FOUND by whoever sees poorly becomes «quase o
|
|
58
|
+
* mesmo que não ter movido».
|
|
59
|
+
*/
|
|
60
|
+
export function axisRows(axisName, options, optionLabels, selected, t) {
|
|
61
|
+
return options.map((valueName) => {
|
|
62
|
+
const sel = valueName === selected;
|
|
63
|
+
return `<div class="ctrl-row"><span><strong>${t(optionLabels[valueName])}</strong></span>`
|
|
64
|
+
+ `<button class="mode-btn${sel ? ' is-on' : ''}" role="radio" aria-checked="${sel}"`
|
|
65
|
+
+ ` data-eixo="${axisName}" data-valor="${valueName}" type="button">${sel ? t('viz.escolhido') : t('viz.escolher')}</button></div>`;
|
|
66
|
+
}).join('');
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The TWO axes, one after the other, with a title each.
|
|
70
|
+
*
|
|
71
|
+
* The title exists because two unnamed radios in a row are one radio of eight for whoever reads fast — and that reading
|
|
72
|
+
* is exactly the misunderstanding the split exists to undo.
|
|
73
|
+
*/
|
|
74
|
+
export function axesHtml(v, t) {
|
|
75
|
+
return `<h3 class="opt-sub">${t('eixo.tema.titulo')}</h3>`
|
|
76
|
+
+ axisRows('tema', THEMES, THEME_LABEL, v.tema, t)
|
|
77
|
+
+ `<h3 class="opt-sub">${t('eixo.correcao.titulo')}</h3>`
|
|
78
|
+
+ axisRows('correcao', CORRECTIONS, CORRECTION_LABEL, v.correcao, t);
|
|
79
|
+
}
|
|
80
|
+
export function buttonChoice(dataset) {
|
|
81
|
+
const { eixo: axisName, valor: valueName } = dataset;
|
|
82
|
+
if (axisName !== 'tema' && axisName !== 'correcao')
|
|
83
|
+
return null;
|
|
84
|
+
if (!valueName)
|
|
85
|
+
return null;
|
|
86
|
+
const allowed = axisName === 'tema' ? THEMES : CORRECTIONS;
|
|
87
|
+
return allowed.includes(valueName) ? { axis: axisName, value: valueName } : null;
|
|
88
|
+
}
|