@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
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
import { DEFAULTS } from '../core/setting-defaults.js';
|
|
3
|
+
import { AAC_SETS, AAC_BY_KEY, aacReason } from './aac-sets.js';
|
|
4
|
+
import { markChanged, markMenuChanged } from './changed-mark.js';
|
|
5
|
+
import { controlRow, labelRow, sectionHeader } from './panel-widgets.js';
|
|
6
|
+
import { toggleLabel } from './dom.js';
|
|
7
|
+
/**
|
|
8
|
+
* The LETTERS row is a SWITCH, not two options (the Dev's decision). On = upper case only; off = upper and lower case.
|
|
9
|
+
* A binary question presented as two rows makes the child compare both to discover they are the same question.
|
|
10
|
+
*/
|
|
11
|
+
export function upperCaseOn(letterCase) {
|
|
12
|
+
return letterCase === 'upper';
|
|
13
|
+
}
|
|
14
|
+
/** The id of a set's control. It comes from the catalogue `key`, unique by construction (`AAC_BY_KEY`). */
|
|
15
|
+
export const aacControlId = (key) => `caa-set-${key}`;
|
|
16
|
+
/** The letters switch. Always available: it is the offline floor, and never depended on any file. */
|
|
17
|
+
export function lettersRowSpec(t) {
|
|
18
|
+
return { id: 'caa-caixa-alta', label: t('aac.letras'), hint: t('aac.letras.dica') };
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* A menu row: a SHORT LABEL and nothing else in view.
|
|
22
|
+
*
|
|
23
|
+
* Everything that explains — note, licence, status — goes into a single `.opt-hint`, which the shell (`fillExplain`)
|
|
24
|
+
* recognises and MOVES to the footer. Prose hung inside the row turns the menu into a manual, closer to a configuration
|
|
25
|
+
* file than to a videogame menu — the Dev saw exactly that.
|
|
26
|
+
*
|
|
27
|
+
* `ariaLabel` carries the reason, so whoever navigates by keyboard hears why the row does not respond without hunting
|
|
28
|
+
* for the footer. `disabled` belongs to the CONTROL and not the text: the status leaves the label, never the button.
|
|
29
|
+
*/
|
|
30
|
+
export function aacRowSpec(t, s) {
|
|
31
|
+
const reason = aacReason(s);
|
|
32
|
+
const explains = [s.note, s.license ? `Licença: ${s.license}` : '', reason ? t(reason) : '']
|
|
33
|
+
.filter(Boolean).join(' · ');
|
|
34
|
+
return {
|
|
35
|
+
id: aacControlId(s.key),
|
|
36
|
+
label: s.name,
|
|
37
|
+
...(explains ? { hint: explains } : {}),
|
|
38
|
+
ariaLabel: `${s.name}${reason ? ', ' + t(reason) : ''}`,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The menu's three sections, in decision order: the section says WHOSE turn it is to act.
|
|
43
|
+
*
|
|
44
|
+
* 📌 Each produces its own rows instead of filtering the catalogue, because the first does not come from the catalogue
|
|
45
|
+
* — the letters are a switch and not a set, the Dev's decision that took them out of the list. A table whose first row
|
|
46
|
+
* is the exception to all the others lies about what it is.
|
|
47
|
+
*/
|
|
48
|
+
export const AAC_SECTIONS = [
|
|
49
|
+
{ title: 'aac.secao.agora', tag: 'aac.secao.agoraTag', rows: (t) => [lettersRowSpec(t)] },
|
|
50
|
+
{
|
|
51
|
+
title: 'aac.secao.preparo',
|
|
52
|
+
tag: 'aac.secao.preparoTag',
|
|
53
|
+
rows: (t) => AAC_SETS.filter((s) => s.tier !== 'negotiating').map((s) => aacRowSpec(t, s)),
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
title: 'aac.secao.negociacao',
|
|
57
|
+
tag: 'aac.secao.negociacaoTag',
|
|
58
|
+
rows: (t) => AAC_SETS.filter((s) => s.tier === 'negotiating').map((s) => aacRowSpec(t, s)),
|
|
59
|
+
},
|
|
60
|
+
];
|
|
61
|
+
/**
|
|
62
|
+
* Mounts the menu's inside ONCE. Called again, it RELABELS instead of rebuilding.
|
|
63
|
+
*
|
|
64
|
+
* ⚠️ Relabel and not rebuild, for the reason `labelRow` already states: listeners are wired at boot, and remaking the
|
|
65
|
+
* row would leave a control in the document with no listener — a dead button that looks alive (ADR-0106 §5). And the
|
|
66
|
+
* text may have been captured at boot, while the language was still the fallback.
|
|
67
|
+
*/
|
|
68
|
+
export function mountAacInside(t, ctx, list) {
|
|
69
|
+
for (const section of AAC_SECTIONS) {
|
|
70
|
+
const specs = section.rows(t);
|
|
71
|
+
const header = sectionHeader(ctx, t(section.title), t(section.tag), specs.length);
|
|
72
|
+
if (header && !list.querySelector(`[data-caa-section="${section.title}"]`)) {
|
|
73
|
+
header.setAttribute('data-caa-section', section.title);
|
|
74
|
+
list.appendChild(header);
|
|
75
|
+
}
|
|
76
|
+
for (const spec of specs) {
|
|
77
|
+
const old = ctx.find('#' + spec.id)?.closest('.ctrl-row');
|
|
78
|
+
if (old)
|
|
79
|
+
labelRow(old, spec);
|
|
80
|
+
else
|
|
81
|
+
list.appendChild(newRow(ctx, spec));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* A new row, with what the kit does not know about this panel: the set's key and the lock.
|
|
87
|
+
*
|
|
88
|
+
* No set is available today. A button that does nothing is worse than absence, because it spends trust — so it comes
|
|
89
|
+
* locked, and the reason is already in `ariaLabel` for whoever navigates by keyboard.
|
|
90
|
+
*/
|
|
91
|
+
function newRow(ctx, spec) {
|
|
92
|
+
const { row: row, control: control } = controlRow(ctx, spec);
|
|
93
|
+
if (spec.id === 'caa-caixa-alta') {
|
|
94
|
+
row.id = 'caa-letras';
|
|
95
|
+
return row;
|
|
96
|
+
}
|
|
97
|
+
const key = spec.id.replace('caa-set-', '');
|
|
98
|
+
control.setAttribute('data-caa', key);
|
|
99
|
+
if (!AAC_BY_KEY[key]?.available)
|
|
100
|
+
control.setAttribute('disabled', '');
|
|
101
|
+
return row;
|
|
102
|
+
}
|
|
103
|
+
export function initSettingsAac(ctx) {
|
|
104
|
+
const { t } = ctx;
|
|
105
|
+
/*
|
|
106
|
+
* 📌 THE KIT'S CTX COMES FROM THE LIST NODE ITSELF, not from a global `document` nor a new contract field.
|
|
107
|
+
* `ownerDocument` is the document that list LIVES in — exactly the document the rows must be born in —, so this
|
|
108
|
+
* module's global reach stays ZERO (ADR-0221) and `SettingsAacCtx`, which is published surface, gains no required
|
|
109
|
+
* member (ADR-0172).
|
|
110
|
+
*/
|
|
111
|
+
const panelCtx = (list) => ({
|
|
112
|
+
find: (sel) => ctx.$(sel),
|
|
113
|
+
create: (tag) => list.ownerDocument.createElement(tag),
|
|
114
|
+
});
|
|
115
|
+
function reflect() {
|
|
116
|
+
const b = ctx.$('#caa-caixa-alta');
|
|
117
|
+
if (!b)
|
|
118
|
+
return;
|
|
119
|
+
const on = upperCaseOn(ctx.getLetterCase());
|
|
120
|
+
b.classList.toggle('is-on', on);
|
|
121
|
+
b.setAttribute('aria-pressed', String(on));
|
|
122
|
+
// The switch's text is the STATE; its name is in the `<strong>` beside it and in the `aria-label`.
|
|
123
|
+
b.textContent = toggleLabel(t, on);
|
|
124
|
+
}
|
|
125
|
+
function render() {
|
|
126
|
+
const el = ctx.$('#caa-list');
|
|
127
|
+
if (!el)
|
|
128
|
+
return;
|
|
129
|
+
mountAacInside(t, panelCtx(el), el);
|
|
130
|
+
reflect();
|
|
131
|
+
ctx.fillExplain(ctx.$('#caa .overlay__card'));
|
|
132
|
+
refreshMarks();
|
|
133
|
+
}
|
|
134
|
+
/** The left-the-default mark (ADR-0029), on the chosen row and on the menu's button. */
|
|
135
|
+
function refreshMarks() {
|
|
136
|
+
const changed = ctx.getLetterCase() !== DEFAULTS.letterCase;
|
|
137
|
+
markChanged(t, ctx.$('#caa-letras'), changed);
|
|
138
|
+
markMenuChanged(t, ctx.$('[data-act="caa"]'), [changed]);
|
|
139
|
+
}
|
|
140
|
+
function open() {
|
|
141
|
+
const ov = ctx.$('#caa');
|
|
142
|
+
if (!ov)
|
|
143
|
+
return;
|
|
144
|
+
render();
|
|
145
|
+
ov.hidden = false;
|
|
146
|
+
ctx.frontOverlay(ov);
|
|
147
|
+
const f = ov.querySelector('button');
|
|
148
|
+
if (f)
|
|
149
|
+
f.focus();
|
|
150
|
+
}
|
|
151
|
+
function close() {
|
|
152
|
+
const ov = ctx.$('#caa');
|
|
153
|
+
if (!ov)
|
|
154
|
+
return;
|
|
155
|
+
ov.hidden = true;
|
|
156
|
+
ctx.restoreFocus?.('caa');
|
|
157
|
+
}
|
|
158
|
+
/*
|
|
159
|
+
* The listeners are wired ONCE, on the list, by delegation — which mounting once allows. What protects an
|
|
160
|
+
* unavailable set is its own button's `disabled`, written where it is born; a listener that only guards and then does
|
|
161
|
+
* nothing would be inert code dressed as protection.
|
|
162
|
+
*/
|
|
163
|
+
const list = ctx.$('#caa-list');
|
|
164
|
+
if (list)
|
|
165
|
+
list.addEventListener('click', (ev) => {
|
|
166
|
+
const hit = ev.target?.closest('#caa-caixa-alta');
|
|
167
|
+
if (!hit)
|
|
168
|
+
return;
|
|
169
|
+
const turnOn = !upperCaseOn(ctx.getLetterCase());
|
|
170
|
+
ctx.setLetterCase(turnOn ? 'upper' : 'mixed');
|
|
171
|
+
render();
|
|
172
|
+
ctx.srSay(t(turnOn ? 'sr.aac.caixaAltaOn' : 'sr.aac.caixaAltaOff'));
|
|
173
|
+
});
|
|
174
|
+
const closeBtn = ctx.$('#caa-close');
|
|
175
|
+
if (closeBtn)
|
|
176
|
+
closeBtn.addEventListener('click', close);
|
|
177
|
+
// ---- reset THIS menu's defaults (ADR-0028) ----
|
|
178
|
+
// The menu has one choice, so the reset is one line — but where it returns to is worth saying: the default case,
|
|
179
|
+
// where Brazilian literacy usually starts. A child who switched the case and can no longer read the screen needs a way
|
|
180
|
+
// back that ends at what their teacher uses.
|
|
181
|
+
const resetBtn = ctx.$('#caa-reset');
|
|
182
|
+
if (resetBtn)
|
|
183
|
+
resetBtn.addEventListener('click', () => {
|
|
184
|
+
ctx.setLetterCase(DEFAULTS.letterCase);
|
|
185
|
+
render();
|
|
186
|
+
ctx.srSay(t('sr.aac.reset'));
|
|
187
|
+
});
|
|
188
|
+
return { render, open, close };
|
|
189
|
+
}
|
|
@@ -1,49 +1,46 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
import type { Translate, Translator } from '../core/i18n.js';
|
|
2
3
|
import type { PlayerView } from '../core/entity.js';
|
|
3
4
|
import type { PlayerAudioOut } from '../platform/audio-sonar.js';
|
|
4
5
|
import type { DomQuery } from '../core/dom-query.js';
|
|
6
|
+
import type { PanelShellCtx } from './panel-shell.js';
|
|
7
|
+
import { type TtsPanel, type VoiceSettingsStore } from './voice-settings.js';
|
|
5
8
|
export type { DomQuery } from '../core/dom-query.js';
|
|
6
9
|
/** Minimal platform/storage.ts shape this module needs (get/set only — no direct localStorage access). */
|
|
7
10
|
export interface AudioStore {
|
|
8
11
|
get(key: string, fallback?: string | null): string | null;
|
|
9
12
|
set(key: string, value: string | number | boolean): boolean;
|
|
10
13
|
}
|
|
11
|
-
|
|
12
|
-
k: string;
|
|
13
|
-
lbl: string;
|
|
14
|
-
}
|
|
15
|
-
export interface AudioCatState {
|
|
16
|
-
on: boolean;
|
|
17
|
-
vol: number;
|
|
18
|
-
}
|
|
19
|
-
export interface TtsPanelEngine {
|
|
20
|
-
id: string;
|
|
21
|
-
speak: (text: string) => void;
|
|
22
|
-
}
|
|
23
|
-
/** Minimal shape of the injected `tts` (platform/tts.ts's createTts() instance) this panel drives. */
|
|
24
|
-
export interface TtsPanel {
|
|
25
|
-
getEngineSel: () => string;
|
|
26
|
-
setEngineSel: (v: string) => void;
|
|
27
|
-
getEngine: () => TtsPanelEngine | null;
|
|
28
|
-
getVoiceObj: () => SpeechSynthesisVoice | null;
|
|
29
|
-
setVoiceObj: (v: SpeechSynthesisVoice | null) => void;
|
|
30
|
-
loadTTS: () => void;
|
|
31
|
-
narrate: (text: string) => void;
|
|
32
|
-
/**
|
|
33
|
-
* ESTA MONTAGEM TEM MOTOR NEURAL? (ADR-0094) OPCIONAL, e a ausência vale `true`: um falso de teste
|
|
34
|
-
* escrito antes deste campo não tem opinião sobre motores neurais, e fazê-lo esconder o Piper mudaria o
|
|
35
|
-
* que esse teste afirma sem que ninguém tenha escrito a mudança.
|
|
36
|
-
*/
|
|
37
|
-
neuralDisponivel?: boolean;
|
|
38
|
-
}
|
|
14
|
+
import { type AudioCatDef, type AudioCatState } from './audio-choices.js';
|
|
39
15
|
/**
|
|
40
|
-
*
|
|
16
|
+
* A player's dedicated audio output: the device id and the AudioContext/gain it opened.
|
|
41
17
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
18
|
+
* The id is the entity's (a persisted player preference); the `_ac`/`_acOut` pair is `platform/audio-sonar`'s, which
|
|
19
|
+
* creates them. Hence the intersection instead of three keys in one view.
|
|
44
20
|
*/
|
|
45
21
|
export type SinkPlayer = PlayerView<'audioSink'> & PlayerAudioOut;
|
|
22
|
+
/**
|
|
23
|
+
* THE SETTINGS THIS PANEL READS AND WRITES — the page's settings store, built by the root (ADR-0232 D2c, issue #207): the
|
|
24
|
+
* voice section's (the spoken index and the speech rate) and the default blind-mode writer. A root passes `core/state`.
|
|
25
|
+
*/
|
|
26
|
+
export interface SettingsAudioSettings extends VoiceSettingsStore {
|
|
27
|
+
/** Write, persist, notify — used when the host injects no `setBlindMode`. */
|
|
28
|
+
setBlindModeValue(on: boolean): void;
|
|
29
|
+
}
|
|
46
30
|
export interface SettingsAudioCtx {
|
|
31
|
+
/**
|
|
32
|
+
* The root's translator (ADR-0232 D3): its `t`, and the page's language as a BCP-47 tag, which picks the system voices the
|
|
33
|
+
* list offers. A Pick and not a bare `t`, because the voice list reads the language.
|
|
34
|
+
*/
|
|
35
|
+
translator: Pick<Translator, 't' | 'bcp47'>;
|
|
36
|
+
/** The page's settings store (see `SettingsAudioSettings`). REQUIRED (ADR-0232): no module reads it by import. */
|
|
37
|
+
settings: SettingsAudioSettings;
|
|
38
|
+
/**
|
|
39
|
+
* Subscribes to a setting's change and returns the release. REQUIRED, and it is the ROOT'S door (`stateOn` in
|
|
40
|
+
* `createGame`): a subscription made through it ends with the root's `dispose()` (ADR-0220), where one made on the
|
|
41
|
+
* page's bus by import went on redrawing the panel of an ended root.
|
|
42
|
+
*/
|
|
43
|
+
on: (setting: 'blindMode', react: (on: boolean) => void) => () => void;
|
|
47
44
|
/** DOM selector (querySelector), injected — never reaches `document` globally. */
|
|
48
45
|
$: DomQuery;
|
|
49
46
|
/** Screen-reader "polite" announcement (core/a11y-sr's srSay), injected. */
|
|
@@ -51,15 +48,38 @@ export interface SettingsAudioCtx {
|
|
|
51
48
|
/** Persistence (platform/storage.ts) — only the TTS engine/voice choice and the per-player audio sink live
|
|
52
49
|
* here; the mixer categories persist through `setCatGain` (platform/audio.ts already saves them). */
|
|
53
50
|
store: AudioStore;
|
|
54
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Creates an element KEEPING its type — the outputs' `<select>` answers `.value`, the voice list needs `<option>`.
|
|
53
|
+
*
|
|
54
|
+
* 📌 Named like its neighbour, `ui/voice-settings`'s `newOption`.
|
|
55
|
+
*/
|
|
56
|
+
newElement: <K extends keyof HTMLElementTagNameMap>(tag: K) => HTMLElementTagNameMap[K];
|
|
57
|
+
/** THIS device's speech synthesis. With no voices, `voices` returns an empty list — which is an answer. */
|
|
58
|
+
speech: {
|
|
59
|
+
voices: () => readonly SpeechSynthesisVoice[];
|
|
60
|
+
speakSample: (sample: string, chosen: SpeechSynthesisVoice | null) => void;
|
|
61
|
+
whenVoicesChange: (again: () => void) => void;
|
|
62
|
+
};
|
|
63
|
+
/** This device's audio outputs, and what it can do with them. */
|
|
64
|
+
audioOutputs: {
|
|
65
|
+
/** Can this browser LIST outputs? */
|
|
66
|
+
canList: () => boolean;
|
|
67
|
+
/** Can this browser ROUTE sound to a chosen output? (It needs an AudioContext.) */
|
|
68
|
+
canRoute: () => boolean;
|
|
69
|
+
/** The outputs already known, without asking permission — many come unnamed, which is the browser's design. */
|
|
70
|
+
list: () => Promise<readonly MediaDeviceInfo[]>;
|
|
71
|
+
/** Asks permission so the outputs have NAMES, and returns them. */
|
|
72
|
+
detect: () => Promise<readonly MediaDeviceInfo[]>;
|
|
73
|
+
};
|
|
74
|
+
/** Category catalog (platform/audio-mixer.ts's AUDIO_CATS) — pure data, injected. */
|
|
55
75
|
audioCats: readonly AudioCatDef[];
|
|
56
|
-
/** Shared helper (
|
|
76
|
+
/** Shared helper (the host's): toggles a button's .is-on/aria-pressed. Used by many other panels too — not ours. */
|
|
57
77
|
toggleBtn: (b: HTMLElement, on: boolean) => void;
|
|
58
|
-
/** Shared: current player count
|
|
78
|
+
/** Shared: current player count, read live from the host. */
|
|
59
79
|
getNumPlayers: () => number;
|
|
60
|
-
/** Shared: the live players array
|
|
80
|
+
/** Shared: the live players array — only `.audioSink`/`._ac`/`._acOut` are touched here. */
|
|
61
81
|
getPlayers: () => SinkPlayer[];
|
|
62
|
-
/** Master mute (platform/audio.ts's soundOn), read/write live
|
|
82
|
+
/** Master mute (platform/audio.ts's soundOn), read/write live. */
|
|
63
83
|
getSoundOn: () => boolean;
|
|
64
84
|
setSoundOn: (on: boolean) => void;
|
|
65
85
|
/** Master volume 0..1 (platform/audio.ts's volume). */
|
|
@@ -71,100 +91,58 @@ export interface SettingsAudioCtx {
|
|
|
71
91
|
setCatGain: (cat: string) => void;
|
|
72
92
|
/** Narration engine/voice panel API (platform/tts.ts's createTts() instance). */
|
|
73
93
|
tts: TtsPanel;
|
|
74
|
-
/**
|
|
75
|
-
*
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
/**
|
|
94
|
+
/** Blind-mode state (NOT owned by this panel). The toggle's widget lives inside #audio; the state and its gameplay
|
|
95
|
+
* side effects belong to the host. */
|
|
96
|
+
getBlindMode: () => boolean;
|
|
97
|
+
setBlindMode?: (on: boolean) => void;
|
|
98
|
+
/** Cane hit spacing. Same reasoning as blind mode. */
|
|
79
99
|
getCaneBlockDiv: () => number;
|
|
80
100
|
setCaneBlockDiv: (div: number) => void;
|
|
81
101
|
/**
|
|
82
|
-
*
|
|
102
|
+
* Moves the rows' prose to the footer (`ui/settings-panel` → `fillExplain`). Called on EVERY render.
|
|
83
103
|
*
|
|
84
|
-
* ⚠️
|
|
85
|
-
*
|
|
86
|
-
* voltam com a prosa lá dentro — então a explicação aparece duas vezes, no rodapé e sob o rótulo, a
|
|
87
|
-
* partir do primeiro clique. O `CLAUDE.md` §4 regista exatamente isto, e a issue #109 já o consertou
|
|
88
|
-
* uma vez noutros painéis.
|
|
104
|
+
* ⚠️ Relabelling a row puts its `.opt-hint` back inside it — so without this call the explanation appears twice, in
|
|
105
|
+
* the footer and under the label, from the first click. `CLAUDE.md` §4 records exactly this (issue #109).
|
|
89
106
|
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
107
|
+
* Optional in the signature because a consumer can mount the panel without the shell (a test): without the shell
|
|
108
|
+
* there is no footer to duplicate.
|
|
92
109
|
*/
|
|
93
110
|
fillExplain?: (card: HTMLElement | null) => void;
|
|
94
111
|
}
|
|
95
112
|
export interface SettingsAudioApi {
|
|
96
|
-
/** Re-renders the whole #audio overlay content (master, categories, nav-sound, TTS panel, sinks,
|
|
97
|
-
* cane-div sync) and re-wires whatever it (re)creates. Idempotent;
|
|
113
|
+
/** Re-renders the whole #audio overlay content (master, categories, nav-sound, TTS panel, sinks, blind-mode and
|
|
114
|
+
* cane-div sync) and re-wires whatever it (re)creates. Idempotent; the host calls it on every open. */
|
|
98
115
|
renderAudio: () => void;
|
|
99
|
-
/** Refreshes the #opt-modocego button. Exported because
|
|
100
|
-
|
|
101
|
-
/** Refreshes the #opt-tts button + #tts-engine selection. Exported because the pause-menu icon bar
|
|
102
|
-
*
|
|
116
|
+
/** Refreshes the #opt-modocego button. Exported because the host's blind-mode setter calls it directly. */
|
|
117
|
+
reflectBlindMode: () => void;
|
|
118
|
+
/** Refreshes the #opt-tts button + #tts-engine selection. Exported because the pause-menu icon bar toggles
|
|
119
|
+
* audioCat.tts.on itself and then calls this. */
|
|
103
120
|
reflectTts: () => void;
|
|
104
121
|
}
|
|
105
|
-
/** Categorias de NAVEGAÇÃO SONORA (bengala/sonar/guarda/guia) — volume geral separado do som do jogo. */
|
|
106
|
-
export declare const NAV_CATS: readonly ["sonar", "guard", "guide"];
|
|
107
|
-
/** Categorias GERAIS do jogo (TTS fica na seção Voz, fora desta lista). */
|
|
108
|
-
export declare const GEN_CATS: readonly ["music", "ambient", "interact", "earcons", "other"];
|
|
109
|
-
/** 0..1 -> 0..100 rounded (slider display value). */
|
|
110
|
-
export declare function volPercent(v: number): number;
|
|
111
|
-
/** One category row's markup (volume slider + on/off switch). Pure — resolves label/state from the given data,
|
|
112
|
-
* never from a global. Returns '' for an unknown/missing category (defensive; never hit with real catalogs). */
|
|
113
|
-
export declare function catRowHTML(k: string, cats: readonly AudioCatDef[], state: Readonly<Record<string, AudioCatState>>): string;
|
|
114
|
-
/** Full innerHTML for a category list (#audio-list or #navsound-list). Pure string building — no DOM. */
|
|
115
|
-
export declare function catsListHTML(keys: readonly string[], cats: readonly AudioCatDef[], state: Readonly<Record<string, AudioCatState>>): string;
|
|
116
|
-
/** #navsound-master's value: the loudest of the nav categories, as a 0..100 slider value. */
|
|
117
|
-
export declare function navMasterVolume(state: Readonly<Record<string, AudioCatState>>, navCats?: readonly string[]): number;
|
|
118
|
-
/** Cane-hit spacing select -> validated int (garbage/empty -> 1, "a batida por bloco"). */
|
|
119
|
-
export declare function parseCaneDiv(raw: string): number;
|
|
120
|
-
/** srSay text for a cane-hit spacing choice. The two halves are ONE sentence per case, not a shared prefix
|
|
121
|
-
* plus a tail: a language that renders this as "One tap per block (cane)" needs to move the word "cane". */
|
|
122
|
-
export declare function caneDivMessage(div: number): string;
|
|
123
|
-
/** #tts-engine's option catalog: (value, i18n KEY of the label). The engine NAMES are proper nouns and stay
|
|
124
|
-
* put; what translates is the parenthetical that explains each one. Keys, not text — see input/devices. */
|
|
125
|
-
export declare const TTS_ENGINE_OPTIONS: readonly (readonly [string, string])[];
|
|
126
122
|
/**
|
|
127
|
-
*
|
|
123
|
+
* MOUNTS THIS PANEL'S INSIDE — the controls and containers it reaches.
|
|
124
|
+
*
|
|
125
|
+
* 🔴 IT IS THE LARGEST INVISIBLE CONTRACT OF THE PANELS: this file looks for `#opt-modocego`, `#cane-div`,
|
|
126
|
+
* `#opt-menuindex`, `#opt-tts`, `#tts-vol` and more, and nothing in the type says so — which is why it builds them.
|
|
128
127
|
*
|
|
129
|
-
* ⚠️
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
* quem navega por escuta não tem como ver que não começou.
|
|
128
|
+
* ⚠️ AND EACH ONE'S TAG MATTERS, which makes this the worst place to guess: `#cane-div` and the voice selects have to be
|
|
129
|
+
* `<select>` — the panel writes `.value` into them —, and the volumes have to be `<input type=range>`. On a `<button>`,
|
|
130
|
+
* writing `.value` gives no error at all: it creates a property nobody reads, and the child's choice vanishes silently.
|
|
133
131
|
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
132
|
+
* 📌 THE ORDER IS THE DECISION (ADR-0044 §2), from general to particular (see the composition below).
|
|
133
|
+
*
|
|
134
|
+
* ⚠️ `#opt-sound` IS NOT CREATED HERE, deliberately: it is this setting's mirror on the quick bar, outside the panel.
|
|
135
|
+
* `reflectMaster` reaches it with a guard (`if (sb)`), because a game may have no bar.
|
|
136
|
+
*
|
|
137
|
+
* Idempotent: calling it twice reuses what exists instead of duplicating it.
|
|
136
138
|
*/
|
|
137
|
-
export declare function
|
|
138
|
-
export interface VoiceLike {
|
|
139
|
-
name: string;
|
|
140
|
-
lang: string;
|
|
141
|
-
}
|
|
139
|
+
export declare function mountAudioInside(t: Translate, ctx: PanelShellCtx, card: HTMLElement, list: HTMLElement): void;
|
|
142
140
|
/**
|
|
143
|
-
*
|
|
141
|
+
* MOUNTS THE AUDIO PANEL'S INSIDE (ADR-0151 §2 item 4): the general sound — switch and volume — and then the shell's
|
|
142
|
+
* list with the four taste categories (music, ambience, interaction, earcons).
|
|
144
143
|
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
* sobre o que devia fazer.
|
|
148
|
-
*
|
|
149
|
-
* A comparação é pelo PREFIXO de idioma, não pela etiqueta inteira: quem joga em pt-BR também deve poder
|
|
150
|
-
* escolher uma voz pt-PT se for a única instalada, e o navegador de uma escola raramente tem a variante
|
|
151
|
-
* exata. O recuo para a lista inteira fica: uma lista vazia seria pior que uma lista no idioma errado, que
|
|
152
|
-
* ao menos a pessoa pode ouvir e rejeitar.
|
|
144
|
+
* ⚠️ THE IDS ARE THE ONES `initSettingsAudio` ALREADY LISTENS TO (`#audio-master`, `#audio-master-vol`, `#audio-list`). And
|
|
145
|
+
* the same order rule: mount BEFORE `init`. Idempotent and relabellable, like its hearing sibling.
|
|
153
146
|
*/
|
|
154
|
-
export declare function
|
|
155
|
-
/** "<name> (<lang>)" option label. */
|
|
156
|
-
export declare function voiceLabel(v: VoiceLike): string;
|
|
157
|
-
/** Whether the browser can list/switch audio outputs at all (gates the #audio-sinks hint copy). */
|
|
158
|
-
export declare function sinksSupported(hasEnumerateDevices: boolean, hasAudioContextCtor: boolean): boolean;
|
|
159
|
-
export interface SinkDeviceLike {
|
|
160
|
-
deviceId: string;
|
|
161
|
-
label?: string;
|
|
162
|
-
}
|
|
163
|
-
/** A device's option label, falling back to a 1-based "Saída N" when the browser withholds the real label
|
|
164
|
-
* (no getUserMedia permission granted yet). */
|
|
165
|
-
export declare function sinkOptionLabel(d: SinkDeviceLike, index: number): string;
|
|
166
|
-
/** A player's current sink select value ('' = default/shared). */
|
|
167
|
-
export declare function sinkSelectValue(p: {
|
|
168
|
-
audioSink?: string | null;
|
|
169
|
-
} | undefined): string;
|
|
147
|
+
export declare function mountSoundInside(t: Translate, ctx: PanelShellCtx, card: HTMLElement, list: HTMLElement): void;
|
|
170
148
|
export declare function initSettingsAudio(ctx: SettingsAudioCtx): SettingsAudioApi;
|