@the-inclusionist/engine 8.0.0 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -78
- package/app/css/style.css +584 -374
- package/app/public/vendor/fonts/bitter-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/bitter-var.woff2 +0 -0
- package/app/public/vendor/fonts/bodonimoda-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/bodonimoda-var.woff2 +0 -0
- package/app/public/vendor/fonts/cat-abril_fatface-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-abril_fatface-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-adlam_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-adlam_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-agu_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-agu_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-alfa_slab_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-alfa_slab_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-are_you_serious-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-are_you_serious-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-asimovian-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-asimovian-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-atkinson_hyperlegible_next-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-atkinson_hyperlegible_next-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bakbak_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bakbak_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bangers-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bangers-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-barriecito-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-barriecito-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-berkshire_swash-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-berkshire_swash-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bevan-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bevan-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bitcount-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bitcount-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bowlby_one_sc-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bowlby_one_sc-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bungee_shade-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bungee_shade-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-charm-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-charm-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-charm-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-charm-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-cherry_bomb_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-cherry_bomb_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-chokokutai-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-chokokutai-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-chonburi-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-chonburi-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-climate_crisis-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-climate_crisis-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-cookie-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-dela_gothic_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-dela_gothic_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-fascinate_inline-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-fascinate_inline-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ga_maamli-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ga_maamli-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-itim-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-itim-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-jacquard_24-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-jacquard_24-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kablammo-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kablammo-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kalam-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kalam-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kalam-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kalam-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-katibeh-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-katibeh-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lemonada-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lemonada-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lilita_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lilita_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lobster-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lobster-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-luckiest_guy-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-luckiest_guy-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-marhey-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-marhey-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-modak-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-modak-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-momo_signature-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-momo_signature-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monofett-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monofett-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monomakh-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monomakh-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monoton-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monoton-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-nerko_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-nerko_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_adlam-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_adlam-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_arabic-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_arabic-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_devanagari-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_devanagari-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_hebrew-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_hebrew-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_jp-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_jp-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_khmer-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_khmer-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_kr-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_kr-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_sc-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_sc-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_thai-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_thai-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ole-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ole-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-pacifico-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-pacifico-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-patrick_hand-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-patrick_hand-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-petit_formal_script-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-petit_formal_script-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-pixelify_sans-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-pixelify_sans-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-plaster-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-plaster-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ar_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_at-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_at_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_nsw-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_nsw_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_qld-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_qld_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_sa-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_sa_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_tas-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_tas_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_vic-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_vic_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_be_vlg-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_be_vlg_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_be_wal-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_be_wal_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_br_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ca_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_cl_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_co_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_cu_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_cz-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_cz_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_grund-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_grund_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_la-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_la_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_sas-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_sas_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_va-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_va_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_dk_loopet-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_dk_loopet_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_dk_uloopet-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_dk_uloopet_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_es_deco_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_es_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_fr_moderne-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_fr_moderne_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_fr_trad-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_fr_trad_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_gb_j_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_gb_s_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hr-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hr_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hr_lijeva-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hr_lijeva_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hu-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hu_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_id-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_id_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ie-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ie_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_in-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_in_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_is-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_is_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_it_moderna-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_it_moderna_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_it_trad-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_it_trad_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_mx_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ng_modern-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ng_modern_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nl-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nl_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_no-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_no_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nz-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nz_basic-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nz_basic_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nz_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_pe_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_pl-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_pl_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_pt_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ro-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ro_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_sk-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_sk_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_tz-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_tz_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_us_modern_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_us_trad_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_vn-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_vn_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_za-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_za_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-potta_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-potta_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranchers-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranchers-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranga-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranga-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranga-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranga-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-risque-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-risque-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-rowdies-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-rowdies-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-rowdies-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-rowdies-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ruge_boogie-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ruge_boogie-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ruslan_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ruslan_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sacramento-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sacramento-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sancreek-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sancreek-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sankofa_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sankofa_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sedgwick_ave_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sedgwick_ave_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-shantell_sans-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-shantell_sans-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-smokum-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-smokum-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-solitreo-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-solitreo-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-spicy_rice-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-spicy_rice-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sriracha-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sriracha-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-srisakdi-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-srisakdi-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-srisakdi-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-srisakdi-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-stix_two_math-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-tillana-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-tillana-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-tillana-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-tillana-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-titan_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-titan_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-yatra_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-yatra_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-yomogi-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-yomogi-400.woff2 +0 -0
- package/app/public/vendor/fonts/dmserifdisplay-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/dmserifdisplay-400.woff2 +0 -0
- package/app/public/vendor/fonts/domine-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/domine-var.woff2 +0 -0
- package/app/public/vendor/fonts/fraunces-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/fraunces-var.woff2 +0 -0
- package/app/public/vendor/fonts/fredoka-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/fredoka-var.woff2 +0 -0
- package/app/public/vendor/fonts/jakarta-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/jakarta-var.woff2 +0 -0
- package/app/public/vendor/fonts/lora-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/lora-var.woff2 +0 -0
- package/app/public/vendor/fonts/merriweather-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/merriweather-var.woff2 +0 -0
- package/app/public/vendor/fonts/notosans-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/notosans-var.woff2 +0 -0
- package/app/public/vendor/fonts/nunito-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/nunito-var.woff2 +0 -0
- package/app/public/vendor/fonts/playfair-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/playfair-var.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-cu.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-es-deco.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-es.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-gb-j.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-gb-s.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-pe.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-pt.woff2 +0 -0
- package/app/public/vendor/fonts/quicksand-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/quicksand-var.woff2 +0 -0
- package/app/public/vendor/fonts/robotoflex-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/robotoflex-var.woff2 +0 -0
- package/app/public/vendor/fonts/sora-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/sora-var.woff2 +0 -0
- package/app/public/vendor/fonts/spacegrotesk-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/spacegrotesk-var.woff2 +0 -0
- package/app/public/vendor/fonts/spectral-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/spectral-400.woff2 +0 -0
- package/app/public/vendor/fonts/spectral-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/spectral-700.woff2 +0 -0
- package/app/public/vendor/fonts/teachers-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/teachers-var.woff2 +0 -0
- package/app/public/vendor/fonts/ubuntu-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/ubuntu-400.woff2 +0 -0
- package/app/public/vendor/fonts/ubuntu-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/ubuntu-700.woff2 +0 -0
- package/app/public/vendor/fonts.css +1167 -51
- package/dist-pkg/boot/create-game.d.ts +467 -162
- package/dist-pkg/boot/create-game.js +3563 -426
- package/dist-pkg/core/a11y-sr.d.ts +25 -3
- package/dist-pkg/core/a11y-sr.js +40 -19
- package/dist-pkg/core/accessible-label.d.ts +17 -0
- package/dist-pkg/core/accessible-label.js +37 -0
- package/dist-pkg/core/accommodation-subjects.d.ts +26 -0
- package/dist-pkg/core/accommodation-subjects.js +32 -0
- package/dist-pkg/core/accommodations.d.ts +107 -0
- package/dist-pkg/core/accommodations.js +178 -0
- package/dist-pkg/core/actions.d.ts +75 -51
- package/dist-pkg/core/actions.js +98 -69
- package/dist-pkg/core/calm-mode.d.ts +31 -0
- package/dist-pkg/core/calm-mode.js +47 -0
- package/dist-pkg/core/camera-cycle.d.ts +15 -0
- package/dist-pkg/core/camera-cycle.js +7 -0
- package/dist-pkg/core/caption-duration.d.ts +15 -0
- package/dist-pkg/core/caption-duration.js +19 -0
- package/dist-pkg/core/cartridge-problems.d.ts +34 -0
- package/dist-pkg/core/cartridge-problems.js +53 -0
- package/dist-pkg/core/constants.d.ts +0 -54
- package/dist-pkg/core/constants.js +9 -76
- package/dist-pkg/core/contract.d.ts +143 -163
- package/dist-pkg/core/contract.js +223 -207
- package/dist-pkg/core/dom-query.d.ts +4 -4
- package/dist-pkg/core/dom-query.js +12 -20
- package/dist-pkg/core/entity.d.ts +62 -77
- package/dist-pkg/core/entity.js +18 -32
- package/dist-pkg/core/escape-html.d.ts +9 -10
- package/dist-pkg/core/escape-html.js +16 -20
- package/dist-pkg/core/flash-threshold.d.ts +17 -0
- package/dist-pkg/core/flash-threshold.js +113 -0
- package/dist-pkg/core/game-speed.d.ts +11 -0
- package/dist-pkg/core/game-speed.js +16 -0
- package/dist-pkg/core/genres.d.ts +20 -0
- package/dist-pkg/core/genres.js +44 -0
- package/dist-pkg/core/i18n.d.ts +87 -41
- package/dist-pkg/core/i18n.js +206 -153
- package/dist-pkg/core/loop.d.ts +17 -6
- package/dist-pkg/core/loop.js +26 -26
- package/dist-pkg/core/pause-icon-catalogue.d.ts +15 -0
- package/dist-pkg/core/pause-icon-catalogue.js +54 -0
- package/dist-pkg/core/ring.d.ts +17 -0
- package/dist-pkg/core/ring.js +29 -0
- package/dist-pkg/core/rng.d.ts +7 -12
- package/dist-pkg/core/rng.js +23 -53
- package/dist-pkg/core/route.d.ts +26 -26
- package/dist-pkg/core/route.js +126 -121
- package/dist-pkg/core/scenes.d.ts +37 -40
- package/dist-pkg/core/scenes.js +41 -43
- package/dist-pkg/core/screens.d.ts +4 -4
- package/dist-pkg/core/screens.js +11 -16
- package/dist-pkg/core/setting-defaults.d.ts +61 -0
- package/dist-pkg/core/setting-defaults.js +66 -0
- package/dist-pkg/core/speech-rate.d.ts +29 -0
- package/dist-pkg/core/speech-rate.js +47 -0
- package/dist-pkg/core/state.d.ts +118 -118
- package/dist-pkg/core/state.js +322 -297
- package/dist-pkg/core/visual-cycles.d.ts +30 -0
- package/dist-pkg/core/visual-cycles.js +52 -0
- package/dist-pkg/core/visual-state.d.ts +13 -0
- package/dist-pkg/core/visual-state.js +6 -0
- package/dist-pkg/educational/activities-registry.d.ts +1 -1
- package/dist-pkg/educational/activities-registry.js +9 -8
- package/dist-pkg/educational/adaptive-engine.d.ts +11 -11
- package/dist-pkg/educational/adaptive-engine.js +17 -17
- package/dist-pkg/educational/segment-bar.d.ts +12 -12
- package/dist-pkg/educational/segment-bar.js +9 -9
- package/dist-pkg/i18n/en.js +321 -215
- package/dist-pkg/i18n/es.js +320 -215
- package/dist-pkg/i18n/pt.js +342 -215
- package/dist-pkg/input/default-bindings.d.ts +37 -38
- package/dist-pkg/input/default-bindings.js +127 -144
- package/dist-pkg/input/devices.d.ts +7 -7
- package/dist-pkg/input/devices.js +17 -16
- package/dist-pkg/input/edges.d.ts +23 -32
- package/dist-pkg/input/edges.js +23 -28
- package/dist-pkg/input/empathy-filter.d.ts +22 -0
- package/dist-pkg/input/empathy-filter.js +34 -0
- package/dist-pkg/input/face-map.d.ts +96 -0
- package/dist-pkg/input/face-map.js +255 -0
- package/dist-pkg/input/face-signals.d.ts +40 -0
- package/dist-pkg/input/face-signals.js +48 -0
- package/dist-pkg/input/gamepad.d.ts +164 -145
- package/dist-pkg/input/gamepad.js +351 -559
- package/dist-pkg/input/gaze-cycle.d.ts +64 -0
- package/dist-pkg/input/gaze-cycle.js +133 -0
- package/dist-pkg/input/gaze-relative.d.ts +68 -0
- package/dist-pkg/input/gaze-relative.js +142 -0
- package/dist-pkg/input/hand-map.d.ts +28 -0
- package/dist-pkg/input/hand-map.js +142 -0
- package/dist-pkg/input/input-cooldown.d.ts +17 -0
- package/dist-pkg/input/input-cooldown.js +39 -0
- package/dist-pkg/input/keyboard-runtime.d.ts +18 -20
- package/dist-pkg/input/keyboard-runtime.js +23 -27
- package/dist-pkg/input/keyboard.d.ts +68 -62
- package/dist-pkg/input/keyboard.js +83 -105
- package/dist-pkg/input/keydown.d.ts +124 -132
- package/dist-pkg/input/keydown.js +283 -288
- package/dist-pkg/input/latch-edge.d.ts +25 -21
- package/dist-pkg/input/latch-edge.js +33 -35
- package/dist-pkg/input/latch-scope.d.ts +43 -47
- package/dist-pkg/input/latch-scope.js +66 -75
- package/dist-pkg/input/latch-store.d.ts +28 -29
- package/dist-pkg/input/latch-store.js +44 -47
- package/dist-pkg/input/latch-sync.d.ts +28 -29
- package/dist-pkg/input/latch-sync.js +25 -25
- package/dist-pkg/input/latch.d.ts +14 -17
- package/dist-pkg/input/latch.js +29 -37
- package/dist-pkg/input/pad-defaults.d.ts +13 -16
- package/dist-pkg/input/pad-defaults.js +21 -28
- package/dist-pkg/input/pad-reading.d.ts +76 -0
- package/dist-pkg/input/pad-reading.js +164 -0
- package/dist-pkg/input/pad-wizard.d.ts +96 -0
- package/dist-pkg/input/pad-wizard.js +205 -0
- package/dist-pkg/input/pointer-space.d.ts +19 -20
- package/dist-pkg/input/pointer-space.js +27 -32
- package/dist-pkg/input/pointer.d.ts +39 -40
- package/dist-pkg/input/pointer.js +42 -45
- package/dist-pkg/input/state.d.ts +101 -89
- package/dist-pkg/input/state.js +54 -134
- package/dist-pkg/input/switch-scan.d.ts +42 -0
- package/dist-pkg/input/switch-scan.js +54 -0
- package/dist-pkg/input/synthetic-source.d.ts +42 -0
- package/dist-pkg/input/synthetic-source.js +57 -0
- package/dist-pkg/input/touch-bindings.d.ts +127 -113
- package/dist-pkg/input/touch-bindings.js +158 -173
- package/dist-pkg/input/touch.d.ts +130 -70
- package/dist-pkg/input/touch.js +321 -123
- package/dist-pkg/input/transport-in-use.d.ts +107 -0
- package/dist-pkg/input/transport-in-use.js +130 -0
- package/dist-pkg/input/transports.d.ts +96 -114
- package/dist-pkg/input/transports.js +104 -106
- package/dist-pkg/input/virtual-controller.d.ts +46 -0
- package/dist-pkg/input/virtual-controller.js +41 -0
- package/dist-pkg/input/vocabulary-migration.d.ts +50 -49
- package/dist-pkg/input/vocabulary-migration.js +80 -79
- package/dist-pkg/input/voice-map.d.ts +43 -0
- package/dist-pkg/input/voice-map.js +125 -0
- package/dist-pkg/platform/audio-ambient.d.ts +13 -1
- package/dist-pkg/platform/audio-ambient.js +11 -13
- package/dist-pkg/platform/audio-earcons.d.ts +20 -19
- package/dist-pkg/platform/audio-earcons.js +51 -42
- package/dist-pkg/platform/audio-jingles.js +9 -10
- package/dist-pkg/platform/audio-mixer.d.ts +14 -2
- package/dist-pkg/platform/audio-mixer.js +36 -39
- package/dist-pkg/platform/audio-sonar.d.ts +96 -113
- package/dist-pkg/platform/audio-sonar.js +245 -238
- package/dist-pkg/platform/audio.d.ts +53 -19
- package/dist-pkg/platform/audio.js +161 -169
- package/dist-pkg/platform/flash-sampler.d.ts +19 -0
- package/dist-pkg/platform/flash-sampler.js +79 -0
- package/dist-pkg/platform/guide-intensity.d.ts +26 -27
- package/dist-pkg/platform/guide-intensity.js +50 -52
- package/dist-pkg/platform/heavy-catalogue.d.ts +31 -0
- package/dist-pkg/platform/heavy-catalogue.js +223 -0
- package/dist-pkg/platform/heavy-mirror.d.ts +26 -0
- package/dist-pkg/platform/heavy-mirror.js +76 -0
- package/dist-pkg/platform/heavy.d.ts +104 -0
- package/dist-pkg/platform/heavy.js +169 -0
- package/dist-pkg/platform/interruptible-speech.d.ts +16 -16
- package/dist-pkg/platform/interruptible-speech.js +50 -51
- package/dist-pkg/platform/kokoro-port.d.ts +27 -0
- package/dist-pkg/platform/kokoro-port.js +50 -0
- package/dist-pkg/platform/kokoro-runtime.d.ts +20 -0
- package/dist-pkg/platform/kokoro-runtime.js +52 -0
- package/dist-pkg/platform/kokoro.d.ts +70 -0
- package/dist-pkg/platform/kokoro.js +133 -0
- package/dist-pkg/platform/listener-scope.d.ts +12 -0
- package/dist-pkg/platform/listener-scope.js +81 -0
- package/dist-pkg/platform/locale-host.d.ts +10 -0
- package/dist-pkg/platform/locale-host.js +34 -0
- package/dist-pkg/platform/microphone.d.ts +51 -0
- package/dist-pkg/platform/microphone.js +118 -0
- package/dist-pkg/platform/onnx-runtime.d.ts +34 -0
- package/dist-pkg/platform/onnx-runtime.js +42 -0
- package/dist-pkg/platform/reading-in-worker.d.ts +40 -0
- package/dist-pkg/platform/reading-in-worker.js +87 -0
- package/dist-pkg/platform/reading-model.d.ts +73 -0
- package/dist-pkg/platform/reading-model.js +247 -0
- package/dist-pkg/platform/reading-runtime.d.ts +24 -0
- package/dist-pkg/platform/reading-runtime.js +159 -0
- package/dist-pkg/platform/reading-worker.d.ts +41 -0
- package/dist-pkg/platform/reading-worker.js +58 -0
- package/dist-pkg/platform/reading.d.ts +69 -0
- package/dist-pkg/platform/reading.js +128 -0
- package/dist-pkg/platform/speech-recognition.d.ts +51 -0
- package/dist-pkg/platform/speech-recognition.js +84 -0
- package/dist-pkg/platform/speech.d.ts +14 -1
- package/dist-pkg/platform/speech.js +13 -13
- package/dist-pkg/platform/storage-keys.d.ts +96 -0
- package/dist-pkg/platform/storage-keys.js +106 -0
- package/dist-pkg/platform/storage.d.ts +46 -111
- package/dist-pkg/platform/storage.js +104 -169
- package/dist-pkg/platform/tts.d.ts +51 -38
- package/dist-pkg/platform/tts.js +217 -119
- package/dist-pkg/platform/vision-loop.d.ts +23 -0
- package/dist-pkg/platform/vision-loop.js +56 -0
- package/dist-pkg/platform/vision.d.ts +132 -0
- package/dist-pkg/platform/vision.js +117 -0
- package/dist-pkg/platform/voice-listener.d.ts +36 -0
- package/dist-pkg/platform/voice-listener.js +88 -0
- package/dist-pkg/platform/voice-plan.d.ts +6 -102
- package/dist-pkg/platform/voice-plan.js +9 -151
- package/dist-pkg/platform/vosk-runtime.d.ts +71 -0
- package/dist-pkg/platform/vosk-runtime.js +93 -0
- package/dist-pkg/render/canvas.d.ts +13 -7
- package/dist-pkg/render/canvas.js +13 -13
- package/dist-pkg/render/crt.d.ts +46 -12
- package/dist-pkg/render/crt.js +82 -80
- package/dist-pkg/render/cvd-matrices.d.ts +18 -18
- package/dist-pkg/render/cvd-matrices.js +33 -38
- package/dist-pkg/render/hc-role-data.d.ts +7 -7
- package/dist-pkg/render/hc-role-data.js +14 -14
- package/dist-pkg/render/high-contrast.d.ts +66 -54
- package/dist-pkg/render/high-contrast.js +221 -216
- package/dist-pkg/render/low-vision-drawing.d.ts +5 -0
- package/dist-pkg/render/low-vision-drawing.js +46 -0
- package/dist-pkg/render/lq-filter.d.ts +32 -20
- package/dist-pkg/render/lq-filter.js +59 -65
- package/dist-pkg/render/port.d.ts +86 -88
- package/dist-pkg/render/port.js +17 -23
- package/dist-pkg/render/screen-pipeline.d.ts +42 -42
- package/dist-pkg/render/screen-pipeline.js +80 -87
- package/dist-pkg/render/sprite-fx.d.ts +2 -1
- package/dist-pkg/render/sprite-fx.js +16 -14
- package/dist-pkg/render/viewports.d.ts +20 -15
- package/dist-pkg/render/viewports.js +83 -114
- package/dist-pkg/render/viz-axes-labels.d.ts +47 -0
- package/dist-pkg/render/viz-axes-labels.js +88 -0
- package/dist-pkg/render/viz-axes.d.ts +80 -86
- package/dist-pkg/render/viz-axes.js +115 -116
- package/dist-pkg/render/viz-modes.d.ts +28 -29
- package/dist-pkg/render/viz-modes.js +40 -45
- package/dist-pkg/render/viz-refusal.d.ts +32 -0
- package/dist-pkg/render/viz-refusal.js +57 -0
- package/dist-pkg/render/viz-setters.d.ts +104 -66
- package/dist-pkg/render/viz-setters.js +182 -191
- package/dist-pkg/ui/aac-sets.d.ts +40 -0
- package/dist-pkg/ui/aac-sets.js +49 -0
- package/dist-pkg/ui/audio-choices.d.ts +63 -0
- package/dist-pkg/ui/audio-choices.js +94 -0
- package/dist-pkg/ui/audio-rows-that-apply.d.ts +12 -0
- package/dist-pkg/ui/audio-rows-that-apply.js +43 -0
- package/dist-pkg/ui/camera-control.d.ts +6 -0
- package/dist-pkg/ui/camera-control.js +14 -0
- package/dist-pkg/ui/changed-mark.d.ts +9 -8
- package/dist-pkg/ui/changed-mark.js +22 -53
- package/dist-pkg/ui/control-choices.d.ts +37 -0
- package/dist-pkg/ui/control-choices.js +84 -0
- package/dist-pkg/ui/debug-panel.d.ts +59 -43
- package/dist-pkg/ui/debug-panel.js +68 -69
- package/dist-pkg/ui/dom.d.ts +10 -14
- package/dist-pkg/ui/dom.js +10 -47
- package/dist-pkg/ui/drawing-problems.d.ts +25 -0
- package/dist-pkg/ui/drawing-problems.js +93 -0
- package/dist-pkg/ui/eye-control.d.ts +36 -0
- package/dist-pkg/ui/eye-control.js +178 -0
- package/dist-pkg/ui/face-control.d.ts +25 -0
- package/dist-pkg/ui/face-control.js +183 -0
- package/dist-pkg/ui/focus-trap.d.ts +39 -49
- package/dist-pkg/ui/focus-trap.js +56 -65
- package/dist-pkg/ui/fonts.d.ts +118 -63
- package/dist-pkg/ui/fonts.js +267 -111
- package/dist-pkg/ui/game-options.d.ts +42 -0
- package/dist-pkg/ui/game-options.js +138 -0
- package/dist-pkg/ui/gaze-overlay.d.ts +64 -0
- package/dist-pkg/ui/gaze-overlay.js +165 -0
- package/dist-pkg/ui/hand-control.d.ts +25 -0
- package/dist-pkg/ui/hand-control.js +143 -0
- package/dist-pkg/ui/help-panel.d.ts +76 -0
- package/dist-pkg/ui/help-panel.js +232 -0
- package/dist-pkg/ui/hud-bands.d.ts +45 -0
- package/dist-pkg/ui/hud-bands.js +108 -0
- package/dist-pkg/ui/hud.d.ts +73 -70
- package/dist-pkg/ui/hud.js +94 -98
- package/dist-pkg/ui/item-announcement.d.ts +13 -12
- package/dist-pkg/ui/item-announcement.js +25 -26
- package/dist-pkg/ui/latch-refusal.d.ts +22 -21
- package/dist-pkg/ui/latch-refusal.js +37 -37
- package/dist-pkg/ui/layout.d.ts +103 -28
- package/dist-pkg/ui/layout.js +114 -99
- package/dist-pkg/ui/locale-flags.d.ts +16 -0
- package/dist-pkg/ui/locale-flags.js +30 -0
- package/dist-pkg/ui/loop-crash.d.ts +17 -17
- package/dist-pkg/ui/loop-crash.js +33 -62
- package/dist-pkg/ui/menu-intent.d.ts +32 -0
- package/dist-pkg/ui/menu-intent.js +54 -0
- package/dist-pkg/ui/menu-items.d.ts +10 -0
- package/dist-pkg/ui/menu-items.js +22 -0
- package/dist-pkg/ui/menu-nav.d.ts +60 -90
- package/dist-pkg/ui/menu-nav.js +301 -274
- package/dist-pkg/ui/mobility-choices.d.ts +26 -0
- package/dist-pkg/ui/mobility-choices.js +41 -0
- package/dist-pkg/ui/motion-choices.d.ts +31 -0
- package/dist-pkg/ui/motion-choices.js +68 -0
- package/dist-pkg/ui/motion-scene.d.ts +24 -19
- package/dist-pkg/ui/motion-scene.js +29 -61
- package/dist-pkg/ui/mount-panel.d.ts +81 -0
- package/dist-pkg/ui/mount-panel.js +61 -0
- package/dist-pkg/ui/panel-shell.d.ts +65 -31
- package/dist-pkg/ui/panel-shell.js +92 -66
- package/dist-pkg/ui/panel-widgets.d.ts +116 -0
- package/dist-pkg/ui/panel-widgets.js +208 -0
- package/dist-pkg/ui/pause-buttons.d.ts +35 -0
- package/dist-pkg/ui/pause-buttons.js +66 -0
- package/dist-pkg/ui/pause-icons.d.ts +250 -343
- package/dist-pkg/ui/pause-icons.js +614 -605
- package/dist-pkg/ui/pause-markup.d.ts +86 -0
- package/dist-pkg/ui/pause-markup.js +125 -0
- package/dist-pkg/ui/reach-notice.d.ts +22 -23
- package/dist-pkg/ui/reach-notice.js +55 -58
- package/dist-pkg/ui/scan-overlay.d.ts +23 -0
- package/dist-pkg/ui/scan-overlay.js +42 -0
- package/dist-pkg/ui/settings-aac.d.ts +68 -0
- package/dist-pkg/ui/settings-aac.js +189 -0
- package/dist-pkg/ui/settings-audio.d.ts +91 -113
- package/dist-pkg/ui/settings-audio.js +407 -405
- package/dist-pkg/ui/settings-controls.d.ts +53 -92
- package/dist-pkg/ui/settings-controls.js +143 -215
- package/dist-pkg/ui/settings-empathy.d.ts +39 -30
- package/dist-pkg/ui/settings-empathy.js +53 -60
- package/dist-pkg/ui/settings-mobility.d.ts +195 -0
- package/dist-pkg/ui/settings-mobility.js +374 -0
- package/dist-pkg/ui/settings-motion.d.ts +91 -70
- package/dist-pkg/ui/settings-motion.js +287 -198
- package/dist-pkg/ui/settings-panel.d.ts +48 -45
- package/dist-pkg/ui/settings-panel.js +164 -93
- package/dist-pkg/ui/settings-typo.d.ts +28 -76
- package/dist-pkg/ui/settings-typo.js +145 -125
- package/dist-pkg/ui/settings-visual.d.ts +29 -87
- package/dist-pkg/ui/settings-visual.js +240 -193
- package/dist-pkg/ui/shell.d.ts +113 -134
- package/dist-pkg/ui/shell.js +143 -216
- package/dist-pkg/ui/simulation-list.d.ts +27 -0
- package/dist-pkg/ui/simulation-list.js +76 -0
- package/dist-pkg/ui/simulation-over-the-world.d.ts +23 -0
- package/dist-pkg/ui/simulation-over-the-world.js +131 -0
- package/dist-pkg/ui/simulation-refusal.d.ts +5 -31
- package/dist-pkg/ui/simulation-refusal.js +8 -56
- package/dist-pkg/ui/switchable-control.d.ts +11 -0
- package/dist-pkg/ui/switchable-control.js +19 -0
- package/dist-pkg/ui/title.d.ts +4 -4
- package/dist-pkg/ui/title.js +11 -13
- package/dist-pkg/ui/top-band.d.ts +24 -0
- package/dist-pkg/ui/top-band.js +100 -0
- package/dist-pkg/ui/typo-choices.d.ts +71 -0
- package/dist-pkg/ui/typo-choices.js +84 -0
- package/dist-pkg/ui/visual-axes-panel.d.ts +11 -47
- package/dist-pkg/ui/visual-axes-panel.js +12 -94
- package/dist-pkg/ui/visual-choices.d.ts +77 -0
- package/dist-pkg/ui/visual-choices.js +107 -0
- package/dist-pkg/ui/vlibras.d.ts +33 -10
- package/dist-pkg/ui/vlibras.js +58 -81
- package/dist-pkg/ui/voice-control.d.ts +46 -0
- package/dist-pkg/ui/voice-control.js +143 -0
- package/dist-pkg/ui/voice-settings.d.ts +96 -0
- package/dist-pkg/ui/voice-settings.js +302 -0
- package/dist-pkg/ui/where-the-child-is.d.ts +31 -0
- package/dist-pkg/ui/where-the-child-is.js +70 -0
- package/docs/CREDITS.md +198 -54
- package/docs/LICENSES.md +160 -145
- package/package.json +24 -25
- package/scripts/heavy-into-the-delivery.mjs +144 -0
- package/scripts/licences/Apache-2.0.txt +176 -0
- package/scripts/licences/GPL-3.0.txt +674 -0
- package/scripts/licences/MIT.txt +17 -0
- package/scripts/licences/third-party.mjs +287 -0
- package/scripts/licences/vosk-browser.NOTICE.txt +268 -0
- package/app/public/vendor/fonts/comicneue-400.woff2 +0 -0
- package/app/public/vendor/fonts/comicneue-700.woff2 +0 -0
- package/dist-pkg/core/anel.d.ts +0 -17
- package/dist-pkg/core/anel.js +0 -31
- package/dist-pkg/core/collision.d.ts +0 -21
- package/dist-pkg/core/collision.js +0 -62
- package/dist-pkg/core/layers.d.ts +0 -63
- package/dist-pkg/core/layers.js +0 -95
- package/dist-pkg/core/letter-grid.d.ts +0 -55
- package/dist-pkg/core/letter-grid.js +0 -116
- package/dist-pkg/core/password.d.ts +0 -34
- package/dist-pkg/core/password.js +0 -205
- package/dist-pkg/core/rotulo-acessivel.d.ts +0 -17
- package/dist-pkg/core/rotulo-acessivel.js +0 -41
- package/dist-pkg/core/run-state.d.ts +0 -115
- package/dist-pkg/core/run-state.js +0 -40
- package/dist-pkg/core/tiles.d.ts +0 -12
- package/dist-pkg/core/tiles.js +0 -61
- package/dist-pkg/core/world.d.ts +0 -4
- package/dist-pkg/core/world.js +0 -58
- package/dist-pkg/input/origem-sintetica.d.ts +0 -44
- package/dist-pkg/input/origem-sintetica.js +0 -60
- package/dist-pkg/input/transporte-em-uso.d.ts +0 -101
- package/dist-pkg/input/transporte-em-uso.js +0 -130
- package/dist-pkg/platform/audio-nav.d.ts +0 -51
- package/dist-pkg/platform/audio-nav.js +0 -99
- package/dist-pkg/platform/pesados-catalogo.d.ts +0 -14
- package/dist-pkg/platform/pesados-catalogo.js +0 -177
- package/dist-pkg/platform/pesados.d.ts +0 -31
- package/dist-pkg/platform/pesados.js +0 -75
- package/dist-pkg/platform/vozes-prontas.d.ts +0 -28
- package/dist-pkg/platform/vozes-prontas.js +0 -61
- package/dist-pkg/render/camera.d.ts +0 -58
- package/dist-pkg/render/camera.js +0 -105
- package/dist-pkg/render/cenario-data.d.ts +0 -127
- package/dist-pkg/render/cenario-data.js +0 -145
- package/dist-pkg/render/city-tex.d.ts +0 -63
- package/dist-pkg/render/city-tex.js +0 -228
- package/dist-pkg/render/city-tiles.d.ts +0 -11
- package/dist-pkg/render/city-tiles.js +0 -140
- package/dist-pkg/render/draw.d.ts +0 -149
- package/dist-pkg/render/draw.js +0 -231
- package/dist-pkg/render/fx.d.ts +0 -63
- package/dist-pkg/render/fx.js +0 -123
- package/dist-pkg/render/minimap.d.ts +0 -11
- package/dist-pkg/render/minimap.js +0 -94
- package/dist-pkg/render/parallax.d.ts +0 -85
- package/dist-pkg/render/parallax.js +0 -158
- package/dist-pkg/render/player-anim.d.ts +0 -71
- package/dist-pkg/render/player-anim.js +0 -152
- package/dist-pkg/render/recycling-tex.d.ts +0 -48
- package/dist-pkg/render/recycling-tex.js +0 -164
- package/dist-pkg/render/scene-city.d.ts +0 -77
- package/dist-pkg/render/scene-city.js +0 -181
- package/dist-pkg/render/scene-parallax.d.ts +0 -72
- package/dist-pkg/render/scene-parallax.js +0 -426
- package/dist-pkg/render/scene-sky.d.ts +0 -126
- package/dist-pkg/render/scene-sky.js +0 -295
- package/dist-pkg/render/set-cenario.d.ts +0 -54
- package/dist-pkg/render/set-cenario.js +0 -103
- package/dist-pkg/render/textures.d.ts +0 -75
- package/dist-pkg/render/textures.js +0 -240
- package/dist-pkg/render/title-scene.d.ts +0 -46
- package/dist-pkg/render/title-scene.js +0 -75
- package/dist-pkg/render/weather.d.ts +0 -96
- package/dist-pkg/render/weather.js +0 -171
- package/dist-pkg/render/wheelchair-sprites.d.ts +0 -32
- package/dist-pkg/render/wheelchair-sprites.js +0 -69
- package/dist-pkg/render/world-tex.d.ts +0 -18
- package/dist-pkg/render/world-tex.js +0 -87
- package/dist-pkg/ui/activities-menu.d.ts +0 -258
- package/dist-pkg/ui/activities-menu.js +0 -648
- package/dist-pkg/ui/caa-sets.d.ts +0 -39
- package/dist-pkg/ui/caa-sets.js +0 -65
- package/dist-pkg/ui/map-hub.d.ts +0 -56
- package/dist-pkg/ui/map-hub.js +0 -138
- package/dist-pkg/ui/settings-caa.d.ts +0 -45
- package/dist-pkg/ui/settings-caa.js +0 -137
- package/dist-pkg/ui/settings-motor.d.ts +0 -175
- package/dist-pkg/ui/settings-motor.js +0 -342
- package/dist-pkg/ui/webcam.d.ts +0 -7
- package/dist-pkg/ui/webcam.js +0 -93
|
@@ -1,100 +1,124 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
-
/**
|
|
2
|
+
/** The fourteen positions the engine knows. None of them is a word a child reads. */
|
|
3
3
|
export declare const ACTIONS: readonly ["up", "down", "left", "right", "action1", "action2", "action3", "action4", "leftShoulder", "leftTrigger", "rightShoulder", "rightTrigger", "start", "select"];
|
|
4
4
|
export type Action = (typeof ACTIONS)[number];
|
|
5
|
-
/**
|
|
5
|
+
/** The four directions, which every transport has to reach. */
|
|
6
6
|
export declare const DIRECTIONS: readonly ["up", "down", "left", "right"];
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* The eight verbs, in TWO halves named by different criteria, and that is a decision, not carelessness:
|
|
9
9
|
*
|
|
10
|
-
* · `action1`..`action4` —
|
|
11
|
-
*
|
|
12
|
-
* · `leftShoulder`, `leftTrigger`, `rightShoulder`, `rightTrigger` —
|
|
13
|
-
*
|
|
10
|
+
* · `action1`..`action4` — the diamond. NUMBERED, because four positions in a cross have no names that cross genres:
|
|
11
|
+
* what a platformer calls jump, a quiz calls confirm.
|
|
12
|
+
* · `leftShoulder`, `leftTrigger`, `rightShoulder`, `rightTrigger` — NAMED by the hand's anatomy: two fingers per
|
|
13
|
+
* hand, one above the other. ADR-0086.
|
|
14
14
|
*
|
|
15
|
-
* ⚠️
|
|
16
|
-
*
|
|
15
|
+
* ⚠️ THERE IS NO HIERARCHY BETWEEN THEM in the contract. The order is that of presentation — in the gamepad wizard, on
|
|
16
|
+
* the remap screen — and not a scale of importance: a game may use `rightShoulder` and nothing else.
|
|
17
17
|
*/
|
|
18
18
|
export declare const VERBS: readonly ["action1", "action2", "action3", "action4", "leftShoulder", "leftTrigger", "rightShoulder", "rightTrigger"];
|
|
19
19
|
/**
|
|
20
|
-
*
|
|
20
|
+
* The two SYSTEM ones. They do not belong to the game's world: `start` pauses and resumes, `select` opens what belongs
|
|
21
|
+
* to the session.
|
|
21
22
|
*
|
|
22
|
-
* ⚠️
|
|
23
|
-
*
|
|
24
|
-
*
|
|
23
|
+
* ⚠️ AND THAT IS WHY THE ENGINE MAY NAME THEM and may not name the others. ADR-0074 forbids an abstract name reaching a
|
|
24
|
+
* person because `action1` says nothing to anyone — but "start" and "select" are what has been printed on the pad
|
|
25
|
+
* itself since 1983, and the child reads that legend before ours.
|
|
25
26
|
*/
|
|
26
27
|
export declare const SYSTEM: readonly ["start", "select"];
|
|
27
|
-
/**
|
|
28
|
+
/** What the child reads and hears for a position: the name, and the sentence that explains it when they ask. */
|
|
28
29
|
export interface ActionWord {
|
|
29
|
-
/**
|
|
30
|
+
/** "Jump", "Confirm", "Place piece". NEVER `action2` — an abstract name reaching a person is a defect. */
|
|
30
31
|
readonly label: string;
|
|
31
32
|
/**
|
|
32
|
-
*
|
|
33
|
+
* The SHORT version, for where the long one does not fit. Falls back to `label` when absent.
|
|
33
34
|
*
|
|
34
|
-
* ⚠️
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* ações, `act.*` e `legend.*`. A distinção é do jogo, não da engine, então atravessa com as palavras.
|
|
35
|
+
* ⚠️ NOT A STYLE PREFERENCE: MEASURED WIDTH. A legend puts the word under a glyph, in a row of four, where the longer
|
|
36
|
+
* remap-screen wording does not fit — which is why the dictionary once had TWO families of keys for the same four
|
|
37
|
+
* actions. The distinction is the game's, not the engine's, so it crosses with the words.
|
|
38
38
|
*
|
|
39
|
-
* ⚠️
|
|
40
|
-
*
|
|
41
|
-
*
|
|
39
|
+
* ⚠️ AND THE FALLBACK TO `label` DEGRADES VISUALLY, not functionally: a game that declares no `short` gets the long
|
|
40
|
+
* word squeezed, not an empty legend. Chosen because a mute legend is worse than a tight one — the first vanishes for
|
|
41
|
+
* a screen reader user, the second does not.
|
|
42
42
|
*/
|
|
43
43
|
readonly short?: string;
|
|
44
|
-
/**
|
|
44
|
+
/** Optional, for the remap screen: what this button does, in one sentence. */
|
|
45
45
|
readonly hint?: string;
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
|
-
*
|
|
48
|
+
* The vocabulary of ONE game: for each position it uses, its word.
|
|
49
49
|
*
|
|
50
|
-
* ⚠️
|
|
51
|
-
*
|
|
52
|
-
* frente de uma criança.
|
|
50
|
+
* ⚠️ PARTIAL ON PURPOSE. A game declares ONLY the positions it uses. Requiring all fourteen would make a quiz invent a
|
|
51
|
+
* name for a trigger it does not have, and an invented name ends up on a remap screen in front of a child.
|
|
53
52
|
*/
|
|
54
53
|
export type ActionPreset = Partial<Readonly<Record<Action, ActionWord>>>;
|
|
55
|
-
/**
|
|
54
|
+
/** The positions this preset names, in the canonical order of `ACTIONS`. */
|
|
56
55
|
export declare function presetActions(p: ActionPreset): Action[];
|
|
57
56
|
/**
|
|
58
|
-
*
|
|
57
|
+
* The question the engine asks the game when it has to SHOW an action: "what is this called?".
|
|
59
58
|
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
59
|
+
* It is the cut's boundary in the shape of a function. The engine knows a position exists; only the game knows the
|
|
60
|
+
* word, and this function is what crosses.
|
|
62
61
|
*/
|
|
63
62
|
export type ActionLabeller = (a: Action) => string;
|
|
64
63
|
/**
|
|
65
|
-
*
|
|
64
|
+
* Builds the translator from a preset.
|
|
66
65
|
*
|
|
67
|
-
* ⚠️
|
|
68
|
-
*
|
|
69
|
-
*
|
|
66
|
+
* ⚠️ AND WHAT IT DOES WITH AN UNNAMED ACTION IS THE WHOLE DECISION. Returning `action7` would put an abstract name in
|
|
67
|
+
* front of a child, which ADR-0074 calls a defect in so many words. Returning empty would silence the screen reader,
|
|
68
|
+
* the silent defect `speakableProblems` already chases elsewhere.
|
|
70
69
|
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
70
|
+
* It returns `null`, and the caller decides: the pad wizard DOES NOT ASK for an action the game does not name — if the
|
|
71
|
+
* game does not use it, there is nothing to map. An absence becomes one step fewer, never a mute step.
|
|
73
72
|
*/
|
|
74
73
|
export declare function labellerFrom(p: ActionPreset): (a: Action) => string | null;
|
|
75
74
|
/**
|
|
76
|
-
*
|
|
75
|
+
* The same, in the SHORT version — for a legend, where the word lives under a glyph.
|
|
77
76
|
*
|
|
78
|
-
* ⚠️
|
|
79
|
-
*
|
|
77
|
+
* ⚠️ IT FALLS BACK TO `label`, and the fallback is the decision: a tight legend is worse than a neat one and better than
|
|
78
|
+
* an empty one. Empty would also vanish for a screen reader user, which is the cost not accepted here.
|
|
80
79
|
*/
|
|
81
80
|
export declare function shortLabellerFrom(p: ActionPreset): (a: Action) => string | null;
|
|
82
81
|
/**
|
|
83
|
-
*
|
|
82
|
+
* Is a preset well formed? Returns the problems — EMPTY means conformant.
|
|
84
83
|
*
|
|
85
|
-
* ⚠️
|
|
86
|
-
* `
|
|
87
|
-
*
|
|
84
|
+
* ⚠️ WHAT IT CATCHES IS THE EMPTY LABEL, the same silent defect as `speakableProblems` in `core/contract`: a blank
|
|
85
|
+
* `label` breaks nothing, warns nobody, and leaves the remap screen with a mute row — for a screen reader user, a button
|
|
86
|
+
* that exists and has no name.
|
|
88
87
|
*/
|
|
89
88
|
export declare function presetProblems(p: ActionPreset | null | undefined): string[];
|
|
90
|
-
/**
|
|
89
|
+
/**
|
|
90
|
+
* `start` IS THE PAUSE'S, AND A GAME DOES NOT TAKE IT (ADR-0144 §4). Returns the reason, or `null`.
|
|
91
|
+
*
|
|
92
|
+
* ⚠️ THIS IS THE ONE CLAUSE OF THAT RECORD THAT ADDS A RESTRICTION instead of reusing something that was
|
|
93
|
+
* already there, and it is written down — rather than discovered in a conflict — because the record asked
|
|
94
|
+
* for exactly that. Since ADR-0122 the pause is not declinable, and `start` is the only position that
|
|
95
|
+
* reaches it: a game that claimed it for something else would be declining the pause by the back door, and
|
|
96
|
+
* the child would get four settings panels that are mounted, in the document, and unreachable.
|
|
97
|
+
*
|
|
98
|
+
* 📌 SEPARATE FROM `presetProblems`, and on purpose. That one answers «is this preset well formed?» and
|
|
99
|
+
* nobody calls it yet (issue for the wiring); this one is a PRE-CONDITION the boot refuses on, which is a
|
|
100
|
+
* different rubric — a malformed label degrades a remap screen, a stolen `start` removes the pause.
|
|
101
|
+
*
|
|
102
|
+
* 📌 `select` has its own sibling below, since ADR-0155 made it the door to the pause menus. Until then it stayed
|
|
103
|
+
* free on purpose: refusing it would have been deciding, in advance, something nobody had decided.
|
|
104
|
+
*/
|
|
105
|
+
export declare function startClaimProblem(p: ActionPreset | null | undefined): string | null;
|
|
106
|
+
/**
|
|
107
|
+
* `select` OPENS THE PAUSE MENUS, AND A GAME DOES NOT TAKE IT EITHER (ADR-0155 §4). Returns the reason, or `null`.
|
|
108
|
+
*
|
|
109
|
+
* ⚠️ The same argument as `start`, one door over: START is now the quick pause and SELECT the six-item card, so
|
|
110
|
+
* a game claiming `select` would leave quitting, the number of players and the inclusion settings unreachable.
|
|
111
|
+
* 📏 Measured when written: no game repository declares `select` in a preset.
|
|
112
|
+
*/
|
|
113
|
+
export declare function selectClaimProblem(p: ActionPreset | null | undefined): string | null;
|
|
114
|
+
/** Is it a known action? A boundary guard for data that came from outside (a saved map, a remap). */
|
|
91
115
|
export declare function isAction(x: unknown): x is Action;
|
|
92
116
|
/**
|
|
93
|
-
*
|
|
117
|
+
* Is a declaration of the actions a game uses well formed? Returns the problems — EMPTY means conformant.
|
|
94
118
|
*
|
|
95
|
-
* ⚠️
|
|
96
|
-
* `left`/`right`;
|
|
97
|
-
*
|
|
98
|
-
*
|
|
119
|
+
* ⚠️ REQUIRING THE FOUR DIRECTIONS WOULD BE WRONG, and the temptation is strong: a quiz walks by `up`/`down` and uses
|
|
120
|
+
* no `left`/`right`; a one-button game uses none. The game decides the set. What this checks is that the set is
|
|
121
|
+
* NAMEABLE and not empty — a game with no action cannot be played, and that would otherwise fail in silence in the
|
|
122
|
+
* first transport that tried to bind to nothing.
|
|
99
123
|
*/
|
|
100
124
|
export declare function actionSetProblems(used: readonly string[] | null | undefined): string[];
|
package/dist-pkg/core/actions.js
CHANGED
|
@@ -1,79 +1,73 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
-
// core/actions —
|
|
2
|
+
// core/actions — THE FOURTEEN ABSTRACT ACTIONS. The single source of the engine's input vocabulary.
|
|
3
3
|
//
|
|
4
|
-
// =========================
|
|
5
|
-
//
|
|
6
|
-
//
|
|
4
|
+
// ========================= WHAT THIS IS =========================
|
|
5
|
+
// ADR-0074 decided that the engine knows POSITIONS, not verbs, and that the GAME supplies the words. This module is
|
|
6
|
+
// the list of those positions and nothing else: no dependencies, no I/O, importable from both sides of the boundary.
|
|
7
|
+
// It was written before the transports migrated to it (issue #103), so the migration had a destination instead of
|
|
8
|
+
// inventing one.
|
|
7
9
|
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
// os transportes passam a apontar, escrito antes para que a migração tenha destino em vez de o inventar.
|
|
10
|
+
// ========================= WHY FOURTEEN AND NOT NINE =========================
|
|
11
|
+
// ADR-0074 recorded nine and wrote, among its own drawbacks, that nine is a CEILING a genre may want to exceed and
|
|
12
|
+
// that the record must say what happens then. The Dev exceeded it, asking for five more for richer games.
|
|
12
13
|
//
|
|
13
|
-
//
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
// cinco para jogos mais elaborados. O ADR-0085 é o que acontece.
|
|
14
|
+
// ⚠️ AND THE FOUR NEW ONES ARE `leftShoulder`, `leftTrigger`, `rightShoulder`, `rightTrigger` — NOT
|
|
15
|
+
// `action5`..`action8`. I argued for numbers and the Dev decided against, for a reason ADR-0086 records: `action7` is
|
|
16
|
+
// unreadable where someone programs, and a vocabulary nobody can read aloud is not abstraction, it is cipher.
|
|
17
17
|
//
|
|
18
|
-
// ⚠️
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
-
// emendado.
|
|
18
|
+
// ⚠️ AND THE OBJECTION STAYS WRITTEN, because it does not vanish when the decision went the other way: shoulder and
|
|
19
|
+
// trigger are a GAMEPAD's shape. On a keyboard `leftTrigger` is a key; on touch, a slot; for a speech recogniser, a
|
|
20
|
+
// word. ADR-0086 answers that the shape is ANATOMICAL before it is a gamepad's — two fingers per hand, one above the
|
|
21
|
+
// other — and that this crosses transports better than a number does. Whoever disagrees should read both records.
|
|
23
22
|
//
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
|
|
27
|
-
// cima do outro — e que isso atravessa transportes melhor do que um número atravessa. Quem discordar leia os
|
|
28
|
-
// dois registros, que é para isso que eles existem.
|
|
29
|
-
//
|
|
30
|
-
// `start` e `select` mantêm nome pelo critério que já valia para `start`: são FUNÇÃO, não posição — o que é
|
|
31
|
-
// do sistema e não do mundo do jogo.
|
|
32
|
-
/** As quatorze posições que a engine conhece. Nenhuma delas é uma palavra que uma criança leia. */
|
|
23
|
+
// `start` and `select` keep names by the criterion that already held for `start`: they are a FUNCTION, not a
|
|
24
|
+
// position — what belongs to the system and not to the game's world.
|
|
25
|
+
/** The fourteen positions the engine knows. None of them is a word a child reads. */
|
|
33
26
|
export const ACTIONS = [
|
|
34
27
|
'up', 'down', 'left', 'right',
|
|
35
28
|
'action1', 'action2', 'action3', 'action4',
|
|
36
29
|
'leftShoulder', 'leftTrigger', 'rightShoulder', 'rightTrigger',
|
|
37
30
|
'start', 'select',
|
|
38
31
|
];
|
|
39
|
-
/**
|
|
32
|
+
/** The four directions, which every transport has to reach. */
|
|
40
33
|
export const DIRECTIONS = ['up', 'down', 'left', 'right'];
|
|
41
34
|
/**
|
|
42
|
-
*
|
|
35
|
+
* The eight verbs, in TWO halves named by different criteria, and that is a decision, not carelessness:
|
|
43
36
|
*
|
|
44
|
-
* · `action1`..`action4` —
|
|
45
|
-
*
|
|
46
|
-
* · `leftShoulder`, `leftTrigger`, `rightShoulder`, `rightTrigger` —
|
|
47
|
-
*
|
|
37
|
+
* · `action1`..`action4` — the diamond. NUMBERED, because four positions in a cross have no names that cross genres:
|
|
38
|
+
* what a platformer calls jump, a quiz calls confirm.
|
|
39
|
+
* · `leftShoulder`, `leftTrigger`, `rightShoulder`, `rightTrigger` — NAMED by the hand's anatomy: two fingers per
|
|
40
|
+
* hand, one above the other. ADR-0086.
|
|
48
41
|
*
|
|
49
|
-
* ⚠️
|
|
50
|
-
*
|
|
42
|
+
* ⚠️ THERE IS NO HIERARCHY BETWEEN THEM in the contract. The order is that of presentation — in the gamepad wizard, on
|
|
43
|
+
* the remap screen — and not a scale of importance: a game may use `rightShoulder` and nothing else.
|
|
51
44
|
*/
|
|
52
45
|
export const VERBS = [
|
|
53
46
|
'action1', 'action2', 'action3', 'action4',
|
|
54
47
|
'leftShoulder', 'leftTrigger', 'rightShoulder', 'rightTrigger',
|
|
55
48
|
];
|
|
56
49
|
/**
|
|
57
|
-
*
|
|
50
|
+
* The two SYSTEM ones. They do not belong to the game's world: `start` pauses and resumes, `select` opens what belongs
|
|
51
|
+
* to the session.
|
|
58
52
|
*
|
|
59
|
-
* ⚠️
|
|
60
|
-
*
|
|
61
|
-
*
|
|
53
|
+
* ⚠️ AND THAT IS WHY THE ENGINE MAY NAME THEM and may not name the others. ADR-0074 forbids an abstract name reaching a
|
|
54
|
+
* person because `action1` says nothing to anyone — but "start" and "select" are what has been printed on the pad
|
|
55
|
+
* itself since 1983, and the child reads that legend before ours.
|
|
62
56
|
*/
|
|
63
57
|
export const SYSTEM = ['start', 'select'];
|
|
64
|
-
/**
|
|
58
|
+
/** The positions this preset names, in the canonical order of `ACTIONS`. */
|
|
65
59
|
export function presetActions(p) {
|
|
66
60
|
return ACTIONS.filter((a) => p[a] !== undefined);
|
|
67
61
|
}
|
|
68
62
|
/**
|
|
69
|
-
*
|
|
63
|
+
* Builds the translator from a preset.
|
|
70
64
|
*
|
|
71
|
-
* ⚠️
|
|
72
|
-
*
|
|
73
|
-
*
|
|
65
|
+
* ⚠️ AND WHAT IT DOES WITH AN UNNAMED ACTION IS THE WHOLE DECISION. Returning `action7` would put an abstract name in
|
|
66
|
+
* front of a child, which ADR-0074 calls a defect in so many words. Returning empty would silence the screen reader,
|
|
67
|
+
* the silent defect `speakableProblems` already chases elsewhere.
|
|
74
68
|
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
69
|
+
* It returns `null`, and the caller decides: the pad wizard DOES NOT ASK for an action the game does not name — if the
|
|
70
|
+
* game does not use it, there is nothing to map. An absence becomes one step fewer, never a mute step.
|
|
77
71
|
*/
|
|
78
72
|
export function labellerFrom(p) {
|
|
79
73
|
return (a) => {
|
|
@@ -82,39 +76,39 @@ export function labellerFrom(p) {
|
|
|
82
76
|
};
|
|
83
77
|
}
|
|
84
78
|
/**
|
|
85
|
-
*
|
|
79
|
+
* The same, in the SHORT version — for a legend, where the word lives under a glyph.
|
|
86
80
|
*
|
|
87
|
-
* ⚠️
|
|
88
|
-
*
|
|
81
|
+
* ⚠️ IT FALLS BACK TO `label`, and the fallback is the decision: a tight legend is worse than a neat one and better than
|
|
82
|
+
* an empty one. Empty would also vanish for a screen reader user, which is the cost not accepted here.
|
|
89
83
|
*/
|
|
90
84
|
export function shortLabellerFrom(p) {
|
|
91
85
|
return (a) => {
|
|
92
86
|
const w = p[a];
|
|
93
87
|
if (!w)
|
|
94
88
|
return null;
|
|
95
|
-
const
|
|
96
|
-
return
|
|
89
|
+
const short = w.short && w.short.trim() ? w.short : w.label;
|
|
90
|
+
return short && short.trim() ? short : null;
|
|
97
91
|
};
|
|
98
92
|
}
|
|
99
93
|
/**
|
|
100
|
-
*
|
|
94
|
+
* Is a preset well formed? Returns the problems — EMPTY means conformant.
|
|
101
95
|
*
|
|
102
|
-
* ⚠️
|
|
103
|
-
* `
|
|
104
|
-
*
|
|
96
|
+
* ⚠️ WHAT IT CATCHES IS THE EMPTY LABEL, the same silent defect as `speakableProblems` in `core/contract`: a blank
|
|
97
|
+
* `label` breaks nothing, warns nobody, and leaves the remap screen with a mute row — for a screen reader user, a button
|
|
98
|
+
* that exists and has no name.
|
|
105
99
|
*/
|
|
106
100
|
export function presetProblems(p) {
|
|
107
101
|
if (!p)
|
|
108
102
|
return ['preset: missing'];
|
|
109
103
|
const problemas = [];
|
|
110
|
-
const
|
|
111
|
-
if (
|
|
104
|
+
const named = presetActions(p);
|
|
105
|
+
if (named.length === 0)
|
|
112
106
|
problemas.push('preset: names no action - the child would see an unlabelled control');
|
|
113
|
-
for (const
|
|
114
|
-
if (!isAction(
|
|
115
|
-
problemas.push(`preset: ${
|
|
107
|
+
for (const key of Object.keys(p)) {
|
|
108
|
+
if (!isAction(key))
|
|
109
|
+
problemas.push(`preset: ${key} is not an action`);
|
|
116
110
|
}
|
|
117
|
-
for (const a of
|
|
111
|
+
for (const a of named) {
|
|
118
112
|
const w = p[a];
|
|
119
113
|
if (!w || !w.label || !w.label.trim()) {
|
|
120
114
|
problemas.push(`preset: ${a} has an empty label - the remap screen would show a nameless button`);
|
|
@@ -122,17 +116,52 @@ export function presetProblems(p) {
|
|
|
122
116
|
}
|
|
123
117
|
return problemas;
|
|
124
118
|
}
|
|
125
|
-
/**
|
|
119
|
+
/**
|
|
120
|
+
* `start` IS THE PAUSE'S, AND A GAME DOES NOT TAKE IT (ADR-0144 §4). Returns the reason, or `null`.
|
|
121
|
+
*
|
|
122
|
+
* ⚠️ THIS IS THE ONE CLAUSE OF THAT RECORD THAT ADDS A RESTRICTION instead of reusing something that was
|
|
123
|
+
* already there, and it is written down — rather than discovered in a conflict — because the record asked
|
|
124
|
+
* for exactly that. Since ADR-0122 the pause is not declinable, and `start` is the only position that
|
|
125
|
+
* reaches it: a game that claimed it for something else would be declining the pause by the back door, and
|
|
126
|
+
* the child would get four settings panels that are mounted, in the document, and unreachable.
|
|
127
|
+
*
|
|
128
|
+
* 📌 SEPARATE FROM `presetProblems`, and on purpose. That one answers «is this preset well formed?» and
|
|
129
|
+
* nobody calls it yet (issue for the wiring); this one is a PRE-CONDITION the boot refuses on, which is a
|
|
130
|
+
* different rubric — a malformed label degrades a remap screen, a stolen `start` removes the pause.
|
|
131
|
+
*
|
|
132
|
+
* 📌 `select` has its own sibling below, since ADR-0155 made it the door to the pause menus. Until then it stayed
|
|
133
|
+
* free on purpose: refusing it would have been deciding, in advance, something nobody had decided.
|
|
134
|
+
*/
|
|
135
|
+
export function startClaimProblem(p) {
|
|
136
|
+
if (!p || p.start === undefined)
|
|
137
|
+
return null;
|
|
138
|
+
return 'preset: «start» is the position that opens the pause (ADR-0144 §4) and a game may not claim it; '
|
|
139
|
+
+ 'use one of the eight verb positions instead (action1..action4, leftShoulder, leftTrigger, rightShoulder, rightTrigger)';
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* `select` OPENS THE PAUSE MENUS, AND A GAME DOES NOT TAKE IT EITHER (ADR-0155 §4). Returns the reason, or `null`.
|
|
143
|
+
*
|
|
144
|
+
* ⚠️ The same argument as `start`, one door over: START is now the quick pause and SELECT the six-item card, so
|
|
145
|
+
* a game claiming `select` would leave quitting, the number of players and the inclusion settings unreachable.
|
|
146
|
+
* 📏 Measured when written: no game repository declares `select` in a preset.
|
|
147
|
+
*/
|
|
148
|
+
export function selectClaimProblem(p) {
|
|
149
|
+
if (!p || p.select === undefined)
|
|
150
|
+
return null;
|
|
151
|
+
return 'preset: «select» is the position that opens the pause menus (ADR-0155 §4) and a game may not claim it; '
|
|
152
|
+
+ 'use one of the eight verb positions instead (action1..action4, leftShoulder, leftTrigger, rightShoulder, rightTrigger)';
|
|
153
|
+
}
|
|
154
|
+
/** Is it a known action? A boundary guard for data that came from outside (a saved map, a remap). */
|
|
126
155
|
export function isAction(x) {
|
|
127
156
|
return typeof x === 'string' && ACTIONS.includes(x);
|
|
128
157
|
}
|
|
129
158
|
/**
|
|
130
|
-
*
|
|
159
|
+
* Is a declaration of the actions a game uses well formed? Returns the problems — EMPTY means conformant.
|
|
131
160
|
*
|
|
132
|
-
* ⚠️
|
|
133
|
-
* `left`/`right`;
|
|
134
|
-
*
|
|
135
|
-
*
|
|
161
|
+
* ⚠️ REQUIRING THE FOUR DIRECTIONS WOULD BE WRONG, and the temptation is strong: a quiz walks by `up`/`down` and uses
|
|
162
|
+
* no `left`/`right`; a one-button game uses none. The game decides the set. What this checks is that the set is
|
|
163
|
+
* NAMEABLE and not empty — a game with no action cannot be played, and that would otherwise fail in silence in the
|
|
164
|
+
* first transport that tried to bind to nothing.
|
|
136
165
|
*/
|
|
137
166
|
export function actionSetProblems(used) {
|
|
138
167
|
const p = [];
|
|
@@ -140,9 +169,9 @@ export function actionSetProblems(used) {
|
|
|
140
169
|
return ['action set: missing'];
|
|
141
170
|
if (used.length === 0)
|
|
142
171
|
return ['action set: empty - a game with no action cannot be played'];
|
|
143
|
-
const
|
|
144
|
-
if (
|
|
145
|
-
p.push(`action set: unknown action(s) ${
|
|
172
|
+
const unknown = used.filter((a) => !isAction(a));
|
|
173
|
+
if (unknown.length)
|
|
174
|
+
p.push(`action set: unknown action(s) ${unknown.join(', ')}`);
|
|
146
175
|
if (new Set(used).size !== used.length)
|
|
147
176
|
p.push('action set: has a repeated action');
|
|
148
177
|
return p;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
/** The calm cycle: 0 = normal · 1 = quiet (reduces) · 2 = silent (switches off). */
|
|
3
|
+
export declare const CALM_NAMES: readonly string[];
|
|
4
|
+
/** The audio categories calm mode governs. The others are left intact on purpose (see the header). */
|
|
5
|
+
export declare const CALM_AUDIO_CATS: readonly string[];
|
|
6
|
+
/** One step of the cycle. */
|
|
7
|
+
export declare const nextCalmMode: (cur: number) => number;
|
|
8
|
+
/**
|
|
9
|
+
* The stored level, sanitised, with the caller's fallback.
|
|
10
|
+
*
|
|
11
|
+
* ⚠️ Data from the browser is data from OUTSIDE: an invented level would pick `CALM_NAMES[3]`, which is `undefined`, and the
|
|
12
|
+
* announcement to the screen reader would come out empty — the child who depends on it would hear silence and not know which
|
|
13
|
+
* level she is in.
|
|
14
|
+
*/
|
|
15
|
+
export declare function sanitiseTeaLevel(raw: number, fallback: number): number;
|
|
16
|
+
/**
|
|
17
|
+
* What the level does to ONE audio category.
|
|
18
|
+
*
|
|
19
|
+
* 📌 The clamp of level 1 is DESTRUCTIVE, and it is in plain sight for that reason: it writes 0.3 over the volume the child
|
|
20
|
+
* chose, and going back to level 0 returns the stored value, not the one she had before. Extracted so that this can be
|
|
21
|
+
* measured by a case.
|
|
22
|
+
*/
|
|
23
|
+
export declare function calmAudioPlan(calmMode: number, vol: number): {
|
|
24
|
+
on: boolean;
|
|
25
|
+
vol: number;
|
|
26
|
+
};
|
|
27
|
+
/** What the level does to the two reduced-motion flags. */
|
|
28
|
+
export declare function calmMotionPlan(calmMode: number): {
|
|
29
|
+
sceneReduced: boolean;
|
|
30
|
+
charFrozen: boolean;
|
|
31
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
// core/calm-mode — SENSORY COMFORT IN THREE LEVELS, and what each one silences (ADR-0028; issue #203).
|
|
3
|
+
//
|
|
4
|
+
// 🔴 WHY THIS LEFT `ui/pause-icons`: that module had reached 695 lines of code and 127 decision nodes (ADR-0221), and this
|
|
5
|
+
// group is not about ICONS. It is about what a child who cannot bear noise needs the engine to silence — the icon is one of
|
|
6
|
+
// the surfaces she asks through; the panel row is another. A module that answers «what does level 2 do to the audio?» should
|
|
7
|
+
// not require reading a file about the accessibility bar to be found.
|
|
8
|
+
//
|
|
9
|
+
// ⚠️ A LEAF MODULE: zero imports, zero DOM, zero storage. Everything here is a question with an answer — which is what makes
|
|
10
|
+
// the destructive clamp of level 1 testable without mounting anything.
|
|
11
|
+
//
|
|
12
|
+
// 📌 WHAT IT NEVER TOUCHES, and it is the decision that defines it: TTS, sonar, ledge guard and guide. The calm level is about
|
|
13
|
+
// NOISE, not about losing navigation — a child in silent mode still needs to hear where she is.
|
|
14
|
+
/** The calm cycle: 0 = normal · 1 = quiet (reduces) · 2 = silent (switches off). */
|
|
15
|
+
export const CALM_NAMES = ['calm.off', 'calm.quiet', 'calm.silent'];
|
|
16
|
+
/** The audio categories calm mode governs. The others are left intact on purpose (see the header). */
|
|
17
|
+
export const CALM_AUDIO_CATS = ['ambient', 'music', 'earcons', 'interact'];
|
|
18
|
+
/** One step of the cycle. */
|
|
19
|
+
export const nextCalmMode = (cur) => (cur + 1) % CALM_NAMES.length;
|
|
20
|
+
/**
|
|
21
|
+
* The stored level, sanitised, with the caller's fallback.
|
|
22
|
+
*
|
|
23
|
+
* ⚠️ Data from the browser is data from OUTSIDE: an invented level would pick `CALM_NAMES[3]`, which is `undefined`, and the
|
|
24
|
+
* announcement to the screen reader would come out empty — the child who depends on it would hear silence and not know which
|
|
25
|
+
* level she is in.
|
|
26
|
+
*/
|
|
27
|
+
export function sanitiseTeaLevel(raw, fallback) {
|
|
28
|
+
return Number.isInteger(raw) && raw >= 0 && raw < CALM_NAMES.length ? raw : fallback;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* What the level does to ONE audio category.
|
|
32
|
+
*
|
|
33
|
+
* 📌 The clamp of level 1 is DESTRUCTIVE, and it is in plain sight for that reason: it writes 0.3 over the volume the child
|
|
34
|
+
* chose, and going back to level 0 returns the stored value, not the one she had before. Extracted so that this can be
|
|
35
|
+
* measured by a case.
|
|
36
|
+
*/
|
|
37
|
+
export function calmAudioPlan(calmMode, vol) {
|
|
38
|
+
if (calmMode === 0)
|
|
39
|
+
return { on: true, vol };
|
|
40
|
+
if (calmMode === 1)
|
|
41
|
+
return { on: true, vol: Math.min(vol, 0.3) };
|
|
42
|
+
return { on: false, vol };
|
|
43
|
+
}
|
|
44
|
+
/** What the level does to the two reduced-motion flags. */
|
|
45
|
+
export function calmMotionPlan(calmMode) {
|
|
46
|
+
return { sceneReduced: calmMode >= 1, charFrozen: calmMode === 2 };
|
|
47
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
/**
|
|
3
|
+
* THE WEBCAM POSITIONS OF THE QUICK BAR'S 📷 (ADR-0215): off · hands · face · eyes, in that order, one at a time (ADR-0197).
|
|
4
|
+
*
|
|
5
|
+
* 📌 A STATELESS MODULE ON PURPOSE (ADR-0232, issue #207): the positions and their cycle are vocabulary, and a module that
|
|
6
|
+
* only needs the vocabulary must not import `core/state` — the page's one settings store — to get it. `core/state` keeps
|
|
7
|
+
* the stored position and imports its sanitiser from here, like `core/game-speed` for the hourglass.
|
|
8
|
+
*/
|
|
9
|
+
export type CameraControl = 'off' | 'hands' | 'face' | 'eyes';
|
|
10
|
+
/** The positions, in the order the 📷 cycles through them and the motor panel's camera row lists them. */
|
|
11
|
+
export declare const CAMERA_CONTROLS: readonly CameraControl[];
|
|
12
|
+
/** A stored value that is not a position reads as off: the camera must never switch itself on. */
|
|
13
|
+
export declare const toCameraControl: (v: string | null) => CameraControl;
|
|
14
|
+
/** The next position of the 📷 cycle, wrapping back to off. */
|
|
15
|
+
export declare const nextCameraControl: (v: CameraControl) => CameraControl;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
/** The positions, in the order the 📷 cycles through them and the motor panel's camera row lists them. */
|
|
3
|
+
export const CAMERA_CONTROLS = Object.freeze(['off', 'hands', 'face', 'eyes']);
|
|
4
|
+
/** A stored value that is not a position reads as off: the camera must never switch itself on. */
|
|
5
|
+
export const toCameraControl = (v) => (CAMERA_CONTROLS.includes(v) ? v : 'off');
|
|
6
|
+
/** The next position of the 📷 cycle, wrapping back to off. */
|
|
7
|
+
export const nextCameraControl = (v) => CAMERA_CONTROLS[(CAMERA_CONTROLS.indexOf(v) + 1) % CAMERA_CONTROLS.length];
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
/**
|
|
3
|
+
* HOW LONG A SOUND CAPTION STAYS ON SCREEN (plan phase 5c; ADR-0164 rule 4; ADR-0183 §4).
|
|
4
|
+
*
|
|
5
|
+
* The child's reading rate, not a fixed time: the Dev's three — «125 WPM (leitor iniciante), 145WPM (confortável na década de
|
|
6
|
+
* 90 segundo pesquisa), 175WPM (confortável hoje segundo pesquisa)». 145 is Jensema's measured comfortable rate (1998); 125 sits
|
|
7
|
+
* between Burnham's 120 for children and the DCMP's 130; 175 is the Dev's choice, not a measured comfort (ADR-0183).
|
|
8
|
+
* The floor is the 2600 ms the games had measured in play, so a one-word caption keeps its time.
|
|
9
|
+
*/
|
|
10
|
+
export declare const CAPTION_RATES: readonly [125, 145, 175];
|
|
11
|
+
export type CaptionRate = (typeof CAPTION_RATES)[number];
|
|
12
|
+
export declare const CAPTION_MIN_MS = 2600;
|
|
13
|
+
/** A stored or passed rate that is not one of the three reads as the slowest: a typo must never make a caption flash by. */
|
|
14
|
+
export declare function isCaptionRate(ppm: number): CaptionRate;
|
|
15
|
+
export declare function captionDuration(text: string, ppm: number): number;
|