@the-inclusionist/engine 9.0.0 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -78
- package/app/css/style.css +584 -374
- package/app/public/vendor/fonts/bitter-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/bitter-var.woff2 +0 -0
- package/app/public/vendor/fonts/bodonimoda-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/bodonimoda-var.woff2 +0 -0
- package/app/public/vendor/fonts/cat-abril_fatface-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-abril_fatface-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-adlam_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-adlam_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-agu_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-agu_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-alfa_slab_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-alfa_slab_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-are_you_serious-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-are_you_serious-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-asimovian-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-asimovian-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-atkinson_hyperlegible_next-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-atkinson_hyperlegible_next-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bakbak_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bakbak_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bangers-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bangers-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-barriecito-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-barriecito-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-berkshire_swash-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-berkshire_swash-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bevan-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bevan-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bitcount-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bitcount-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bowlby_one_sc-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bowlby_one_sc-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bungee_shade-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bungee_shade-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-charm-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-charm-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-charm-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-charm-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-cherry_bomb_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-cherry_bomb_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-chokokutai-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-chokokutai-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-chonburi-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-chonburi-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-climate_crisis-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-climate_crisis-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-cookie-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-dela_gothic_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-dela_gothic_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-fascinate_inline-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-fascinate_inline-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ga_maamli-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ga_maamli-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-itim-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-itim-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-jacquard_24-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-jacquard_24-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kablammo-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kablammo-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kalam-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kalam-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kalam-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kalam-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-katibeh-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-katibeh-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lemonada-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lemonada-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lilita_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lilita_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lobster-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lobster-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-luckiest_guy-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-luckiest_guy-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-marhey-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-marhey-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-modak-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-modak-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-momo_signature-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-momo_signature-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monofett-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monofett-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monomakh-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monomakh-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monoton-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monoton-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-nerko_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-nerko_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_adlam-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_adlam-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_arabic-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_arabic-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_devanagari-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_devanagari-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_hebrew-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_hebrew-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_jp-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_jp-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_khmer-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_khmer-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_kr-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_kr-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_sc-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_sc-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_thai-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_thai-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ole-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ole-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-pacifico-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-pacifico-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-patrick_hand-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-patrick_hand-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-petit_formal_script-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-petit_formal_script-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-pixelify_sans-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-pixelify_sans-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-plaster-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-plaster-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ar_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_at-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_at_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_nsw-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_nsw_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_qld-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_qld_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_sa-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_sa_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_tas-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_tas_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_vic-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_vic_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_be_vlg-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_be_vlg_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_be_wal-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_be_wal_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_br_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ca_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_cl_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_co_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_cu_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_cz-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_cz_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_grund-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_grund_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_la-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_la_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_sas-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_sas_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_va-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_va_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_dk_loopet-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_dk_loopet_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_dk_uloopet-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_dk_uloopet_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_es_deco_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_es_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_fr_moderne-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_fr_moderne_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_fr_trad-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_fr_trad_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_gb_j_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_gb_s_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hr-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hr_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hr_lijeva-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hr_lijeva_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hu-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hu_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_id-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_id_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ie-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ie_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_in-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_in_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_is-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_is_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_it_moderna-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_it_moderna_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_it_trad-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_it_trad_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_mx_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ng_modern-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ng_modern_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nl-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nl_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_no-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_no_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nz-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nz_basic-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nz_basic_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nz_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_pe_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_pl-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_pl_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_pt_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ro-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ro_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_sk-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_sk_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_tz-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_tz_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_us_modern_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_us_trad_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_vn-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_vn_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_za-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_za_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-potta_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-potta_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranchers-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranchers-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranga-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranga-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranga-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranga-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-risque-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-risque-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-rowdies-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-rowdies-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-rowdies-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-rowdies-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ruge_boogie-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ruge_boogie-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ruslan_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ruslan_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sacramento-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sacramento-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sancreek-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sancreek-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sankofa_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sankofa_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sedgwick_ave_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sedgwick_ave_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-shantell_sans-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-shantell_sans-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-smokum-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-smokum-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-solitreo-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-solitreo-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-spicy_rice-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-spicy_rice-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sriracha-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sriracha-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-srisakdi-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-srisakdi-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-srisakdi-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-srisakdi-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-stix_two_math-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-tillana-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-tillana-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-tillana-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-tillana-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-titan_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-titan_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-yatra_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-yatra_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-yomogi-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-yomogi-400.woff2 +0 -0
- package/app/public/vendor/fonts/dmserifdisplay-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/dmserifdisplay-400.woff2 +0 -0
- package/app/public/vendor/fonts/domine-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/domine-var.woff2 +0 -0
- package/app/public/vendor/fonts/fraunces-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/fraunces-var.woff2 +0 -0
- package/app/public/vendor/fonts/fredoka-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/fredoka-var.woff2 +0 -0
- package/app/public/vendor/fonts/jakarta-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/jakarta-var.woff2 +0 -0
- package/app/public/vendor/fonts/lora-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/lora-var.woff2 +0 -0
- package/app/public/vendor/fonts/merriweather-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/merriweather-var.woff2 +0 -0
- package/app/public/vendor/fonts/notosans-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/notosans-var.woff2 +0 -0
- package/app/public/vendor/fonts/nunito-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/nunito-var.woff2 +0 -0
- package/app/public/vendor/fonts/playfair-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/playfair-var.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-cu.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-es-deco.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-es.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-gb-j.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-gb-s.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-pe.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-pt.woff2 +0 -0
- package/app/public/vendor/fonts/quicksand-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/quicksand-var.woff2 +0 -0
- package/app/public/vendor/fonts/robotoflex-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/robotoflex-var.woff2 +0 -0
- package/app/public/vendor/fonts/sora-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/sora-var.woff2 +0 -0
- package/app/public/vendor/fonts/spacegrotesk-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/spacegrotesk-var.woff2 +0 -0
- package/app/public/vendor/fonts/spectral-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/spectral-400.woff2 +0 -0
- package/app/public/vendor/fonts/spectral-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/spectral-700.woff2 +0 -0
- package/app/public/vendor/fonts/teachers-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/teachers-var.woff2 +0 -0
- package/app/public/vendor/fonts/ubuntu-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/ubuntu-400.woff2 +0 -0
- package/app/public/vendor/fonts/ubuntu-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/ubuntu-700.woff2 +0 -0
- package/app/public/vendor/fonts.css +1167 -51
- package/dist-pkg/boot/create-game.d.ts +444 -215
- package/dist-pkg/boot/create-game.js +3530 -549
- package/dist-pkg/core/a11y-sr.d.ts +25 -3
- package/dist-pkg/core/a11y-sr.js +40 -19
- package/dist-pkg/core/accessible-label.d.ts +17 -0
- package/dist-pkg/core/accessible-label.js +37 -0
- package/dist-pkg/core/accommodation-subjects.d.ts +26 -0
- package/dist-pkg/core/accommodation-subjects.js +32 -0
- package/dist-pkg/core/accommodations.d.ts +107 -0
- package/dist-pkg/core/accommodations.js +178 -0
- package/dist-pkg/core/actions.d.ts +75 -51
- package/dist-pkg/core/actions.js +98 -69
- package/dist-pkg/core/calm-mode.d.ts +31 -0
- package/dist-pkg/core/calm-mode.js +47 -0
- package/dist-pkg/core/camera-cycle.d.ts +15 -0
- package/dist-pkg/core/camera-cycle.js +7 -0
- package/dist-pkg/core/caption-duration.d.ts +15 -0
- package/dist-pkg/core/caption-duration.js +19 -0
- package/dist-pkg/core/cartridge-problems.d.ts +34 -0
- package/dist-pkg/core/cartridge-problems.js +53 -0
- package/dist-pkg/core/constants.d.ts +0 -54
- package/dist-pkg/core/constants.js +9 -76
- package/dist-pkg/core/contract.d.ts +143 -163
- package/dist-pkg/core/contract.js +223 -207
- package/dist-pkg/core/dom-query.d.ts +4 -4
- package/dist-pkg/core/dom-query.js +12 -20
- package/dist-pkg/core/entity.d.ts +62 -77
- package/dist-pkg/core/entity.js +18 -32
- package/dist-pkg/core/escape-html.d.ts +9 -10
- package/dist-pkg/core/escape-html.js +16 -20
- package/dist-pkg/core/flash-threshold.d.ts +17 -0
- package/dist-pkg/core/flash-threshold.js +113 -0
- package/dist-pkg/core/game-speed.d.ts +11 -0
- package/dist-pkg/core/game-speed.js +16 -0
- package/dist-pkg/core/genres.d.ts +20 -0
- package/dist-pkg/core/genres.js +44 -0
- package/dist-pkg/core/i18n.d.ts +87 -41
- package/dist-pkg/core/i18n.js +206 -153
- package/dist-pkg/core/loop.d.ts +17 -6
- package/dist-pkg/core/loop.js +26 -26
- package/dist-pkg/core/pause-icon-catalogue.d.ts +15 -0
- package/dist-pkg/core/pause-icon-catalogue.js +54 -0
- package/dist-pkg/core/ring.d.ts +17 -0
- package/dist-pkg/core/ring.js +29 -0
- package/dist-pkg/core/rng.d.ts +7 -12
- package/dist-pkg/core/rng.js +23 -53
- package/dist-pkg/core/route.d.ts +26 -26
- package/dist-pkg/core/route.js +126 -121
- package/dist-pkg/core/scenes.d.ts +37 -40
- package/dist-pkg/core/scenes.js +41 -43
- package/dist-pkg/core/screens.d.ts +4 -4
- package/dist-pkg/core/screens.js +11 -16
- package/dist-pkg/core/setting-defaults.d.ts +61 -0
- package/dist-pkg/core/setting-defaults.js +66 -0
- package/dist-pkg/core/speech-rate.d.ts +29 -0
- package/dist-pkg/core/speech-rate.js +47 -0
- package/dist-pkg/core/state.d.ts +118 -118
- package/dist-pkg/core/state.js +322 -297
- package/dist-pkg/core/visual-cycles.d.ts +30 -0
- package/dist-pkg/core/visual-cycles.js +52 -0
- package/dist-pkg/core/visual-state.d.ts +13 -0
- package/dist-pkg/core/visual-state.js +6 -0
- package/dist-pkg/educational/activities-registry.d.ts +1 -1
- package/dist-pkg/educational/activities-registry.js +9 -8
- package/dist-pkg/educational/adaptive-engine.d.ts +11 -11
- package/dist-pkg/educational/adaptive-engine.js +17 -17
- package/dist-pkg/educational/segment-bar.d.ts +12 -12
- package/dist-pkg/educational/segment-bar.js +9 -9
- package/dist-pkg/i18n/en.js +321 -215
- package/dist-pkg/i18n/es.js +320 -215
- package/dist-pkg/i18n/pt.js +342 -215
- package/dist-pkg/input/default-bindings.d.ts +37 -38
- package/dist-pkg/input/default-bindings.js +127 -144
- package/dist-pkg/input/devices.d.ts +7 -7
- package/dist-pkg/input/devices.js +17 -16
- package/dist-pkg/input/edges.d.ts +23 -32
- package/dist-pkg/input/edges.js +23 -28
- package/dist-pkg/input/empathy-filter.d.ts +22 -0
- package/dist-pkg/input/empathy-filter.js +34 -0
- package/dist-pkg/input/face-map.d.ts +96 -0
- package/dist-pkg/input/face-map.js +255 -0
- package/dist-pkg/input/face-signals.d.ts +40 -0
- package/dist-pkg/input/face-signals.js +48 -0
- package/dist-pkg/input/gamepad.d.ts +164 -145
- package/dist-pkg/input/gamepad.js +351 -559
- package/dist-pkg/input/gaze-cycle.d.ts +64 -0
- package/dist-pkg/input/gaze-cycle.js +133 -0
- package/dist-pkg/input/gaze-relative.d.ts +68 -0
- package/dist-pkg/input/gaze-relative.js +142 -0
- package/dist-pkg/input/hand-map.d.ts +28 -0
- package/dist-pkg/input/hand-map.js +142 -0
- package/dist-pkg/input/input-cooldown.d.ts +17 -0
- package/dist-pkg/input/input-cooldown.js +39 -0
- package/dist-pkg/input/keyboard-runtime.d.ts +18 -20
- package/dist-pkg/input/keyboard-runtime.js +23 -27
- package/dist-pkg/input/keyboard.d.ts +68 -62
- package/dist-pkg/input/keyboard.js +83 -105
- package/dist-pkg/input/keydown.d.ts +124 -132
- package/dist-pkg/input/keydown.js +283 -288
- package/dist-pkg/input/latch-edge.d.ts +25 -21
- package/dist-pkg/input/latch-edge.js +33 -35
- package/dist-pkg/input/latch-scope.d.ts +43 -47
- package/dist-pkg/input/latch-scope.js +66 -75
- package/dist-pkg/input/latch-store.d.ts +28 -29
- package/dist-pkg/input/latch-store.js +44 -47
- package/dist-pkg/input/latch-sync.d.ts +28 -29
- package/dist-pkg/input/latch-sync.js +25 -25
- package/dist-pkg/input/latch.d.ts +14 -17
- package/dist-pkg/input/latch.js +29 -37
- package/dist-pkg/input/pad-defaults.d.ts +13 -16
- package/dist-pkg/input/pad-defaults.js +21 -28
- package/dist-pkg/input/pad-reading.d.ts +76 -0
- package/dist-pkg/input/pad-reading.js +164 -0
- package/dist-pkg/input/pad-wizard.d.ts +96 -0
- package/dist-pkg/input/pad-wizard.js +205 -0
- package/dist-pkg/input/pointer-space.d.ts +19 -20
- package/dist-pkg/input/pointer-space.js +27 -32
- package/dist-pkg/input/pointer.d.ts +39 -40
- package/dist-pkg/input/pointer.js +42 -45
- package/dist-pkg/input/state.d.ts +101 -89
- package/dist-pkg/input/state.js +54 -134
- package/dist-pkg/input/switch-scan.d.ts +42 -0
- package/dist-pkg/input/switch-scan.js +54 -0
- package/dist-pkg/input/synthetic-source.d.ts +42 -0
- package/dist-pkg/input/synthetic-source.js +57 -0
- package/dist-pkg/input/touch-bindings.d.ts +127 -113
- package/dist-pkg/input/touch-bindings.js +158 -173
- package/dist-pkg/input/touch.d.ts +130 -70
- package/dist-pkg/input/touch.js +321 -123
- package/dist-pkg/input/transport-in-use.d.ts +107 -0
- package/dist-pkg/input/transport-in-use.js +130 -0
- package/dist-pkg/input/transports.d.ts +96 -114
- package/dist-pkg/input/transports.js +104 -106
- package/dist-pkg/input/virtual-controller.d.ts +46 -0
- package/dist-pkg/input/virtual-controller.js +41 -0
- package/dist-pkg/input/vocabulary-migration.d.ts +50 -49
- package/dist-pkg/input/vocabulary-migration.js +80 -79
- package/dist-pkg/input/voice-map.d.ts +43 -0
- package/dist-pkg/input/voice-map.js +125 -0
- package/dist-pkg/platform/audio-ambient.d.ts +13 -1
- package/dist-pkg/platform/audio-ambient.js +11 -13
- package/dist-pkg/platform/audio-earcons.d.ts +20 -19
- package/dist-pkg/platform/audio-earcons.js +51 -42
- package/dist-pkg/platform/audio-jingles.js +9 -10
- package/dist-pkg/platform/audio-mixer.d.ts +14 -2
- package/dist-pkg/platform/audio-mixer.js +36 -39
- package/dist-pkg/platform/audio-sonar.d.ts +96 -113
- package/dist-pkg/platform/audio-sonar.js +245 -238
- package/dist-pkg/platform/audio.d.ts +53 -19
- package/dist-pkg/platform/audio.js +161 -169
- package/dist-pkg/platform/flash-sampler.d.ts +19 -0
- package/dist-pkg/platform/flash-sampler.js +79 -0
- package/dist-pkg/platform/guide-intensity.d.ts +26 -27
- package/dist-pkg/platform/guide-intensity.js +50 -52
- package/dist-pkg/platform/heavy-catalogue.d.ts +31 -0
- package/dist-pkg/platform/heavy-catalogue.js +223 -0
- package/dist-pkg/platform/heavy-mirror.d.ts +26 -0
- package/dist-pkg/platform/heavy-mirror.js +76 -0
- package/dist-pkg/platform/heavy.d.ts +104 -0
- package/dist-pkg/platform/heavy.js +169 -0
- package/dist-pkg/platform/interruptible-speech.d.ts +16 -16
- package/dist-pkg/platform/interruptible-speech.js +50 -51
- package/dist-pkg/platform/kokoro-port.d.ts +27 -0
- package/dist-pkg/platform/kokoro-port.js +50 -0
- package/dist-pkg/platform/kokoro-runtime.d.ts +20 -0
- package/dist-pkg/platform/kokoro-runtime.js +52 -0
- package/dist-pkg/platform/kokoro.d.ts +70 -0
- package/dist-pkg/platform/kokoro.js +133 -0
- package/dist-pkg/platform/listener-scope.d.ts +12 -0
- package/dist-pkg/platform/listener-scope.js +81 -0
- package/dist-pkg/platform/locale-host.d.ts +10 -0
- package/dist-pkg/platform/locale-host.js +34 -0
- package/dist-pkg/platform/microphone.d.ts +51 -0
- package/dist-pkg/platform/microphone.js +118 -0
- package/dist-pkg/platform/onnx-runtime.d.ts +34 -0
- package/dist-pkg/platform/onnx-runtime.js +42 -0
- package/dist-pkg/platform/reading-in-worker.d.ts +40 -0
- package/dist-pkg/platform/reading-in-worker.js +87 -0
- package/dist-pkg/platform/reading-model.d.ts +73 -0
- package/dist-pkg/platform/reading-model.js +247 -0
- package/dist-pkg/platform/reading-runtime.d.ts +24 -0
- package/dist-pkg/platform/reading-runtime.js +159 -0
- package/dist-pkg/platform/reading-worker.d.ts +41 -0
- package/dist-pkg/platform/reading-worker.js +58 -0
- package/dist-pkg/platform/reading.d.ts +69 -0
- package/dist-pkg/platform/reading.js +128 -0
- package/dist-pkg/platform/speech-recognition.d.ts +51 -0
- package/dist-pkg/platform/speech-recognition.js +84 -0
- package/dist-pkg/platform/speech.d.ts +14 -1
- package/dist-pkg/platform/speech.js +13 -13
- package/dist-pkg/platform/storage-keys.d.ts +96 -0
- package/dist-pkg/platform/storage-keys.js +106 -0
- package/dist-pkg/platform/storage.d.ts +46 -111
- package/dist-pkg/platform/storage.js +104 -169
- package/dist-pkg/platform/tts.d.ts +51 -38
- package/dist-pkg/platform/tts.js +217 -119
- package/dist-pkg/platform/vision-loop.d.ts +23 -0
- package/dist-pkg/platform/vision-loop.js +56 -0
- package/dist-pkg/platform/vision.d.ts +132 -0
- package/dist-pkg/platform/vision.js +117 -0
- package/dist-pkg/platform/voice-listener.d.ts +36 -0
- package/dist-pkg/platform/voice-listener.js +88 -0
- package/dist-pkg/platform/voice-plan.d.ts +6 -102
- package/dist-pkg/platform/voice-plan.js +9 -151
- package/dist-pkg/platform/vosk-runtime.d.ts +71 -0
- package/dist-pkg/platform/vosk-runtime.js +93 -0
- package/dist-pkg/render/canvas.d.ts +13 -7
- package/dist-pkg/render/canvas.js +13 -13
- package/dist-pkg/render/crt.d.ts +46 -12
- package/dist-pkg/render/crt.js +82 -80
- package/dist-pkg/render/cvd-matrices.d.ts +18 -18
- package/dist-pkg/render/cvd-matrices.js +33 -38
- package/dist-pkg/render/hc-role-data.d.ts +7 -7
- package/dist-pkg/render/hc-role-data.js +14 -14
- package/dist-pkg/render/high-contrast.d.ts +66 -54
- package/dist-pkg/render/high-contrast.js +221 -216
- package/dist-pkg/render/low-vision-drawing.d.ts +5 -0
- package/dist-pkg/render/low-vision-drawing.js +46 -0
- package/dist-pkg/render/lq-filter.d.ts +32 -20
- package/dist-pkg/render/lq-filter.js +59 -65
- package/dist-pkg/render/port.d.ts +86 -88
- package/dist-pkg/render/port.js +17 -23
- package/dist-pkg/render/screen-pipeline.d.ts +42 -42
- package/dist-pkg/render/screen-pipeline.js +80 -87
- package/dist-pkg/render/sprite-fx.d.ts +2 -1
- package/dist-pkg/render/sprite-fx.js +16 -14
- package/dist-pkg/render/viewports.d.ts +20 -15
- package/dist-pkg/render/viewports.js +83 -114
- package/dist-pkg/render/viz-axes-labels.d.ts +47 -0
- package/dist-pkg/render/viz-axes-labels.js +88 -0
- package/dist-pkg/render/viz-axes.d.ts +80 -86
- package/dist-pkg/render/viz-axes.js +115 -116
- package/dist-pkg/render/viz-modes.d.ts +28 -29
- package/dist-pkg/render/viz-modes.js +40 -45
- package/dist-pkg/render/viz-refusal.d.ts +32 -0
- package/dist-pkg/render/viz-refusal.js +57 -0
- package/dist-pkg/render/viz-setters.d.ts +104 -66
- package/dist-pkg/render/viz-setters.js +182 -191
- package/dist-pkg/ui/aac-sets.d.ts +40 -0
- package/dist-pkg/ui/aac-sets.js +49 -0
- package/dist-pkg/ui/audio-choices.d.ts +63 -0
- package/dist-pkg/ui/audio-choices.js +94 -0
- package/dist-pkg/ui/audio-rows-that-apply.d.ts +12 -0
- package/dist-pkg/ui/audio-rows-that-apply.js +43 -0
- package/dist-pkg/ui/camera-control.d.ts +6 -0
- package/dist-pkg/ui/camera-control.js +14 -0
- package/dist-pkg/ui/changed-mark.d.ts +9 -8
- package/dist-pkg/ui/changed-mark.js +22 -53
- package/dist-pkg/ui/control-choices.d.ts +37 -0
- package/dist-pkg/ui/control-choices.js +84 -0
- package/dist-pkg/ui/debug-panel.d.ts +59 -43
- package/dist-pkg/ui/debug-panel.js +68 -69
- package/dist-pkg/ui/dom.d.ts +10 -14
- package/dist-pkg/ui/dom.js +10 -47
- package/dist-pkg/ui/drawing-problems.d.ts +25 -0
- package/dist-pkg/ui/drawing-problems.js +93 -0
- package/dist-pkg/ui/eye-control.d.ts +36 -0
- package/dist-pkg/ui/eye-control.js +178 -0
- package/dist-pkg/ui/face-control.d.ts +25 -0
- package/dist-pkg/ui/face-control.js +183 -0
- package/dist-pkg/ui/focus-trap.d.ts +39 -49
- package/dist-pkg/ui/focus-trap.js +56 -65
- package/dist-pkg/ui/fonts.d.ts +118 -63
- package/dist-pkg/ui/fonts.js +267 -111
- package/dist-pkg/ui/game-options.d.ts +42 -0
- package/dist-pkg/ui/game-options.js +138 -0
- package/dist-pkg/ui/gaze-overlay.d.ts +64 -0
- package/dist-pkg/ui/gaze-overlay.js +165 -0
- package/dist-pkg/ui/hand-control.d.ts +25 -0
- package/dist-pkg/ui/hand-control.js +143 -0
- package/dist-pkg/ui/help-panel.d.ts +76 -0
- package/dist-pkg/ui/help-panel.js +232 -0
- package/dist-pkg/ui/hud-bands.d.ts +45 -0
- package/dist-pkg/ui/hud-bands.js +108 -0
- package/dist-pkg/ui/hud.d.ts +73 -70
- package/dist-pkg/ui/hud.js +94 -98
- package/dist-pkg/ui/item-announcement.d.ts +13 -12
- package/dist-pkg/ui/item-announcement.js +25 -26
- package/dist-pkg/ui/latch-refusal.d.ts +22 -21
- package/dist-pkg/ui/latch-refusal.js +37 -37
- package/dist-pkg/ui/layout.d.ts +103 -28
- package/dist-pkg/ui/layout.js +114 -99
- package/dist-pkg/ui/locale-flags.d.ts +16 -0
- package/dist-pkg/ui/locale-flags.js +30 -0
- package/dist-pkg/ui/loop-crash.d.ts +17 -17
- package/dist-pkg/ui/loop-crash.js +33 -62
- package/dist-pkg/ui/menu-intent.d.ts +32 -0
- package/dist-pkg/ui/menu-intent.js +54 -0
- package/dist-pkg/ui/menu-items.d.ts +10 -0
- package/dist-pkg/ui/menu-items.js +22 -0
- package/dist-pkg/ui/menu-nav.d.ts +60 -90
- package/dist-pkg/ui/menu-nav.js +301 -274
- package/dist-pkg/ui/mobility-choices.d.ts +26 -0
- package/dist-pkg/ui/mobility-choices.js +41 -0
- package/dist-pkg/ui/motion-choices.d.ts +31 -0
- package/dist-pkg/ui/motion-choices.js +68 -0
- package/dist-pkg/ui/motion-scene.d.ts +24 -19
- package/dist-pkg/ui/motion-scene.js +29 -61
- package/dist-pkg/ui/mount-panel.d.ts +81 -0
- package/dist-pkg/ui/mount-panel.js +61 -0
- package/dist-pkg/ui/panel-shell.d.ts +65 -31
- package/dist-pkg/ui/panel-shell.js +92 -66
- package/dist-pkg/ui/panel-widgets.d.ts +116 -0
- package/dist-pkg/ui/panel-widgets.js +208 -0
- package/dist-pkg/ui/pause-buttons.d.ts +35 -0
- package/dist-pkg/ui/pause-buttons.js +66 -0
- package/dist-pkg/ui/pause-icons.d.ts +249 -351
- package/dist-pkg/ui/pause-icons.js +614 -605
- package/dist-pkg/ui/pause-markup.d.ts +86 -0
- package/dist-pkg/ui/pause-markup.js +125 -0
- package/dist-pkg/ui/reach-notice.d.ts +22 -23
- package/dist-pkg/ui/reach-notice.js +55 -58
- package/dist-pkg/ui/scan-overlay.d.ts +23 -0
- package/dist-pkg/ui/scan-overlay.js +42 -0
- package/dist-pkg/ui/settings-aac.d.ts +68 -0
- package/dist-pkg/ui/settings-aac.js +189 -0
- package/dist-pkg/ui/settings-audio.d.ts +91 -113
- package/dist-pkg/ui/settings-audio.js +407 -405
- package/dist-pkg/ui/settings-controls.d.ts +53 -92
- package/dist-pkg/ui/settings-controls.js +143 -215
- package/dist-pkg/ui/settings-empathy.d.ts +39 -30
- package/dist-pkg/ui/settings-empathy.js +53 -60
- package/dist-pkg/ui/settings-mobility.d.ts +195 -0
- package/dist-pkg/ui/settings-mobility.js +374 -0
- package/dist-pkg/ui/settings-motion.d.ts +91 -70
- package/dist-pkg/ui/settings-motion.js +287 -198
- package/dist-pkg/ui/settings-panel.d.ts +48 -45
- package/dist-pkg/ui/settings-panel.js +164 -93
- package/dist-pkg/ui/settings-typo.d.ts +28 -76
- package/dist-pkg/ui/settings-typo.js +145 -125
- package/dist-pkg/ui/settings-visual.d.ts +29 -87
- package/dist-pkg/ui/settings-visual.js +240 -193
- package/dist-pkg/ui/shell.d.ts +113 -134
- package/dist-pkg/ui/shell.js +143 -216
- package/dist-pkg/ui/simulation-list.d.ts +27 -0
- package/dist-pkg/ui/simulation-list.js +76 -0
- package/dist-pkg/ui/simulation-over-the-world.d.ts +23 -0
- package/dist-pkg/ui/simulation-over-the-world.js +131 -0
- package/dist-pkg/ui/simulation-refusal.d.ts +5 -31
- package/dist-pkg/ui/simulation-refusal.js +8 -56
- package/dist-pkg/ui/switchable-control.d.ts +11 -0
- package/dist-pkg/ui/switchable-control.js +19 -0
- package/dist-pkg/ui/title.d.ts +4 -4
- package/dist-pkg/ui/title.js +11 -13
- package/dist-pkg/ui/top-band.d.ts +24 -0
- package/dist-pkg/ui/top-band.js +100 -0
- package/dist-pkg/ui/typo-choices.d.ts +71 -0
- package/dist-pkg/ui/typo-choices.js +84 -0
- package/dist-pkg/ui/visual-axes-panel.d.ts +11 -47
- package/dist-pkg/ui/visual-axes-panel.js +12 -94
- package/dist-pkg/ui/visual-choices.d.ts +77 -0
- package/dist-pkg/ui/visual-choices.js +107 -0
- package/dist-pkg/ui/vlibras.d.ts +33 -10
- package/dist-pkg/ui/vlibras.js +58 -81
- package/dist-pkg/ui/voice-control.d.ts +46 -0
- package/dist-pkg/ui/voice-control.js +143 -0
- package/dist-pkg/ui/voice-settings.d.ts +96 -0
- package/dist-pkg/ui/voice-settings.js +302 -0
- package/dist-pkg/ui/where-the-child-is.d.ts +31 -0
- package/dist-pkg/ui/where-the-child-is.js +70 -0
- package/docs/CREDITS.md +198 -54
- package/docs/LICENSES.md +160 -145
- package/package.json +24 -25
- package/scripts/heavy-into-the-delivery.mjs +144 -0
- package/scripts/licences/Apache-2.0.txt +176 -0
- package/scripts/licences/GPL-3.0.txt +674 -0
- package/scripts/licences/MIT.txt +17 -0
- package/scripts/licences/third-party.mjs +287 -0
- package/scripts/licences/vosk-browser.NOTICE.txt +268 -0
- package/app/public/vendor/fonts/comicneue-400.woff2 +0 -0
- package/app/public/vendor/fonts/comicneue-700.woff2 +0 -0
- package/dist-pkg/core/anel.d.ts +0 -17
- package/dist-pkg/core/anel.js +0 -31
- package/dist-pkg/core/collision.d.ts +0 -21
- package/dist-pkg/core/collision.js +0 -62
- package/dist-pkg/core/layers.d.ts +0 -63
- package/dist-pkg/core/layers.js +0 -95
- package/dist-pkg/core/letter-grid.d.ts +0 -55
- package/dist-pkg/core/letter-grid.js +0 -116
- package/dist-pkg/core/password.d.ts +0 -34
- package/dist-pkg/core/password.js +0 -205
- package/dist-pkg/core/rotulo-acessivel.d.ts +0 -17
- package/dist-pkg/core/rotulo-acessivel.js +0 -41
- package/dist-pkg/core/run-state.d.ts +0 -115
- package/dist-pkg/core/run-state.js +0 -40
- package/dist-pkg/core/tiles.d.ts +0 -12
- package/dist-pkg/core/tiles.js +0 -61
- package/dist-pkg/core/world.d.ts +0 -4
- package/dist-pkg/core/world.js +0 -58
- package/dist-pkg/input/origem-sintetica.d.ts +0 -44
- package/dist-pkg/input/origem-sintetica.js +0 -60
- package/dist-pkg/input/transporte-em-uso.d.ts +0 -101
- package/dist-pkg/input/transporte-em-uso.js +0 -130
- package/dist-pkg/platform/audio-nav.d.ts +0 -51
- package/dist-pkg/platform/audio-nav.js +0 -99
- package/dist-pkg/platform/pesados-catalogo.d.ts +0 -14
- package/dist-pkg/platform/pesados-catalogo.js +0 -177
- package/dist-pkg/platform/pesados.d.ts +0 -31
- package/dist-pkg/platform/pesados.js +0 -75
- package/dist-pkg/platform/vozes-prontas.d.ts +0 -28
- package/dist-pkg/platform/vozes-prontas.js +0 -61
- package/dist-pkg/render/camera.d.ts +0 -58
- package/dist-pkg/render/camera.js +0 -105
- package/dist-pkg/render/cenario-data.d.ts +0 -127
- package/dist-pkg/render/cenario-data.js +0 -145
- package/dist-pkg/render/city-tex.d.ts +0 -63
- package/dist-pkg/render/city-tex.js +0 -228
- package/dist-pkg/render/city-tiles.d.ts +0 -11
- package/dist-pkg/render/city-tiles.js +0 -140
- package/dist-pkg/render/draw.d.ts +0 -149
- package/dist-pkg/render/draw.js +0 -231
- package/dist-pkg/render/fx.d.ts +0 -63
- package/dist-pkg/render/fx.js +0 -123
- package/dist-pkg/render/minimap.d.ts +0 -11
- package/dist-pkg/render/minimap.js +0 -94
- package/dist-pkg/render/parallax.d.ts +0 -85
- package/dist-pkg/render/parallax.js +0 -158
- package/dist-pkg/render/player-anim.d.ts +0 -71
- package/dist-pkg/render/player-anim.js +0 -152
- package/dist-pkg/render/recycling-tex.d.ts +0 -48
- package/dist-pkg/render/recycling-tex.js +0 -164
- package/dist-pkg/render/scene-city.d.ts +0 -77
- package/dist-pkg/render/scene-city.js +0 -181
- package/dist-pkg/render/scene-parallax.d.ts +0 -72
- package/dist-pkg/render/scene-parallax.js +0 -426
- package/dist-pkg/render/scene-sky.d.ts +0 -126
- package/dist-pkg/render/scene-sky.js +0 -295
- package/dist-pkg/render/set-cenario.d.ts +0 -54
- package/dist-pkg/render/set-cenario.js +0 -103
- package/dist-pkg/render/textures.d.ts +0 -75
- package/dist-pkg/render/textures.js +0 -240
- package/dist-pkg/render/title-scene.d.ts +0 -46
- package/dist-pkg/render/title-scene.js +0 -75
- package/dist-pkg/render/weather.d.ts +0 -96
- package/dist-pkg/render/weather.js +0 -171
- package/dist-pkg/render/wheelchair-sprites.d.ts +0 -32
- package/dist-pkg/render/wheelchair-sprites.js +0 -69
- package/dist-pkg/render/world-tex.d.ts +0 -18
- package/dist-pkg/render/world-tex.js +0 -87
- package/dist-pkg/ui/activities-menu.d.ts +0 -258
- package/dist-pkg/ui/activities-menu.js +0 -648
- package/dist-pkg/ui/caa-sets.d.ts +0 -39
- package/dist-pkg/ui/caa-sets.js +0 -65
- package/dist-pkg/ui/map-hub.d.ts +0 -56
- package/dist-pkg/ui/map-hub.js +0 -138
- package/dist-pkg/ui/settings-caa.d.ts +0 -45
- package/dist-pkg/ui/settings-caa.js +0 -137
- package/dist-pkg/ui/settings-motor.d.ts +0 -175
- package/dist-pkg/ui/settings-motor.js +0 -342
- package/dist-pkg/ui/webcam.d.ts +0 -7
- package/dist-pkg/ui/webcam.js +0 -93
|
@@ -1,76 +1,79 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import type { Translate } from '../core/i18n.js';
|
|
3
|
+
/** Scope of the accessibility overlays: they all live inside #game-region ("no screen outside the canvas"). */
|
|
4
4
|
export declare const OVERLAY_SCOPE_SELECTOR = "#game-region .overlay";
|
|
5
|
-
/**
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
/**
|
|
6
|
+
* The i18n KEY of the explanation footer's resting text.
|
|
7
|
+
*
|
|
8
|
+
* 🔴 A KEY, never raw text: a raw sentence here would sit in one language under a card title in another, on the same
|
|
9
|
+
* screen.
|
|
10
|
+
*
|
|
11
|
+
* ⚠️ KEY AND NOT TEXT, by the rule `input/devices` already wrote for the same trap: a module `const` is evaluated ONCE,
|
|
12
|
+
* on import, so a resolved `t('…')` would freeze the boot language. Keeping the key, the point of use resolves it — and
|
|
13
|
+
* the point of use runs on every `fillExplain`.
|
|
14
|
+
*/
|
|
15
|
+
export declare const EXPLAIN_IDLE = "menu.explainIdle";
|
|
16
|
+
/** Initial z-index of the stack: the first overlay brought to the front gets 61. */
|
|
8
17
|
export declare const OVERLAY_BASE_Z = 60;
|
|
9
18
|
export interface SettingsPanelCtx {
|
|
10
|
-
/**
|
|
11
|
-
|
|
19
|
+
/** Translates in the page's language — the root's translator (ADR-0232 D3). REQUIRED: text built from nowhere is a raw key. */
|
|
20
|
+
t: Translate;
|
|
21
|
+
/** ui/dom.ts `$` — used only to resolve `#<id>` and check visibility in the Escape chain. Injected, not imported,
|
|
22
|
+
* so the node test can pass a fake DOM. */
|
|
12
23
|
$: <T extends Element = Element>(sel: string) => T | null;
|
|
13
|
-
/** ui/dom.ts `$$` —
|
|
24
|
+
/** ui/dom.ts `$$` — used only by topVisibleOverlay(), which scans OVERLAY_SCOPE_SELECTOR. */
|
|
14
25
|
$$: <T extends Element = Element>(sel: string) => T[];
|
|
15
|
-
/**
|
|
16
|
-
*
|
|
17
|
-
* restoreFocus
|
|
26
|
+
/** Three things from `document`, and only them: `createElement` (fillExplain CREATES the `.opt-explain` footer the
|
|
27
|
+
* first time it sees a card), `activeElement` and `contains` (frontOverlay notes who opened the dialog and
|
|
28
|
+
* restoreFocus returns focus there). Injected so the module is not tied to the global. */
|
|
18
29
|
doc: Pick<Document, 'createElement' | 'activeElement' | 'contains'>;
|
|
19
|
-
/** z-index
|
|
20
|
-
*
|
|
21
|
-
*
|
|
30
|
+
/** An element's EFFECTIVE z-index — typically `+getComputedStyle(el).zIndex||0` ('auto' becomes NaN and the `||0`
|
|
31
|
+
* turns it into 0; that is the injector's responsibility). Injected because getComputedStyle only exists in the
|
|
32
|
+
* browser, and the node test needs to simulate the stack. */
|
|
22
33
|
computedZ: (el: Element) => number;
|
|
23
34
|
}
|
|
24
|
-
/**
|
|
35
|
+
/** One entry of the overlay registry. */
|
|
25
36
|
export interface OverlayEntry {
|
|
26
|
-
/**
|
|
27
|
-
* do seu jeito lá dentro (uns a um `#opt-*`, outros ao menu de pausa) — a casca não opina. */
|
|
37
|
+
/** Closes the dialog. Each panel returns focus its own way inside it — the shell has no opinion. */
|
|
28
38
|
close: () => void;
|
|
29
|
-
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* só por esquecimento. Aqui quem registra tem de dizer em qual lado está.
|
|
39
|
+
/** Does this dialog join the Escape chain? REQUIRED with no default on purpose: an exclusion expressed as the ABSENCE
|
|
40
|
+
* of a field is the kind of mistake nobody makes by choice, only by forgetting. Whoever registers has to say which
|
|
41
|
+
* side they are on.
|
|
33
42
|
*
|
|
34
|
-
*
|
|
35
|
-
* `
|
|
36
|
-
* colada ao `ov.hidden` do próprio open/close, e nenhuma tinha outro leitor. Como `escapeTarget` já
|
|
37
|
-
* descartava diálogo invisível (a guarda `dlgVis` logo abaixo), a flag era redundante COM a guarda: onde
|
|
38
|
-
* concordavam não mudava nada, e onde divergiam quem decidia era o `hidden`. Sete variáveis mutáveis, um
|
|
39
|
-
* binding mutável exportado entre módulos e um callback de ctx, todos apagados sem mudar comportamento —
|
|
40
|
-
* o teste que pina a divergência (flag presa em true num diálogo escondido) continua verde. */
|
|
43
|
+
* "Open" is read from the dialog's visibility (`hidden`), not from a separate flag: a flag written next to every
|
|
44
|
+
* `ov.hidden` would be redundant with it where they agree, and where they disagree `hidden` is what decides. */
|
|
41
45
|
inEscapeChain: boolean;
|
|
42
46
|
}
|
|
43
47
|
export interface SettingsPanelApi {
|
|
44
|
-
/**
|
|
45
|
-
*
|
|
48
|
+
/** Brings the overlay to the front of the stack (increasing z) and fills its card's explanation footer. Called by
|
|
49
|
+
* every panel's open. */
|
|
46
50
|
frontOverlay: (el: HTMLElement | null) => void;
|
|
47
|
-
/**
|
|
51
|
+
/** Moves the card's `.ctrl-row` descriptions to the `.opt-explain` footer (idempotent per row). */
|
|
48
52
|
fillExplain: (card: HTMLElement | null) => void;
|
|
49
|
-
/**
|
|
53
|
+
/** Registers a dialog. REGISTRATION ORDER matters: it is what the Escape chain walks. */
|
|
50
54
|
register: (id: string, entry: OverlayEntry) => void;
|
|
51
|
-
/**
|
|
55
|
+
/** Returns focus to whoever opened `id` (the counterpart of `frontOverlay`). False if the opener left or is not
|
|
56
|
+
* focusable. */
|
|
52
57
|
restoreFocus: (id: string) => boolean;
|
|
53
|
-
/**
|
|
58
|
+
/** Closes the registered dialog `id` — returns true if there was a registered entry. */
|
|
54
59
|
closeById: (id: string) => boolean;
|
|
55
|
-
/** Id
|
|
56
|
-
*
|
|
57
|
-
* ligada E de fato visível (`!el.hidden`). Ver o relatório: isto NÃO é "o de cima". */
|
|
60
|
+
/** Id of the dialog that should consume the key, or null. Walks in REGISTRATION ORDER (not by z-index) and returns the
|
|
61
|
+
* first that is actually visible (`!el.hidden`). This is NOT "the one on top". */
|
|
58
62
|
escapeTarget: () => string | null;
|
|
59
|
-
/**
|
|
63
|
+
/** The highest VISIBLE overlay in the stack. A z tie: the last in the DOM wins. */
|
|
60
64
|
topVisibleOverlay: () => HTMLElement | null;
|
|
61
|
-
/**
|
|
65
|
+
/** Registered ids, in order — for tests/debugging only. */
|
|
62
66
|
registeredIds: () => string[];
|
|
63
67
|
}
|
|
64
68
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
* (
|
|
68
|
-
* Aceita — (em dash), – (en dash) e - (hífen), como no original.
|
|
69
|
+
* An option row's description: is there an `.opt-hint` inside the <span>? use its text. Otherwise take the <strong>'s
|
|
70
|
+
* prefix (the short label) and the dash separating label from description off the <span>'s text.
|
|
71
|
+
* Accepts — (em dash), – (en dash) and - (hyphen).
|
|
69
72
|
*/
|
|
70
73
|
export declare function rowExplainText(spanText: string, strongText: string, hintText: string | null): string;
|
|
71
74
|
/**
|
|
72
|
-
*
|
|
73
|
-
*
|
|
75
|
+
* Picks the visible overlay with the highest z-index. A tie: the LAST in the list (DOM order) wins — the effect of a
|
|
76
|
+
* stable sort followed by taking the last. An empty list → null.
|
|
74
77
|
*/
|
|
75
78
|
export declare function topByZ<T>(overlays: readonly T[], zOf: (el: T) => number): T | null;
|
|
76
79
|
export declare function initSettingsPanel(ctx: SettingsPanelCtx): SettingsPanelApi;
|
|
@@ -1,44 +1,44 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
-
// ui/settings-panel.ts —
|
|
3
|
-
//
|
|
4
|
-
// sobrou no game.js em volta deles era: (a) a pilha de z-index dos overlays (`_ovZ` + frontOverlay), (b) o
|
|
5
|
-
// rodapé de explicação (fillExplain), (c) a tabela OVERLAY_CLOSE (id → fechar) e (d) o encadeamento de Escape.
|
|
2
|
+
// ui/settings-panel.ts — the COMMON SHELL of the settings dialogs: (a) the overlays' z-index stack (frontOverlay), (b)
|
|
3
|
+
// the explanation footer (fillExplain), (c) the registry of dialogs (id → close) and (d) the Escape chain.
|
|
6
4
|
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
// menu de pausa por menuFocus/sharedDialogOpen). Uma casca com seis parâmetros de exceção, todos eles closures
|
|
13
|
-
// de uma linha, custaria o mesmo código e uma indireção a mais para ler — e três dos painéis (motion, empathy,
|
|
14
|
-
// touch) já implementam o seu próprio open/close dentro do módulo. Então este arquivo entrega SÓ o que é
|
|
15
|
-
// genuinamente comum, e o open/close continua sendo sete (nove) funções curtas, cada uma legível sozinha.
|
|
5
|
+
// DESIGN DECISION: there is NO generic open()/close() here. The dialogs diverge in almost everything a shell would do —
|
|
6
|
+
// what to render before showing, WHICH control receives focus on open, what extra to do on close, and WHERE focus goes
|
|
7
|
+
// back. A shell with a parameter per exception, each a one-line closure, would cost the same code plus one more
|
|
8
|
+
// indirection to read. So this file delivers ONLY what is genuinely common, and each open/close stays a short function
|
|
9
|
+
// readable on its own.
|
|
16
10
|
//
|
|
17
|
-
//
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
-
// que é o que sharedDialogOpen/topVisibleOverlay lê de volta para saber quem navegar.
|
|
11
|
+
// ACCESSIBILITY: who focuses what stays in each panel's open/close functions; the focus trap is `ui/focus-trap`. What
|
|
12
|
+
// THIS shell handles is READING ORDER: fillExplain takes the long description out of the row, leaves only the label in
|
|
13
|
+
// <strong>, and hands the description to an `aria-live="polite"` footer — focus/hover on the row updates it. And
|
|
14
|
+
// frontOverlay makes the last dialog opened sit on top (increasing z), which topVisibleOverlay reads back to know what to
|
|
15
|
+
// navigate.
|
|
23
16
|
//
|
|
24
|
-
//
|
|
25
|
-
// (
|
|
26
|
-
//
|
|
27
|
-
/**
|
|
28
|
-
* ("nenhuma tela fora do canvas"). Verbatim do sharedDialogOpen() original. */
|
|
17
|
+
// INJECTED via initSettingsPanel(ctx): $/$$ (ui/dom.ts), doc (`createElement` for the footer, `activeElement` and
|
|
18
|
+
// `contains` for focus return) and computedZ (the effective z-index). No I/O on import; all state (the z counter and the
|
|
19
|
+
// overlay registry) lives in the init's closure — two inits do not leak into each other.
|
|
20
|
+
/** Scope of the accessibility overlays: they all live inside #game-region ("no screen outside the canvas"). */
|
|
29
21
|
export const OVERLAY_SCOPE_SELECTOR = '#game-region .overlay';
|
|
30
|
-
/**
|
|
31
|
-
|
|
32
|
-
|
|
22
|
+
/**
|
|
23
|
+
* The i18n KEY of the explanation footer's resting text.
|
|
24
|
+
*
|
|
25
|
+
* 🔴 A KEY, never raw text: a raw sentence here would sit in one language under a card title in another, on the same
|
|
26
|
+
* screen.
|
|
27
|
+
*
|
|
28
|
+
* ⚠️ KEY AND NOT TEXT, by the rule `input/devices` already wrote for the same trap: a module `const` is evaluated ONCE,
|
|
29
|
+
* on import, so a resolved `t('…')` would freeze the boot language. Keeping the key, the point of use resolves it — and
|
|
30
|
+
* the point of use runs on every `fillExplain`.
|
|
31
|
+
*/
|
|
32
|
+
export const EXPLAIN_IDLE = 'menu.explainIdle';
|
|
33
|
+
/** Initial z-index of the stack: the first overlay brought to the front gets 61. */
|
|
33
34
|
export const OVERLAY_BASE_Z = 60;
|
|
34
35
|
// ---------------------------------------------------------------------------------------------------------
|
|
35
|
-
//
|
|
36
|
+
// PURE logic — no `document`, testable in the node project.
|
|
36
37
|
// ---------------------------------------------------------------------------------------------------------
|
|
37
38
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* (
|
|
41
|
-
* Aceita — (em dash), – (en dash) e - (hífen), como no original.
|
|
39
|
+
* An option row's description: is there an `.opt-hint` inside the <span>? use its text. Otherwise take the <strong>'s
|
|
40
|
+
* prefix (the short label) and the dash separating label from description off the <span>'s text.
|
|
41
|
+
* Accepts — (em dash), – (en dash) and - (hyphen).
|
|
42
42
|
*/
|
|
43
43
|
export function rowExplainText(spanText, strongText, hintText) {
|
|
44
44
|
if (hintText !== null)
|
|
@@ -46,8 +46,79 @@ export function rowExplainText(spanText, strongText, hintText) {
|
|
|
46
46
|
return spanText.slice(strongText.length).replace(/^\s*[—–-]\s*/, '').trim();
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
|
-
*
|
|
50
|
-
*
|
|
49
|
+
* The three listeners that take the description to the footer and return it to rest. Both row shapes use them word for
|
|
50
|
+
* word, and writing them once is what keeps the two from drifting.
|
|
51
|
+
*
|
|
52
|
+
* NOTE (known defect, not fixed): there is no `focusout` listener — navigating by keyboard, the footer never returns to
|
|
53
|
+
* its resting text.
|
|
54
|
+
*/
|
|
55
|
+
function wireFooter(row, footer) {
|
|
56
|
+
// 🔴 READ AT THE INSTANT OF SHOWING, never captured: a closure keeps the sentence from the day the row was born, and a
|
|
57
|
+
// row built ONCE AND KEPT would never change it — the explanation would stay in the boot language forever.
|
|
58
|
+
const show = () => { footer.textContent = row.dataset.explain || (footer.dataset.idle ?? ''); };
|
|
59
|
+
const clear = () => { footer.textContent = footer.dataset.idle ?? ''; };
|
|
60
|
+
row.addEventListener('mouseenter', show);
|
|
61
|
+
row.addEventListener('focusin', show);
|
|
62
|
+
row.addEventListener('mouseleave', clear);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 🔴 A STEPS ROW HAS NO `<strong>`: its label lives inside the control itself («◀ Tamanho do controle: adulto pequeno ▶»,
|
|
66
|
+
* ADR-0130 errata), and giving up on rows without a separate short label would leave the hint beside the steps,
|
|
67
|
+
* squeezing them until they break over several lines. For it, the description is the whole hint, and the `<span>` is
|
|
68
|
+
* emptied.
|
|
69
|
+
*/
|
|
70
|
+
function wireStepsRow(row, span, hint, footer) {
|
|
71
|
+
const desc = (hint.textContent ?? '').trim();
|
|
72
|
+
row.dataset.explainDone = '1';
|
|
73
|
+
if (!desc)
|
|
74
|
+
return;
|
|
75
|
+
row.dataset.explain = desc;
|
|
76
|
+
span.textContent = '';
|
|
77
|
+
span.appendChild(hint); // hidden and not erased, for the same reason as the ordinary row, below
|
|
78
|
+
hint.hidden = true;
|
|
79
|
+
wireFooter(row, footer);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* An ALREADY WIRED row, reread: only the TEXT changes, never the wiring.
|
|
83
|
+
*
|
|
84
|
+
* 📌 It is the half that makes the explanation follow the language (ADR-0225). The producer rewrites the `.opt-hint`, this
|
|
85
|
+
* function takes the new text to `data-explain`, and the footer reads it at the instant of showing. A hint that becomes
|
|
86
|
+
* EMPTY erases the explanation instead of keeping the previous one — the reason `labelRow` already gives for erasing
|
|
87
|
+
* instead of not writing: on a retranslation into a dictionary without the key, the old text would survive.
|
|
88
|
+
*/
|
|
89
|
+
function refreshExplain(row) {
|
|
90
|
+
const hint = row.querySelector(':scope > span .opt-hint');
|
|
91
|
+
if (!hint)
|
|
92
|
+
return; // a row that never had a hint, or lost it: it keeps what it has
|
|
93
|
+
row.dataset.explain = (hint.textContent ?? '').trim();
|
|
94
|
+
}
|
|
95
|
+
/** The ordinary row: short label in `<strong>`, prose beside it — and the prose goes down to the footer. */
|
|
96
|
+
function wireLabelledRow(row, span, strong, footer) {
|
|
97
|
+
const hint = span.querySelector('.opt-hint');
|
|
98
|
+
const desc = rowExplainText(span.textContent ?? '', strong.textContent ?? '', hint ? (hint.textContent ?? '') : null);
|
|
99
|
+
row.dataset.explainDone = '1';
|
|
100
|
+
if (!desc)
|
|
101
|
+
return; // a label with no description: the row stays as it is
|
|
102
|
+
row.dataset.explain = desc;
|
|
103
|
+
span.innerHTML = strong.outerHTML; // READING ORDER: only the short label stays in view…
|
|
104
|
+
/*
|
|
105
|
+
* ⚠️ …and the hint COMES BACK, HIDDEN, instead of being destroyed.
|
|
106
|
+
*
|
|
107
|
+
* 🔴 Erasing it froze the explanation in the language the row was born in: the kit's `labelRow` rewrites `.opt-hint` on
|
|
108
|
+
* every relabel, and a node that no longer exists receives nothing.
|
|
109
|
+
*
|
|
110
|
+
* 📌 `hidden` takes it out of the whole accessibility tree, so the reading order of `CLAUDE.md` §4 stays intact: the
|
|
111
|
+
* screen reader still reads "short label, control", and the prose still belongs only to the footer.
|
|
112
|
+
*/
|
|
113
|
+
if (hint) {
|
|
114
|
+
hint.hidden = true;
|
|
115
|
+
span.appendChild(hint);
|
|
116
|
+
}
|
|
117
|
+
wireFooter(row, footer); // the description goes to the footer on focus/hover
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Picks the visible overlay with the highest z-index. A tie: the LAST in the list (DOM order) wins — the effect of a
|
|
121
|
+
* stable sort followed by taking the last. An empty list → null.
|
|
51
122
|
*/
|
|
52
123
|
export function topByZ(overlays, zOf) {
|
|
53
124
|
if (!overlays.length)
|
|
@@ -56,73 +127,75 @@ export function topByZ(overlays, zOf) {
|
|
|
56
127
|
return sorted[sorted.length - 1];
|
|
57
128
|
}
|
|
58
129
|
// ---------------------------------------------------------------------------------------------------------
|
|
59
|
-
//
|
|
130
|
+
// DOM shell
|
|
60
131
|
// ---------------------------------------------------------------------------------------------------------
|
|
61
132
|
export function initSettingsPanel(ctx) {
|
|
62
|
-
|
|
63
|
-
//
|
|
133
|
+
const { t } = ctx;
|
|
134
|
+
// The z counter lives in the closure (not the module) so each init starts clean — otherwise a test would inherit the
|
|
135
|
+
// previous one's stack.
|
|
64
136
|
let ovZ = OVERLAY_BASE_Z;
|
|
65
|
-
//
|
|
66
|
-
// ordem do encadeamento de Escape.
|
|
137
|
+
// The dialog registry. A Map preserves insertion order, which is exactly the Escape chain's order.
|
|
67
138
|
const registry = new Map();
|
|
139
|
+
/** The card's footer, found or created. */
|
|
140
|
+
function explainFooter(card) {
|
|
141
|
+
const found = card.querySelector('.opt-explain');
|
|
142
|
+
if (found)
|
|
143
|
+
return found;
|
|
144
|
+
const f = ctx.doc.createElement('div');
|
|
145
|
+
f.className = 'opt-explain';
|
|
146
|
+
f.setAttribute('aria-live', 'polite'); // the footer is announced when it changes (focus/hover on the row)
|
|
147
|
+
// The resting text can be the PANEL's, via `data-explain-idle` on the card. It is where a menu introduction belongs:
|
|
148
|
+
// a paragraph of prose at the top turns the menu into a manual, and the footer is already the place for
|
|
149
|
+
// explanation — the panel has something to say only while nobody points at any row.
|
|
150
|
+
// ⚠️ RESOLVED HERE, not at the top of the module: `fillExplain` runs on every render, so the text follows a language
|
|
151
|
+
// change. A `t()` in a module `const` would freeze the boot language.
|
|
152
|
+
const idle = card.dataset.explainIdle || t(EXPLAIN_IDLE);
|
|
153
|
+
f.dataset.idle = idle;
|
|
154
|
+
f.textContent = idle;
|
|
155
|
+
card.appendChild(f);
|
|
156
|
+
return f;
|
|
157
|
+
}
|
|
68
158
|
function fillExplain(card) {
|
|
69
159
|
if (!card)
|
|
70
160
|
return;
|
|
71
|
-
|
|
72
|
-
if (!f) {
|
|
73
|
-
f = ctx.doc.createElement('div');
|
|
74
|
-
f.className = 'opt-explain';
|
|
75
|
-
f.setAttribute('aria-live', 'polite'); // rodapé anunciado ao mudar (foco/hover na linha)
|
|
76
|
-
// O texto de repouso pode ser DO PAINEL, via `data-explain-idle` no card. É onde uma introdução de menu
|
|
77
|
-
// deve morar: um parágrafo de prosa no topo transforma o menu num manual, e o rodapé já é o lugar da
|
|
78
|
-
// explicação — o painel só passa a ter algo a dizer enquanto ninguém aponta para nenhuma linha.
|
|
79
|
-
const idle = card.dataset.explainIdle || EXPLAIN_IDLE;
|
|
80
|
-
f.dataset.idle = idle;
|
|
81
|
-
f.textContent = idle;
|
|
82
|
-
card.appendChild(f);
|
|
83
|
-
}
|
|
84
|
-
const footer = f; // estreita o tipo para os closures abaixo
|
|
161
|
+
const footer = explainFooter(card);
|
|
85
162
|
card.querySelectorAll('.ctrl-row').forEach((row) => {
|
|
86
|
-
|
|
87
|
-
|
|
163
|
+
// Idempotent in the WIRING and only there: a finished row is not wired again, but its TEXT is reread, otherwise a
|
|
164
|
+
// row built once and kept would never change language (ADR-0225).
|
|
165
|
+
if (row.dataset.explainDone) {
|
|
166
|
+
refreshExplain(row);
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
88
169
|
const span = row.querySelector(':scope > span');
|
|
89
170
|
const strong = span ? span.querySelector('strong') : null;
|
|
171
|
+
const stepsHint = !strong && span ? span.querySelector('.opt-hint') : null;
|
|
172
|
+
if (span && stepsHint && row.querySelector('[data-passos]')) {
|
|
173
|
+
wireStepsRow(row, span, stepsHint, footer);
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
90
176
|
if (!span || !strong) {
|
|
91
177
|
row.dataset.explainDone = '1';
|
|
92
178
|
return;
|
|
93
|
-
} //
|
|
94
|
-
|
|
95
|
-
const desc = rowExplainText(span.textContent ?? '', strong.textContent ?? '', hint ? (hint.textContent ?? '') : null);
|
|
96
|
-
row.dataset.explainDone = '1';
|
|
97
|
-
if (!desc)
|
|
98
|
-
return; // rótulo sem descrição: a linha fica como está
|
|
99
|
-
row.dataset.explain = desc;
|
|
100
|
-
span.innerHTML = strong.outerHTML; // ORDEM DE LEITURA: a linha passa a ter só o rótulo curto…
|
|
101
|
-
const show = () => { footer.textContent = desc; }; // …e a descrição vai ao rodapé ao focar/passar o mouse
|
|
102
|
-
const clear = () => { footer.textContent = footer.dataset.idle ?? ''; };
|
|
103
|
-
row.addEventListener('mouseenter', show);
|
|
104
|
-
row.addEventListener('focusin', show);
|
|
105
|
-
row.addEventListener('mouseleave', clear);
|
|
106
|
-
// NOTA (bug do original, preservado): não há listener de 'focusout' — navegando por teclado o rodapé
|
|
107
|
-
// nunca volta ao texto de repouso. Relatado, não corrigido.
|
|
179
|
+
} // a row with no short label: nothing to move
|
|
180
|
+
wireLabelledRow(row, span, strong, footer);
|
|
108
181
|
});
|
|
109
182
|
}
|
|
110
|
-
/**
|
|
111
|
-
*
|
|
112
|
-
*
|
|
183
|
+
/** Who had focus when each dialog was brought to the front — keyed by dialog id. Used by `restoreFocus`, the
|
|
184
|
+
* counterpart of `frontOverlay`. Not a disguised global `let`: it is born and dies with the registry, and the only
|
|
185
|
+
* thing reading it is focus return. */
|
|
113
186
|
const openerOf = new Map();
|
|
114
187
|
function frontOverlay(el) {
|
|
115
188
|
if (!el)
|
|
116
189
|
return;
|
|
117
|
-
//
|
|
118
|
-
//
|
|
119
|
-
//
|
|
120
|
-
//
|
|
121
|
-
// global
|
|
190
|
+
// BEFORE the dialog appears: whoever has focus now is whoever opened it, and that is where focus returns (WCAG
|
|
191
|
+
// 2.4.3). The real element, not a fixed id: the same panel is opened from the pause menu, a keyboard shortcut and a
|
|
192
|
+
// bar button, and only one of them is right each time.
|
|
193
|
+
// A STRUCTURAL check, not `instanceof HTMLElement`: this module runs in the `node` project, where there is no DOM
|
|
194
|
+
// global at all. All that is asked of the opener is what will be used — being able to receive focus.
|
|
122
195
|
const opener = ctx.doc.activeElement;
|
|
123
|
-
const
|
|
124
|
-
const
|
|
125
|
-
if (
|
|
196
|
+
const focusable = !!opener && typeof opener.focus === 'function';
|
|
197
|
+
const isInside = !!opener && typeof el.contains === 'function' && el.contains(opener);
|
|
198
|
+
if (focusable && opener !== el && !isInside)
|
|
126
199
|
openerOf.set(el.id, opener);
|
|
127
200
|
el.style.zIndex = String(++ovZ);
|
|
128
201
|
const card = el.querySelector('.overlay__card');
|
|
@@ -130,16 +203,14 @@ export function initSettingsPanel(ctx) {
|
|
|
130
203
|
fillExplain(card);
|
|
131
204
|
}
|
|
132
205
|
/**
|
|
133
|
-
*
|
|
206
|
+
* Returns focus to whoever opened dialog `id`. True if it succeeded.
|
|
134
207
|
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
* então fechar o painel deixava o foco no `<body>`: quem navega por teclado voltava para o começo do
|
|
139
|
-
* documento, e quem usa leitor de tela perdia o lugar inteiro.
|
|
208
|
+
* A fixed `#opt-*` per panel would fail silently: most of those ids do not exist in the document (they are hooks for a
|
|
209
|
+
* button bar that does not exist yet), so closing would leave focus on `<body>` — a keyboard user back at the start of
|
|
210
|
+
* the document, a screen-reader user losing their place entirely.
|
|
140
211
|
*
|
|
141
|
-
*
|
|
142
|
-
*
|
|
212
|
+
* It only returns to an element still in the document and still focusable — a panel may have been opened from inside
|
|
213
|
+
* another that already closed, and then the caller decides (hence the boolean).
|
|
143
214
|
*/
|
|
144
215
|
function restoreFocus(id) {
|
|
145
216
|
const opener = openerOf.get(id);
|
|
@@ -147,11 +218,11 @@ export function initSettingsPanel(ctx) {
|
|
|
147
218
|
if (!opener)
|
|
148
219
|
return false;
|
|
149
220
|
if (typeof ctx.doc.contains === 'function' && !ctx.doc.contains(opener))
|
|
150
|
-
return false; //
|
|
221
|
+
return false; // it left the document
|
|
151
222
|
if (typeof opener.hasAttribute === 'function' && opener.hasAttribute('disabled'))
|
|
152
223
|
return false;
|
|
153
224
|
if (opener.offsetParent === null)
|
|
154
|
-
return false; //
|
|
225
|
+
return false; // hidden: focusing it would take focus nowhere
|
|
155
226
|
opener.focus();
|
|
156
227
|
return ctx.doc.activeElement === opener;
|
|
157
228
|
}
|
|
@@ -168,10 +239,10 @@ export function initSettingsPanel(ctx) {
|
|
|
168
239
|
function escapeTarget() {
|
|
169
240
|
for (const [id, entry] of registry) {
|
|
170
241
|
if (!entry.inEscapeChain)
|
|
171
|
-
continue; //
|
|
242
|
+
continue; // whoever registered outside the chain stays out
|
|
172
243
|
const el = ctx.$('#' + id);
|
|
173
244
|
if (!el || el.hidden)
|
|
174
|
-
continue; //
|
|
245
|
+
continue; // open = VISIBLE, the single source
|
|
175
246
|
return id;
|
|
176
247
|
}
|
|
177
248
|
return null;
|