@the-inclusionist/engine 9.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 +444 -215
- package/dist-pkg/boot/create-game.js +3530 -549
- 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 +249 -351
- 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,146 +1,110 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
2
|
import type { PlayerView } from '../core/entity.js';
|
|
3
3
|
import type { NavKeys } from '../input/edges.js';
|
|
4
|
-
import
|
|
4
|
+
import type { Translate, Translator } from '../core/i18n.js';
|
|
5
|
+
import { type PauseMenuButton, type PauseSub } from './pause-markup.js';
|
|
6
|
+
import { type PauseIcon } from '../core/pause-icon-catalogue.js';
|
|
7
|
+
import { type Theme, type Correction, type VisualState } from '../render/viz-axes.js';
|
|
5
8
|
import type { MotionSceneFlags, MotionSceneKey, MotionCharDef } from './settings-motion.js';
|
|
6
|
-
import type { AudioCatState } from './
|
|
9
|
+
import type { AudioCatState } from './audio-choices.js';
|
|
10
|
+
import { type MediaQuery } from '../core/setting-defaults.js';
|
|
11
|
+
import { type CameraControl } from '../core/camera-cycle.js';
|
|
7
12
|
/**
|
|
8
|
-
*
|
|
13
|
+
* THE THREE POSITIONS OF ☝️ (ADR-0218): how the child's presses are read.
|
|
9
14
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* que este repositório já pagou dezesseis vezes com o `DomQuery`.
|
|
14
|
-
*
|
|
15
|
-
* O `aria-label` já conta o ESTADO ("Alto contraste, ativado"): é ele que o `reflectIconBtn` reescreve a cada
|
|
16
|
-
* mudança, e é por isso que a legenda o lê de volta em vez de recompor o texto por conta própria.
|
|
15
|
+
* They are not three settings but three READINGS of the same press, which is why one icon holds them and why they are shown as
|
|
16
|
+
* one position. `standard` is the press as it arrives; `sticky` makes a tap last until the next one (ADR-0113); `scan` offers
|
|
17
|
+
* the game's positions one at a time and lets any press take the one showing.
|
|
17
18
|
*/
|
|
18
|
-
export
|
|
19
|
-
export interface PauseIcon {
|
|
20
|
-
/** `data-pi` key — the dispatch key of iconAct/iconLabel/reflectIconBtn. */
|
|
21
|
-
k: string;
|
|
22
|
-
/** The emoji glyph rendered inside the button. */
|
|
23
|
-
e: string;
|
|
24
|
-
/** i18n KEY of the base name; also the `aria-label` when the icon carries no state (or is `soon`). */
|
|
25
|
-
n: string;
|
|
26
|
-
/** Under construction: the button announces itself and does nothing else. */
|
|
27
|
-
soon?: boolean;
|
|
28
|
-
}
|
|
29
|
-
/** The accessibility shortcut bar at the top of every pause screen (and of the splash `#title-icons`).
|
|
30
|
-
* Sound-bound icons (blind/TTS) require a private audio output; webcam/voice are still `soon`.
|
|
31
|
-
* VERBATIM from game.js in order and behaviour; the names became i18n keys in the Fase-5 pass. */
|
|
32
|
-
export declare const PAUSE_ICONS: readonly PauseIcon[];
|
|
33
|
-
export declare function pauseIcon(k: string): PauseIcon | undefined;
|
|
34
|
-
/** TEA cycle: 0 = normal · 1 = calmo (reduces) · 2 = silencioso (switches off). Never touches TTS/blind mode. */
|
|
35
|
-
export declare const CALM_NAMES: readonly string[];
|
|
19
|
+
export type InputMode = 'standard' | 'sticky' | 'scan';
|
|
36
20
|
/**
|
|
37
|
-
*
|
|
38
|
-
*
|
|
21
|
+
* Which of the three is showing. The SCAN WINS over the latch on purpose: with one button there is nothing to hold, so a stored
|
|
22
|
+
* latch would otherwise make the icon claim a position the child is not in.
|
|
39
23
|
*/
|
|
40
|
-
export declare function
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
export declare
|
|
45
|
-
|
|
46
|
-
*
|
|
47
|
-
* ⚠️ POSITION 0 IS `cvd.tricro` AND NOT `cvd.off`, AND THE TWO KEYS ARE NOT INTERCHANGEABLE.
|
|
48
|
-
* This list names the four CHOICES of the cycle, so position 0 is a way of seeing — trichromatic
|
|
49
|
-
* vision, the one that needs no correction — and it is said as one. `cvd.off` below is a FALLBACK
|
|
50
|
-
* for `s.viz` values that are not corrections at all, and 13 of the 16 viz modes are exactly that:
|
|
51
|
-
* the three simulations, the three contrast levels, the five low-vision modes and blind mode.
|
|
52
|
-
* Announcing "trichromatic vision" there would have the software assert what the child sees, while
|
|
53
|
-
* she is simulating not seeing it. The choice is named; the fallback is switched off. */
|
|
54
|
-
export declare const CVD_NAMES: readonly string[];
|
|
55
|
-
/** `player.viz` → i18n key of the label used by iconLabel (anything else falls back to the 'off' key). */
|
|
56
|
-
export declare const CVD_LABELS: Readonly<Record<string, string>>;
|
|
57
|
-
/** The slice of a player object the pause icons touch. `players` (core/state) is typed `unknown[]`. */
|
|
24
|
+
export declare function inputModeOf(s: {
|
|
25
|
+
readonly toggleMove?: boolean;
|
|
26
|
+
readonly switchScan?: boolean;
|
|
27
|
+
}): InputMode;
|
|
28
|
+
export declare function nextInputMode(m: InputMode, holdsKeys: boolean, latchRequired?: boolean): InputMode;
|
|
29
|
+
import type { Store } from '../platform/storage.js';
|
|
58
30
|
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
* Havia uma (`[prop: string]: unknown`), posta ali porque `applyCalm` escreve por nome calculado
|
|
62
|
-
* (`p[c.prop] = …`). Era andaime: `c.prop` tem tipo `MotionCharProp`, que é a união literal
|
|
63
|
-
* `'rmWalk' | 'rmBreath' | 'rmFlavor'`, e o TypeScript verifica acesso por chave literal sem precisar de
|
|
64
|
-
* assinatura nenhuma — bastava que os três campos tivessem nome, que é o que a derivação deu.
|
|
31
|
+
* Hover and focus on a bar's icons write its NAME in the bar's `.pause-icons-cap` and ask for its EXPLANATION.
|
|
65
32
|
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
33
|
+
* Shared by the per-screen quick bars and the bar the engine mounts in `#title-icons`: two copies of this wiring is
|
|
34
|
+
* how one bar showed the name and the other did not — the Dev found the engine's bar silent on hover and on the
|
|
35
|
+
* cursor. Leaving an icon falls back to the CURSOR of the bar's mode when there is one (`.pi-sel`): it is the only
|
|
36
|
+
* thing saying where that cursor is.
|
|
70
37
|
*/
|
|
71
|
-
export
|
|
72
|
-
/**
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
38
|
+
export declare function wireBarCaption(bar: HTMLElement, explain: (k: string | null) => void): void;
|
|
39
|
+
/**
|
|
40
|
+
* THE SETTINGS THE BAR READS AND WRITES — the page's settings store, built by the root (ADR-0232 D2c, issue #207). The
|
|
41
|
+
* names are `core/state`'s own, so the root passes the store itself; the reads are LIVE (a getter or a live binding),
|
|
42
|
+
* because another surface — the motion panel, a gamepad, a second screen — changes them between two presses.
|
|
43
|
+
*/
|
|
44
|
+
export interface PauseIconsSettings {
|
|
45
|
+
/** The «N de M» at the end of an announcement (ADR-0044 item 3). */
|
|
46
|
+
readonly menuIndexOn: boolean;
|
|
47
|
+
readonly gameSpeed: number;
|
|
48
|
+
setGameSpeedValue(speed: number): void;
|
|
49
|
+
readonly cameraControl: CameraControl;
|
|
50
|
+
setCameraControlValue(mode: CameraControl): void;
|
|
51
|
+
readonly voiceControl: boolean;
|
|
52
|
+
setVoiceControlValue(on: boolean): void;
|
|
53
|
+
readonly switchScan: boolean;
|
|
54
|
+
setSwitchScanValue(on: boolean): void;
|
|
55
|
+
/** The blind-mode writer used when the host injects no `setBlindMode`: write, persist, notify. */
|
|
56
|
+
setBlindModeValue(on: boolean): void;
|
|
82
57
|
}
|
|
58
|
+
/** What the bar reads and writes through: the calm level, the movement latch and the scene flags' default. */
|
|
59
|
+
export type PauseIconsStore = Pick<Store, 'getNum' | 'set' | 'setBool' | 'getJSON' | 'setJSON'>;
|
|
60
|
+
/**
|
|
61
|
+
* The slice of a player the pause icons touch — derived from core/entity, and WITHOUT an index signature: one would
|
|
62
|
+
* accept ANY property with an `unknown` value, so a typo in any field would compile silently. `applyCalm` writes by a
|
|
63
|
+
* computed name (`p[c.prop] = …`), and `c.prop` is the literal union `'rmWalk' | 'rmBreath' | 'rmFlavor'`, which TypeScript
|
|
64
|
+
* checks without any signature.
|
|
65
|
+
*/
|
|
66
|
+
export type PausePlayer = PlayerView<'visual' | 'toggleMove' | 'walkDir' | 'audioSink' | 'rmWalk' | 'rmBreath' | 'rmFlavor'>;
|
|
83
67
|
/** Everything the label/visual of ONE icon depends on, gathered in one value. */
|
|
84
68
|
export interface IconStateSnapshot {
|
|
85
|
-
|
|
69
|
+
blindMode: boolean;
|
|
86
70
|
ttsOn: boolean;
|
|
87
71
|
librasOn: boolean;
|
|
88
72
|
calmMode: number;
|
|
89
73
|
toggleMove: boolean;
|
|
90
74
|
/**
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
* ⚠️ ERA `viz: string`, E O COMENTÁRIO DIZIA: «shared by the contrast and CVD icons (they overwrite each
|
|
94
|
-
* other; **that is by design**)». Não era desenho — era o campo único a impor-se, e a frase é o defeito
|
|
95
|
-
* escrito como se fosse decisão. Os dois ícones sempre ciclaram DENTRO do seu eixo (`nextContrast` e
|
|
96
|
-
* `nextCvd` existem desde sempre, separados); só não tinham onde guardar o resultado sem apagar o vizinho.
|
|
75
|
+
* The visual state on TWO AXES (#104): the contrast icon cycles the theme and the colour icon cycles the correction,
|
|
76
|
+
* each within its own axis, and neither erases the other.
|
|
97
77
|
*/
|
|
98
78
|
visual: VisualState;
|
|
79
|
+
/** Playing by SPEAKING (ADR-0189): the 👄 of the bar, on or off. */
|
|
80
|
+
voice?: boolean;
|
|
81
|
+
/** Playing with ONE button (ADR-0218): the third position of ☝️, which wins over the latch when it is on. */
|
|
82
|
+
switchScan?: boolean;
|
|
83
|
+
/** The game speed (ADR-0180), a step of `core/game-speed`; absent reads as 100%. */
|
|
84
|
+
speed?: number;
|
|
85
|
+
/** Playing through the webcam (ADR-0215); absent reads as off. */
|
|
86
|
+
camera?: CameraControl;
|
|
87
|
+
/** The current locale (`core/i18n`), for the language button. */
|
|
88
|
+
locale?: string;
|
|
99
89
|
/** False disables the blind/TTS icons: those need an audio output nobody else is listening to. */
|
|
100
90
|
privateOutput: boolean;
|
|
101
91
|
/**
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
* O ícone fica desabilitado COM MOTIVO, como o painel — e não pode divergir dele: as duas superfícies
|
|
106
|
-
* escrevem o mesmo valor, e uma que aceitasse o clique enquanto a outra recusa deixaria a criança com
|
|
107
|
-
* dois botões que discordam sobre o mesmo ajuste.
|
|
92
|
+
* Does the device in use REQUIRE the latch? (ADR-0113 clause 3.) With the eyes, the face, gestures and speech the latch
|
|
93
|
+
* is what makes the input work, so there is no choice to offer: the ☝️ cycle then skips `standard` (see
|
|
94
|
+
* `inputModeOrder`).
|
|
108
95
|
*
|
|
109
|
-
*
|
|
110
|
-
* `tests/
|
|
111
|
-
* pacote, porque quem constrói este snapshot passa a ter de o preencher. Foi para isto que o gate da
|
|
112
|
-
* FORMA (`2f2582f`) foi escrito, e é a primeira vez que ele apanha um campo A ENTRAR e não a sair.
|
|
113
|
-
* Ausente significa «ninguém me disse», que degrada para «não exijo» — o comportamento de hoje.
|
|
96
|
+
* OPTIONAL because adding a required member to a published snapshot is a breaking change (the shape gate,
|
|
97
|
+
* `tests/public-surface-shrinks-by-declaration`, fails on it). Absent means «nobody told me», which degrades to «not required».
|
|
114
98
|
*/
|
|
115
|
-
|
|
99
|
+
latchRequired?: boolean;
|
|
100
|
+
/** No voice speaks the current language (ADR-0185): the narration icon is locked. Absent reads as a voice. */
|
|
101
|
+
noVoice?: boolean;
|
|
116
102
|
}
|
|
117
|
-
/** A player has private output when nobody else is on the same sink. Single screen ⇒ always private.
|
|
118
|
-
* Pure form of game.js's hasPrivateOutput (see the report: it had no other caller left). */
|
|
103
|
+
/** A player has private output when nobody else is on the same sink. Single screen ⇒ always private. */
|
|
119
104
|
export declare function hasPrivateOutputIn(list: readonly PausePlayer[], count: number, i: number): boolean;
|
|
120
|
-
/** TEA cycle step. */
|
|
121
|
-
export declare function nextCalmMode(cur: number): number;
|
|
122
|
-
/** Next high-contrast level. An unlisted `viz` (e.g. a CVD filter) is treated as index 0 ⇒ jumps to 'hc-direto'. */
|
|
123
|
-
export declare function nextContrast(cur: string | undefined): string;
|
|
124
|
-
/** Next CVD filter. NOTE the asymmetry with nextContrast: an unlisted `viz` maps to index 1 ('fix-protan'),
|
|
125
|
-
* not 0 — verbatim from game.js (`idx = idx<0 ? 1 : (idx+1)%seq.length`). */
|
|
126
|
-
export declare function nextCvd(cur: string | undefined): {
|
|
127
|
-
idx: number;
|
|
128
|
-
mode: string;
|
|
129
|
-
};
|
|
130
|
-
/** What `applyCalm` does to ONE audio category, given the TEA level. Extracted so the (destructive) volume
|
|
131
|
-
* clamp at level 1 is visible and testable — see the report. */
|
|
132
|
-
export declare function calmAudioPlan(calmMode: number, vol: number): {
|
|
133
|
-
on: boolean;
|
|
134
|
-
vol: number;
|
|
135
|
-
};
|
|
136
|
-
/** What `applyCalm` does to the scene/character reduced-motion flags. */
|
|
137
|
-
export declare function calmMotionPlan(calmMode: number): {
|
|
138
|
-
sceneReduced: boolean;
|
|
139
|
-
charFrozen: boolean;
|
|
140
|
-
};
|
|
141
105
|
/** The `aria-label` of one icon — it MUST reflect the current state, on/off or level. This is the whole
|
|
142
106
|
* point of the function: a toggle that looks pressed but does not say so is invisible to a screen reader. */
|
|
143
|
-
export declare function computeIconLabel(k: string, s: IconStateSnapshot): string;
|
|
107
|
+
export declare function computeIconLabel(t: Translate, k: string, s: IconStateSnapshot): string;
|
|
144
108
|
/** The visual state of one icon button. `active` is what becomes `aria-pressed`. */
|
|
145
109
|
export interface IconVisual {
|
|
146
110
|
/** `.pi-on` — the yellow "this is on" state. */
|
|
@@ -154,316 +118,250 @@ export interface IconVisual {
|
|
|
154
118
|
/** aria-pressed: on OR calm OR a CVD tint. */
|
|
155
119
|
active: boolean;
|
|
156
120
|
}
|
|
157
|
-
/** Pure form of reflectIconBtn's branching.
|
|
121
|
+
/** Pure form of reflectIconBtn's branching. */
|
|
158
122
|
export declare function computeIconVisual(k: string, s: IconStateSnapshot): IconVisual;
|
|
159
123
|
/** The CSS classes reflectIconBtn clears before applying a fresh visual — in the original order. */
|
|
160
124
|
export declare const ICON_STATE_CLASSES: readonly string[];
|
|
161
|
-
/** One `.pi-btn`. `soon` icons get `.pi-soon` and the "under construction" suffix baked into the aria-label.
|
|
162
|
-
* The label is the RESTING one: reflectIconBtn overwrites it with the stateful label as soon as the bar is
|
|
163
|
-
* reflected. `ic.n` is an i18n key, so it must be resolved here too — the markup is rendered once at build
|
|
164
|
-
* time and would otherwise ship the raw key to a screen reader. */
|
|
165
|
-
export declare function iconBtnMarkup(ic: PauseIcon): string;
|
|
166
125
|
/**
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
* oferece a uma criança um caminho e depois o recusa é pior do que uma barra que ela vê que não está lá,
|
|
171
|
-
* porque a primeira ensina-lhe que o caminho não é para ela».
|
|
172
|
-
*
|
|
173
|
-
* ⚠️ E O CONTRASTE E A COR SÃO O CASO REAL, medido em 2026-09-08 e diferente dos outros seis campos
|
|
174
|
-
* «acidentais»: eles não são estado que um cartucho calhou de guardar — precisam de um `render/viz-setters`,
|
|
175
|
-
* cujo contexto tem **34 campos** do grafo de render de UM jogo (`parallaxLayers`, `decoSprites`,
|
|
176
|
-
* `getPowerups`, `rebuildCoins`, `worldSprite`…). O `createGame` não monta isso, e um quiz não tem nada
|
|
177
|
-
* disso para montar. Então aqui a engine não pode oferecer um padrão — o que ela pode é **não fingir**.
|
|
178
|
-
*
|
|
179
|
-
* ⚠️ Isto NÃO é o mesmo que `soon`. `soon` é «ainda não construímos»; isto é «este jogo não tem por onde», e
|
|
180
|
-
* um botão que anuncia «em breve» diria a coisa errada.
|
|
126
|
+
* THE ICONS THIS GAME CAN ACTUALLY ACTIVATE (ADR-0106 §5): no stage may ship a dead button — «a bar that offers a child a
|
|
127
|
+
* way and then refuses it is worse than a bar she sees is not there, because the first teaches her the way is not for
|
|
128
|
+
* her». An icon with nothing to activate it is not mounted, rather than mounted to announce «soon».
|
|
181
129
|
*/
|
|
182
|
-
export interface
|
|
183
|
-
/**
|
|
184
|
-
readonly
|
|
185
|
-
/**
|
|
186
|
-
readonly
|
|
130
|
+
export interface ActionableIcons {
|
|
131
|
+
/** Is there anyone to write the THEME (high contrast)? Without it, the `contrast` icon is not mounted. */
|
|
132
|
+
readonly theme: boolean;
|
|
133
|
+
/** Is there anyone to write the colour CORRECTION? Without it, the `cvd` icon is not mounted. */
|
|
134
|
+
readonly correction: boolean;
|
|
187
135
|
/**
|
|
188
|
-
*
|
|
136
|
+
* DOES THIS GAME HOLD ANY KEY? — `GameDeclaration.holdsKeys`, the field of ADR-0115.
|
|
189
137
|
*
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
138
|
+
* The latch exists for whoever cannot keep a key pressed; in a game where nothing is held it has nothing to hold, and a
|
|
139
|
+
* control that does nothing teaches a child that the setting she depends on is broken. (A different absence from
|
|
140
|
+
* ADR-0113 clause 3's, where the device REQUIRES the latch: see `latchRequired`.)
|
|
193
141
|
*
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
|
|
197
|
-
|
|
142
|
+
* A FUNCTION, not a value (as in ADR-0084): an answer read once goes stale silently, and with one `createGame` serving
|
|
143
|
+
* several cartridges (ADR-0142) the icon would describe the game that booted first.
|
|
144
|
+
*/
|
|
145
|
+
readonly holdsKeys: () => boolean;
|
|
146
|
+
/**
|
|
147
|
+
* HOW MANY POSITIONS THIS GAME DECLARED (`CreateGameOptions.preset`, ADR-0162) — what a scan would have to offer (ADR-0218).
|
|
148
|
+
* A function like its neighbour, so a cartridge mounted later answers for itself (ADR-0142); absent reads as none.
|
|
149
|
+
*/
|
|
150
|
+
readonly declaredPositions?: () => number;
|
|
151
|
+
/**
|
|
152
|
+
* Does this game's time run by itself? (`tick: 'clock'`, ADR-0180.) Without it the hourglass is not mounted. A function,
|
|
153
|
+
* like `holdsKeys`, so a cartridge mounted later answers for itself (ADR-0142).
|
|
154
|
+
*/
|
|
155
|
+
readonly clock?: () => boolean;
|
|
156
|
+
/**
|
|
157
|
+
* Does anyone know how to walk the typography cycle? (ADR-0149 §1.)
|
|
198
158
|
*
|
|
199
|
-
*
|
|
200
|
-
*
|
|
201
|
-
* acções deste jogo pode ter mudado desde a montagem» (ADR-0106 §5), e refrescava a partir de um booleano
|
|
202
|
-
* congelado no arranque. Com um `createGame` a servir vários cartuchos (ADR-0142), o ícone descrevia o
|
|
203
|
-
* jogo que arrancou primeiro. O contrato nunca esteve errado: `GameDeclaration.seguraTeclas` já é função.
|
|
159
|
+
* OPTIONAL, absent meaning `false` — unlike `holdsKeys`, which is required because both of its values can be wrong.
|
|
160
|
+
* Here `false` hides an icon that would do nothing, which is exactly what ADR-0106 §5 wants.
|
|
204
161
|
*/
|
|
205
|
-
readonly
|
|
162
|
+
readonly typography?: boolean;
|
|
163
|
+
/** Can this device play through the webcam — is there a camera to ask for? Without it the 📷 is not mounted (ADR-0215). */
|
|
164
|
+
readonly camera?: boolean;
|
|
165
|
+
/** Is there a microphone to ask for? Without one the 👄 is not mounted. */
|
|
166
|
+
readonly microphone?: boolean;
|
|
167
|
+
/** Is there a card of menus to open? Without it the ☰ is not mounted. */
|
|
168
|
+
readonly menus?: boolean;
|
|
206
169
|
}
|
|
207
170
|
/**
|
|
208
|
-
* @deprecated
|
|
209
|
-
*
|
|
210
|
-
* major — uma pelo campo novo e outra pelo nome.
|
|
211
|
-
*/
|
|
212
|
-
export type EscritoresVisuais = AccionaveisDoJogo;
|
|
213
|
-
export declare function iconesQueAccionam(escritores: AccionaveisDoJogo): readonly PauseIcon[];
|
|
214
|
-
/**
|
|
215
|
-
* OS TRÊS ITENS QUE A ENGINE ACCIONA SOZINHA, e que por isso nunca dependem do `getPauseActs` de um jogo.
|
|
216
|
-
*
|
|
217
|
-
* 📏 Lidos do despacho, e não decididos aqui: `options`/`pmback` trocam qual lista está no cartão e
|
|
218
|
-
* `acessibilidade` leva o cursor à barra rápida — os três são tratados neste módulo e voltam antes de a
|
|
219
|
-
* tabela do jogo ser consultada.
|
|
220
|
-
*/
|
|
221
|
-
export declare const ITENS_DA_ENGINE: ReadonlySet<string>;
|
|
222
|
-
/**
|
|
223
|
-
* OS ITENS DO MENU QUE ESTE JOGO CONSEGUE MESMO ACCIONAR (ADR-0106 §5).
|
|
224
|
-
*
|
|
225
|
-
* ⚠️ HOJE UM ITEM SEM ACÇÃO É UM BOTÃO MORTO, E EM SILÊNCIO. O despacho faz `const fn = acts[act]; if (fn)
|
|
226
|
-
* fn();` — quem carrega num item que o jogo não implementou não recebe erro, não recebe anúncio, não recebe
|
|
227
|
-
* nada. Para quem vê, parece que o clique falhou; para quem navega por leitor de tela, o menu leu-lhe um
|
|
228
|
-
* item que não existe. É exactamente o que o §5 chama de pior do que a ausência: «uma barra que oferece um
|
|
229
|
-
* caminho e depois o recusa ensina-lhe que o caminho não é para ela».
|
|
230
|
-
*/
|
|
231
|
-
export declare function itensQueAccionam(botoes: readonly PauseMenuButton[], acts: Record<string, (() => void) | undefined>): readonly PauseMenuButton[];
|
|
232
|
-
/**
|
|
233
|
-
* A LISTA RAIZ, com uma regra a mais: `options` é uma PORTA, e uma porta para uma sala vazia também é um
|
|
234
|
-
* botão morto.
|
|
235
|
-
*
|
|
236
|
-
* ⚠️ Esta é a parte que um filtro item-a-item não apanha. Se todos os painéis de ajuste forem filtrados —
|
|
237
|
-
* um jogo que não monta nenhum —, o item `options` sobrevive (a engine acciona-o) e abre uma lista sem nada.
|
|
238
|
-
* A criança atravessa uma porta e fica presa num submenu vazio, cuja única saída é o `pmback` que também
|
|
239
|
-
* sumiu com ele.
|
|
240
|
-
*/
|
|
241
|
-
export declare function raizQueAcciona(raiz: readonly PauseMenuButton[], opcoes: readonly PauseMenuButton[], acts: Record<string, (() => void) | undefined>): readonly PauseMenuButton[];
|
|
242
|
-
/** The whole icon bar. Used by the pause screen AND by the splash `#title-icons` (which built the same string
|
|
243
|
-
* by hand in game.js — that duplication dies with this export).
|
|
244
|
-
* O parâmetro é ADITIVO e o padrão é a lista inteira: quem já chamava sem argumentos não muda de resultado. */
|
|
245
|
-
export declare function iconsMarkup(icones?: readonly PauseIcon[]): string;
|
|
246
|
-
/** One `.pm-btn`. Dynamic labels (`letra`/`nivel`) are rendered eagerly and carry NO `data-i18n`, so
|
|
247
|
-
* i18n.applyDom() cannot overwrite them. */
|
|
248
|
-
/**
|
|
249
|
-
* ⚠️ O RÓTULO DINÂMICO ENTRA PRONTO (item 19), e a mudança conserta DUAS coisas de uma vez.
|
|
250
|
-
*
|
|
251
|
-
* A linha era `'📚 Nível ' + level + ' · ' + qlName[level]` — e ela tinha dois defeitos que só se enxergam
|
|
252
|
-
* juntos:
|
|
253
|
-
*
|
|
254
|
-
* 1. FRONTEIRA. `level` vinha de `core/state.quizLevel` e `qlName` de uma tabela do jogo. Um menu de pausa
|
|
255
|
-
* da ENGINE montava o rótulo de uma atividade de alfabetização — conteúdo pedagógico, não mecânica.
|
|
256
|
-
* 2. IDIOMA. "Nível" é pt-BR CRU dentro de um módulo de engine. O gate do item 14 vigia o `main.js` e não
|
|
257
|
-
* alcança `ui/`, então esta linha atravessou a i18n inteira sem ser vista. Num build em inglês, o menu
|
|
258
|
-
* de pausa de uma criança dizia "📚 Nível 2 · …".
|
|
259
|
-
*
|
|
260
|
-
* Agora o jogo entrega a frase montada (`dynLabel`), e a engine só a coloca no botão. O jogo é quem sabe o
|
|
261
|
-
* que é um nível, quem sabe o nome dele e quem sabe em que idioma dizê-lo.
|
|
262
|
-
*/
|
|
263
|
-
export declare function pmBtnMarkup(b: PauseMenuButton, dynLabel: (b: PauseMenuButton) => string | null, tr: (key: string) => string): string;
|
|
264
|
-
/**
|
|
265
|
-
* Qual das duas listas o cartão de pausa está mostrando.
|
|
266
|
-
*
|
|
267
|
-
* DUAS listas no markup, UMA visível — e a escondida carrega `hidden`, que a tira da árvore de acessibilidade
|
|
268
|
-
* inteira. É o que faz "um menu por tela" (ADR-0044 §5) valer para quem escuta e não só para quem vê, e é o
|
|
269
|
-
* que permite o anel dar a volta DENTRO da lista visível sem nunca atravessar para a outra.
|
|
171
|
+
* @deprecated The name said «VISUAL writers», and the question stopped being only visual when `holdsKeys` joined it
|
|
172
|
+
* (ADR-0115). Use `ActionableIcons`.
|
|
270
173
|
*/
|
|
271
|
-
export type
|
|
174
|
+
export type VisualWriters = ActionableIcons;
|
|
175
|
+
export declare function iconsThatAct(writers: ActionableIcons): readonly PauseIcon[];
|
|
272
176
|
/**
|
|
273
|
-
*
|
|
274
|
-
*
|
|
275
|
-
*
|
|
276
|
-
* `ui/shell` e a troca de submenu aqui). Enquanto fosse `.pm-btn` escrito três vezes, bastaria um deles
|
|
277
|
-
* esquecer o `:not([hidden])` para o anel atravessar para a lista invisível — e a criança ouviria itens de um
|
|
278
|
-
* menu que não está na tela.
|
|
177
|
+
* THE ROOT LIST, with one more rule: `options` is a DOOR, and a door to an empty room acts no more than a dead button.
|
|
178
|
+
* An item-by-item filter misses this: the engine activates `options` itself, so it would pass and open a list with
|
|
179
|
+
* nothing in it.
|
|
279
180
|
*/
|
|
280
|
-
export declare
|
|
281
|
-
/** O innerHTML de UMA `.pause-menu`: a lista, e só ela. */
|
|
282
|
-
export declare function pauseMenuHtml(bs: readonly PauseMenuButton[], sub: PauseSub, dynLabel: (b: PauseMenuButton) => string | null, tr: (key: string) => string): string;
|
|
181
|
+
export declare function rootThatActs(rootEl: readonly PauseMenuButton[], options: readonly PauseMenuButton[], acts: Record<string, (() => void) | undefined>, fromGame?: readonly PauseMenuButton[]): readonly PauseMenuButton[];
|
|
283
182
|
/**
|
|
284
|
-
*
|
|
183
|
+
* The navigable items of a pause card — those of the VISIBLE list, and only those.
|
|
285
184
|
*
|
|
286
|
-
*
|
|
287
|
-
*
|
|
288
|
-
*
|
|
185
|
+
* One constant because THREE modules ask (navigation in `ui/menu-nav`, the first selection in `ui/shell` and the list
|
|
186
|
+
* switch here): if one of them forgot `:not([hidden])`, the ring would step into the invisible list and the child would
|
|
187
|
+
* hear items of a menu that is not on screen. `:not([hidden])` on the ITEM too: a hidden item must not be reached nor
|
|
188
|
+
* counted in «N de M» (a locked one is not hidden — it is reached, and says why).
|
|
289
189
|
*/
|
|
290
|
-
export declare
|
|
190
|
+
export declare const PM_VISIBLE_ITEMS = ".pause-menu:not([hidden]) .pm-btn:not([hidden])";
|
|
291
191
|
/**
|
|
292
|
-
*
|
|
192
|
+
* Switches the visible list of ONE pause card, and puts the cursor on the FIRST item of the list that came in.
|
|
293
193
|
*
|
|
294
|
-
*
|
|
295
|
-
*
|
|
296
|
-
* secundário é estrutural — sem ela, o cartão deixa de ter duas zonas e vira uma LISTA, o que é o que
|
|
297
|
-
* finalmente autoriza o anel (a XAG 106 permite laço para menu linear e o proíbe para grade).
|
|
298
|
-
*
|
|
299
|
-
* A LEGENDA VIAJA JUNTO. Ela é a dica que substitui, para quem não vê, o `title` que só o mouse revela;
|
|
300
|
-
* deixá-la no cartão tornaria a barra do HUD muda.
|
|
194
|
+
* Free-standing (not a method of `init`) on purpose: `ui/menu-nav` needs it for «no» to go back to the root, and it has no
|
|
195
|
+
* access to the button tables. Every list already exists in the markup, so the switch is DOM only.
|
|
301
196
|
*/
|
|
302
|
-
export declare function
|
|
197
|
+
export declare function showPauseOptions(sp: HTMLElement, sub: PauseSub): HTMLElement | null;
|
|
303
198
|
/**
|
|
304
|
-
*
|
|
199
|
+
* WHAT AN INTENT MEANS INSIDE THE `accessibility` MODE (ADR-0044 item 7).
|
|
305
200
|
*
|
|
306
|
-
*
|
|
307
|
-
*
|
|
308
|
-
* VOLTAR) é parte da decisão, e não um detalhe de implementação".
|
|
201
|
+
* The record lists this mode among the decision's NEGATIVE consequences, and says why: a mode one enters and does not
|
|
202
|
+
* know how to leave is the very trap the record is about — so its way out (START or BACK) is part of the decision.
|
|
309
203
|
*
|
|
310
|
-
*
|
|
311
|
-
*
|
|
312
|
-
*
|
|
313
|
-
* criança adivinhe qual delas foi escolhida.
|
|
204
|
+
* Hence the shape: LEAVING comes first, through TWO doors. BACK is the way out of everything in the game, the one a child
|
|
205
|
+
* who knows it tries first; START is the button that OPENS the pause, and the pause is where this mode was entered from —
|
|
206
|
+
* whoever gets lost tries to go back the way they came. One door only would be betting that the child guesses which.
|
|
314
207
|
*
|
|
315
|
-
*
|
|
316
|
-
*
|
|
208
|
+
* The precedence is a decision too: a controller can report more than one edge in the same frame (fingers press
|
|
209
|
+
* together), and in that frame leaving must not come after activating.
|
|
317
210
|
*/
|
|
318
|
-
export type
|
|
319
|
-
export declare function
|
|
320
|
-
export interface ScreenPauseMarkupOpts {
|
|
321
|
-
/** Screen/player index (0-based); the dialog label and the "· Jogador N" suffix are 1-based. */
|
|
322
|
-
player: number;
|
|
323
|
-
/** Live player count — the suffix only appears in multiplayer. */
|
|
324
|
-
numPlayers: number;
|
|
325
|
-
/** A lista RAIZ: os sete itens do ADR-0044, `resume` primeiro e `quit` último. */
|
|
326
|
-
pmButtons: readonly PauseMenuButton[];
|
|
327
|
-
/** O submenu de opções: os sete painéis de ajuste, com o "Voltar" na frente. */
|
|
328
|
-
optionsButtons: readonly PauseMenuButton[];
|
|
329
|
-
/** Rótulo pronto de um botão DINÂMICO, ou `null` se aquele botão não tem um. Quem monta a frase é o jogo. */
|
|
330
|
-
dynLabel: (b: PauseMenuButton) => string | null;
|
|
331
|
-
t: (key: string) => string;
|
|
332
|
-
}
|
|
333
|
-
/** The full innerHTML of a `.screen-pause`. Pure — every input is a parameter. */
|
|
334
|
-
export declare function screenPauseMarkup(o: ScreenPauseMarkupOpts): string;
|
|
211
|
+
export type BarAction = 'sair' | 'ativar' | 'andar' | 'nada';
|
|
212
|
+
export declare function barAction(k: NavKeys, hasStart: boolean): BarAction;
|
|
335
213
|
export interface PauseIconsCtx {
|
|
336
214
|
/**
|
|
337
|
-
*
|
|
338
|
-
*
|
|
339
|
-
* ⚠️ ISTO É O ACHADO 15 OUTRA VEZ, e o `boot/create-game` já o descreve no próprio cabeçalho: «`initI18n()`
|
|
340
|
-
* chamava `applyDom(document)`, o GLOBAL, por baixo de quem a chamasse. Num navegador dá no mesmo e por
|
|
341
|
-
* isso sobreviveu; num teste de lógica pura é a diferença entre bootar e não bootar, e num futuro com dois
|
|
342
|
-
* documentos (uma engine em iframe, um editor ao lado do jogo) seria a diferença entre traduzir o documento
|
|
343
|
-
* certo e o outro.»
|
|
344
|
-
*
|
|
345
|
-
* 📏 Medido em 2026-09-08: as duas metades que constroem DOM (`buildScreenPause`, `buildQuickBar`) faziam
|
|
346
|
-
* `document.createElement` no global. Enquanto a raiz de composição de cada jogo era um `main.ts` a correr
|
|
347
|
-
* num navegador, dava no mesmo — e foi por isso que sobreviveu. Deixa de dar assim que a ENGINE monta,
|
|
348
|
-
* porque o `createGame` recebe o documento por `host.doc` e pode estar a montar noutro.
|
|
215
|
+
* The root's translator (ADR-0232 D3 erratum): its `t`, the page's language — the 🌐 shows it as a flag — and the setter
|
|
216
|
+
* the 🌐 switches it with. A Pick and not a bare `t`, because the bar reads and sets the language.
|
|
349
217
|
*/
|
|
350
|
-
|
|
351
|
-
/**
|
|
352
|
-
*
|
|
353
|
-
*
|
|
218
|
+
translator: Pick<Translator, 't' | 'locale' | 'setLocale'>;
|
|
219
|
+
/**
|
|
220
|
+
* The DOCUMENT where the pause card and the bar are BUILT. REQUIRED (ADR-0232 D4): `createGame` receives its document
|
|
221
|
+
* through `host.doc` and may be building in another one (an iframe, an editor beside the game), and a fallback to the
|
|
222
|
+
* global would put the card in the wrong document — or throw where there is none.
|
|
223
|
+
*/
|
|
224
|
+
doc: Pick<Document, 'createElement'>;
|
|
225
|
+
/** How many players/screens. ROUND state (ADR-0038): it comes from the instance the host owns — a module-level
|
|
226
|
+
* binding would be shared by a second game on the same page. */
|
|
354
227
|
getNumPlayers: () => number;
|
|
355
|
-
/**
|
|
356
|
-
*
|
|
228
|
+
/** The players. ROUND state, for the same reason. `readonly unknown[]` because each consumer narrows to ITS slice —
|
|
229
|
+
* the real type is the game's, not the engine's (ADR-0033). */
|
|
357
230
|
getPlayers: () => readonly unknown[];
|
|
358
231
|
/** aria-live "polite" — every successful toggle announces its NEW state. */
|
|
359
232
|
srSay: (text: string) => void;
|
|
360
|
-
/** aria-live "assertive" — the
|
|
233
|
+
/** aria-live "assertive" — the refusals (a shared audio output, a device that always latches). */
|
|
361
234
|
srAlert: (text: string) => void;
|
|
362
235
|
/**
|
|
363
|
-
*
|
|
364
|
-
*
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
236
|
+
* Called after EVERY exit from the bar mode, with the screen and whether it was silent. Absent, nothing happens. It lets
|
|
237
|
+
* the root unfreeze the game whichever door was used (ADR-0155) — the bar knows nothing of phases.
|
|
238
|
+
*/
|
|
239
|
+
onLeaveBar?: (i: number, silent: boolean) => void;
|
|
240
|
+
/**
|
|
241
|
+
* The icon screen `i` is pointing at — by the cursor of the bar, or hover/focus — or `null` when nothing is. The
|
|
242
|
+
* root writes that icon's EXPLANATION in the footer (the Dev: the name below the row, what it does in the footer;
|
|
243
|
+
* `CLAUDE.md` §4, the three zones). Absent, the bar still shows the name.
|
|
244
|
+
*/
|
|
245
|
+
explainIcon?: (i: number, k: string | null) => void;
|
|
246
|
+
/** A text for the screen footer — the reason of a locked pause item (ADR-0161) — or `null` to clear it. */
|
|
247
|
+
explainItem?: (text: string | null) => void;
|
|
248
|
+
/**
|
|
249
|
+
* The per-screen QUICK BARS (`.screen-a11y`), in player order. A getter, because the host rebuilds them when the number of
|
|
250
|
+
* screens changes. Separate from the pause card because the bar does not live inside it (ADR-0044 item 7) — colour
|
|
251
|
+
* correction is PER PLAYER, and reflecting the icons means finding that screen's bar.
|
|
368
252
|
*/
|
|
369
253
|
getA11yBars: () => readonly HTMLElement[];
|
|
370
|
-
/** PM_OPTIONS_BTNS —
|
|
254
|
+
/** PM_OPTIONS_BTNS — the options sub-list. */
|
|
371
255
|
optionsButtons?: readonly PauseMenuButton[];
|
|
372
|
-
/**
|
|
256
|
+
/** The GAME's list (ADR-0146). Absent = `PM_GAME_BTNS`, which is only «back» — and the door drops by itself. */
|
|
257
|
+
gameButtons?: readonly PauseMenuButton[];
|
|
258
|
+
/** PM_BTNS — the root `.pm-btn` list (`ui/pause-buttons`). */
|
|
373
259
|
pmButtons?: readonly PauseMenuButton[];
|
|
374
|
-
/** QL_NAME — literacy-level names, for the (dormant) `nivel` button. Same owner as pmButtons. */
|
|
375
260
|
/**
|
|
376
|
-
*
|
|
377
|
-
*
|
|
378
|
-
* Era `quizLevel` (importado de `core/state`) mais `qlName` (tabela do jogo), e este módulo montava a
|
|
379
|
-
* frase. Um menu de pausa da ENGINE não sabe o que é nível de alfabetização, nem em que idioma dizê-lo.
|
|
380
|
-
* Função e não valor, porque o rótulo muda em execução — de nível E de idioma.
|
|
261
|
+
* The ready LABEL of a dynamic button, or `null` when that button has none. A function, because the label changes at run
|
|
262
|
+
* time — in value and in language. A pause card of the ENGINE does not know what a literacy level is, nor how to say it.
|
|
381
263
|
*/
|
|
382
|
-
/** O rótulo dinâmico, pronto — ou `null`. Ausente: nenhum botão deste jogo tem rótulo dinâmico. */
|
|
383
264
|
dynLabel?: (b: PauseMenuButton) => string | null;
|
|
384
|
-
/** The `.pm-btn` action table
|
|
265
|
+
/** The `.pm-btn` action table, asked when an item is pressed (so it can be wired after this module). */
|
|
385
266
|
getPauseActs?: () => Record<string, (() => void) | undefined>;
|
|
386
|
-
/** Records which player opened the
|
|
387
|
-
* router, openHelp() and openOptions() all read it there. */
|
|
267
|
+
/** Records which player opened the card; the panels open scoped to that player. */
|
|
388
268
|
setPauseActor?: (i: number) => void;
|
|
389
|
-
|
|
390
|
-
|
|
269
|
+
getBlindMode: () => boolean;
|
|
270
|
+
setBlindMode?: (on: boolean) => void;
|
|
391
271
|
/**
|
|
392
|
-
*
|
|
393
|
-
*
|
|
394
|
-
* é o boot do consumidor. Este ctx pedia não-nulo, o que era uma promessa que a fonte não faz.
|
|
272
|
+
* The mixer by category. NULL until `initAudioMixer()`: `platform/audio`'s import is PURE (it reads no storage), and the
|
|
273
|
+
* host's boot initialises it.
|
|
395
274
|
*/
|
|
396
275
|
getAudioCat: () => Record<string, AudioCatState> | null;
|
|
397
276
|
/** Re-applies a category's gain node after `on`/`vol` changed. */
|
|
398
277
|
setCatGain: (k: string) => void;
|
|
399
|
-
/** Repaints the TTS row of the auditory panel
|
|
400
|
-
* `typeof reflectTTS==='function'` guard on a symbol that no longer exists, so it never fires. The guard is
|
|
401
|
-
* ported verbatim as `reflectTtsPanelEnabled` below rather than silently fixed. */
|
|
278
|
+
/** Repaints the TTS row of the auditory panel after the icon changes it. */
|
|
402
279
|
reflectTtsPanel: () => void;
|
|
403
|
-
/**
|
|
404
|
-
* today's behaviour (the panel is NOT refreshed), `true` to restore the intended call. */
|
|
280
|
+
/** Whether the TTS icon also calls `reflectTtsPanel`. `createGame` passes `true`; `false` leaves the panel as it was. */
|
|
405
281
|
reflectTtsPanelEnabled: boolean;
|
|
406
282
|
isLibrasOn: () => boolean;
|
|
407
283
|
toggleLibras: () => void;
|
|
284
|
+
/**
|
|
285
|
+
* THE PAGE'S STORE, built by the root (ADR-0232, issue #207): the calm level, the movement latch's default writer and the
|
|
286
|
+
* scene flags' default read and write through it. REQUIRED: a bar that stored nowhere would forget the calm level at every
|
|
287
|
+
* visit — for the child whom unexpected noise costs most — with no error at all.
|
|
288
|
+
*/
|
|
289
|
+
store: PauseIconsStore;
|
|
290
|
+
/**
|
|
291
|
+
* THE PAGE'S SETTINGS STORE (ADR-0232 D2c): what the icons read and cycle — game speed, the camera and voice controls,
|
|
292
|
+
* switch scanning, the menu index — and the default blind-mode writer. REQUIRED: a bar reading settings from nowhere
|
|
293
|
+
* would show every icon at its default and write the child's choice where no game reads it.
|
|
294
|
+
*/
|
|
295
|
+
settings: PauseIconsSettings;
|
|
408
296
|
rm?: MotionSceneFlags;
|
|
409
297
|
rmKeys?: readonly MotionSceneKey[];
|
|
410
298
|
rmChar?: readonly MotionCharDef[];
|
|
411
299
|
saveRM?: () => void;
|
|
300
|
+
/**
|
|
301
|
+
* The browser's media query (`win.matchMedia`), asked for `prefers-reduced-motion` when `rm` is absent and nothing is
|
|
302
|
+
* stored. MANDATORY and injected (ADR-0232, ADR-0227): this module reaches no global, and an optional port would let a
|
|
303
|
+
* host forget it and switch the animation back on for a child whose system asked for less.
|
|
304
|
+
*/
|
|
305
|
+
matchMedia: MediaQuery;
|
|
412
306
|
setToggleMove?: (i: number, on: boolean) => void;
|
|
413
307
|
/**
|
|
414
|
-
*
|
|
415
|
-
*
|
|
416
|
-
* 📌 O ícone `altmove` desta barra é a OUTRA superfície que escreve a alternância — a mesma razão pela
|
|
417
|
-
* qual o escritor voltou para a engine (ADR-0106 §4). Sem este campo, ele escreveria só a chave antiga
|
|
418
|
-
* enquanto o painel escreve as duas, e as duas superfícies divergiriam em silêncio.
|
|
308
|
+
* WHICH DEVICE THIS PLAYER IS USING (ADR-0113). The `altmove` icon is the OTHER surface that writes the latch, besides
|
|
309
|
+
* the panel: without this it would write a different key from the panel's, and the two surfaces would disagree silently.
|
|
419
310
|
*/
|
|
420
|
-
|
|
311
|
+
transportInUse?: (player: number) => string;
|
|
421
312
|
setPlayerViz?: (i: number, mode: string) => void;
|
|
422
|
-
/**
|
|
423
|
-
|
|
424
|
-
|
|
313
|
+
/** The writers PER AXIS (#104): changing the theme does not erase the correction, and vice versa. */
|
|
314
|
+
setPlayerTheme?: (i: number, theme: Theme) => void;
|
|
315
|
+
setPlayerCorrection?: (i: number, correction: Correction) => void;
|
|
425
316
|
/**
|
|
426
|
-
*
|
|
427
|
-
*
|
|
428
|
-
*
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
*
|
|
433
|
-
* é essa a condição que o `holdsAtOnce` já usou para ser obrigatório também.
|
|
434
|
-
*
|
|
435
|
-
* 📌 Quem passa pelo `createGame` não escreve isto: a raiz lê a declaração, que já é obrigatória. O campo
|
|
436
|
-
* só é visível para um cartucho que chame `initPauseIcons` por fora — e é exactamente esse que não pode
|
|
437
|
-
* ficar em silêncio.
|
|
317
|
+
* MOVES ONE STEP IN THE TYPOGRAPHY CYCLE and returns the face it landed on (ADR-0149 §1). ONE field, not two (read and
|
|
318
|
+
* write): the position belongs to whoever keeps the cycle; this module only needs the face's NAME to announce it.
|
|
319
|
+
* ABSENT = THE ICON IS NOT MOUNTED (ADR-0106 §5).
|
|
320
|
+
*/
|
|
321
|
+
cycleTypography?: () => string | null;
|
|
322
|
+
/**
|
|
323
|
+
* DOES THIS GAME HOLD ANY KEY? — `GameDeclaration.holdsKeys` (ADR-0115). Without it the `altmove` icon is not mounted.
|
|
438
324
|
*
|
|
439
|
-
* ⚠️
|
|
440
|
-
*
|
|
325
|
+
* ⚠️ REQUIRED, against ADR-0106's direction of making this ctx's fields optional: the fields that got a default have a
|
|
326
|
+
* SAFE one (blind mode starts off, the button lists come from the engine). This one has none — `true` mounts a control
|
|
327
|
+
* that may do nothing, `false` hides one a child depends on. Both are wrong, which is the same reason `holdsAtOnce` is
|
|
328
|
+
* required. Whoever goes through `createGame` never writes it: the root reads the declaration. A FUNCTION, not a value
|
|
329
|
+
* (see `ActionableIcons.holdsKeys`): a cartridge wiring this itself passes `() => declaration.holdsKeys()`.
|
|
441
330
|
*/
|
|
442
|
-
|
|
331
|
+
holdsKeys: () => boolean;
|
|
332
|
+
/** How many positions the current game declared — what «one button only» would scan (ADR-0218). Absent reads as none. */
|
|
333
|
+
declaredPositions?: () => number;
|
|
334
|
+
/** Does the current game's time run by itself? (ADR-0180: the hourglass.) Optional; absent, no hourglass. */
|
|
335
|
+
clock?: () => boolean;
|
|
336
|
+
/** Can this device play through the webcam? (ADR-0215: the 📷.) Optional; absent, no 📷. */
|
|
337
|
+
camera?: boolean;
|
|
338
|
+
/** Can this device hear the child — is there a microphone to ask for? (issue #184: the 👄.) Absent, no 👄. */
|
|
339
|
+
microphone?: boolean;
|
|
340
|
+
/** Opens the menus of seat `i`, as SELECT does (the ☰). Optional; absent, no ☰. */
|
|
341
|
+
openMenus?: (i: number) => void;
|
|
342
|
+
/** Does no voice speak the current language? (ADR-0185: the narration icon locks.) Optional; absent, a voice. */
|
|
343
|
+
noVoice?: () => boolean;
|
|
443
344
|
}
|
|
444
345
|
export interface PauseIconsApi {
|
|
445
346
|
/** Builds one `.screen-pause` (hidden), wired for click + hover/focus caption. Caller appends it. */
|
|
446
347
|
buildScreenPause: (i: number) => HTMLElement;
|
|
447
|
-
/**
|
|
348
|
+
/** Builds screen `i`'s QUICK BAR (`.screen-a11y`), already wired. Called by ui/hud.ts, one per screen. */
|
|
448
349
|
buildQuickBar: (i: number) => HTMLElement;
|
|
449
350
|
/**
|
|
450
|
-
*
|
|
451
|
-
*
|
|
452
|
-
*
|
|
453
|
-
* `buildQuickBar` (ele põe `tabIndex = -1`, e o próprio comentário lá diz porquê: no título não se está a
|
|
454
|
-
* jogar), então ela chama `iconsMarkup` directamente — e sem este acessor teria de recalcular quais ícones
|
|
455
|
-
* accionam, que é uma segunda cópia da mesma decisão.
|
|
351
|
+
* THE ICONS THIS INSTANCE MOUNTS — already filtered by ADR-0106 §5. It exists so the bar the root mounts in
|
|
352
|
+
* `#title-icons` (which cannot use `buildQuickBar`: that one sets `tabIndex = -1`, for a game in play) does not repeat
|
|
353
|
+
* the filter — a second copy of the same decision.
|
|
456
354
|
*/
|
|
457
|
-
|
|
458
|
-
/**
|
|
459
|
-
|
|
460
|
-
/**
|
|
461
|
-
|
|
462
|
-
/**
|
|
463
|
-
|
|
464
|
-
/**
|
|
465
|
-
navBar: (i: number, k: NavKeys,
|
|
466
|
-
/** Runs the icon `k` for screen `i`. Does NOT reflect — callers reflect after
|
|
355
|
+
mountedIcons: readonly PauseIcon[];
|
|
356
|
+
/** ENTERS screen `i`'s `accessibility` mode — the bar half of the quick pause (ADR-0155). Does not touch the phase. */
|
|
357
|
+
enterBar: (i: number) => void;
|
|
358
|
+
/** LEAVES the mode and gives the d-pad back to the character. `silent` = leaving for another screen, not for the game. */
|
|
359
|
+
leaveBar: (i: number, silent?: boolean) => void;
|
|
360
|
+
/** Is screen `i`'s d-pad on the BAR instead of on the character? Asked every frame. */
|
|
361
|
+
onBar: (i: number) => boolean;
|
|
362
|
+
/** One step inside the mode. `hasStart` is the pause button's edge — the second way out (ADR-0044 item 7). */
|
|
363
|
+
navBar: (i: number, k: NavKeys, hasStart?: boolean) => void;
|
|
364
|
+
/** Runs the icon `k` for screen `i`. Does NOT reflect — callers reflect after. */
|
|
467
365
|
iconAct: (k: string, i: number) => void;
|
|
468
366
|
/** The state-reflecting `aria-label` of icon `k` for screen `i`. */
|
|
469
367
|
iconLabel: (k: string, i: number) => string;
|