From 7b8806ff0cf86b9c788da1983385775598528f01 Mon Sep 17 00:00:00 2001 From: thepaperpilot Date: Tue, 18 Apr 2023 04:28:59 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20profectu?= =?UTF-8?q?s-engine/profectus-docs@fd037c3474526aa0d40cb5692538401d33e6c78?= =?UTF-8?q?4=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 6 +- api/components/ContextComponent.html | 6 +- api/components/HotkeyComponent.html | 6 +- api/components/InfoComponent.html | 6 +- api/components/LayerComponent.html | 6 +- api/components/MarkNodeComponent.html | 6 +- api/components/ModalComponent.html | 6 +- api/components/NodeComponent.html | 6 +- api/components/SaveComponent.html | 6 +- .../fields/DangerButtonComponent.html | 6 +- .../fields/FeedbackButtonComponent.html | 6 +- api/components/fields/SelectComponent.html | 6 +- api/components/fields/SliderComponent.html | 6 +- api/components/fields/TextComponent.html | 6 +- api/components/fields/ToggleComponent.html | 6 +- .../layout/CollapsibleComponent.html | 6 +- api/components/layout/ColumnComponent.html | 6 +- api/components/layout/RowComponent.html | 6 +- api/components/layout/SpacerComponent.html | 6 +- api/components/layout/StickyComponent.html | 6 +- .../layout/VerticalRuleComponent.html | 6 +- api/components/math/FloorComponent.html | 6 +- api/components/math/SqrtComponent.html | 6 +- api/modules/data/common.html | 10 ++-- api/modules/data/projEntry.html | 10 ++-- api/modules/data/themes.html | 10 ++-- api/modules/features/achievement.html | 10 ++-- api/modules/features/action.html | 10 ++-- api/modules/features/bar.html | 10 ++-- api/modules/features/board.html | 10 ++-- api/modules/features/challenge.html | 10 ++-- api/modules/features/clickable.html | 10 ++-- api/modules/features/conversion.html | 10 ++-- api/modules/features/feature.html | 10 ++-- api/modules/features/grid.html | 10 ++-- api/modules/features/hotkey.html | 10 ++-- api/modules/features/infobox.html | 10 ++-- api/modules/features/links.html | 10 ++-- api/modules/features/particles.html | 10 ++-- api/modules/features/repeatable.html | 10 ++-- api/modules/features/reset.html | 10 ++-- api/modules/features/resource.html | 10 ++-- api/modules/features/tabs/tab.html | 10 ++-- api/modules/features/tabs/tabFamily.html | 10 ++-- api/modules/features/tooltip.html | 10 ++-- api/modules/features/tree.html | 10 ++-- api/modules/features/upgrade.html | 10 ++-- api/modules/game/events.html | 10 ++-- api/modules/game/formulas/formulas.html | 10 ++-- api/modules/game/formulas/operations.html | 10 ++-- api/modules/game/formulas/types.html | 10 ++-- api/modules/game/gameLoop.html | 10 ++-- api/modules/game/layers.html | 10 ++-- api/modules/game/modifiers.html | 10 ++-- api/modules/game/notifications.html | 10 ++-- api/modules/game/persistence.html | 10 ++-- api/modules/game/player.html | 10 ++-- api/modules/game/requirements.html | 10 ++-- api/modules/game/settings.html | 10 ++-- api/modules/game/state.html | 10 ++-- api/modules/lib/break_eternity.html | 10 ++-- api/modules/lib/collapseTransition.html | 6 +- api/modules/lib/lru-cache.html | 10 ++-- api/modules/lib/pixi.html | 6 +- api/modules/lib/pwa-register.html | 10 ++-- api/modules/lib/vue-panzoom.html | 6 +- api/modules/lib/vue-textarea-autosize.html | 6 +- api/modules/util/bignum.html | 10 ++-- api/modules/util/break_eternity.html | 10 ++-- api/modules/util/common.html | 10 ++-- api/modules/util/computed.html | 10 ++-- api/modules/util/proxies.html | 10 ++-- api/modules/util/save.html | 10 ++-- api/modules/util/vue.html | 10 ++-- api/overview.html | 6 +- assets/api_modules_data_common.md.47fec908.js | 1 + ...pi_modules_data_common.md.47fec908.lean.js | 1 + assets/api_modules_data_common.md.cea7349b.js | 1 - ...pi_modules_data_common.md.cea7349b.lean.js | 1 - ...api_modules_data_projEntry.md.77f70a60.js} | 2 +- ...odules_data_projEntry.md.77f70a60.lean.js} | 2 +- assets/api_modules_data_themes.md.04121ce6.js | 1 - ...pi_modules_data_themes.md.04121ce6.lean.js | 1 - assets/api_modules_data_themes.md.fcd738aa.js | 1 + ...pi_modules_data_themes.md.fcd738aa.lean.js | 1 + ...odules_features_achievement.md.2dda368f.js | 1 + ..._features_achievement.md.2dda368f.lean.js} | 2 +- ...odules_features_achievement.md.41fd9d95.js | 1 - ...api_modules_features_action.md.70d6eb9f.js | 1 + ...odules_features_action.md.70d6eb9f.lean.js | 1 + ...api_modules_features_action.md.accd9686.js | 1 - ...odules_features_action.md.accd9686.lean.js | 1 - .../api_modules_features_bar.md.d549ae50.js | 1 - ...i_modules_features_bar.md.d549ae50.lean.js | 1 - .../api_modules_features_bar.md.e8448677.js | 1 + ...i_modules_features_bar.md.e8448677.lean.js | 1 + .../api_modules_features_board.md.83c56444.js | 1 - ...modules_features_board.md.83c56444.lean.js | 1 - .../api_modules_features_board.md.f946e582.js | 1 + ...modules_features_board.md.f946e582.lean.js | 1 + ..._modules_features_challenge.md.538635b7.js | 1 + ...es_features_challenge.md.538635b7.lean.js} | 2 +- ..._modules_features_challenge.md.b67ac4a6.js | 1 - ..._modules_features_clickable.md.81af6047.js | 1 - ..._modules_features_clickable.md.f229af4e.js | 1 + ...es_features_clickable.md.f229af4e.lean.js} | 2 +- ...modules_features_conversion.md.c27720d1.js | 1 + ...s_features_conversion.md.c27720d1.lean.js} | 2 +- ...modules_features_conversion.md.e67c86a2.js | 1 - ...pi_modules_features_feature.md.6c0b6f85.js | 1 - ...pi_modules_features_feature.md.fece3203.js | 1 + ...ules_features_feature.md.fece3203.lean.js} | 2 +- .../api_modules_features_grid.md.44a0d8eb.js | 1 - ..._modules_features_grid.md.44a0d8eb.lean.js | 1 - .../api_modules_features_grid.md.9df2e2cb.js | 1 + ..._modules_features_grid.md.9df2e2cb.lean.js | 1 + ...api_modules_features_hotkey.md.1b3345c1.js | 1 + ...dules_features_hotkey.md.1b3345c1.lean.js} | 2 +- ...api_modules_features_hotkey.md.9bdca378.js | 1 - ...pi_modules_features_infobox.md.8a44c689.js | 1 - ...pi_modules_features_infobox.md.e1f3a0d5.js | 1 + ...ules_features_infobox.md.e1f3a0d5.lean.js} | 2 +- .../api_modules_features_links.md.232f4909.js | 1 - ...modules_features_links.md.232f4909.lean.js | 1 - .../api_modules_features_links.md.c0f648c4.js | 1 + ...modules_features_links.md.c0f648c4.lean.js | 1 + ..._modules_features_particles.md.5c9477d1.js | 1 + ...les_features_particles.md.5c9477d1.lean.js | 1 + ..._modules_features_particles.md.acdac247.js | 1 - ...les_features_particles.md.acdac247.lean.js | 1 - ...modules_features_repeatable.md.2078abb7.js | 1 - ...es_features_repeatable.md.2078abb7.lean.js | 1 - ...modules_features_repeatable.md.a16afba7.js | 1 + ...es_features_repeatable.md.a16afba7.lean.js | 1 + .../api_modules_features_reset.md.295fd3d8.js | 1 - .../api_modules_features_reset.md.c413767d.js | 1 + ...odules_features_reset.md.c413767d.lean.js} | 2 +- ...i_modules_features_resource.md.337b8880.js | 1 - ...i_modules_features_resource.md.b91e265b.js | 1 + ...les_features_resource.md.b91e265b.lean.js} | 2 +- ...i_modules_features_tabs_tab.md.3b186dff.js | 1 + ...ules_features_tabs_tab.md.3b186dff.lean.js | 1 + ...i_modules_features_tabs_tab.md.ac4b1c4b.js | 1 - ...ules_features_tabs_tab.md.ac4b1c4b.lean.js | 1 - ...les_features_tabs_tabFamily.md.1a69473b.js | 1 - ...eatures_tabs_tabFamily.md.1a69473b.lean.js | 1 - ...les_features_tabs_tabFamily.md.ae450c2b.js | 1 + ...eatures_tabs_tabFamily.md.ae450c2b.lean.js | 1 + ...pi_modules_features_tooltip.md.4f1ae01d.js | 1 - ...dules_features_tooltip.md.4f1ae01d.lean.js | 1 - ...pi_modules_features_tooltip.md.7e3b32e5.js | 1 + ...dules_features_tooltip.md.7e3b32e5.lean.js | 1 + .../api_modules_features_tree.md.c82cfafa.js | 1 + ..._modules_features_tree.md.c82cfafa.lean.js | 1 + .../api_modules_features_tree.md.ed4d7a45.js | 1 - ..._modules_features_tree.md.ed4d7a45.lean.js | 1 - ...pi_modules_features_upgrade.md.0ba043c0.js | 1 + ...dules_features_upgrade.md.0ba043c0.lean.js | 1 + ...pi_modules_features_upgrade.md.1354b683.js | 1 - ...dules_features_upgrade.md.1354b683.lean.js | 1 - assets/api_modules_game_events.md.597f47e5.js | 1 - ...pi_modules_game_events.md.597f47e5.lean.js | 1 - assets/api_modules_game_events.md.98906675.js | 1 + ...pi_modules_game_events.md.98906675.lean.js | 1 + ...ules_game_formulas_formulas.md.c3dafd78.js | 1 + ...game_formulas_formulas.md.c3dafd78.lean.js | 1 + ...ules_game_formulas_formulas.md.dda227f0.js | 1 - ...game_formulas_formulas.md.dda227f0.lean.js | 1 - ...es_game_formulas_operations.md.19c5dc95.js | 1 - ...es_game_formulas_operations.md.7b749a35.js | 1 + ...e_formulas_operations.md.7b749a35.lean.js} | 2 +- ...modules_game_formulas_types.md.9c4cba15.js | 1 + ...es_game_formulas_types.md.9c4cba15.lean.js | 1 + ...modules_game_formulas_types.md.bd193bf8.js | 1 - ...es_game_formulas_types.md.bd193bf8.lean.js | 1 - ... api_modules_game_gameLoop.md.aa836b66.js} | 2 +- ...modules_game_gameLoop.md.aa836b66.lean.js} | 2 +- assets/api_modules_game_layers.md.2eb36c5e.js | 1 + ...i_modules_game_layers.md.2eb36c5e.lean.js} | 2 +- assets/api_modules_game_layers.md.ba0180ea.js | 1 - .../api_modules_game_modifiers.md.6263854d.js | 1 + ...modules_game_modifiers.md.6263854d.lean.js | 1 + .../api_modules_game_modifiers.md.e9a04d07.js | 1 - ...modules_game_modifiers.md.e9a04d07.lean.js | 1 - ...modules_game_notifications.md.afaa7863.js} | 2 +- ...es_game_notifications.md.afaa7863.lean.js} | 0 ...pi_modules_game_persistence.md.647a4d58.js | 1 + ...ules_game_persistence.md.647a4d58.lean.js} | 2 +- ...pi_modules_game_persistence.md.e61c1fc6.js | 1 - assets/api_modules_game_player.md.1ceb97cb.js | 1 + ...pi_modules_game_player.md.1ceb97cb.lean.js | 1 + assets/api_modules_game_player.md.f23bb598.js | 1 - ...pi_modules_game_player.md.f23bb598.lean.js | 1 - ...i_modules_game_requirements.md.1f80f527.js | 1 + ...ules_game_requirements.md.1f80f527.lean.js | 1 + ...i_modules_game_requirements.md.403fc39c.js | 1 - ...ules_game_requirements.md.403fc39c.lean.js | 1 - .../api_modules_game_settings.md.1958e7ca.js | 1 - .../api_modules_game_settings.md.d73a8fbd.js | 1 + ...modules_game_settings.md.d73a8fbd.lean.js} | 2 +- assets/api_modules_game_state.md.d8713837.js | 1 + ...api_modules_game_state.md.d8713837.lean.js | 1 + assets/api_modules_game_state.md.f32881b2.js | 1 - ...api_modules_game_state.md.f32881b2.lean.js | 1 - ..._modules_lib_break_eternity.md.456df427.js | 1 + ...les_lib_break_eternity.md.456df427.lean.js | 1 + ..._modules_lib_break_eternity.md.4905c813.js | 1 - ...les_lib_break_eternity.md.4905c813.lean.js | 1 - .../api_modules_lib_lru-cache.md.56fe8d58.js | 1 - ..._modules_lib_lru-cache.md.56fe8d58.lean.js | 1 - .../api_modules_lib_lru-cache.md.a386377a.js | 1 + ..._modules_lib_lru-cache.md.a386377a.lean.js | 1 + ...pi_modules_lib_pwa-register.md.0a1ca45c.js | 1 + ...dules_lib_pwa-register.md.0a1ca45c.lean.js | 1 + ...pi_modules_lib_pwa-register.md.8e6a42cb.js | 1 - ...dules_lib_pwa-register.md.8e6a42cb.lean.js | 1 - assets/api_modules_util_bignum.md.03ad1117.js | 1 - ...pi_modules_util_bignum.md.03ad1117.lean.js | 1 - assets/api_modules_util_bignum.md.7557448e.js | 1 + ...pi_modules_util_bignum.md.7557448e.lean.js | 1 + ...modules_util_break_eternity.md.3953e0b7.js | 1 + ...s_util_break_eternity.md.3953e0b7.lean.js} | 2 +- ...modules_util_break_eternity.md.5233e941.js | 1 - assets/api_modules_util_common.md.501f49a5.js | 1 + ...i_modules_util_common.md.501f49a5.lean.js} | 2 +- assets/api_modules_util_common.md.fa59245c.js | 1 - ... api_modules_util_computed.md.084c4cc2.js} | 2 +- ...modules_util_computed.md.084c4cc2.lean.js} | 2 +- ...i_modules_util_proxies.md.272c9807.lean.js | 1 - ...> api_modules_util_proxies.md.5c302d9c.js} | 2 +- ...i_modules_util_proxies.md.5c302d9c.lean.js | 1 + assets/api_modules_util_save.md.5477d06f.js | 1 + ...api_modules_util_save.md.5477d06f.lean.js} | 2 +- assets/api_modules_util_save.md.6130f3f6.js | 1 - assets/api_modules_util_vue.md.37e5800d.js | 1 + .../api_modules_util_vue.md.37e5800d.lean.js | 1 + assets/api_modules_util_vue.md.65db83c2.js | 1 - .../api_modules_util_vue.md.65db83c2.lean.js | 1 - ...concepts_creating-features.md.49125d9d.js} | 2 +- ...pts_creating-features.md.49125d9d.lean.js} | 2 +- ...ed-concepts_dynamic-layers.md.21faf359.js} | 2 +- ...ncepts_dynamic-layers.md.21faf359.lean.js} | 2 +- ...de_advanced-concepts_nodes.md.b6eda7dd.js} | 2 +- ...vanced-concepts_nodes.md.b6eda7dd.lean.js} | 2 +- ...ing-your-project_changelog.md.172bc03e.js} | 2 +- ...our-project_changelog.md.172bc03e.lean.js} | 2 +- ...your-project_project-entry.md.ddd3e9f7.js} | 2 +- ...project_project-entry.md.ddd3e9f7.lean.js} | 2 +- ...-your-project_project-info.md.64fc6c56.js} | 2 +- ...-project_project-info.md.64fc6c56.lean.js} | 2 +- ...eating-your-project_themes.md.63c537c1.js} | 2 +- ...g-your-project_themes.md.63c537c1.lean.js} | 2 +- ...reating-your-project_utils.md.f64b911e.js} | 2 +- ...ng-your-project_utils.md.f64b911e.lean.js} | 2 +- ...e_getting-started_examples.md.be79c82f.js} | 2 +- ...ting-started_examples.md.be79c82f.lean.js} | 2 +- ...guide_getting-started_setup.md.283dd6fc.js | 1 - ...guide_getting-started_setup.md.af062367.js | 1 + ...getting-started_setup.md.af062367.lean.js} | 2 +- ...e_getting-started_updating.md.d0fb2ae0.js} | 4 +- ...ting-started_updating.md.d0fb2ae0.lean.js} | 2 +- ...portant-concepts_coercable.md.c6ef7a86.js} | 2 +- ...nt-concepts_coercable.md.c6ef7a86.lean.js} | 2 +- ...mportant-concepts_features.md.f95c37df.js} | 2 +- ...ant-concepts_features.md.f95c37df.lean.js} | 2 +- ...mportant-concepts_formulas.md.c2a76b20.js} | 2 +- ...ant-concepts_formulas.md.c2a76b20.lean.js} | 2 +- ..._important-concepts_layers.md.0f85a362.js} | 2 +- ...rtant-concepts_layers.md.0f85a362.lean.js} | 2 +- ...rtant-concepts_persistence.md.8e5f6af6.js} | 2 +- ...-concepts_persistence.md.8e5f6af6.lean.js} | 2 +- ...ortant-concepts_reactivity.md.ca2bbc88.js} | 2 +- ...t-concepts_reactivity.md.ca2bbc88.lean.js} | 2 +- ...tant-concepts_requirements.md.54bd91b9.js} | 2 +- ...concepts_requirements.md.54bd91b9.lean.js} | 2 +- ...a6d0887c.js => guide_index.md.08f69a51.js} | 2 +- ...ean.js => guide_index.md.08f69a51.lean.js} | 2 +- assets/guide_migrations_0-6.md.caa4c6e3.js | 27 +++++++++ .../guide_migrations_0-6.md.caa4c6e3.lean.js | 1 + ...=> guide_recipes_particles.md.fcacf72f.js} | 2 +- ...ide_recipes_particles.md.fcacf72f.lean.js} | 2 +- ...uide_recipes_save-progress.md.e09db940.js} | 2 +- ...recipes_save-progress.md.e09db940.lean.js} | 2 +- ...ex.md.884f44e0.js => index.md.5c45fd2b.js} | 2 +- ...44e0.lean.js => index.md.5c45fd2b.lean.js} | 2 +- assets/persistence-error.537e237b.png | Bin 0 -> 13060 bytes ...{style.49aa32a7.css => style.4df5b91b.css} | 2 +- .../advanced-concepts/creating-features.html | 12 ++-- guide/advanced-concepts/dynamic-layers.html | 12 ++-- guide/advanced-concepts/nodes.html | 12 ++-- guide/creating-your-project/changelog.html | 12 ++-- .../creating-your-project/project-entry.html | 10 ++-- guide/creating-your-project/project-info.html | 10 ++-- guide/creating-your-project/themes.html | 10 ++-- guide/creating-your-project/utils.html | 10 ++-- guide/getting-started/examples.html | 10 ++-- guide/getting-started/setup.html | 10 ++-- guide/getting-started/updating.html | 12 ++-- guide/important-concepts/coercable.html | 12 ++-- guide/important-concepts/features.html | 12 ++-- guide/important-concepts/formulas.html | 12 ++-- guide/important-concepts/layers.html | 10 ++-- guide/important-concepts/persistence.html | 10 ++-- guide/important-concepts/reactivity.html | 10 ++-- guide/important-concepts/requirements.html | 10 ++-- guide/index.html | 10 ++-- guide/migrations/0-6.html | 55 ++++++++++++++++++ guide/recipes/particles.html | 12 ++-- guide/recipes/save-progress.html | 12 ++-- hashmap.json | 2 +- index.html | 8 +-- 311 files changed, 661 insertions(+), 578 deletions(-) create mode 100644 assets/api_modules_data_common.md.47fec908.js create mode 100644 assets/api_modules_data_common.md.47fec908.lean.js delete mode 100644 assets/api_modules_data_common.md.cea7349b.js delete mode 100644 assets/api_modules_data_common.md.cea7349b.lean.js rename assets/{api_modules_data_projEntry.md.85e931a3.js => api_modules_data_projEntry.md.77f70a60.js} (84%) rename assets/{api_modules_data_projEntry.md.85e931a3.lean.js => api_modules_data_projEntry.md.77f70a60.lean.js} (85%) delete mode 100644 assets/api_modules_data_themes.md.04121ce6.js delete mode 100644 assets/api_modules_data_themes.md.04121ce6.lean.js create mode 100644 assets/api_modules_data_themes.md.fcd738aa.js create mode 100644 assets/api_modules_data_themes.md.fcd738aa.lean.js create mode 100644 assets/api_modules_features_achievement.md.2dda368f.js rename assets/{api_modules_features_achievement.md.41fd9d95.lean.js => api_modules_features_achievement.md.2dda368f.lean.js} (68%) delete mode 100644 assets/api_modules_features_achievement.md.41fd9d95.js create mode 100644 assets/api_modules_features_action.md.70d6eb9f.js create mode 100644 assets/api_modules_features_action.md.70d6eb9f.lean.js delete mode 100644 assets/api_modules_features_action.md.accd9686.js delete mode 100644 assets/api_modules_features_action.md.accd9686.lean.js delete mode 100644 assets/api_modules_features_bar.md.d549ae50.js delete mode 100644 assets/api_modules_features_bar.md.d549ae50.lean.js create mode 100644 assets/api_modules_features_bar.md.e8448677.js create mode 100644 assets/api_modules_features_bar.md.e8448677.lean.js delete mode 100644 assets/api_modules_features_board.md.83c56444.js delete mode 100644 assets/api_modules_features_board.md.83c56444.lean.js create mode 100644 assets/api_modules_features_board.md.f946e582.js create mode 100644 assets/api_modules_features_board.md.f946e582.lean.js create mode 100644 assets/api_modules_features_challenge.md.538635b7.js rename assets/{api_modules_features_challenge.md.b67ac4a6.lean.js => api_modules_features_challenge.md.538635b7.lean.js} (57%) delete mode 100644 assets/api_modules_features_challenge.md.b67ac4a6.js delete mode 100644 assets/api_modules_features_clickable.md.81af6047.js create mode 100644 assets/api_modules_features_clickable.md.f229af4e.js rename assets/{api_modules_features_clickable.md.81af6047.lean.js => api_modules_features_clickable.md.f229af4e.lean.js} (71%) create mode 100644 assets/api_modules_features_conversion.md.c27720d1.js rename assets/{api_modules_features_conversion.md.e67c86a2.lean.js => api_modules_features_conversion.md.c27720d1.lean.js} (71%) delete mode 100644 assets/api_modules_features_conversion.md.e67c86a2.js delete mode 100644 assets/api_modules_features_feature.md.6c0b6f85.js create mode 100644 assets/api_modules_features_feature.md.fece3203.js rename assets/{api_modules_features_feature.md.6c0b6f85.lean.js => api_modules_features_feature.md.fece3203.lean.js} (58%) delete mode 100644 assets/api_modules_features_grid.md.44a0d8eb.js delete mode 100644 assets/api_modules_features_grid.md.44a0d8eb.lean.js create mode 100644 assets/api_modules_features_grid.md.9df2e2cb.js create mode 100644 assets/api_modules_features_grid.md.9df2e2cb.lean.js create mode 100644 assets/api_modules_features_hotkey.md.1b3345c1.js rename assets/{api_modules_features_hotkey.md.9bdca378.lean.js => api_modules_features_hotkey.md.1b3345c1.lean.js} (58%) delete mode 100644 assets/api_modules_features_hotkey.md.9bdca378.js delete mode 100644 assets/api_modules_features_infobox.md.8a44c689.js create mode 100644 assets/api_modules_features_infobox.md.e1f3a0d5.js rename assets/{api_modules_features_infobox.md.8a44c689.lean.js => api_modules_features_infobox.md.e1f3a0d5.lean.js} (57%) delete mode 100644 assets/api_modules_features_links.md.232f4909.js delete mode 100644 assets/api_modules_features_links.md.232f4909.lean.js create mode 100644 assets/api_modules_features_links.md.c0f648c4.js create mode 100644 assets/api_modules_features_links.md.c0f648c4.lean.js create mode 100644 assets/api_modules_features_particles.md.5c9477d1.js create mode 100644 assets/api_modules_features_particles.md.5c9477d1.lean.js delete mode 100644 assets/api_modules_features_particles.md.acdac247.js delete mode 100644 assets/api_modules_features_particles.md.acdac247.lean.js delete mode 100644 assets/api_modules_features_repeatable.md.2078abb7.js delete mode 100644 assets/api_modules_features_repeatable.md.2078abb7.lean.js create mode 100644 assets/api_modules_features_repeatable.md.a16afba7.js create mode 100644 assets/api_modules_features_repeatable.md.a16afba7.lean.js delete mode 100644 assets/api_modules_features_reset.md.295fd3d8.js create mode 100644 assets/api_modules_features_reset.md.c413767d.js rename assets/{api_modules_features_reset.md.295fd3d8.lean.js => api_modules_features_reset.md.c413767d.lean.js} (70%) delete mode 100644 assets/api_modules_features_resource.md.337b8880.js create mode 100644 assets/api_modules_features_resource.md.b91e265b.js rename assets/{api_modules_features_resource.md.337b8880.lean.js => api_modules_features_resource.md.b91e265b.lean.js} (71%) create mode 100644 assets/api_modules_features_tabs_tab.md.3b186dff.js create mode 100644 assets/api_modules_features_tabs_tab.md.3b186dff.lean.js delete mode 100644 assets/api_modules_features_tabs_tab.md.ac4b1c4b.js delete mode 100644 assets/api_modules_features_tabs_tab.md.ac4b1c4b.lean.js delete mode 100644 assets/api_modules_features_tabs_tabFamily.md.1a69473b.js delete mode 100644 assets/api_modules_features_tabs_tabFamily.md.1a69473b.lean.js create mode 100644 assets/api_modules_features_tabs_tabFamily.md.ae450c2b.js create mode 100644 assets/api_modules_features_tabs_tabFamily.md.ae450c2b.lean.js delete mode 100644 assets/api_modules_features_tooltip.md.4f1ae01d.js delete mode 100644 assets/api_modules_features_tooltip.md.4f1ae01d.lean.js create mode 100644 assets/api_modules_features_tooltip.md.7e3b32e5.js create mode 100644 assets/api_modules_features_tooltip.md.7e3b32e5.lean.js create mode 100644 assets/api_modules_features_tree.md.c82cfafa.js create mode 100644 assets/api_modules_features_tree.md.c82cfafa.lean.js delete mode 100644 assets/api_modules_features_tree.md.ed4d7a45.js delete mode 100644 assets/api_modules_features_tree.md.ed4d7a45.lean.js create mode 100644 assets/api_modules_features_upgrade.md.0ba043c0.js create mode 100644 assets/api_modules_features_upgrade.md.0ba043c0.lean.js delete mode 100644 assets/api_modules_features_upgrade.md.1354b683.js delete mode 100644 assets/api_modules_features_upgrade.md.1354b683.lean.js delete mode 100644 assets/api_modules_game_events.md.597f47e5.js delete mode 100644 assets/api_modules_game_events.md.597f47e5.lean.js create mode 100644 assets/api_modules_game_events.md.98906675.js create mode 100644 assets/api_modules_game_events.md.98906675.lean.js create mode 100644 assets/api_modules_game_formulas_formulas.md.c3dafd78.js create mode 100644 assets/api_modules_game_formulas_formulas.md.c3dafd78.lean.js delete mode 100644 assets/api_modules_game_formulas_formulas.md.dda227f0.js delete mode 100644 assets/api_modules_game_formulas_formulas.md.dda227f0.lean.js delete mode 100644 assets/api_modules_game_formulas_operations.md.19c5dc95.js create mode 100644 assets/api_modules_game_formulas_operations.md.7b749a35.js rename assets/{api_modules_game_formulas_operations.md.19c5dc95.lean.js => api_modules_game_formulas_operations.md.7b749a35.lean.js} (68%) create mode 100644 assets/api_modules_game_formulas_types.md.9c4cba15.js create mode 100644 assets/api_modules_game_formulas_types.md.9c4cba15.lean.js delete mode 100644 assets/api_modules_game_formulas_types.md.bd193bf8.js delete mode 100644 assets/api_modules_game_formulas_types.md.bd193bf8.lean.js rename assets/{api_modules_game_gameLoop.md.4e2abfc0.js => api_modules_game_gameLoop.md.aa836b66.js} (85%) rename assets/{api_modules_game_gameLoop.md.4e2abfc0.lean.js => api_modules_game_gameLoop.md.aa836b66.lean.js} (75%) create mode 100644 assets/api_modules_game_layers.md.2eb36c5e.js rename assets/{api_modules_game_layers.md.ba0180ea.lean.js => api_modules_game_layers.md.2eb36c5e.lean.js} (60%) delete mode 100644 assets/api_modules_game_layers.md.ba0180ea.js create mode 100644 assets/api_modules_game_modifiers.md.6263854d.js create mode 100644 assets/api_modules_game_modifiers.md.6263854d.lean.js delete mode 100644 assets/api_modules_game_modifiers.md.e9a04d07.js delete mode 100644 assets/api_modules_game_modifiers.md.e9a04d07.lean.js rename assets/{api_modules_game_notifications.md.4007ad77.js => api_modules_game_notifications.md.afaa7863.js} (87%) rename assets/{api_modules_game_notifications.md.4007ad77.lean.js => api_modules_game_notifications.md.afaa7863.lean.js} (100%) create mode 100644 assets/api_modules_game_persistence.md.647a4d58.js rename assets/{api_modules_game_persistence.md.e61c1fc6.lean.js => api_modules_game_persistence.md.647a4d58.lean.js} (85%) delete mode 100644 assets/api_modules_game_persistence.md.e61c1fc6.js create mode 100644 assets/api_modules_game_player.md.1ceb97cb.js create mode 100644 assets/api_modules_game_player.md.1ceb97cb.lean.js delete mode 100644 assets/api_modules_game_player.md.f23bb598.js delete mode 100644 assets/api_modules_game_player.md.f23bb598.lean.js create mode 100644 assets/api_modules_game_requirements.md.1f80f527.js create mode 100644 assets/api_modules_game_requirements.md.1f80f527.lean.js delete mode 100644 assets/api_modules_game_requirements.md.403fc39c.js delete mode 100644 assets/api_modules_game_requirements.md.403fc39c.lean.js delete mode 100644 assets/api_modules_game_settings.md.1958e7ca.js create mode 100644 assets/api_modules_game_settings.md.d73a8fbd.js rename assets/{api_modules_game_settings.md.1958e7ca.lean.js => api_modules_game_settings.md.d73a8fbd.lean.js} (70%) create mode 100644 assets/api_modules_game_state.md.d8713837.js create mode 100644 assets/api_modules_game_state.md.d8713837.lean.js delete mode 100644 assets/api_modules_game_state.md.f32881b2.js delete mode 100644 assets/api_modules_game_state.md.f32881b2.lean.js create mode 100644 assets/api_modules_lib_break_eternity.md.456df427.js create mode 100644 assets/api_modules_lib_break_eternity.md.456df427.lean.js delete mode 100644 assets/api_modules_lib_break_eternity.md.4905c813.js delete mode 100644 assets/api_modules_lib_break_eternity.md.4905c813.lean.js delete mode 100644 assets/api_modules_lib_lru-cache.md.56fe8d58.js delete mode 100644 assets/api_modules_lib_lru-cache.md.56fe8d58.lean.js create mode 100644 assets/api_modules_lib_lru-cache.md.a386377a.js create mode 100644 assets/api_modules_lib_lru-cache.md.a386377a.lean.js create mode 100644 assets/api_modules_lib_pwa-register.md.0a1ca45c.js create mode 100644 assets/api_modules_lib_pwa-register.md.0a1ca45c.lean.js delete mode 100644 assets/api_modules_lib_pwa-register.md.8e6a42cb.js delete mode 100644 assets/api_modules_lib_pwa-register.md.8e6a42cb.lean.js delete mode 100644 assets/api_modules_util_bignum.md.03ad1117.js delete mode 100644 assets/api_modules_util_bignum.md.03ad1117.lean.js create mode 100644 assets/api_modules_util_bignum.md.7557448e.js create mode 100644 assets/api_modules_util_bignum.md.7557448e.lean.js create mode 100644 assets/api_modules_util_break_eternity.md.3953e0b7.js rename assets/{api_modules_util_break_eternity.md.5233e941.lean.js => api_modules_util_break_eternity.md.3953e0b7.lean.js} (71%) delete mode 100644 assets/api_modules_util_break_eternity.md.5233e941.js create mode 100644 assets/api_modules_util_common.md.501f49a5.js rename assets/{api_modules_util_common.md.fa59245c.lean.js => api_modules_util_common.md.501f49a5.lean.js} (50%) delete mode 100644 assets/api_modules_util_common.md.fa59245c.js rename assets/{api_modules_util_computed.md.f384f5a3.js => api_modules_util_computed.md.084c4cc2.js} (66%) rename assets/{api_modules_util_computed.md.f384f5a3.lean.js => api_modules_util_computed.md.084c4cc2.lean.js} (70%) delete mode 100644 assets/api_modules_util_proxies.md.272c9807.lean.js rename assets/{api_modules_util_proxies.md.272c9807.js => api_modules_util_proxies.md.5c302d9c.js} (70%) create mode 100644 assets/api_modules_util_proxies.md.5c302d9c.lean.js create mode 100644 assets/api_modules_util_save.md.5477d06f.js rename assets/{api_modules_util_save.md.6130f3f6.lean.js => api_modules_util_save.md.5477d06f.lean.js} (69%) delete mode 100644 assets/api_modules_util_save.md.6130f3f6.js create mode 100644 assets/api_modules_util_vue.md.37e5800d.js create mode 100644 assets/api_modules_util_vue.md.37e5800d.lean.js delete mode 100644 assets/api_modules_util_vue.md.65db83c2.js delete mode 100644 assets/api_modules_util_vue.md.65db83c2.lean.js rename assets/{guide_advanced-concepts_creating-features.md.a18865d1.js => guide_advanced-concepts_creating-features.md.49125d9d.js} (99%) rename assets/{guide_advanced-concepts_creating-features.md.a18865d1.lean.js => guide_advanced-concepts_creating-features.md.49125d9d.lean.js} (85%) rename assets/{guide_advanced-concepts_dynamic-layers.md.69b0375d.js => guide_advanced-concepts_dynamic-layers.md.21faf359.js} (98%) rename assets/{guide_advanced-concepts_dynamic-layers.md.69b0375d.lean.js => guide_advanced-concepts_dynamic-layers.md.21faf359.lean.js} (85%) rename assets/{guide_advanced-concepts_nodes.md.74909dae.js => guide_advanced-concepts_nodes.md.b6eda7dd.js} (99%) rename assets/{guide_advanced-concepts_nodes.md.74909dae.lean.js => guide_advanced-concepts_nodes.md.b6eda7dd.lean.js} (84%) rename assets/{guide_creating-your-project_changelog.md.62153173.js => guide_creating-your-project_changelog.md.172bc03e.js} (98%) rename assets/{guide_creating-your-project_changelog.md.62153173.lean.js => guide_creating-your-project_changelog.md.172bc03e.lean.js} (85%) rename assets/{guide_creating-your-project_project-entry.md.c30550eb.js => guide_creating-your-project_project-entry.md.ddd3e9f7.js} (98%) rename assets/{guide_creating-your-project_project-entry.md.c30550eb.lean.js => guide_creating-your-project_project-entry.md.ddd3e9f7.lean.js} (85%) rename assets/{guide_creating-your-project_project-info.md.f06a6a5d.js => guide_creating-your-project_project-info.md.64fc6c56.js} (99%) rename assets/{guide_creating-your-project_project-info.md.f06a6a5d.lean.js => guide_creating-your-project_project-info.md.64fc6c56.lean.js} (85%) rename assets/{guide_creating-your-project_themes.md.2ceffe94.js => guide_creating-your-project_themes.md.63c537c1.js} (97%) rename assets/{guide_creating-your-project_themes.md.2ceffe94.lean.js => guide_creating-your-project_themes.md.63c537c1.lean.js} (84%) rename assets/{guide_creating-your-project_utils.md.0aa70f37.js => guide_creating-your-project_utils.md.f64b911e.js} (95%) rename assets/{guide_creating-your-project_utils.md.0aa70f37.lean.js => guide_creating-your-project_utils.md.f64b911e.lean.js} (95%) rename assets/{guide_getting-started_examples.md.8dc349eb.js => guide_getting-started_examples.md.be79c82f.js} (97%) rename assets/{guide_getting-started_examples.md.8dc349eb.lean.js => guide_getting-started_examples.md.be79c82f.lean.js} (97%) delete mode 100644 assets/guide_getting-started_setup.md.283dd6fc.js create mode 100644 assets/guide_getting-started_setup.md.af062367.js rename assets/{guide_getting-started_setup.md.283dd6fc.lean.js => guide_getting-started_setup.md.af062367.lean.js} (87%) rename assets/{guide_getting-started_updating.md.9e46942a.js => guide_getting-started_updating.md.d0fb2ae0.js} (62%) rename assets/{guide_getting-started_updating.md.9e46942a.lean.js => guide_getting-started_updating.md.d0fb2ae0.lean.js} (85%) rename assets/{guide_important-concepts_coercable.md.b1f1acdb.js => guide_important-concepts_coercable.md.c6ef7a86.js} (99%) rename assets/{guide_important-concepts_coercable.md.b1f1acdb.lean.js => guide_important-concepts_coercable.md.c6ef7a86.lean.js} (85%) rename assets/{guide_important-concepts_features.md.ce662e79.js => guide_important-concepts_features.md.f95c37df.js} (99%) rename assets/{guide_important-concepts_features.md.ce662e79.lean.js => guide_important-concepts_features.md.f95c37df.lean.js} (84%) rename assets/{guide_important-concepts_formulas.md.0ba3b4c0.js => guide_important-concepts_formulas.md.c2a76b20.js} (99%) rename assets/{guide_important-concepts_formulas.md.0ba3b4c0.lean.js => guide_important-concepts_formulas.md.c2a76b20.lean.js} (84%) rename assets/{guide_important-concepts_layers.md.40e3beef.js => guide_important-concepts_layers.md.0f85a362.js} (96%) rename assets/{guide_important-concepts_layers.md.40e3beef.lean.js => guide_important-concepts_layers.md.0f85a362.lean.js} (84%) rename assets/{guide_important-concepts_persistence.md.d4602def.js => guide_important-concepts_persistence.md.8e5f6af6.js} (97%) rename assets/{guide_important-concepts_persistence.md.d4602def.lean.js => guide_important-concepts_persistence.md.8e5f6af6.lean.js} (85%) rename assets/{guide_important-concepts_reactivity.md.6d7d263f.js => guide_important-concepts_reactivity.md.ca2bbc88.js} (97%) rename assets/{guide_important-concepts_reactivity.md.6d7d263f.lean.js => guide_important-concepts_reactivity.md.ca2bbc88.lean.js} (85%) rename assets/{guide_important-concepts_requirements.md.315f99b3.js => guide_important-concepts_requirements.md.54bd91b9.js} (98%) rename assets/{guide_important-concepts_requirements.md.315f99b3.lean.js => guide_important-concepts_requirements.md.54bd91b9.lean.js} (85%) rename assets/{guide_index.md.a6d0887c.js => guide_index.md.08f69a51.js} (98%) rename assets/{guide_index.md.a6d0887c.lean.js => guide_index.md.08f69a51.lean.js} (84%) create mode 100644 assets/guide_migrations_0-6.md.caa4c6e3.js create mode 100644 assets/guide_migrations_0-6.md.caa4c6e3.lean.js rename assets/{guide_recipes_particles.md.fc5fb015.js => guide_recipes_particles.md.fcacf72f.js} (99%) rename assets/{guide_recipes_particles.md.fc5fb015.lean.js => guide_recipes_particles.md.fcacf72f.lean.js} (84%) rename assets/{guide_recipes_save-progress.md.090d590c.js => guide_recipes_save-progress.md.e09db940.js} (99%) rename assets/{guide_recipes_save-progress.md.090d590c.lean.js => guide_recipes_save-progress.md.e09db940.lean.js} (86%) rename assets/{index.md.884f44e0.js => index.md.5c45fd2b.js} (94%) rename assets/{index.md.884f44e0.lean.js => index.md.5c45fd2b.lean.js} (94%) create mode 100644 assets/persistence-error.537e237b.png rename assets/{style.49aa32a7.css => style.4df5b91b.css} (99%) create mode 100644 guide/migrations/0-6.html diff --git a/404.html b/404.html index e0381b9a..be807425 100644 --- a/404.html +++ b/404.html @@ -5,7 +5,7 @@ 404 | Profectus - + @@ -19,8 +19,8 @@
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
- + \ No newline at end of file diff --git a/api/components/ContextComponent.html b/api/components/ContextComponent.html index ccdc175f..dc9c3dbe 100644 --- a/api/components/ContextComponent.html +++ b/api/components/ContextComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/HotkeyComponent.html b/api/components/HotkeyComponent.html index 3467979e..6253afae 100644 --- a/api/components/HotkeyComponent.html +++ b/api/components/HotkeyComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/InfoComponent.html b/api/components/InfoComponent.html index 2ab3bb78..af45654d 100644 --- a/api/components/InfoComponent.html +++ b/api/components/InfoComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/LayerComponent.html b/api/components/LayerComponent.html index b787441c..b1c90b22 100644 --- a/api/components/LayerComponent.html +++ b/api/components/LayerComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
Skip to content
On this page

Layer Component ​

Props ​

NameType
index*number
display*processedPropType<CoercableComponent>(Object, String, Function)
minimizedDisplayprocessedPropType<CoercableComponent>(Object, String, Function)
minimized*Ref<boolean>
name*processedPropType<string>(String)
colorprocessedPropType<string>(String)
minimizableprocessedPropType<boolean>(Boolean)
nodes*Ref<Record<string, FeatureNode | undefined>>

Events ​

Name
setMinimized
- + \ No newline at end of file diff --git a/api/components/MarkNodeComponent.html b/api/components/MarkNodeComponent.html index b666b9fd..b1f1b5b3 100644 --- a/api/components/MarkNodeComponent.html +++ b/api/components/MarkNodeComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/ModalComponent.html b/api/components/ModalComponent.html index 43f05c52..6b566566 100644 --- a/api/components/ModalComponent.html +++ b/api/components/ModalComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/NodeComponent.html b/api/components/NodeComponent.html index dd402dc4..89672593 100644 --- a/api/components/NodeComponent.html +++ b/api/components/NodeComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/SaveComponent.html b/api/components/SaveComponent.html index 72f56ce1..205275d4 100644 --- a/api/components/SaveComponent.html +++ b/api/components/SaveComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/fields/DangerButtonComponent.html b/api/components/fields/DangerButtonComponent.html index 75d3e5ad..747eb1c0 100644 --- a/api/components/fields/DangerButtonComponent.html +++ b/api/components/fields/DangerButtonComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/fields/FeedbackButtonComponent.html b/api/components/fields/FeedbackButtonComponent.html index 97288dd6..4d3ef75c 100644 --- a/api/components/fields/FeedbackButtonComponent.html +++ b/api/components/fields/FeedbackButtonComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/fields/SelectComponent.html b/api/components/fields/SelectComponent.html index f59936c3..f48939e6 100644 --- a/api/components/fields/SelectComponent.html +++ b/api/components/fields/SelectComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/fields/SliderComponent.html b/api/components/fields/SliderComponent.html index 4b8ed02d..5b2e9e39 100644 --- a/api/components/fields/SliderComponent.html +++ b/api/components/fields/SliderComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/fields/TextComponent.html b/api/components/fields/TextComponent.html index 0d1f9673..32494cf5 100644 --- a/api/components/fields/TextComponent.html +++ b/api/components/fields/TextComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/fields/ToggleComponent.html b/api/components/fields/ToggleComponent.html index cb67fa63..4b2b4ddb 100644 --- a/api/components/fields/ToggleComponent.html +++ b/api/components/fields/ToggleComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/layout/CollapsibleComponent.html b/api/components/layout/CollapsibleComponent.html index 6e7962a5..6bacd9df 100644 --- a/api/components/layout/CollapsibleComponent.html +++ b/api/components/layout/CollapsibleComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/layout/ColumnComponent.html b/api/components/layout/ColumnComponent.html index cac127a2..7e403362 100644 --- a/api/components/layout/ColumnComponent.html +++ b/api/components/layout/ColumnComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/layout/RowComponent.html b/api/components/layout/RowComponent.html index e21d027a..cb34919d 100644 --- a/api/components/layout/RowComponent.html +++ b/api/components/layout/RowComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/layout/SpacerComponent.html b/api/components/layout/SpacerComponent.html index 0a4fd28b..d13d4bd5 100644 --- a/api/components/layout/SpacerComponent.html +++ b/api/components/layout/SpacerComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/layout/StickyComponent.html b/api/components/layout/StickyComponent.html index 502cef19..ea5bfca5 100644 --- a/api/components/layout/StickyComponent.html +++ b/api/components/layout/StickyComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/layout/VerticalRuleComponent.html b/api/components/layout/VerticalRuleComponent.html index ffe2104c..10aa7946 100644 --- a/api/components/layout/VerticalRuleComponent.html +++ b/api/components/layout/VerticalRuleComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/math/FloorComponent.html b/api/components/math/FloorComponent.html index 46213628..c0bce8db 100644 --- a/api/components/math/FloorComponent.html +++ b/api/components/math/FloorComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/components/math/SqrtComponent.html b/api/components/math/SqrtComponent.html index 854a0106..72a45b45 100644 --- a/api/components/math/SqrtComponent.html +++ b/api/components/math/SqrtComponent.html @@ -5,7 +5,7 @@ Profectus | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/modules/data/common.html b/api/modules/data/common.html index aae5602a..eb4ab70b 100644 --- a/api/modules/data/common.html +++ b/api/modules/data/common.html @@ -5,12 +5,12 @@ Module: data/common | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: data/common ​

Interfaces ​

LayerTreeNodeOptions ​

• LayerTreeNodeOptions: Object

An object that configures a LayerTreeNode

NameTypeDescription
append?Computable<boolean>Whether or not to append the layer to the tabs list. If set to false, then the tree node will instead always remove all tabs to its right and then add the layer tab. Defaults to true.
canClick?Computable<boolean>Whether or not this tree node can be clicked.
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
colorComputable<string>The color to display this tree node as
display?Computable<CoercableComponent>The content to display in the tree node. Defaults to the layer's ID
glowColor?Computable<string>The color of the glow effect shown to notify the user there's something to do with this node.
layerIDstringThe ID of the layer this tree node is associated with
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
onClick?(e?: MouseEvent | TouchEvent) => voidA function that is called when the tree node is clicked.
onHold?VoidFunctionA function that is called when the tree node is held down.
reset?GenericResetA reset object attached to this node, used for propagating resets through the tree.
style?Computable<StyleValue>CSS to apply to this feature.
visibility?Computable<boolean | Visibility>Whether this tree node should be visible.

Defined in ​

profectus/src/data/common.tsx:176


ResetButtonOptions ​

• ResetButtonOptions: Object

An object that configures a ResetButton

NameTypeDescription
canClick?Computable<boolean>Whether or not this button can currently be clicked. Defaults to checking the current gain amount is greater than minimumGain
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
conversionGenericConversionThe conversion the button uses to calculate how much resources will be gained on click
display?Computable<CoercableComponent>The content to display on the button. By default, this includes the reset description, and amount of currency to be gained.
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
minimumGain?Computable<DecimalSource>When canClick is left to its default, minimumGain is used to only enable the reset button when a sufficient amount of currency to gain is available.
onClick?(e?: MouseEvent | TouchEvent) => voidA function that is called when the clickable is clicked.
onHold?VoidFunctionA function that is called when the clickable is held down.
resetDescription?Computable<string>Text to display on low conversion amounts, describing what "resetting" is in this context. Defaults to "Reset for ".
resetTime?Persistent<DecimalSource>A persistent ref to track how much time has passed since the last time this tree node was reset.
showNextAt?Computable<boolean>Whether or not to show how much currency would be required to make the gain amount increase.
small?booleanToggles a smaller design for the feature.
style?Computable<StyleValue>CSS to apply to this feature.
treeGenericTreeThe tree this reset button is apart of
treeNodeGenericTreeNodeThe specific tree node associated with this reset button
visibility?Computable<boolean | Visibility>Whether this clickable should be visible.

Defined in ​

profectus/src/data/common.tsx:34


Section ​

• Section: Object

An option object for a modifier display as a single section. *

NameTypeDescription
base?Computable<DecimalSource>The base value being modified. *
baseText?Computable<CoercableComponent>The label to call the base amount. Defaults to "Base". *
modifierWithRequired<Modifier, "description">The modifier to be displaying in this section. *
subtitle?Computable<string>A subtitle for this modifier, e.g. to explain the context for the modifier. *
titleComputable<string>The header for this modifier. *
unit?stringThe unit of measurement for the base. *
visible?Computable<boolean>Whether or not this section should be currently visible to the player. *

Defined in ​

profectus/src/data/common.tsx:241

Type Aliases ​

GenericLayerTreeNode ​

Ƭ GenericLayerTreeNode: Replace<LayerTreeNode<LayerTreeNodeOptions>, { append?: ProcessedComputable<boolean> ; display: ProcessedComputable<CoercableComponent> }>

A type that matches any valid LayerTreeNode object.

Defined in ​

profectus/src/data/common.tsx:201


GenericResetButton ​

Ƭ GenericResetButton: Replace<GenericClickable & ResetButton<ResetButtonOptions>, { canClick: ProcessedComputable<boolean> ; display: ProcessedComputable<CoercableComponent> ; minimumGain: ProcessedComputable<DecimalSource> ; resetDescription: ProcessedComputable<string> ; showNextAt: ProcessedComputable<boolean> }>

A type that matches any valid ResetButton object.

Defined in ​

profectus/src/data/common.tsx:84


LayerTreeNode ​

Ƭ LayerTreeNode<T>: Replace<TreeNode<T>, { append: GetComputableType<T["append"]> ; display: GetComputableTypeWithDefault<T["display"], T["layerID"]> }>

A tree node that is associated with a given layer, and which opens the layer when clicked.

Type parameters ​

NameType
Textends LayerTreeNodeOptions

Defined in ​

profectus/src/data/common.tsx:193


ResetButton ​

Ƭ ResetButton<T>: Replace<Clickable<T>, { canClick: GetComputableTypeWithDefault<T["canClick"], Ref<boolean>> ; display: GetComputableTypeWithDefault<T["display"], Ref<JSX.Element>> ; minimumGain: GetComputableTypeWithDefault<T["minimumGain"], 1> ; onClick: (event?: MouseEvent | TouchEvent) => void ; resetDescription: GetComputableTypeWithDefault<T["resetDescription"], Ref<string>> ; showNextAt: GetComputableTypeWithDefault<T["showNextAt"], true> }>

A button that is used to control a conversion. It will show how much can be converted currently, and can show when that amount will go up, as well as handle only being clickable when a sufficient amount of currency can be gained. Assumes this button is associated with a specific node on a tree, and triggers that tree's reset propagation.

Type parameters ​

NameType
Textends ResetButtonOptions

Defined in ​

profectus/src/data/common.tsx:71

Functions ​

colorText ​

â–¸ colorText(textToColor, color?): JSX.Element

Creates an HTML string for a span that writes some given text in a given color.

Parameters ​
NameTypeDefault valueDescription
textToColorstringundefinedThe content to change the color of
colorstring"var(--accent2)"The color to change the content to look like. Defaults to the current theme's accent 2 variable.
Returns ​

JSX.Element

Defined in ​

profectus/src/data/common.tsx:382


createCollapsibleAchievements ​

â–¸ createCollapsibleAchievements(achievements): Object

Creates a collapsible display of a list of achievements

Parameters ​
NameTypeDescription
achievementsRecord<string, GenericAchievement>A dictionary of the achievements to display, inserted in the order from easiest to hardest
Returns ​

Object

NameType
collapseAchievementsPersistent<boolean>
displayJSXFunction

Defined in ​

profectus/src/data/common.tsx:390


createCollapsibleModifierSections ​

â–¸ createCollapsibleModifierSections(sectionsFunc, smallerIsBetter?): [JSXFunction, Persistent<Record<number, boolean>>]

Takes an array of modifier "sections", and creates a JSXFunction that can render all those sections, and allow each section to be collapsed. Also returns a list of persistent refs that are used to control which sections are currently collapsed.

Parameters ​
NameTypeDefault valueDescription
sectionsFunc() => Section[]undefinedA function that returns the sections to display.
smallerIsBetterbooleanfalseDetermines whether numbers larger or smaller than the base should be displayed as red.
Returns ​

[JSXFunction, Persistent<Record<number, boolean>>]

Defined in ​

profectus/src/data/common.tsx:264


createFormulaPreview ​

â–¸ createFormulaPreview(formula, showPreview, previewAmount?): ComputedRef<CoercableComponent>

Utility function for displaying the result of a formula such that it will, when told to, preview how the formula's result will change. Requires a formula with a single variable inside.

Parameters ​
NameTypeDefault valueDescription
formulaGenericFormulaundefinedThe formula to display the result of.
showPreviewComputable<boolean>undefinedWhether or not to preview how the formula's result will change.
previewAmountComputable<DecimalSource>1The amount to add to the current formula's variable amount to preview the change in result.
Returns ​

ComputedRef<CoercableComponent>

Defined in ​

profectus/src/data/common.tsx:460


createLayerTreeNode ​

â–¸ createLayerTreeNode<T>(optionsFunc): LayerTreeNode<T>

Lazily creates a tree node that's associated with a specific layer, with the given options.

Type parameters ​
NameType
Textends LayerTreeNodeOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, Record<string, unknown>, Record<string, unknown>>A function that returns the options object for this tree node.
Returns ​

LayerTreeNode<T>

Defined in ​

profectus/src/data/common.tsx:213


createResetButton ​

â–¸ createResetButton<T>(optionsFunc): ResetButton<T>

Lazily creates a reset button with the given options.

Type parameters ​
NameType
Textends ClickableOptions & ResetButtonOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, Record<string, unknown>, Record<string, unknown>>A function that returns the options object for this reset button.
Returns ​

ResetButton<T>

Defined in ​

profectus/src/data/common.tsx:99


estimateTime ​

â–¸ estimateTime(resource, rate, target): ComputedRef<string>

Utility function for getting an ETA for when a target will be reached by a resource with a known (and assumed consistent) gain.

Parameters ​
NameTypeDescription
resourceResource<DecimalSource>The resource that will be increasing over time.
rateComputable<DecimalSource>The rate at which the resource is increasing.
targetComputable<DecimalSource>The target amount of the resource to estimate the duration until.
Returns ​

ComputedRef<string>

Defined in ​

profectus/src/data/common.tsx:434


modifierToFormula ​

â–¸ modifierToFormula<T>(modifier, base): T

Utility for converting a modifier into a formula. Takes the input for this formula as the base parameter.

Type parameters ​
NameType
Textends default<any, T>
Parameters ​
NameTypeDescription
modifierWithRequired<Modifier, "revert">The modifier to convert to the formula
baseTAn existing formula or processed DecimalSource that will be the input to the formula
Returns ​

T

Other signatures ​

â–¸ modifierToFormula(modifier, base): GenericFormula

NameType
modifierModifier
baseFormulaSource

Defined in ​

profectus/src/data/common.tsx:500

profectus/src/data/common.tsx:504

profectus/src/data/common.tsx:505

- +
Skip to content
On this page

Module: data/common ​

Interfaces ​

LayerTreeNodeOptions ​

• LayerTreeNodeOptions: Object

An object that configures a LayerTreeNode

Defined in ​

profectus/src/data/common.tsx:176


ResetButtonOptions ​

• ResetButtonOptions: Object

An object that configures a ResetButton

Defined in ​

profectus/src/data/common.tsx:34


Section ​

• Section: Object

An option object for a modifier display as a single section. *

Defined in ​

profectus/src/data/common.tsx:241

Type Aliases ​

GenericLayerTreeNode ​

Ƭ GenericLayerTreeNode: Replace<LayerTreeNode<LayerTreeNodeOptions>, { append?: ProcessedComputable<boolean> ; display: ProcessedComputable<CoercableComponent> }>

A type that matches any valid LayerTreeNode object.

Defined in ​

profectus/src/data/common.tsx:201


GenericResetButton ​

Ƭ GenericResetButton: Replace<GenericClickable & ResetButton<ResetButtonOptions>, { canClick: ProcessedComputable<boolean> ; display: ProcessedComputable<CoercableComponent> ; minimumGain: ProcessedComputable<DecimalSource> ; resetDescription: ProcessedComputable<string> ; showNextAt: ProcessedComputable<boolean> }>

A type that matches any valid ResetButton object.

Defined in ​

profectus/src/data/common.tsx:84


LayerTreeNode ​

Ƭ LayerTreeNode<T>: Replace<TreeNode<T>, { append: GetComputableType<T["append"]> ; display: GetComputableTypeWithDefault<T["display"], T["layerID"]> }>

A tree node that is associated with a given layer, and which opens the layer when clicked.

Type parameters ​

NameType
Textends LayerTreeNodeOptions

Defined in ​

profectus/src/data/common.tsx:193


ResetButton ​

Ƭ ResetButton<T>: Replace<Clickable<T>, { canClick: GetComputableTypeWithDefault<T["canClick"], Ref<boolean>> ; display: GetComputableTypeWithDefault<T["display"], Ref<JSX.Element>> ; minimumGain: GetComputableTypeWithDefault<T["minimumGain"], 1> ; onClick: (event?: MouseEvent | TouchEvent) => void ; resetDescription: GetComputableTypeWithDefault<T["resetDescription"], Ref<string>> ; showNextAt: GetComputableTypeWithDefault<T["showNextAt"], true> }>

A button that is used to control a conversion. It will show how much can be converted currently, and can show when that amount will go up, as well as handle only being clickable when a sufficient amount of currency can be gained. Assumes this button is associated with a specific node on a tree, and triggers that tree's reset propagation.

Type parameters ​

NameType
Textends ResetButtonOptions

Defined in ​

profectus/src/data/common.tsx:71

Functions ​

colorText ​

â–¸ colorText(textToColor, color?): JSX.Element

Creates an HTML string for a span that writes some given text in a given color.

Parameters ​

NameTypeDefault valueDescription
textToColorstringundefinedThe content to change the color of
colorstring"var(--accent2)"The color to change the content to look like. Defaults to the current theme's accent 2 variable.

Returns ​

JSX.Element

Defined in ​

profectus/src/data/common.tsx:384


createCollapsibleAchievements ​

â–¸ createCollapsibleAchievements(achievements): Object

Creates a collapsible display of a list of achievements

Parameters ​

NameTypeDescription
achievementsRecord<string, GenericAchievement>A dictionary of the achievements to display, inserted in the order from easiest to hardest

Returns ​

Object

NameType
collapseAchievementsPersistent<boolean>
displayJSXFunction

Defined in ​

profectus/src/data/common.tsx:392


createCollapsibleModifierSections ​

â–¸ createCollapsibleModifierSections(sectionsFunc): [JSXFunction, Persistent<Record<number, boolean>>]

Takes an array of modifier "sections", and creates a JSXFunction that can render all those sections, and allow each section to be collapsed. Also returns a list of persistent refs that are used to control which sections are currently collapsed.

Parameters ​

NameTypeDescription
sectionsFunc() => Section[]A function that returns the sections to display.

Returns ​

[JSXFunction, Persistent<Record<number, boolean>>]

Defined in ​

profectus/src/data/common.tsx:265


createFormulaPreview ​

â–¸ createFormulaPreview(formula, showPreview, previewAmount?): ComputedRef<CoercableComponent>

Utility function for displaying the result of a formula such that it will, when told to, preview how the formula's result will change. Requires a formula with a single variable inside.

Parameters ​

NameTypeDefault valueDescription
formulaGenericFormulaundefinedThe formula to display the result of.
showPreviewComputable<boolean>undefinedWhether or not to preview how the formula's result will change.
previewAmountComputable<DecimalSource>1The amount to add to the current formula's variable amount to preview the change in result.

Returns ​

ComputedRef<CoercableComponent>

Defined in ​

profectus/src/data/common.tsx:462


createLayerTreeNode ​

â–¸ createLayerTreeNode<T>(optionsFunc): LayerTreeNode<T>

Lazily creates a tree node that's associated with a specific layer, with the given options.

Type parameters ​

NameType
Textends LayerTreeNodeOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T>A function that returns the options object for this tree node.

Returns ​

LayerTreeNode<T>

Defined in ​

profectus/src/data/common.tsx:213


createResetButton ​

â–¸ createResetButton<T>(optionsFunc): ResetButton<T>

Lazily creates a reset button with the given options.

Type parameters ​

NameType
Textends ClickableOptions & ResetButtonOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T>A function that returns the options object for this reset button.

Returns ​

ResetButton<T>

Defined in ​

profectus/src/data/common.tsx:99


estimateTime ​

â–¸ estimateTime(resource, rate, target): ComputedRef<string>

Utility function for getting an ETA for when a target will be reached by a resource with a known (and assumed consistent) gain.

Parameters ​

NameTypeDescription
resourceResource<DecimalSource>The resource that will be increasing over time.
rateComputable<DecimalSource>The rate at which the resource is increasing.
targetComputable<DecimalSource>The target amount of the resource to estimate the duration until.

Returns ​

ComputedRef<string>

Defined in ​

profectus/src/data/common.tsx:436

+ \ No newline at end of file diff --git a/api/modules/data/projEntry.html b/api/modules/data/projEntry.html index db06ffa6..f411ccda 100644 --- a/api/modules/data/projEntry.html +++ b/api/modules/data/projEntry.html @@ -5,12 +5,12 @@ Module: data/projEntry | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: data/projEntry ​

Variables ​

hasWon ​

• Const hasWon: ComputedRef<boolean>

A computed ref whose value is true whenever the game is over.

Defined in ​

profectus/src/data/projEntry.tsx:88

Functions ​

fixOldSave ​

â–¸ fixOldSave(oldVersion, player): void

Given a player save data object being loaded with a different version, update the save data object to match the structure of the current version.

Parameters ​
NameTypeDescription
oldVersionundefined | stringThe version of the save being loaded in
playerPartial<Player>The save data being loaded in
Returns ​

void

Defined in ​

profectus/src/data/projEntry.tsx:98


getInitialLayers ​

â–¸ getInitialLayers(player): GenericLayer[]

Given a player save data object being loaded, return a list of layers that should currently be enabled. If your project does not use dynamic layers, this should just return all layers.

Parameters ​
NameType
playerPartial<Player>
Returns ​

GenericLayer[]

Defined in ​

profectus/src/data/projEntry.tsx:80

- +
Skip to content
On this page

Module: data/projEntry ​

Variables ​

hasWon ​

• Const hasWon: ComputedRef<boolean>

A computed ref whose value is true whenever the game is over.

Defined in ​

profectus/src/data/projEntry.tsx:88

Functions ​

fixOldSave ​

â–¸ fixOldSave(oldVersion, player): void

Given a player save data object being loaded with a different version, update the save data object to match the structure of the current version.

Parameters ​

NameTypeDescription
oldVersionundefined | stringThe version of the save being loaded in
playerPartial<Player>The save data being loaded in

Returns ​

void

Defined in ​

profectus/src/data/projEntry.tsx:98


getInitialLayers ​

â–¸ getInitialLayers(player): GenericLayer[]

Given a player save data object being loaded, return a list of layers that should currently be enabled. If your project does not use dynamic layers, this should just return all layers.

Parameters ​

NameType
playerPartial<Player>

Returns ​

GenericLayer[]

Defined in ​

profectus/src/data/projEntry.tsx:80

+ \ No newline at end of file diff --git a/api/modules/data/themes.html b/api/modules/data/themes.html index 7923c361..1b4b7da3 100644 --- a/api/modules/data/themes.html +++ b/api/modules/data/themes.html @@ -5,12 +5,12 @@ Module: data/themes | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: data/themes ​

Enumerations ​

Themes ​

• Themes: Object

An enum of all available themes and their internal IDs. The keys are their display names.

NameType
Aqua"aqua"
Classic"classic"
Nordic"nordic"
Paper"paper"

Defined in ​

profectus/src/data/themes.ts:73

Interfaces ​

Theme ​

• Theme: Object

An object representing a theme the player can use to change the look of the game.

NameTypeDescription
floatingTabsbooleanWhether or not tabs should "float" in the center of their container.
mergeAdjacentbooleanWhether or not adjacent features should merge together - removing the margin between them, and only applying the border radius to the first and last elements in the row or column.
showPinbooleanWhether or not to show a pin icon on pinned tooltips.
variablesThemeVarsThe values of the theme's CSS variables.

Defined in ​

profectus/src/data/themes.ts:24


ThemeVars ​

• ThemeVars: Object

A object of all CSS variables determined by the current theme.

NameType
--accent1string
--accent2string
--accent3string
--backgroundstring
--border-radiusstring
--boughtstring
--dangerstring
--feature-foregroundstring
--feature-marginstring
--foregroundstring
--highlightedstring
--linkstring
--lockedstring
--modal-borderstring
--outlinestring
--pointsstring
--raised-backgroundstring
--tooltip-backgroundstring

Defined in ​

profectus/src/data/themes.ts:2

Variables ​

default ​

• default: Record<Themes, Theme>

A dictionary of all available themes.

Defined in ​

profectus/src/data/themes.ts:81

- +
Skip to content
On this page

Module: data/themes ​

Enumerations ​

Themes ​

• Themes: Object

An enum of all available themes and their internal IDs. The keys are their display names.

Defined in ​

profectus/src/data/themes.ts:73

Interfaces ​

Theme ​

• Theme: Object

An object representing a theme the player can use to change the look of the game.

Defined in ​

profectus/src/data/themes.ts:24


ThemeVars ​

• ThemeVars: Object

A object of all CSS variables determined by the current theme.

Defined in ​

profectus/src/data/themes.ts:2

Variables ​

default ​

• default: Record<Themes, Theme>

A dictionary of all available themes.

Defined in ​

profectus/src/data/themes.ts:81

+ \ No newline at end of file diff --git a/api/modules/features/achievement.html b/api/modules/features/achievement.html index 08572738..224b649c 100644 --- a/api/modules/features/achievement.html +++ b/api/modules/features/achievement.html @@ -5,12 +5,12 @@ Module: features/achievements/achievement | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/achievements/achievement ​

Enumerations ​

AchievementDisplay ​

• AchievementDisplay: Object

Modes for only displaying some achievements.

NameType
All"all"
Configurable"configurable"
Incomplete"incomplete"
None"none"

Defined in ​

profectus/src/features/achievements/achievement.tsx:50

Interfaces ​

AchievementOptions ​

• AchievementOptions: Object

An object that configures an Achievement.

NameTypeDescription
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
display?Computable<CoercableComponent | { effectDisplay?: CoercableComponent ; optionsDisplay?: CoercableComponent ; requirement?: CoercableComponent }>The display to use for this achievement.
image?Computable<string>An image to display as the background for this achievement.
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
onComplete?VoidFunctionA function that is called when the achievement is completed.
requirements?RequirementsThe requirement(s) to earn this achievement. Can be left null if using complete.
showPopups?Computable<boolean>Whether or not to display a notification popup when this achievement is earned.
small?Computable<boolean>Toggles a smaller design for the feature.
style?Computable<StyleValue>CSS to apply to this feature.
visibility?Computable<boolean | Visibility>Whether this achievement should be visible.

Defined in ​

profectus/src/features/achievements/achievement.tsx:61


BaseAchievement ​

• BaseAchievement: Object

The properties that are added onto a processed AchievementOptions to create an Achievement.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
completeVoidFunctionA function to complete this achievement.
earnedPersistent<boolean>Whether or not this achievement has been earned.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
typetypeof AchievementTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/achievements/achievement.tsx:97

Type Aliases ​

Achievement ​

Ƭ Achievement<T>: Replace<T & BaseAchievement, { classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; image: GetComputableType<T["image"]> ; mark: GetComputableType<T["mark"]> ; showPopups: GetComputableTypeWithDefault<T["showPopups"], true> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature with requirements that is passively earned upon meeting certain requirements.

Type parameters ​

NameType
Textends AchievementOptions

Defined in ​

profectus/src/features/achievements/achievement.tsx:113


GenericAchievement ​

Ƭ GenericAchievement: Replace<Achievement<AchievementOptions>, { showPopups: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Achievement object.

Defined in ​

profectus/src/features/achievements/achievement.tsx:127

Variables ​

AchievementType ​

• Const AchievementType: typeof AchievementType

A symbol used to identify Achievement features.

Defined in ​

profectus/src/features/achievements/achievement.tsx:47

Functions ​

createAchievement ​

â–¸ createAchievement<T>(optionsFunc?): Achievement<T>

Lazily creates an achievement with the given options.

Type parameters ​
NameType
Textends AchievementOptions
Parameters ​
NameTypeDescription
optionsFunc?OptionsFunc<T, BaseAchievement, GenericAchievement>Achievement options.
Returns ​

Achievement<T>

Defined in ​

profectus/src/features/achievements/achievement.tsx:139

Components ​

Achievement Component ​

Props ​

NameType
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
displayprocessedPropType<UnwrapRef<GenericAchievement["display"]>>(Object, String, Function)
earned*processedPropType<boolean>(Boolean)
requirementsprocessedPropType<Requirements>(Object, Array)
imageprocessedPropType<string>(String)
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
markprocessedPropType<boolean | string>(Boolean, String)
smallprocessedPropType<boolean>(Boolean)
id*string
- +
Skip to content
On this page

Module: features/achievements/achievement ​

Enumerations ​

AchievementDisplay ​

• AchievementDisplay: Object

Modes for only displaying some achievements.

Defined in ​

profectus/src/features/achievements/achievement.tsx:50

Interfaces ​

AchievementOptions ​

• AchievementOptions: Object

An object that configures an Achievement.

Defined in ​

profectus/src/features/achievements/achievement.tsx:61


BaseAchievement ​

• BaseAchievement: Object

The properties that are added onto a processed AchievementOptions to create an Achievement.

Defined in ​

profectus/src/features/achievements/achievement.tsx:97

Type Aliases ​

Achievement ​

Ƭ Achievement<T>: Replace<T & BaseAchievement, { classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; image: GetComputableType<T["image"]> ; mark: GetComputableType<T["mark"]> ; showPopups: GetComputableTypeWithDefault<T["showPopups"], true> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature with requirements that is passively earned upon meeting certain requirements.

Type parameters ​

NameType
Textends AchievementOptions

Defined in ​

profectus/src/features/achievements/achievement.tsx:113


GenericAchievement ​

Ƭ GenericAchievement: Replace<Achievement<AchievementOptions>, { showPopups: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Achievement object.

Defined in ​

profectus/src/features/achievements/achievement.tsx:127

Variables ​

AchievementType ​

• Const AchievementType: typeof AchievementType

A symbol used to identify Achievement features.

Defined in ​

profectus/src/features/achievements/achievement.tsx:47

Functions ​

createAchievement ​

â–¸ createAchievement<T>(optionsFunc?): Achievement<T>

Lazily creates an achievement with the given options.

Type parameters ​

NameType
Textends AchievementOptions

Parameters ​

NameTypeDescription
optionsFunc?OptionsFunc<T, BaseAchievement, GenericAchievement>Achievement options.

Returns ​

Achievement<T>

Defined in ​

profectus/src/features/achievements/achievement.tsx:139

Components ​

Achievement Component ​

Props ​

NameType
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
displayprocessedPropType<UnwrapRef<GenericAchievement["display"]>>(Object, String, Function)
earned*processedPropType<boolean>(Boolean)
requirementsprocessedPropType<Requirements>(Object, Array)
imageprocessedPropType<string>(String)
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
markprocessedPropType<boolean | string>(Boolean, String)
smallprocessedPropType<boolean>(Boolean)
id*string
+ \ No newline at end of file diff --git a/api/modules/features/action.html b/api/modules/features/action.html index b8545f84..6cec265a 100644 --- a/api/modules/features/action.html +++ b/api/modules/features/action.html @@ -5,12 +5,12 @@ Module: features/action | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/action ​

Interfaces ​

ActionOptions ​

• ActionOptions: Object

An object that configures a Action.

NameTypeDescription
autoStart?Computable<boolean>Whether or not the action should perform automatically when the cooldown is finished.
barOptions?Partial<BarOptions>A pass-through to the Bar used to display the cooldown progress for the action.
canClick?Computable<boolean>Whether or not the clickable may be clicked.
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
display?Computable<CoercableComponent | { description: CoercableComponent ; title?: CoercableComponent }>The display to use for this clickable.
durationComputable<DecimalSource>The cooldown during which the action cannot be performed again, in seconds.
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
onClick(amount: DecimalSource) => voidA function that is called when the action is clicked.
small?booleanToggles a smaller design for the feature.
style?Computable<StyleValue>CSS to apply to this feature.
visibility?Computable<boolean | Visibility>Whether this clickable should be visible.

Defined in ​

profectus/src/features/action.tsx:41


BaseAction ​

• BaseAction: Object

The properties that are added onto a processed ActionOptions to create an Action.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
isHoldingRef<boolean>Whether or not the player is holding down the action. Actions will be considered clicked as soon as the cooldown completes when being held down.
progressRef<DecimalSource>The current amount of progress through the cooldown.
progressBarGenericBarThe bar used to display the current cooldown progress.
typetypeof ActionTypeA symbol that helps identify features of the same type.
update(diff: number) => voidUpdate the cooldown the specified number of seconds

Defined in ​

profectus/src/features/action.tsx:55

Type Aliases ​

Action ​

Ƭ Action<T>: Replace<T & BaseAction, { autoStart: GetComputableTypeWithDefault<T["autoStart"], false> ; canClick: GetComputableTypeWithDefault<T["canClick"], true> ; classes: GetComputableType<T["classes"]> ; display: JSXFunction ; duration: GetComputableType<T["duration"]> ; mark: GetComputableType<T["mark"]> ; onClick: VoidFunction ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represens a feature that can be clicked upon, and then have a cooldown before they can be clicked again.

Type parameters ​

NameType
Textends ActionOptions

Defined in ​

profectus/src/features/action.tsx:75


GenericAction ​

Ƭ GenericAction: Replace<Action<ActionOptions>, { autoStart: ProcessedComputable<boolean> ; canClick: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Action object.

Defined in ​

profectus/src/features/action.tsx:91

Variables ​

ActionType ​

• Const ActionType: typeof ActionType

A symbol used to identify Action features.

Defined in ​

profectus/src/features/action.tsx:36

Functions ​

createAction ​

â–¸ createAction<T>(optionsFunc?): Action<T>

Lazily creates an action with the given options.

Type parameters ​
NameType
Textends ActionOptions<T>
Parameters ​
NameTypeDescription
optionsFunc?OptionsFunc<T, BaseAction, GenericAction>Action options.
Returns ​

Action<T>

Defined in ​

profectus/src/features/action.tsx:104

- +
Skip to content
On this page

Module: features/action ​

Interfaces ​

ActionOptions ​

• ActionOptions: Object

An object that configures an Action.

Defined in ​

profectus/src/features/action.tsx:41


BaseAction ​

• BaseAction: Object

The properties that are added onto a processed ActionOptions to create an Action.

Defined in ​

profectus/src/features/action.tsx:55

Type Aliases ​

Action ​

Ƭ Action<T>: Replace<T & BaseAction, { autoStart: GetComputableTypeWithDefault<T["autoStart"], false> ; canClick: GetComputableTypeWithDefault<T["canClick"], true> ; classes: GetComputableType<T["classes"]> ; display: JSXFunction ; duration: GetComputableType<T["duration"]> ; mark: GetComputableType<T["mark"]> ; onClick: VoidFunction ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that can be clicked upon, and then has a cooldown before it can be clicked again.

Type parameters ​

NameType
Textends ActionOptions

Defined in ​

profectus/src/features/action.tsx:75


GenericAction ​

Ƭ GenericAction: Replace<Action<ActionOptions>, { autoStart: ProcessedComputable<boolean> ; canClick: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Action object.

Defined in ​

profectus/src/features/action.tsx:91

Variables ​

ActionType ​

• Const ActionType: typeof ActionType

A symbol used to identify Action features.

Defined in ​

profectus/src/features/action.tsx:36

Functions ​

createAction ​

â–¸ createAction<T>(optionsFunc?): Action<T>

Lazily creates an action with the given options.

Type parameters ​

NameType
Textends ActionOptions<T>

Parameters ​

NameTypeDescription
optionsFunc?OptionsFunc<T, BaseAction, GenericAction>Action options.

Returns ​

Action<T>

Defined in ​

profectus/src/features/action.tsx:104

+ \ No newline at end of file diff --git a/api/modules/features/bar.html b/api/modules/features/bar.html index 5023b555..6040121e 100644 --- a/api/modules/features/bar.html +++ b/api/modules/features/bar.html @@ -5,12 +5,12 @@ Module: features/bars/bar | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/bars/bar ​

Interfaces ​

BarOptions ​

• BarOptions: Object

An object that configures a Bar.

NameTypeDescription
baseStyle?Computable<StyleValue>CSS to apply to the bar's base.
borderStyle?Computable<StyleValue>CSS to apply to the bar's border.
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
directionComputable<Direction>The direction in which the bar progresses.
display?Computable<CoercableComponent>The display to use for this bar.
fillStyle?Computable<StyleValue>CSS to apply to the bar's fill.
heightComputable<number>The height of the bar.
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
progressComputable<DecimalSource>The progress value of the bar, from 0 to 1.
style?Computable<StyleValue>CSS to apply to this feature.
textStyle?Computable<StyleValue>CSS to apply to the bar's text.
visibility?Computable<boolean | Visibility>Whether this bar should be visible.
widthComputable<number>The width of the bar.

Defined in ​

profectus/src/features/bars/bar.ts:28


BaseBar ​

• BaseBar: Object

The properties that are added onto a processed BarOptions to create a Bar.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
typetypeof BarTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/bars/bar.ts:60

Type Aliases ​

Bar ​

Ƭ Bar<T>: Replace<T & BaseBar, { baseStyle: GetComputableType<T["baseStyle"]> ; borderStyle: GetComputableType<T["borderStyle"]> ; classes: GetComputableType<T["classes"]> ; direction: GetComputableType<T["direction"]> ; display: GetComputableType<T["display"]> ; fillStyle: GetComputableType<T["fillStyle"]> ; height: GetComputableType<T["height"]> ; mark: GetComputableType<T["mark"]> ; progress: GetComputableType<T["progress"]> ; style: GetComputableType<T["style"]> ; textStyle: GetComputableType<T["textStyle"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> ; width: GetComputableType<T["width"]> }>

An object that represents a feature that displays some sort of progress or completion or resource with a cap.

Type parameters ​

NameType
Textends BarOptions

Defined in ​

profectus/src/features/bars/bar.ts:72


GenericBar ​

Ƭ GenericBar: Replace<Bar<BarOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Bar object.

Defined in ​

profectus/src/features/bars/bar.ts:92

Variables ​

BarType ​

• Const BarType: typeof BarType

A symbol used to identify Bar features.

Defined in ​

profectus/src/features/bars/bar.ts:23

Functions ​

createBar ​

â–¸ createBar<T>(optionsFunc): Bar<T>

Lazily creates a bar with the given options.

Type parameters ​
NameType
Textends BarOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseBar, GenericBar>Bar options.
Returns ​

Bar<T>

Defined in ​

profectus/src/features/bars/bar.ts:103

Components ​

Bar Component ​

Props ​

NameType
progress*processedPropType<DecimalSource>(String, Object, Number)
width*processedPropType<number>(Number)
height*processedPropType<number>(Number)
direction*processedPropType<Direction>(String)
displayprocessedPropType<CoercableComponent>(Object, String, Function)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(Object, String, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
borderStyleprocessedPropType<StyleValue>(Object, String, Array)
textStyleprocessedPropType<StyleValue>(Object, String, Array)
baseStyleprocessedPropType<StyleValue>(Object, String, Array)
fillStyleprocessedPropType<StyleValue>(Object, String, Array)
markprocessedPropType<boolean | string>(Boolean, String)
id*string
- +
Skip to content
On this page

Module: features/bars/bar ​

Interfaces ​

BarOptions ​

• BarOptions: Object

An object that configures a Bar.

Defined in ​

profectus/src/features/bars/bar.ts:28


BaseBar ​

• BaseBar: Object

The properties that are added onto a processed BarOptions to create a Bar.

Defined in ​

profectus/src/features/bars/bar.ts:60

Type Aliases ​

Bar ​

Ƭ Bar<T>: Replace<T & BaseBar, { baseStyle: GetComputableType<T["baseStyle"]> ; borderStyle: GetComputableType<T["borderStyle"]> ; classes: GetComputableType<T["classes"]> ; direction: GetComputableType<T["direction"]> ; display: GetComputableType<T["display"]> ; fillStyle: GetComputableType<T["fillStyle"]> ; height: GetComputableType<T["height"]> ; mark: GetComputableType<T["mark"]> ; progress: GetComputableType<T["progress"]> ; style: GetComputableType<T["style"]> ; textStyle: GetComputableType<T["textStyle"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> ; width: GetComputableType<T["width"]> }>

An object that represents a feature that displays some sort of progress or completion or resource with a cap.

Type parameters ​

NameType
Textends BarOptions

Defined in ​

profectus/src/features/bars/bar.ts:72


GenericBar ​

Ƭ GenericBar: Replace<Bar<BarOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Bar object.

Defined in ​

profectus/src/features/bars/bar.ts:92

Variables ​

BarType ​

• Const BarType: typeof BarType

A symbol used to identify Bar features.

Defined in ​

profectus/src/features/bars/bar.ts:23

Functions ​

createBar ​

â–¸ createBar<T>(optionsFunc): Bar<T>

Lazily creates a bar with the given options.

Type parameters ​

NameType
Textends BarOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseBar, GenericBar>Bar options.

Returns ​

Bar<T>

Defined in ​

profectus/src/features/bars/bar.ts:103

Components ​

Bar Component ​

Props ​

NameType
progress*processedPropType<DecimalSource>(String, Object, Number)
width*processedPropType<number>(Number)
height*processedPropType<number>(Number)
direction*processedPropType<Direction>(String)
displayprocessedPropType<CoercableComponent>(Object, String, Function)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(Object, String, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
borderStyleprocessedPropType<StyleValue>(Object, String, Array)
textStyleprocessedPropType<StyleValue>(Object, String, Array)
baseStyleprocessedPropType<StyleValue>(Object, String, Array)
fillStyleprocessedPropType<StyleValue>(Object, String, Array)
markprocessedPropType<boolean | string>(Boolean, String)
id*string
+ \ No newline at end of file diff --git a/api/modules/features/board.html b/api/modules/features/board.html index 98126d65..c55aeca9 100644 --- a/api/modules/features/board.html +++ b/api/modules/features/board.html @@ -5,12 +5,12 @@ Module: features/boards/board | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/boards/board ​

Enumerations ​

ProgressDisplay ​

• ProgressDisplay: Object

Ways to display progress of an action with a duration.

NameType
Fill"Fill"
Outline"Outline"

Defined in ​

profectus/src/features/boards/board.ts:39


Shape ​

• Shape: Object

Node shapes.

NameType
Circle"Circle"
Diamond"Triangle"

Defined in ​

profectus/src/features/boards/board.ts:45

Interfaces ​

BaseBoard ​

• BaseBoard: Object

The properties that are added onto a processed BoardOptions to create a Board.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
mousePositionRef<null | { x: number ; y: number }>The current mouse position, if over the board.
nodesRef<BoardNode[]>All the nodes currently on the board.
selectedActionRef<null | GenericBoardNodeAction>The currently selected action, if any.
selectedNodeRef<null | BoardNode>The currently selected node, if any.
typetypeof BoardTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/boards/board.ts:240


BaseBoardNodeAction ​

• BaseBoardNodeAction: Object

The properties that are added onto a processed BoardNodeActionOptions to create an BoardNodeAction.

NameType
links?Ref<BoardNodeLink[]>

Defined in ​

profectus/src/features/boards/board.ts:189


BaseNodeType ​

• BaseNodeType: Object

The properties that are added onto a processed NodeTypeOptions to create a NodeType.

NameTypeDescription
nodesRef<BoardNode[]>The nodes currently on the board of this type.

Defined in ​

profectus/src/features/boards/board.ts:126


BoardNode ​

• BoardNode: Object

An object representing a node on the board.

NameType
idnumber
pinned?boolean
position{ x: number ; y: number }
position.xnumber
position.ynumber
state?State
typestring

Defined in ​

profectus/src/features/boards/board.ts:51


BoardNodeActionOptions ​

• BoardNodeActionOptions: Object

An object that configures a BoardNodeAction.

NameTypeDescription
fillColor?NodeComputable<string>The fill color of the action.
iconNodeComputable<string>The icon to display for the action.
idstringA unique identifier for the action.
links?NodeComputable<BoardNodeLink[]>An array of board node links associated with the action. They appear when the action is focused.
onClick(node: BoardNode) => undefined | booleanA function that is called when the action is clicked.
tooltipNodeComputable<string>The tooltip text to display for the action.
visibility?NodeComputable<boolean | Visibility>Whether this action should be visible.

Defined in ​

profectus/src/features/boards/board.ts:169


• BoardNodeLink: Object

An object representing a link between two nodes on the board.

NameTypeDescription
accent-height?Numberish-
accumulate?"none" | "sum"-
additive?"sum" | "replace"-
alignment-baseline?"alphabetic" | "hanging" | "ideographic" | "mathematical" | "auto" | "baseline" | "before-edge" | "text-before-edge" | "middle" | "central" | "after-edge" | "text-after-edge" | "inherit"-
allowReorder?"no" | "yes"-
alphabetic?Numberish-
amplitude?Numberish-
arabic-form?"initial" | "medial" | "terminal" | "isolated"-
aria-activedescendant?stringIdentifies the currently active element when DOM focus is on a composite widget, textbox, group, or application.
aria-atomic?BooleanishIndicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute.
aria-autocomplete?"none" | "inline" | "list" | "both"Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be presented if they are made.
aria-busy?BooleanishIndicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user.
aria-checked?Booleanish | "mixed"Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. See - aria-pressed - aria-selected.
aria-colcount?NumberishDefines the total number of columns in a table, grid, or treegrid. See aria-colindex.
aria-colindex?NumberishDefines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid. See - aria-colcount - aria-colspan.
aria-colspan?NumberishDefines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid. See - aria-colindex - aria-rowspan.
aria-controls?stringIdentifies the element (or elements) whose contents or presence are controlled by the current element. See aria-owns.
aria-current?"time" | Booleanish | "page" | "step" | "location" | "date"Indicates the element that represents the current item within a container or set of related elements.
aria-describedby?stringIdentifies the element (or elements) that describes the object. See aria-labelledby
aria-details?stringIdentifies the element that provides a detailed, extended description for the object. See aria-describedby.
aria-disabled?BooleanishIndicates that the element is perceivable but disabled, so it is not editable or otherwise operable. See - aria-hidden - aria-readonly.
aria-dropeffect?"none" | "copy" | "execute" | "link" | "move" | "popup"Indicates what functions can be performed when a dragged object is released on the drop target. Deprecated in ARIA 1.1
aria-errormessage?stringIdentifies the element that provides an error message for the object. See - aria-invalid - aria-describedby.
aria-expanded?BooleanishIndicates whether the element, or another grouping element it controls, is currently expanded or collapsed.
aria-flowto?stringIdentifies the next element (or elements) in an alternate reading order of content which, at the user's discretion, allows assistive technology to override the general default of reading in document source order.
aria-grabbed?BooleanishIndicates an element's "grabbed" state in a drag-and-drop operation. Deprecated in ARIA 1.1
aria-haspopup?"tree" | Booleanish | "menu" | "listbox" | "grid" | "dialog"Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element.
aria-hidden?BooleanishIndicates whether the element is exposed to an accessibility API. See aria-disabled.
aria-invalid?Booleanish | "grammar" | "spelling"Indicates the entered value does not conform to the format expected by the application. See aria-errormessage.
aria-keyshortcuts?stringIndicates keyboard shortcuts that an author has implemented to activate or give focus to an element.
aria-label?stringDefines a string value that labels the current element. See aria-labelledby.
aria-labelledby?stringIdentifies the element (or elements) that labels the current element. See aria-describedby.
aria-level?NumberishDefines the hierarchical level of an element within a structure.
aria-live?"off" | "assertive" | "polite"Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region.
aria-modal?BooleanishIndicates whether an element is modal when displayed.
aria-multiline?BooleanishIndicates whether a text box accepts multiple lines of input or only a single line.
aria-multiselectable?BooleanishIndicates that the user may select more than one item from the current selectable descendants.
aria-orientation?"horizontal" | "vertical"Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous.
aria-owns?stringIdentifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship between DOM elements where the DOM hierarchy cannot be used to represent the relationship. See aria-controls.
aria-placeholder?stringDefines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. A hint could be a sample value or a brief description of the expected format.
aria-posinset?NumberishDefines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. See aria-setsize.
aria-pressed?Booleanish | "mixed"Indicates the current "pressed" state of toggle buttons. See - aria-checked - aria-selected.
aria-readonly?BooleanishIndicates that the element is not editable, but is otherwise operable. See aria-disabled.
aria-relevant?"additions" | "additions text" | "all" | "removals" | "text"Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. See aria-atomic.
aria-required?BooleanishIndicates that user input is required on the element before a form may be submitted.
aria-roledescription?stringDefines a human-readable, author-localized description for the role of an element.
aria-rowcount?NumberishDefines the total number of rows in a table, grid, or treegrid. See aria-rowindex.
aria-rowindex?NumberishDefines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid. See - aria-rowcount - aria-rowspan.
aria-rowspan?NumberishDefines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid. See - aria-rowindex - aria-colspan.
aria-selected?BooleanishIndicates the current "selected" state of various widgets. See - aria-checked - aria-pressed.
aria-setsize?NumberishDefines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. See aria-posinset.
aria-sort?"none" | "ascending" | "descending" | "other"Indicates if items in a table or grid are sorted in ascending or descending order.
aria-valuemax?NumberishDefines the maximum allowed value for a range widget.
aria-valuemin?NumberishDefines the minimum allowed value for a range widget.
aria-valuenow?NumberishDefines the current value for a range widget. See aria-valuetext.
aria-valuetext?stringDefines the human readable text alternative of aria-valuenow for a range widget.
ascent?Numberish-
attributeName?string-
attributeType?string-
autoReverse?Numberish-
azimuth?Numberish-
baseFrequency?Numberish-
baseProfile?Numberish-
baseline-shift?Numberish-
bbox?Numberish-
begin?Numberish-
bias?Numberish-
by?Numberish-
calcMode?Numberish-
cap-height?Numberish-
class?anySVG Styling Attributes See https://www.w3.org/TR/SVG/styling.html#ElementSpecificStyling
clip?Numberish-
clip-path?string-
clip-rule?Numberish-
clipPathUnits?Numberish-
color?string-
color-interpolation?Numberish-
color-interpolation-filters?"auto" | "inherit" | "sRGB" | "linearRGB"-
color-profile?Numberish-
color-rendering?Numberish-
contentScriptType?Numberish-
contentStyleType?Numberish-
cursor?Numberish-
cx?Numberish-
cy?Numberish-
d?string-
decelerate?Numberish-
descent?Numberish-
diffuseConstant?Numberish-
direction?Numberish-
display?Numberish-
divisor?Numberish-
dominant-baseline?Numberish-
dur?Numberish-
dx?Numberish-
dy?Numberish-
edgeMode?Numberish-
elevation?Numberish-
enable-background?Numberish-
end?Numberish-
endNodeBoardNode-
exponent?Numberish-
externalResourcesRequired?Numberish-
fill?string-
fill-opacity?Numberish-
fill-rule?"inherit" | "nonzero" | "evenodd"-
filter?string-
filterRes?Numberish-
filterUnits?Numberish-
flood-color?Numberish-
flood-opacity?Numberish-
focusable?Numberish-
font-family?string-
font-size?Numberish-
font-size-adjust?Numberish-
font-stretch?Numberish-
font-style?Numberish-
font-variant?Numberish-
font-weight?Numberish-
format?Numberish-
from?Numberish-
fx?Numberish-
fy?Numberish-
g1?Numberish-
g2?Numberish-
glyph-name?Numberish-
glyph-orientation-horizontal?Numberish-
glyph-orientation-vertical?Numberish-
glyphRef?Numberish-
gradientTransform?string-
gradientUnits?string-
hanging?Numberish-
height?Numberish-
horiz-adv-x?Numberish-
horiz-origin-x?Numberish-
href?string-
id?string-
ideographic?Numberish-
image-rendering?Numberish-
in?string-
in2?Numberish-
innerHTML?string-
intercept?Numberish-
k?Numberish-
k1?Numberish-
k2?Numberish-
k3?Numberish-
k4?Numberish-
kernelMatrix?Numberish-
kernelUnitLength?Numberish-
kerning?Numberish-
keyPoints?Numberish-
keySplines?Numberish-
keyTimes?Numberish-
lang?string-
lengthAdjust?Numberish-
letter-spacing?Numberish-
lighting-color?Numberish-
limitingConeAngle?Numberish-
local?Numberish-
marker-end?string-
marker-mid?string-
marker-start?string-
markerHeight?Numberish-
markerUnits?Numberish-
markerWidth?Numberish-
mask?string-
maskContentUnits?Numberish-
maskUnits?Numberish-
mathematical?Numberish-
max?Numberish-
media?string-
method?string-
min?Numberish-
mode?Numberish-
name?string-
numOctaves?Numberish-
offset?Numberish-
offsetEnd?Position-
offsetStart?Position-
onAbort?(payload: Event) => void-
onAnimationend?(payload: AnimationEvent) => void-
onAnimationiteration?(payload: AnimationEvent) => void-
onAnimationstart?(payload: AnimationEvent) => void-
onAuxclick?(payload: MouseEvent) => void-
onBeforeinput?(payload: Event) => void-
onBlur?(payload: FocusEvent) => void-
onCanplay?(payload: Event) => void-
onCanplaythrough?(payload: Event) => void-
onChange?(payload: Event) => void-
onClick?(payload: MouseEvent) => void-
onCompositionend?(payload: CompositionEvent) => void-
onCompositionstart?(payload: CompositionEvent) => void-
onCompositionupdate?(payload: CompositionEvent) => void-
onContextmenu?(payload: MouseEvent) => void-
onCopy?(payload: ClipboardEvent) => void-
onCut?(payload: ClipboardEvent) => void-
onDblclick?(payload: MouseEvent) => void-
onDrag?(payload: DragEvent) => void-
onDragend?(payload: DragEvent) => void-
onDragenter?(payload: DragEvent) => void-
onDragexit?(payload: DragEvent) => void-
onDragleave?(payload: DragEvent) => void-
onDragover?(payload: DragEvent) => void-
onDragstart?(payload: DragEvent) => void-
onDrop?(payload: DragEvent) => void-
onDurationchange?(payload: Event) => void-
onEmptied?(payload: Event) => void-
onEncrypted?(payload: Event) => void-
onEnded?(payload: Event) => void-
onError?(payload: Event) => void-
onFocus?(payload: FocusEvent) => void-
onFocusin?(payload: FocusEvent) => void-
onFocusout?(payload: FocusEvent) => void-
onInput?(payload: Event) => void-
onInvalid?(payload: Event) => void-
onKeydown?(payload: KeyboardEvent) => void-
onKeypress?(payload: KeyboardEvent) => void-
onKeyup?(payload: KeyboardEvent) => void-
onLoad?(payload: Event) => void-
onLoadeddata?(payload: Event) => void-
onLoadedmetadata?(payload: Event) => void-
onLoadstart?(payload: Event) => void-
onMousedown?(payload: MouseEvent) => void-
onMouseenter?(payload: MouseEvent) => void-
onMouseleave?(payload: MouseEvent) => void-
onMousemove?(payload: MouseEvent) => void-
onMouseout?(payload: MouseEvent) => void-
onMouseover?(payload: MouseEvent) => void-
onMouseup?(payload: MouseEvent) => void-
onPaste?(payload: ClipboardEvent) => void-
onPause?(payload: Event) => void-
onPlay?(payload: Event) => void-
onPlaying?(payload: Event) => void-
onPointercancel?(payload: PointerEvent) => void-
onPointerdown?(payload: PointerEvent) => void-
onPointerenter?(payload: PointerEvent) => void-
onPointerleave?(payload: PointerEvent) => void-
onPointermove?(payload: PointerEvent) => void-
onPointerout?(payload: PointerEvent) => void-
onPointerover?(payload: PointerEvent) => void-
onPointerup?(payload: PointerEvent) => void-
onProgress?(payload: Event) => void-
onRatechange?(payload: Event) => void-
onReset?(payload: Event) => void-
onScroll?(payload: UIEvent) => void-
onSeeked?(payload: Event) => void-
onSeeking?(payload: Event) => void-
onSelect?(payload: Event) => void-
onStalled?(payload: Event) => void-
onSubmit?(payload: Event) => void-
onSuspend?(payload: Event) => void-
onTimeupdate?(payload: Event) => void-
onTouchcancel?(payload: TouchEvent) => void-
onTouchend?(payload: TouchEvent) => void-
onTouchmove?(payload: TouchEvent) => void-
onTouchstart?(payload: TouchEvent) => void-
onTransitionend?(payload: TransitionEvent) => void-
onTransitionstart?(payload: TransitionEvent) => void-
onVolumechange?(payload: Event) => void-
onWaiting?(payload: Event) => void-
onWheel?(payload: WheelEvent) => void-
opacity?Numberish-
operator?Numberish-
order?Numberish-
orient?Numberish-
orientation?Numberish-
origin?Numberish-
overflow?Numberish-
overline-position?Numberish-
overline-thickness?Numberish-
paint-order?Numberish-
panose-1?Numberish-
pathLength?Numberish-
patternContentUnits?string-
patternTransform?Numberish-
patternUnits?string-
pointer-events?Numberish-
points?string-
pointsAtX?Numberish-
pointsAtY?Numberish-
pointsAtZ?Numberish-
preserveAlpha?Numberish-
preserveAspectRatio?string-
primitiveUnits?Numberish-
pulsing?boolean-
r?Numberish-
radius?Numberish-
refX?Numberish-
refY?Numberish-
renderingIntent?Numberish-
repeatCount?Numberish-
repeatDur?Numberish-
requiredExtensions?Numberish-
requiredFeatures?Numberish-
restart?Numberish-
result?string-
role?string-
rotate?Numberish-
rx?Numberish-
ry?Numberish-
scale?Numberish-
seed?Numberish-
shape-rendering?Numberish-
slope?Numberish-
spacing?Numberish-
specularConstant?Numberish-
specularExponent?Numberish-
speed?Numberish-
spreadMethod?string-
startNodeBoardNode-
startOffset?Numberish-
stdDeviation?Numberish-
stemh?Numberish-
stemv?Numberish-
stitchTiles?Numberish-
stop-color?string-
stop-opacity?Numberish-
strikethrough-position?Numberish-
strikethrough-thickness?Numberish-
string?Numberish-
stroke?string-
stroke-dasharray?Numberish-
stroke-dashoffset?Numberish-
stroke-linecap?"inherit" | "butt" | "round" | "square"-
stroke-linejoin?"inherit" | "round" | "miter" | "bevel"-
stroke-miterlimit?Numberish-
stroke-opacity?Numberish-
stroke-width?Numberish-
style?string | CSSProperties-
surfaceScale?Numberish-
systemLanguage?Numberish-
tabindex?Numberish-
tableValues?Numberish-
target?string-
targetX?Numberish-
targetY?Numberish-
text-anchor?string-
text-decoration?Numberish-
text-rendering?Numberish-
textLength?Numberish-
to?Numberish-
transform?string-
type?string-
u1?Numberish-
u2?Numberish-
underline-position?Numberish-
underline-thickness?Numberish-
unicode?Numberish-
unicode-bidi?Numberish-
unicode-range?Numberish-
unitsPer-em?Numberish-
v-alphabetic?Numberish-
v-hanging?Numberish-
v-ideographic?Numberish-
v-mathematical?Numberish-
values?string-
vector-effect?Numberish-
version?string-
vert-adv-y?Numberish-
vert-origin-x?Numberish-
vert-origin-y?Numberish-
viewBox?string-
viewTarget?Numberish-
visibility?Numberish-
width?Numberish-
widths?Numberish-
word-spacing?Numberish-
writing-mode?Numberish-
x?Numberish-
x-height?Numberish-
x1?Numberish-
x2?Numberish-
xChannelSelector?string-
xlinkActuate?string-
xlinkArcrole?string-
xlinkHref?string-
xlinkRole?string-
xlinkShow?string-
xlinkTitle?string-
xlinkType?string-
xmlns?string-
y?Numberish-
y1?Numberish-
y2?Numberish-
yChannelSelector?string-
z?Numberish-
zoomAndPan?string-

Defined in ​

profectus/src/features/boards/board.ts:63


BoardOptions ​

• BoardOptions: Object

An object that configures a Board.

NameTypeDescription
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
height?Computable<string>The height of the board. Defaults to 100%
links?Computable<null | BoardNodeLink[]>An array of board node links to display.
startNodes() => Omit<BoardNode, "id">[]A function that returns an array of initial board nodes, without IDs.
state?Computable<BoardData>The persistent state of the board.
style?Computable<StyleValue>CSS to apply to this feature.
typesRecord<string, NodeTypeOptions>A dictionary of node types that can appear on the board.
visibility?Computable<boolean | Visibility>Whether this board should be visible.
width?Computable<string>The width of the board. Defaults to 100%

Defined in ​

profectus/src/features/boards/board.ts:216


NodeLabel ​

• NodeLabel: Object

An object representing a label for a node.

NameType
color?string
pulsing?boolean
textstring

Defined in ​

profectus/src/features/boards/board.ts:70


NodeTypeOptions ​

• NodeTypeOptions: Object

An object that configures a NodeType.

NameTypeDescription
actionDistance?NodeComputable<number>The distance between the center of the node and its actions.
actions?BoardNodeActionOptions[]The list of action options for the node.
canAccept?boolean | Ref<boolean> | (node: BoardNode, otherNode: BoardNode) => booleanWhether the node can accept another node being dropped upon it.
draggable?NodeComputable<boolean>Whether the node is draggable or not.
fillColor?NodeComputable<string>The fill color of the node.
label?NodeComputable<null | NodeLabel>An optional label for the node.
onClick?(node: BoardNode) => voidA function that is called when the node is clicked.
onDrop?(node: BoardNode, otherNode: BoardNode) => voidA function that is called when a node is dropped onto this node.
outlineColor?NodeComputable<string>The outline color of the node.
progress?NodeComputable<number>The progress value of the node.
progressColor?NodeComputable<string>The color of the progress indicator.
progressDisplay?NodeComputable<ProgressDisplay>How the progress should be displayed on the node.
shapeNodeComputable<Shape>The shape of the node.
sizeNodeComputable<number>The size of the node - diameter for circles, width and height for squares.
titleNodeComputable<string>The title to display for the node.
titleColor?NodeComputable<string>The color of the title text.
update?(node: BoardNode, diff: number) => voidA function that is called for each node of this type every tick.

Defined in ​

profectus/src/features/boards/board.ts:86

Type Aliases ​

Board ​

Ƭ Board<T>: Replace<T & BaseBoard, { classes: GetComputableType<T["classes"]> ; height: GetComputableType<T["height"]> ; links: GetComputableTypeWithDefault<T["links"], Ref<BoardNodeLink[] | null>> ; state: GetComputableTypeWithDefault<T["state"], Persistent<BoardData>> ; style: GetComputableType<T["style"]> ; types: Record<string, GenericNodeType> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> ; width: GetComputableType<T["width"]> }>

An object that represents a feature that is a zoomable, pannable board with various nodes upon it.

Type parameters ​

NameType
Textends BoardOptions

Defined in ​

profectus/src/features/boards/board.ts:260


BoardData ​

Ƭ BoardData: Object

The persistent data for a board.

Type declaration ​

NameType
nodesBoardNode[]
selectedActionstring | null
selectedNodenumber | null

Defined in ​

profectus/src/features/boards/board.ts:77


BoardNodeAction ​

Ƭ BoardNodeAction<T>: Replace<T & BaseBoardNodeAction, { fillColor: GetComputableType<T["fillColor"]> ; icon: GetComputableType<T["icon"]> ; links: GetComputableType<T["links"]> ; tooltip: GetComputableType<T["tooltip"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents an action that can be taken upon a node.

Type parameters ​

NameType
Textends BoardNodeActionOptions

Defined in ​

profectus/src/features/boards/board.ts:194


GenericBoard ​

Ƭ GenericBoard: Replace<Board<BoardOptions>, { links: ProcessedComputable<BoardNodeLink[] | null> ; state: ProcessedComputable<BoardData> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Board object.

Defined in ​

profectus/src/features/boards/board.ts:275


GenericBoardNodeAction ​

Ƭ GenericBoardNodeAction: Replace<BoardNodeAction<BoardNodeActionOptions>, { visibility: NodeComputable<Visibility | boolean> }>

A type that matches any valid BoardNodeAction object.

Defined in ​

profectus/src/features/boards/board.ts:206


GenericNodeType ​

Ƭ GenericNodeType: Replace<NodeType<NodeTypeOptions>, { actionDistance: NodeComputable<number> ; canAccept: NodeComputable<boolean> ; draggable: NodeComputable<boolean> ; progressColor: NodeComputable<string> ; progressDisplay: NodeComputable<ProgressDisplay> ; shape: NodeComputable<Shape> ; size: NodeComputable<number> }>

A type that matches any valid NodeType object.

Defined in ​

profectus/src/features/boards/board.ts:153


NodeComputable ​

Ƭ NodeComputable<T>: Computable<T> | (node: BoardNode) => T

A type representing a computable value for a node on the board. Used for node types to return different values based on the given node and the state of the board.

Type parameters ​

Name
T

Defined in ​

profectus/src/features/boards/board.ts:36


NodeType ​

Ƭ NodeType<T>: Replace<T & BaseNodeType, { actionDistance: GetComputableTypeWithDefault<T["actionDistance"], number> ; actions?: GenericBoardNodeAction[] ; canAccept: GetComputableTypeWithDefault<T["canAccept"], false> ; draggable: GetComputableTypeWithDefault<T["draggable"], false> ; fillColor: GetComputableType<T["fillColor"]> ; label: GetComputableType<T["label"]> ; outlineColor: GetComputableType<T["outlineColor"]> ; progress: GetComputableType<T["progress"]> ; progressColor: GetComputableTypeWithDefault<T["progressColor"], "none"> ; progressDisplay: GetComputableTypeWithDefault<T["progressDisplay"], Fill> ; shape: GetComputableTypeWithDefault<T["shape"], Circle> ; size: GetComputableTypeWithDefault<T["size"], 50> ; title: GetComputableType<T["title"]> ; titleColor: GetComputableType<T["titleColor"]> }>

An object that represents a type of node that can appear on a board. It will handle getting properties and callbacks for every node of that type.

Type parameters ​

NameType
Textends NodeTypeOptions

Defined in ​

profectus/src/features/boards/board.ts:132

Variables ​

BoardType ​

• Const BoardType: typeof BoardType

A symbol used to identify Board features.

Defined in ​

profectus/src/features/boards/board.ts:31

Functions ​

createBoard ​

â–¸ createBoard<T>(optionsFunc): Board<T>

Lazily creates a board with the given options.

Type parameters ​
NameType
Textends BoardOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseBoard, GenericBoard>Board options.
Returns ​

Board<T>

Defined in ​

profectus/src/features/boards/board.ts:288


getNodeProperty ​

â–¸ getNodeProperty<T>(property, node): T

Gets the value of a property for a specified node.

Type parameters ​
Name
T
Parameters ​
NameTypeDescription
propertyNodeComputable<T>The property to find the value of
nodeBoardNodeThe node to get the property of
Returns ​

T

Defined in ​

profectus/src/features/boards/board.ts:456


getUniqueNodeID ​

â–¸ getUniqueNodeID(board): number

Utility to get an ID for a node that is guaranteed unique.

Parameters ​
NameTypeDescription
boardGenericBoardThe board feature to generate an ID for
Returns ​

number

Defined in ​

profectus/src/features/boards/board.ts:464

Components ​

Board Component ​

Props ​

NameType
nodes*Ref
types*Record
state*Ref
visibility*ProcessedComputable
widthProcessedComputable
heightProcessedComputable
styleProcessedComputable
classesProcessedComputable
links*Ref
selectedAction*Ref
selectedNode*Ref
mousePosition*Ref

Props ​

NameType
link*BoardNodeLink

BoardNode Component ​

Props ​

NameType
node*BoardNode
nodeType*GenericNodeType
draggingBoardNode
dragged{
x: number;
y: number;
}
hasDraggedboolean
receivingNodeboolean
selectedNodeBoardNode | null
selectedActionGenericBoardNodeAction | null

Events ​

Name
mouseDown
endDragging
- +
Skip to content
On this page

Module: features/boards/board ​

Enumerations ​

ProgressDisplay ​

• ProgressDisplay: Object

Ways to display progress of an action with a duration.

Defined in ​

profectus/src/features/boards/board.ts:39


Shape ​

• Shape: Object

Node shapes.

Defined in ​

profectus/src/features/boards/board.ts:45

Interfaces ​

BaseBoard ​

• BaseBoard: Object

The properties that are added onto a processed BoardOptions to create a Board.

Defined in ​

profectus/src/features/boards/board.ts:240


BaseBoardNodeAction ​

• BaseBoardNodeAction: Object

The properties that are added onto a processed BoardNodeActionOptions to create an BoardNodeAction.

Defined in ​

profectus/src/features/boards/board.ts:189


BaseNodeType ​

• BaseNodeType: Object

The properties that are added onto a processed NodeTypeOptions to create a NodeType.

Defined in ​

profectus/src/features/boards/board.ts:126


BoardNode ​

• BoardNode: Object

An object representing a node on the board.

Defined in ​

profectus/src/features/boards/board.ts:51


BoardNodeActionOptions ​

• BoardNodeActionOptions: Object

An object that configures a BoardNodeAction.

Defined in ​

profectus/src/features/boards/board.ts:169


• BoardNodeLink: Object

An object representing a link between two nodes on the board.

Defined in ​

profectus/src/features/boards/board.ts:63


BoardOptions ​

• BoardOptions: Object

An object that configures a Board.

Defined in ​

profectus/src/features/boards/board.ts:216


NodeLabel ​

• NodeLabel: Object

An object representing a label for a node.

Defined in ​

profectus/src/features/boards/board.ts:70


NodeTypeOptions ​

• NodeTypeOptions: Object

An object that configures a NodeType.

Defined in ​

profectus/src/features/boards/board.ts:86

Type Aliases ​

Board ​

Ƭ Board<T>: Replace<T & BaseBoard, { classes: GetComputableType<T["classes"]> ; height: GetComputableType<T["height"]> ; links: GetComputableTypeWithDefault<T["links"], Ref<BoardNodeLink[] | null>> ; state: GetComputableTypeWithDefault<T["state"], Persistent<BoardData>> ; style: GetComputableType<T["style"]> ; types: Record<string, GenericNodeType> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> ; width: GetComputableType<T["width"]> }>

An object that represents a feature that is a zoomable, pannable board with various nodes upon it.

Type parameters ​

NameType
Textends BoardOptions

Defined in ​

profectus/src/features/boards/board.ts:260


BoardData ​

Ƭ BoardData: Object

The persistent data for a board.

Type declaration ​

NameType
nodesBoardNode[]
selectedActionstring | null
selectedNodenumber | null

Defined in ​

profectus/src/features/boards/board.ts:77


BoardNodeAction ​

Ƭ BoardNodeAction<T>: Replace<T & BaseBoardNodeAction, { fillColor: GetComputableType<T["fillColor"]> ; icon: GetComputableType<T["icon"]> ; links: GetComputableType<T["links"]> ; tooltip: GetComputableType<T["tooltip"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents an action that can be taken upon a node.

Type parameters ​

NameType
Textends BoardNodeActionOptions

Defined in ​

profectus/src/features/boards/board.ts:194


GenericBoard ​

Ƭ GenericBoard: Replace<Board<BoardOptions>, { links: ProcessedComputable<BoardNodeLink[] | null> ; state: ProcessedComputable<BoardData> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Board object.

Defined in ​

profectus/src/features/boards/board.ts:275


GenericBoardNodeAction ​

Ƭ GenericBoardNodeAction: Replace<BoardNodeAction<BoardNodeActionOptions>, { visibility: NodeComputable<Visibility | boolean> }>

A type that matches any valid BoardNodeAction object.

Defined in ​

profectus/src/features/boards/board.ts:206


GenericNodeType ​

Ƭ GenericNodeType: Replace<NodeType<NodeTypeOptions>, { actionDistance: NodeComputable<number> ; canAccept: NodeComputable<boolean> ; draggable: NodeComputable<boolean> ; progressColor: NodeComputable<string> ; progressDisplay: NodeComputable<ProgressDisplay> ; shape: NodeComputable<Shape> ; size: NodeComputable<number> }>

A type that matches any valid NodeType object.

Defined in ​

profectus/src/features/boards/board.ts:153


NodeComputable ​

Ƭ NodeComputable<T>: Computable<T> | (node: BoardNode) => T

A type representing a computable value for a node on the board. Used for node types to return different values based on the given node and the state of the board.

Type parameters ​

Name
T

Defined in ​

profectus/src/features/boards/board.ts:36


NodeType ​

Ƭ NodeType<T>: Replace<T & BaseNodeType, { actionDistance: GetComputableTypeWithDefault<T["actionDistance"], number> ; actions?: GenericBoardNodeAction[] ; canAccept: GetComputableTypeWithDefault<T["canAccept"], false> ; draggable: GetComputableTypeWithDefault<T["draggable"], false> ; fillColor: GetComputableType<T["fillColor"]> ; label: GetComputableType<T["label"]> ; outlineColor: GetComputableType<T["outlineColor"]> ; progress: GetComputableType<T["progress"]> ; progressColor: GetComputableTypeWithDefault<T["progressColor"], "none"> ; progressDisplay: GetComputableTypeWithDefault<T["progressDisplay"], Fill> ; shape: GetComputableTypeWithDefault<T["shape"], Circle> ; size: GetComputableTypeWithDefault<T["size"], 50> ; title: GetComputableType<T["title"]> ; titleColor: GetComputableType<T["titleColor"]> }>

An object that represents a type of node that can appear on a board. It will handle getting properties and callbacks for every node of that type.

Type parameters ​

NameType
Textends NodeTypeOptions

Defined in ​

profectus/src/features/boards/board.ts:132

Variables ​

BoardType ​

• Const BoardType: typeof BoardType

A symbol used to identify Board features.

Defined in ​

profectus/src/features/boards/board.ts:31

Functions ​

createBoard ​

â–¸ createBoard<T>(optionsFunc): Board<T>

Lazily creates a board with the given options.

Type parameters ​

NameType
Textends BoardOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseBoard, GenericBoard>Board options.

Returns ​

Board<T>

Defined in ​

profectus/src/features/boards/board.ts:288


getNodeProperty ​

â–¸ getNodeProperty<T>(property, node): T

Gets the value of a property for a specified node.

Type parameters ​

Name
T

Parameters ​

NameTypeDescription
propertyNodeComputable<T>The property to find the value of
nodeBoardNodeThe node to get the property of

Returns ​

T

Defined in ​

profectus/src/features/boards/board.ts:456


getUniqueNodeID ​

â–¸ getUniqueNodeID(board): number

Utility to get an ID for a node that is guaranteed unique.

Parameters ​

NameTypeDescription
boardGenericBoardThe board feature to generate an ID for

Returns ​

number

Defined in ​

profectus/src/features/boards/board.ts:464

Components ​

Board Component ​

Props ​

NameType
nodes*Ref
types*Record
state*Ref
visibility*ProcessedComputable
widthProcessedComputable
heightProcessedComputable
styleProcessedComputable
classesProcessedComputable
links*Ref
selectedAction*Ref
selectedNode*Ref
mousePosition*Ref

Props ​

NameType
link*BoardNodeLink

BoardNode Component ​

Props ​

NameType
node*BoardNode
nodeType*GenericNodeType
draggingBoardNode
dragged{
x: number;
y: number;
}
hasDraggedboolean
receivingNodeboolean
selectedNodeBoardNode | null
selectedActionGenericBoardNodeAction | null

Events ​

Name
mouseDown
endDragging
+ \ No newline at end of file diff --git a/api/modules/features/challenge.html b/api/modules/features/challenge.html index 0c19ad3e..aa18143b 100644 --- a/api/modules/features/challenge.html +++ b/api/modules/features/challenge.html @@ -5,12 +5,12 @@ Module: features/challenges/challenge | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/challenges/challenge ​

Interfaces ​

BaseChallenge ​

• BaseChallenge: Object

The properties that are added onto a processed ChallengeOptions to create a Challenge.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
activePersistent<boolean>Whether or not this challenge is currently active.
canCompleteRef<DecimalSource>The current amount of times this challenge can be completed.
complete(remainInChallenge?: boolean) => voidA function to complete this challenge.
completedRef<boolean>Whether or not this challenge has been completed.
completionsPersistent<DecimalSource>The current number of times this challenge has been completed.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
maxedRef<boolean>Whether or not this challenge's completion count is at its limit.
toggleVoidFunctionA function to enter or leave the challenge.
typetypeof ChallengeTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/challenges/challenge.tsx:91


ChallengeOptions ​

• ChallengeOptions: Object

An object that configures a Challenge.

NameTypeDescription
canStart?Computable<boolean>Whether this challenge can be started.
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
completionLimit?Computable<DecimalSource>The maximum number of times the challenge can be completed.
display?Computable<CoercableComponent | { description: CoercableComponent ; effectDisplay?: CoercableComponent ; goal?: CoercableComponent ; reward?: CoercableComponent ; title?: CoercableComponent }>The display to use for this challenge.
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
maximize?Computable<boolean>Whether or not completing this challenge should grant multiple completions if requirements met. Requires requirements to be a requirement or array of requirements with Requirement.canMaximize true.
onComplete?VoidFunctionA function that is called when the challenge is completed.
onEnter?VoidFunctionA function that is called when the challenge is entered.
onExit?VoidFunctionA function that is called when the challenge is exited.
requirementsRequirementsThe requirement(s) to complete this challenge.
reset?GenericResetThe reset function for this challenge.
style?Computable<StyleValue>CSS to apply to this feature.
visibility?Computable<boolean | Visibility>Whether this challenge should be visible.

Defined in ​

profectus/src/features/challenges/challenge.tsx:45

Type Aliases ​

Challenge ​

Ƭ Challenge<T>: Replace<T & BaseChallenge, { canStart: GetComputableTypeWithDefault<T["canStart"], true> ; classes: GetComputableType<T["classes"]> ; completionLimit: GetComputableTypeWithDefault<T["completionLimit"], 1> ; display: GetComputableType<T["display"]> ; mark: GetComputableTypeWithDefault<T["mark"], Ref<boolean>> ; maximize: GetComputableType<T["maximize"]> ; requirements: GetComputableType<T["requirements"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that can be entered and exited, and have one or more completions with scaling requirements.

Type parameters ​

NameType
Textends ChallengeOptions

Defined in ​

profectus/src/features/challenges/challenge.tsx:120


GenericChallenge ​

Ƭ GenericChallenge: Replace<Challenge<ChallengeOptions>, { canStart: ProcessedComputable<boolean> ; completionLimit: ProcessedComputable<DecimalSource> ; mark: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Challenge object.

Defined in ​

profectus/src/features/challenges/challenge.tsx:136

Variables ​

ChallengeType ​

• Const ChallengeType: typeof ChallengeType

A symbol used to identify Challenge features.

Defined in ​

profectus/src/features/challenges/challenge.tsx:40

Functions ​

createActiveChallenge ​

â–¸ createActiveChallenge(challenges): Ref<GenericChallenge | null>

Utility for taking an array of challenges where only one may be active at a time, and giving a ref to the one currently active (or null if none are active)

Parameters ​
NameTypeDescription
challengesGenericChallenge[]The list of challenges that are mutually exclusive
Returns ​

Ref<GenericChallenge | null>

Defined in ​

profectus/src/features/challenges/challenge.tsx:324


createChallenge ​

â–¸ createChallenge<T>(optionsFunc): Challenge<T>

Lazily creates a challenge with the given options.

Type parameters ​
NameType
Textends ChallengeOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseChallenge, GenericChallenge>Challenge options.
Returns ​

Challenge<T>

Defined in ​

profectus/src/features/challenges/challenge.tsx:150


isAnyChallengeActive ​

â–¸ isAnyChallengeActive(challenges): Ref<boolean>

Utility for reporting if any challenge in a list is currently active. Intended for preventing entering a challenge if another is already active.

Parameters ​
NameTypeDescription
challengesGenericChallenge[] | Ref<null | GenericChallenge>List of challenges that are mutually exclusive
Returns ​

Ref<boolean>

Defined in ​

profectus/src/features/challenges/challenge.tsx:334


setupAutoComplete ​

â–¸ setupAutoComplete(challenge, autoActive?, exitOnComplete?): WatchStopHandle

This will automatically complete a challenge when it's requirements are met.

Parameters ​
NameTypeDefault valueDescription
challengeGenericChallengeundefinedThe challenge to auto-complete
autoActiveComputable<boolean>trueWhether or not auto-completing should currently occur
exitOnCompletebooleantrueWhether or not to exit the challenge after auto-completion
Returns ​

WatchStopHandle

Defined in ​

profectus/src/features/challenges/challenge.tsx:304

Components ​

Challenge Component ​

Props ​

NameType
active*processedPropType<boolean>(Boolean)
maxed*processedPropType<boolean>(Boolean)
canComplete*processedPropType<boolean>(Boolean)
displayprocessedPropType<UnwrapRef<GenericChallenge["display"]>>(
String,
Object,
Function
)
requirementsprocessedPropType<Requirements>(Object, Array)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
completed*processedPropType<boolean>(Boolean)
canStart*processedPropType<boolean>(Boolean)
markprocessedPropType<boolean | string>(Boolean, String)
id*string
toggle*VoidFunction
- +
Skip to content
On this page

Module: features/challenges/challenge ​

Interfaces ​

BaseChallenge ​

• BaseChallenge: Object

The properties that are added onto a processed ChallengeOptions to create a Challenge.

Defined in ​

profectus/src/features/challenges/challenge.tsx:91


ChallengeOptions ​

• ChallengeOptions: Object

An object that configures a Challenge.

Defined in ​

profectus/src/features/challenges/challenge.tsx:45

Type Aliases ​

Challenge ​

Ƭ Challenge<T>: Replace<T & BaseChallenge, { canStart: GetComputableTypeWithDefault<T["canStart"], true> ; classes: GetComputableType<T["classes"]> ; completionLimit: GetComputableTypeWithDefault<T["completionLimit"], 1> ; display: GetComputableType<T["display"]> ; mark: GetComputableTypeWithDefault<T["mark"], Ref<boolean>> ; maximize: GetComputableType<T["maximize"]> ; requirements: GetComputableType<T["requirements"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that can be entered and exited, and have one or more completions with scaling requirements.

Type parameters ​

NameType
Textends ChallengeOptions

Defined in ​

profectus/src/features/challenges/challenge.tsx:120


GenericChallenge ​

Ƭ GenericChallenge: Replace<Challenge<ChallengeOptions>, { canStart: ProcessedComputable<boolean> ; completionLimit: ProcessedComputable<DecimalSource> ; mark: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Challenge object.

Defined in ​

profectus/src/features/challenges/challenge.tsx:136

Variables ​

ChallengeType ​

• Const ChallengeType: typeof ChallengeType

A symbol used to identify Challenge features.

Defined in ​

profectus/src/features/challenges/challenge.tsx:40

Functions ​

createActiveChallenge ​

â–¸ createActiveChallenge(challenges): Ref<GenericChallenge | null>

Utility for taking an array of challenges where only one may be active at a time, and giving a ref to the one currently active (or null if none are active)

Parameters ​

NameTypeDescription
challengesGenericChallenge[]The list of challenges that are mutually exclusive

Returns ​

Ref<GenericChallenge | null>

Defined in ​

profectus/src/features/challenges/challenge.tsx:324


createChallenge ​

â–¸ createChallenge<T>(optionsFunc): Challenge<T>

Lazily creates a challenge with the given options.

Type parameters ​

NameType
Textends ChallengeOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseChallenge, GenericChallenge>Challenge options.

Returns ​

Challenge<T>

Defined in ​

profectus/src/features/challenges/challenge.tsx:150


isAnyChallengeActive ​

â–¸ isAnyChallengeActive(challenges): Ref<boolean>

Utility for reporting if any challenge in a list is currently active. Intended for preventing entering a challenge if another is already active.

Parameters ​

NameTypeDescription
challengesGenericChallenge[] | Ref<null | GenericChallenge>List of challenges that are mutually exclusive

Returns ​

Ref<boolean>

Defined in ​

profectus/src/features/challenges/challenge.tsx:334


setupAutoComplete ​

â–¸ setupAutoComplete(challenge, autoActive?, exitOnComplete?): WatchStopHandle

This will automatically complete a challenge when it's requirements are met.

Parameters ​

NameTypeDefault valueDescription
challengeGenericChallengeundefinedThe challenge to auto-complete
autoActiveComputable<boolean>trueWhether or not auto-completing should currently occur
exitOnCompletebooleantrueWhether or not to exit the challenge after auto-completion

Returns ​

WatchStopHandle

Defined in ​

profectus/src/features/challenges/challenge.tsx:304

Components ​

Challenge Component ​

Props ​

NameType
active*processedPropType<boolean>(Boolean)
maxed*processedPropType<boolean>(Boolean)
canComplete*processedPropType<boolean>(Boolean)
displayprocessedPropType<UnwrapRef<GenericChallenge["display"]>>(
String,
Object,
Function
)
requirementsprocessedPropType<Requirements>(Object, Array)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
completed*processedPropType<boolean>(Boolean)
canStart*processedPropType<boolean>(Boolean)
markprocessedPropType<boolean | string>(Boolean, String)
id*string
toggle*VoidFunction
+ \ No newline at end of file diff --git a/api/modules/features/clickable.html b/api/modules/features/clickable.html index cb82774b..93ea22be 100644 --- a/api/modules/features/clickable.html +++ b/api/modules/features/clickable.html @@ -5,12 +5,12 @@ Module: features/clickables/clickable | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/clickables/clickable ​

Interfaces ​

BaseClickable ​

• BaseClickable: Object

The properties that are added onto a processed ClickableOptions to create an Clickable.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
typetypeof ClickableTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/clickables/clickable.ts:60


ClickableOptions ​

• ClickableOptions: Object

An object that configures a Clickable.

NameTypeDescription
canClick?Computable<boolean>Whether or not the clickable may be clicked.
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
display?Computable<CoercableComponent | { description: CoercableComponent ; title?: CoercableComponent }>The display to use for this clickable.
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
onClick?(e?: MouseEvent | TouchEvent) => voidA function that is called when the clickable is clicked.
onHold?VoidFunctionA function that is called when the clickable is held down.
small?booleanToggles a smaller design for the feature.
style?Computable<StyleValue>CSS to apply to this feature.
visibility?Computable<boolean | Visibility>Whether this clickable should be visible.

Defined in ​

profectus/src/features/clickables/clickable.ts:28

Type Aliases ​

Clickable ​

Ƭ Clickable<T>: Replace<T & BaseClickable, { canClick: GetComputableTypeWithDefault<T["canClick"], true> ; classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; mark: GetComputableType<T["mark"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that can be clicked or held down.

Type parameters ​

NameType
Textends ClickableOptions

Defined in ​

profectus/src/features/clickables/clickable.ts:72


GenericClickable ​

Ƭ GenericClickable: Replace<Clickable<ClickableOptions>, { canClick: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Clickable object.

Defined in ​

profectus/src/features/clickables/clickable.ts:85

Variables ​

ClickableType ​

• Const ClickableType: typeof ClickableType

A symbol used to identify Clickable features.

Defined in ​

profectus/src/features/clickables/clickable.ts:23

Functions ​

createClickable ​

â–¸ createClickable<T>(optionsFunc?): Clickable<T>

Lazily creates a clickable with the given options.

Type parameters ​
NameType
Textends ClickableOptions
Parameters ​
NameTypeDescription
optionsFunc?OptionsFunc<T, BaseClickable, GenericClickable>Clickable options.
Returns ​

Clickable<T>

Defined in ​

profectus/src/features/clickables/clickable.ts:97


setupAutoClick ​

â–¸ setupAutoClick(layer, clickable, autoActive?): Unsubscribe

Utility to auto click a clickable whenever it can be.

Parameters ​
NameTypeDefault valueDescription
layerBaseLayerundefinedThe layer the clickable is apart of
clickableGenericClickableundefinedThe clicker to click automatically
autoActiveComputable<boolean>trueWhether or not the clickable should currently be auto-clicking
Returns ​

Unsubscribe

Defined in ​

profectus/src/features/clickables/clickable.ts:169

Components ​

Clickable Component ​

Props ​

NameType
display*processedPropType<UnwrapRef<GenericClickable["display"]>>(
Object,
String,
Function
)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(Object, String, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
onClick(e?: MouseEvent | TouchEvent) => void
onHoldVoidFunction
canClick*processedPropType<boolean>(Boolean)
smallboolean
markprocessedPropType<boolean | string>(Boolean, String)
id*string
- +
Skip to content
On this page

Module: features/clickables/clickable ​

Interfaces ​

BaseClickable ​

• BaseClickable: Object

The properties that are added onto a processed ClickableOptions to create an Clickable.

Defined in ​

profectus/src/features/clickables/clickable.ts:60


ClickableOptions ​

• ClickableOptions: Object

An object that configures a Clickable.

Defined in ​

profectus/src/features/clickables/clickable.ts:28

Type Aliases ​

Clickable ​

Ƭ Clickable<T>: Replace<T & BaseClickable, { canClick: GetComputableTypeWithDefault<T["canClick"], true> ; classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; mark: GetComputableType<T["mark"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that can be clicked or held down.

Type parameters ​

NameType
Textends ClickableOptions

Defined in ​

profectus/src/features/clickables/clickable.ts:72


GenericClickable ​

Ƭ GenericClickable: Replace<Clickable<ClickableOptions>, { canClick: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Clickable object.

Defined in ​

profectus/src/features/clickables/clickable.ts:85

Variables ​

ClickableType ​

• Const ClickableType: typeof ClickableType

A symbol used to identify Clickable features.

Defined in ​

profectus/src/features/clickables/clickable.ts:23

Functions ​

createClickable ​

â–¸ createClickable<T>(optionsFunc?): Clickable<T>

Lazily creates a clickable with the given options.

Type parameters ​

NameType
Textends ClickableOptions

Parameters ​

NameTypeDescription
optionsFunc?OptionsFunc<T, BaseClickable, GenericClickable>Clickable options.

Returns ​

Clickable<T>

Defined in ​

profectus/src/features/clickables/clickable.ts:97


setupAutoClick ​

â–¸ setupAutoClick(layer, clickable, autoActive?): Unsubscribe

Utility to auto click a clickable whenever it can be.

Parameters ​

NameTypeDefault valueDescription
layerBaseLayerundefinedThe layer the clickable is apart of
clickableGenericClickableundefinedThe clicker to click automatically
autoActiveComputable<boolean>trueWhether or not the clickable should currently be auto-clicking

Returns ​

Unsubscribe

Defined in ​

profectus/src/features/clickables/clickable.ts:169

Components ​

Clickable Component ​

Props ​

NameType
display*processedPropType<UnwrapRef<GenericClickable["display"]>>(
Object,
String,
Function
)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(Object, String, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
onClick(e?: MouseEvent | TouchEvent) => void
onHoldVoidFunction
canClick*processedPropType<boolean>(Boolean)
smallboolean
markprocessedPropType<boolean | string>(Boolean, String)
id*string
+ \ No newline at end of file diff --git a/api/modules/features/conversion.html b/api/modules/features/conversion.html index f85f6db6..46870896 100644 --- a/api/modules/features/conversion.html +++ b/api/modules/features/conversion.html @@ -5,12 +5,12 @@ Module: features/conversion | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/conversion ​

Interfaces ​

BaseConversion ​

• BaseConversion: Object

The properties that are added onto a processed ConversionOptions to create a Conversion.

NameTypeDescription
convertVoidFunctionThe function that performs the actual conversion.

Defined in ​

profectus/src/features/conversion.ts:84


ConversionOptions ​

• ConversionOptions: Object

An object that configures a Conversion.

NameTypeDescription
actualGain?Computable<DecimalSource>The absolute amount the output resource will be changed by. Typically this will be set for you in a conversion constructor. This will differ from currentGain in the cases where the conversion isn't just adding the converted amount to the output resource.
baseResourceResource<DecimalSource>The input Resource for this conversion.
buyMax?Computable<boolean>Whether or not to cap the amount of the output resource gained by converting at 1. Defaults to true.
convert?VoidFunctionThe function that performs the actual conversion from baseResource to gainResource. Typically this will be set for you in a conversion constructor.
currentAt?Computable<DecimalSource>The amount of the input resource currently being required in order to produce the currentGain. That is, if it went below this value then currentGain would decrease. Typically this will be set for you in a conversion constructor.
currentGain?Computable<DecimalSource>How much of the output resource the conversion can currently convert for. Typically this will be set for you in a conversion constructor.
formula(variable: GenericFormula & { invert: (value: DecimalSource) => DecimalSource } & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource } & { invertIntegral: (value: DecimalSource) => DecimalSource }) => InvertibleFormulaThe formula used to determine how much gainResource should be earned by this converting. The passed value will be a Formula representing the baseResource variable.
gainResourceResource<DecimalSource>The output Resource for this conversion. i.e. the resource being generated.
nextAt?Computable<DecimalSource>The amount of the input resource required to make currentGain increase. Typically this will be set for you in a conversion constructor.
onConvert?(amountGained: DecimalSource) => voidA callback that happens after a conversion has been completed. Receives the amount gained via conversion. This will not be called whenever using currentGain without calling convert (e.g. passive generation)
spend?(amountGained: DecimalSource) => voidThe function that spends the baseResource as part of the conversion. Defaults to setting the baseResource amount to 0.

Defined in ​

profectus/src/features/conversion.ts:20

Type Aliases ​

Conversion ​

Ƭ Conversion<T>: Replace<T & BaseConversion, { actualGain: GetComputableTypeWithDefault<T["actualGain"], Ref<DecimalSource>> ; buyMax: GetComputableTypeWithDefault<T["buyMax"], true> ; currentAt: GetComputableTypeWithDefault<T["currentAt"], Ref<DecimalSource>> ; currentGain: GetComputableTypeWithDefault<T["currentGain"], Ref<DecimalSource>> ; formula: InvertibleFormula ; nextAt: GetComputableTypeWithDefault<T["nextAt"], Ref<DecimalSource>> ; spend: undefined extends T["spend"] ? (amountGained: DecimalSource) => void : T["spend"] }>

An object that converts one Resource into another at a given rate.

Type parameters ​

NameType
Textends ConversionOptions

Defined in ​

profectus/src/features/conversion.ts:92


GenericConversion ​

Ƭ GenericConversion: Replace<Conversion<ConversionOptions>, { actualGain: ProcessedComputable<DecimalSource> ; buyMax: ProcessedComputable<boolean> ; currentAt: ProcessedComputable<DecimalSource> ; currentGain: ProcessedComputable<DecimalSource> ; nextAt: ProcessedComputable<DecimalSource> ; spend: (amountGained: DecimalSource) => void }>

A type that matches any valid Conversion object.

Defined in ​

profectus/src/features/conversion.ts:106

Functions ​

createConversion ​

â–¸ createConversion<T>(optionsFunc): Conversion<T>

Lazily creates a conversion with the given options. You typically shouldn't use this function directly. Instead use one of the other conversion constructors, which will then call this.

See

Type parameters ​
NameType
Textends ConversionOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseConversion, GenericConversion>Conversion options.
Returns ​

Conversion<T>

Defined in ​

profectus/src/features/conversion.ts:125


createCumulativeConversion ​

â–¸ createCumulativeConversion<S>(optionsFunc): Conversion<S>

Creates a conversion that simply adds to the gainResource amount upon converting. This is similar to the behavior of "normal" layers in The Modding Tree. This is equivalent to just calling createConversion directly.

Type parameters ​
NameType
Sextends ConversionOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<S, BaseConversion, GenericConversion>Conversion options.
Returns ​

Conversion<S>

Defined in ​

profectus/src/features/conversion.ts:200


createIndependentConversion ​

â–¸ createIndependentConversion<S>(optionsFunc): Conversion<S>

Creates a conversion that will replace the gainResource amount with the new amount upon converting. This is similar to the behavior of "static" layers in The Modding Tree.

Type parameters ​
NameType
Sextends ConversionOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<S, BaseConversion, GenericConversion>Converison options.
Returns ​

Conversion<S>

Defined in ​

profectus/src/features/conversion.ts:211


setupPassiveGeneration ​

â–¸ setupPassiveGeneration(layer, conversion, rate?, cap?): void

This will automatically increase the value of conversion.gainResource without lowering the value of the input resource. It will by default perform 100% of a conversion's currentGain per second. If you use a ref for the rate you can set it's value to 0 when passive generation should be disabled.

Parameters ​
NameTypeDefault valueDescription
layerBaseLayerundefinedThe layer this passive generation will be associated with. Typically this when calling this function from inside a layer's options function.
conversionGenericConversionundefinedThe conversion that will determine how much generation there is.
rateComputable<DecimalSource>1A multiplier to multiply against the conversion's currentGain.
capComputable<DecimalSource>Decimal.dInfA value that should not be passed via passive generation.
Returns ​

void

Defined in ​

profectus/src/features/conversion.ts:271

- +
Skip to content
On this page

Module: features/conversion ​

Interfaces ​

BaseConversion ​

• BaseConversion: Object

The properties that are added onto a processed ConversionOptions to create a Conversion.

Defined in ​

profectus/src/features/conversion.ts:84


ConversionOptions ​

• ConversionOptions: Object

An object that configures a Conversion.

Defined in ​

profectus/src/features/conversion.ts:20

Type Aliases ​

Conversion ​

Ƭ Conversion<T>: Replace<T & BaseConversion, { actualGain: GetComputableTypeWithDefault<T["actualGain"], Ref<DecimalSource>> ; buyMax: GetComputableTypeWithDefault<T["buyMax"], true> ; currentAt: GetComputableTypeWithDefault<T["currentAt"], Ref<DecimalSource>> ; currentGain: GetComputableTypeWithDefault<T["currentGain"], Ref<DecimalSource>> ; formula: InvertibleFormula ; nextAt: GetComputableTypeWithDefault<T["nextAt"], Ref<DecimalSource>> ; spend: undefined extends T["spend"] ? (amountGained: DecimalSource) => void : T["spend"] }>

An object that converts one Resource into another at a given rate.

Type parameters ​

NameType
Textends ConversionOptions

Defined in ​

profectus/src/features/conversion.ts:92


GenericConversion ​

Ƭ GenericConversion: Replace<Conversion<ConversionOptions>, { actualGain: ProcessedComputable<DecimalSource> ; buyMax: ProcessedComputable<boolean> ; currentAt: ProcessedComputable<DecimalSource> ; currentGain: ProcessedComputable<DecimalSource> ; nextAt: ProcessedComputable<DecimalSource> ; spend: (amountGained: DecimalSource) => void }>

A type that matches any valid Conversion object.

Defined in ​

profectus/src/features/conversion.ts:106

Functions ​

createConversion ​

â–¸ createConversion<T>(optionsFunc): Conversion<T>

Lazily creates a conversion with the given options. You typically shouldn't use this function directly. Instead use one of the other conversion constructors, which will then call this.

See

Type parameters ​

NameType
Textends ConversionOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseConversion, GenericConversion>Conversion options.

Returns ​

Conversion<T>

Defined in ​

profectus/src/features/conversion.ts:125


createCumulativeConversion ​

â–¸ createCumulativeConversion<S>(optionsFunc): Conversion<S>

Creates a conversion that simply adds to the gainResource amount upon converting. This is similar to the behavior of "normal" layers in The Modding Tree. This is equivalent to just calling createConversion directly.

Type parameters ​

NameType
Sextends ConversionOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<S, BaseConversion, GenericConversion>Conversion options.

Returns ​

Conversion<S>

Defined in ​

profectus/src/features/conversion.ts:200


createIndependentConversion ​

â–¸ createIndependentConversion<S>(optionsFunc): Conversion<S>

Creates a conversion that will replace the gainResource amount with the new amount upon converting. This is similar to the behavior of "static" layers in The Modding Tree.

Type parameters ​

NameType
Sextends ConversionOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<S, BaseConversion, GenericConversion>Converison options.

Returns ​

Conversion<S>

Defined in ​

profectus/src/features/conversion.ts:211


setupPassiveGeneration ​

â–¸ setupPassiveGeneration(layer, conversion, rate?, cap?): void

This will automatically increase the value of conversion.gainResource without lowering the value of the input resource. It will by default perform 100% of a conversion's currentGain per second. If you use a ref for the rate you can set it's value to 0 when passive generation should be disabled.

Parameters ​

NameTypeDefault valueDescription
layerBaseLayerundefinedThe layer this passive generation will be associated with. Typically this when calling this function from inside a layer's options function.
conversionGenericConversionundefinedThe conversion that will determine how much generation there is.
rateComputable<DecimalSource>1A multiplier to multiply against the conversion's currentGain.
capComputable<DecimalSource>Decimal.dInfA value that should not be passed via passive generation.

Returns ​

void

Defined in ​

profectus/src/features/conversion.ts:271

+ \ No newline at end of file diff --git a/api/modules/features/feature.html b/api/modules/features/feature.html index 6966c936..03f3c0cd 100644 --- a/api/modules/features/feature.html +++ b/api/modules/features/feature.html @@ -5,12 +5,12 @@ Module: features/feature | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/feature ​

Enumerations ​

Visibility ​

• Visibility: Object

Enum for what the visibility of a feature or component should be

NameTypeDescription
Hidden1The feature or component should not appear but still take up space
None2The feature or component should not appear not take up space
Visible0The feature or component should be visible

Defined in ​

profectus/src/features/feature.ts:61

Type Aliases ​

CoercableComponent ​

Ƭ CoercableComponent: string | DefineComponent | JSXFunction

Any value that can be coerced into (or is) a vue component

Defined in ​

profectus/src/features/feature.ts:25


GenericComponent ​

Ƭ GenericComponent: DefineComponent<any, any, any>

A type that refers to any vue component

Defined in ​

profectus/src/features/feature.ts:35


JSXFunction ​

Ƭ JSXFunction: () => JSX.Element & { [DoNotCache]: true }

A type referring to a function that returns JSX and is marked that it shouldn't be wrapped in a ComputedRef

See

jsx

Defined in ​

profectus/src/features/feature.ts:21


OptionsFunc ​

Ƭ OptionsFunc<T, R, S>: () => T & Partial<R> & ThisType<T & S>

Type parameters ​

NameType
TT
RRecord<string, unknown>
SR

Type declaration ​

â–¸ (): T & Partial<R> & ThisType<T & S>

Utility function for a function that returns an object of a given type, with "this" bound to what the type will eventually be processed into. Intended for making lazily evaluated objects.

Returns ​

T & Partial<R> & ThisType<T & S>

Defined in ​

profectus/src/features/feature.ts:45


Replace ​

Ƭ Replace<T, S>: S & Omit<T, keyof S>

Utility type that is S, with any properties from T that aren't already present in S

Type parameters ​

Name
T
S

Defined in ​

profectus/src/features/feature.ts:38


StyleValue ​

Ƭ StyleValue: string | CSSProperties | (string | CSSProperties)[]

Any value that can be passed into an HTML element's style attribute. Note that Profectus uses its own StyleValue and CSSProperties that are extended, in order to have additional properties added to them, such as variable CSS variables.

Defined in ​

profectus/src/features/feature.ts:31

Variables ​

Component ​

• Const Component: typeof Component

A symbol to use as a key for a vue component a feature can be rendered with

See

VueFeature

Defined in ​

profectus/src/features/feature.ts:10


GatherProps ​

• Const GatherProps: typeof GatherProps

A symbol to use as a key for a prop gathering function that a feature can use to send to its component

See

VueFeature

Defined in ​

profectus/src/features/feature.ts:15

Functions ​

excludeFeatures ​

â–¸ excludeFeatures(obj, ...types): unknown[]

Traverses an object and returns all features that are not any of the given types. Features are any object with a "type" property that has a symbol value.

Parameters ​
NameTypeDescription
objRecord<string, unknown>The object to traverse
...typessymbol[]The feature types that will be skipped over
Returns ​

unknown[]

Defined in ​

profectus/src/features/feature.ts:130


findFeatures ​

â–¸ findFeatures(obj, ...types): unknown[]

Traverses an object and returns all features of the given type(s)

Parameters ​
NameTypeDescription
objRecord<string, unknown>The object to traverse
...typessymbol[]The feature types that will be searched for
Returns ​

unknown[]

Defined in ​

profectus/src/features/feature.ts:105


getUniqueID ​

â–¸ getUniqueID(prefix?): string

Gets a unique ID to give to each feature, used for any sort of system that needs to identify elements in the DOM rather than references to the feature itself. (For example, branches) IDs are guaranteed unique, but NOT persistent - they likely will change between updates.

Parameters ​
NameTypeDefault valueDescription
prefixstring"feature-"A string to prepend to the id to make it more readable in the inspector tools
Returns ​

string

Defined in ​

profectus/src/features/feature.ts:56


isHidden ​

â–¸ isHidden(visibility): boolean

NameType
visibilityProcessedComputable<boolean | Visibility>

Defined in ​

profectus/src/features/feature.ts:75


isVisible ​

â–¸ isVisible(visibility): boolean

NameType
visibilityProcessedComputable<boolean | Visibility>

Defined in ​

profectus/src/features/feature.ts:70


jsx ​

â–¸ jsx(func): JSXFunction

Takes a function and marks it as JSX so it won't get auto-wrapped into a ComputedRef. The function may also return empty string as empty JSX tags cause issues.

Parameters ​
NameType
func() => "" | Element
Returns ​

JSXFunction

Defined in ​

profectus/src/features/feature.ts:84


setDefault ​

â–¸ setDefault<T, K>(object, key, value): asserts object is Exclude<T, K> & Required<Pick<T, K>>

Utility function to set a property on an object if and only if it doesn't already exist

Type parameters ​
NameType
TT
Kextends string | number | symbol
Parameters ​
NameType
objectT
keyK
valueT[K]
Returns ​

asserts object is Exclude<T, K> & Required<Pick<T, K>>

Defined in ​

profectus/src/features/feature.ts:90

- +
Skip to content
On this page

Module: features/feature ​

Enumerations ​

Visibility ​

• Visibility: Object

Enum for what the visibility of a feature or component should be

Defined in ​

profectus/src/features/feature.ts:61

Type Aliases ​

CoercableComponent ​

Ƭ CoercableComponent: string | DefineComponent | JSXFunction

Any value that can be coerced into (or is) a vue component

Defined in ​

profectus/src/features/feature.ts:25


GenericComponent ​

Ƭ GenericComponent: DefineComponent<any, any, any>

A type that refers to any vue component

Defined in ​

profectus/src/features/feature.ts:35


JSXFunction ​

Ƭ JSXFunction: () => JSX.Element & { [DoNotCache]: true }

A type referring to a function that returns JSX and is marked that it shouldn't be wrapped in a ComputedRef

See

jsx

Defined in ​

profectus/src/features/feature.ts:21


OptionsFunc ​

Ƭ OptionsFunc<T, R, S>: () => T & Partial<R> & ThisType<T & S>

Type parameters ​

NameType
TT
RRecord<string, unknown>
SR

Type declaration ​

â–¸ (): T & Partial<R> & ThisType<T & S>

Utility function for a function that returns an object of a given type, with "this" bound to what the type will eventually be processed into. Intended for making lazily evaluated objects.

Returns ​

T & Partial<R> & ThisType<T & S>

Defined in ​

profectus/src/features/feature.ts:45


Replace ​

Ƭ Replace<T, S>: S & Omit<T, keyof S>

Utility type that is S, with any properties from T that aren't already present in S

Type parameters ​

Name
T
S

Defined in ​

profectus/src/features/feature.ts:38


StyleValue ​

Ƭ StyleValue: string | CSSProperties | (string | CSSProperties)[]

Any value that can be passed into an HTML element's style attribute. Note that Profectus uses its own StyleValue and CSSProperties that are extended, in order to have additional properties added to them, such as variable CSS variables.

Defined in ​

profectus/src/features/feature.ts:31

Variables ​

Component ​

• Const Component: typeof Component

A symbol to use as a key for a vue component a feature can be rendered with

See

VueFeature

Defined in ​

profectus/src/features/feature.ts:10


GatherProps ​

• Const GatherProps: typeof GatherProps

A symbol to use as a key for a prop gathering function that a feature can use to send to its component

See

VueFeature

Defined in ​

profectus/src/features/feature.ts:15

Functions ​

excludeFeatures ​

â–¸ excludeFeatures(obj, ...types): unknown[]

Traverses an object and returns all features that are not any of the given types. Features are any object with a "type" property that has a symbol value.

Parameters ​

NameTypeDescription
objRecord<string, unknown>The object to traverse
...typessymbol[]The feature types that will be skipped over

Returns ​

unknown[]

Defined in ​

profectus/src/features/feature.ts:130


findFeatures ​

â–¸ findFeatures(obj, ...types): unknown[]

Traverses an object and returns all features of the given type(s)

Parameters ​

NameTypeDescription
objRecord<string, unknown>The object to traverse
...typessymbol[]The feature types that will be searched for

Returns ​

unknown[]

Defined in ​

profectus/src/features/feature.ts:105


getUniqueID ​

â–¸ getUniqueID(prefix?): string

Gets a unique ID to give to each feature, used for any sort of system that needs to identify elements in the DOM rather than references to the feature itself. (For example, branches) IDs are guaranteed unique, but NOT persistent - they likely will change between updates.

Parameters ​

NameTypeDefault valueDescription
prefixstring"feature-"A string to prepend to the id to make it more readable in the inspector tools

Returns ​

string

Defined in ​

profectus/src/features/feature.ts:56


isHidden ​

â–¸ isHidden(visibility): boolean

Parameters ​

NameType
visibilityProcessedComputable<boolean | Visibility>

Returns ​

boolean

Defined in ​

profectus/src/features/feature.ts:75


isVisible ​

â–¸ isVisible(visibility): boolean

Parameters ​

NameType
visibilityProcessedComputable<boolean | Visibility>

Returns ​

boolean

Defined in ​

profectus/src/features/feature.ts:70


jsx ​

â–¸ jsx(func): JSXFunction

Takes a function and marks it as JSX so it won't get auto-wrapped into a ComputedRef. The function may also return empty string as empty JSX tags cause issues.

Parameters ​

NameType
func() => "" | Element

Returns ​

JSXFunction

Defined in ​

profectus/src/features/feature.ts:84


setDefault ​

â–¸ setDefault<T, K>(object, key, value): asserts object is Exclude<T, K> & Required<Pick<T, K>>

Utility function to set a property on an object if and only if it doesn't already exist

Type parameters ​

NameType
TT
Kextends string | number | symbol

Parameters ​

NameType
objectT
keyK
valueT[K]

Returns ​

asserts object is Exclude<T, K> & Required<Pick<T, K>>

Defined in ​

profectus/src/features/feature.ts:90

+ \ No newline at end of file diff --git a/api/modules/features/grid.html b/api/modules/features/grid.html index 7b0f6b22..27f5c793 100644 --- a/api/modules/features/grid.html +++ b/api/modules/features/grid.html @@ -5,12 +5,12 @@ Module: features/grids/grid | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/grids/grid ​

Interfaces ​

BaseGrid ​

• BaseGrid: Object

The properties that are added onto a processed BoardOptions to create a Board.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
cellStatePersistent<Record<string | number, State>>The persistent state of this grid, which is a dictionary of cell states.
cellsRecord<string | number, GridCell>A dictionary of cells within this grid.
getID(id: string | number, state: State) => stringGet the auto-generated ID for identifying a specific cell of this grid that appears in the DOM. Will not persist between refreshes or updates.
getState(id: string | number) => StateGet the persistent state of the given cell.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
setState(id: string | number, state: State) => voidSet the persistent state of the given cell.
typetypeof GridTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/grids/grid.ts:254


GridCell ​

• GridCell: Object

Represents a cell within a grid. These properties will typically be accessed via a cell proxy that calls functions on the grid to get the properties for a specific cell.

See

createGridProxy

NameTypeDescription
canClickbooleanWhether this cell can be clicked.
classes?Record<string, boolean>Dictionary of CSS classes to apply to this feature.
displayCoercableComponentThe main text that appears in the display.
idstringA unique identifier for the grid cell.
onClick?(e?: MouseEvent | TouchEvent) => voidA function that is called when the cell is clicked.
onHold?VoidFunctionA function that is called when the cell is held down.
startStateStateThe initial persistent state of this cell.
stateStateThe persistent state of this cell.
style?StyleValueCSS to apply to this feature.
title?CoercableComponentA header to appear at the top of the display.
visibilityboolean | VisibilityWhether this cell should be visible.

Defined in ​

profectus/src/features/grids/grid.ts:196


GridOptions ​

• GridOptions: Object

An object that configures a Grid.

NameTypeDescription
colsComputable<number>The number of columns in the grid.
getCanClick?CellComputable<boolean>A computable to determine if a cell can be clicked.
getClasses?CellComputable<Record<string, boolean>>A computable to get the CSS classes for a cell.
getDisplayCellComputable<CoercableComponent>A computable to get the display component for a cell.
getStartStateComputable<State> | (id: string | number) => StateA computable to get the initial persistent state of a cell.
getStyle?CellComputable<StyleValue>A computable to get the CSS styles for a cell.
getTitle?CellComputable<CoercableComponent>A computable to get the title component for a cell.
getVisibility?CellComputable<boolean | Visibility>A computable to determine the visibility of a cell.
onClick?(id: string | number, state: State, e?: MouseEvent | TouchEvent) => voidA function that is called when a cell is clicked.
onHold?(id: string | number, state: State) => voidA function that is called when a cell is held down.
rowsComputable<number>The number of rows in the grid.
visibility?Computable<boolean | Visibility>Whether this grid should be visible.

Defined in ​

profectus/src/features/grids/grid.ts:224

Type Aliases ​

CellComputable ​

Ƭ CellComputable<T>: Computable<T> | (id: string | number, state: State) => T

A type representing a computable value for a cell in the grid.

Type parameters ​

Name
T

Defined in ​

profectus/src/features/grids/grid.ts:28


GenericGrid ​

Ƭ GenericGrid: Replace<Grid<GridOptions>, { getCanClick: ProcessedComputable<boolean> ; getVisibility: ProcessedComputable<Visibility | boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Grid object.

Defined in ​

profectus/src/features/grids/grid.ts:293


Grid ​

Ƭ Grid<T>: Replace<T & BaseGrid, { cols: GetComputableType<T["cols"]> ; getCanClick: GetComputableTypeWithDefault<T["getCanClick"], true> ; getClasses: GetComputableType<T["getClasses"]> ; getDisplay: GetComputableType<T["getDisplay"]> ; getStartState: GetComputableType<T["getStartState"]> ; getStyle: GetComputableType<T["getStyle"]> ; getTitle: GetComputableType<T["getTitle"]> ; getVisibility: GetComputableTypeWithDefault<T["getVisibility"], Visible> ; rows: GetComputableType<T["rows"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that is a grid of cells that all behave according to the same rules.

Type parameters ​

NameType
Textends GridOptions

Defined in ​

profectus/src/features/grids/grid.ts:276

Variables ​

GridType ​

• Const GridType: typeof GridType

A symbol used to identify Grid features.

Defined in ​

profectus/src/features/grids/grid.ts:25

Functions ​

createGrid ​

â–¸ createGrid<T>(optionsFunc): Grid<T>

Lazily creates a grid with the given options.

Type parameters ​
NameType
Textends GridOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseGrid, GenericGrid>Grid options.
Returns ​

Grid<T>

Defined in ​

profectus/src/features/grids/grid.ts:306

Components ​

GridCell Component ​

Props ​

NameType
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
onClick(e?: MouseEvent | TouchEvent) => void
onHoldVoidFunction
display*processedPropType<CoercableComponent>(Object, String, Function)
titleprocessedPropType<CoercableComponent>(Object, String, Function)
styleprocessedPropType<StyleValue>(String, Object, Array)
canClick*processedPropType<boolean>(Boolean)
id*string

Grid Component ​

Props ​

NameType
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
rows*processedPropType<number>(Number)
cols*processedPropType<number>(Number)
cells*processedPropType<Record<string, GridCell>>(Object)
- +
Skip to content
On this page

Module: features/grids/grid ​

Interfaces ​

BaseGrid ​

• BaseGrid: Object

The properties that are added onto a processed BoardOptions to create a Board.

Defined in ​

profectus/src/features/grids/grid.ts:254


GridCell ​

• GridCell: Object

Represents a cell within a grid. These properties will typically be accessed via a cell proxy that calls functions on the grid to get the properties for a specific cell.

See

createGridProxy

Defined in ​

profectus/src/features/grids/grid.ts:196


GridOptions ​

• GridOptions: Object

An object that configures a Grid.

Defined in ​

profectus/src/features/grids/grid.ts:224

Type Aliases ​

CellComputable ​

Ƭ CellComputable<T>: Computable<T> | (id: string | number, state: State) => T

A type representing a computable value for a cell in the grid.

Type parameters ​

Name
T

Defined in ​

profectus/src/features/grids/grid.ts:28


GenericGrid ​

Ƭ GenericGrid: Replace<Grid<GridOptions>, { getCanClick: ProcessedComputable<boolean> ; getVisibility: ProcessedComputable<Visibility | boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Grid object.

Defined in ​

profectus/src/features/grids/grid.ts:293


Grid ​

Ƭ Grid<T>: Replace<T & BaseGrid, { cols: GetComputableType<T["cols"]> ; getCanClick: GetComputableTypeWithDefault<T["getCanClick"], true> ; getClasses: GetComputableType<T["getClasses"]> ; getDisplay: GetComputableType<T["getDisplay"]> ; getStartState: GetComputableType<T["getStartState"]> ; getStyle: GetComputableType<T["getStyle"]> ; getTitle: GetComputableType<T["getTitle"]> ; getVisibility: GetComputableTypeWithDefault<T["getVisibility"], Visible> ; rows: GetComputableType<T["rows"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that is a grid of cells that all behave according to the same rules.

Type parameters ​

NameType
Textends GridOptions

Defined in ​

profectus/src/features/grids/grid.ts:276

Variables ​

GridType ​

• Const GridType: typeof GridType

A symbol used to identify Grid features.

Defined in ​

profectus/src/features/grids/grid.ts:25

Functions ​

createGrid ​

â–¸ createGrid<T>(optionsFunc): Grid<T>

Lazily creates a grid with the given options.

Type parameters ​

NameType
Textends GridOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseGrid, GenericGrid>Grid options.

Returns ​

Grid<T>

Defined in ​

profectus/src/features/grids/grid.ts:306

Components ​

GridCell Component ​

Props ​

NameType
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
onClick(e?: MouseEvent | TouchEvent) => void
onHoldVoidFunction
display*processedPropType<CoercableComponent>(Object, String, Function)
titleprocessedPropType<CoercableComponent>(Object, String, Function)
styleprocessedPropType<StyleValue>(String, Object, Array)
canClick*processedPropType<boolean>(Boolean)
id*string

Grid Component ​

Props ​

NameType
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
rows*processedPropType<number>(Number)
cols*processedPropType<number>(Number)
cells*processedPropType<Record<string, GridCell>>(Object)
+ \ No newline at end of file diff --git a/api/modules/features/hotkey.html b/api/modules/features/hotkey.html index 9d16218b..dc577a62 100644 --- a/api/modules/features/hotkey.html +++ b/api/modules/features/hotkey.html @@ -5,12 +5,12 @@ Module: features/hotkey | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/hotkey ​

Interfaces ​

BaseHotkey ​

• BaseHotkey: Object

The properties that are added onto a processed HotkeyOptions to create an Hotkey.

NameTypeDescription
typetypeof HotkeyTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/hotkey.tsx:40


HotkeyOptions ​

• HotkeyOptions: Object

An object that configures a Hotkey.

NameTypeDescription
descriptionComputable<string>The description of this hotkey, to display in the settings.
enabled?Computable<boolean>Whether or not this hotkey is currently enabled.
keystringThe key tied to this hotkey
onPressVoidFunctionWhat to do upon pressing the key.

Defined in ​

profectus/src/features/hotkey.tsx:26

Type Aliases ​

GenericHotkey ​

Ƭ GenericHotkey: Replace<Hotkey<HotkeyOptions>, { enabled: ProcessedComputable<boolean> }>

A type that matches any valid Hotkey object.

Defined in ​

profectus/src/features/hotkey.tsx:55


Hotkey ​

Ƭ Hotkey<T>: Replace<T & BaseHotkey, { description: GetComputableType<T["description"]> ; enabled: GetComputableTypeWithDefault<T["enabled"], true> }>

An object that represents a hotkey shortcut that performs an action upon a key sequence being pressed.

Type parameters ​

NameType
Textends HotkeyOptions

Defined in ​

profectus/src/features/hotkey.tsx:46

Variables ​

HotkeyType ​

• Const HotkeyType: typeof HotkeyType

A symbol used to identify Hotkey features.

Defined in ​

profectus/src/features/hotkey.tsx:21


hotkeys ​

• Const hotkeys: Record<string, GenericHotkey | undefined>

A dictionary of all hotkeys.

Defined in ​

profectus/src/features/hotkey.tsx:19

Functions ​

createHotkey ​

â–¸ createHotkey<T>(optionsFunc): Hotkey<T>

Lazily creates a hotkey with the given options.

Type parameters ​
NameType
Textends HotkeyOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseHotkey, GenericHotkey>Hotkey options.
Returns ​

Hotkey<T>

Defined in ​

profectus/src/features/hotkey.tsx:68

- +
Skip to content
On this page

Module: features/hotkey ​

Interfaces ​

BaseHotkey ​

• BaseHotkey: Object

The properties that are added onto a processed HotkeyOptions to create an Hotkey.

Defined in ​

profectus/src/features/hotkey.tsx:40


HotkeyOptions ​

• HotkeyOptions: Object

An object that configures a Hotkey.

Defined in ​

profectus/src/features/hotkey.tsx:26

Type Aliases ​

GenericHotkey ​

Ƭ GenericHotkey: Replace<Hotkey<HotkeyOptions>, { enabled: ProcessedComputable<boolean> }>

A type that matches any valid Hotkey object.

Defined in ​

profectus/src/features/hotkey.tsx:55


Hotkey ​

Ƭ Hotkey<T>: Replace<T & BaseHotkey, { description: GetComputableType<T["description"]> ; enabled: GetComputableTypeWithDefault<T["enabled"], true> }>

An object that represents a hotkey shortcut that performs an action upon a key sequence being pressed.

Type parameters ​

NameType
Textends HotkeyOptions

Defined in ​

profectus/src/features/hotkey.tsx:46

Variables ​

HotkeyType ​

• Const HotkeyType: typeof HotkeyType

A symbol used to identify Hotkey features.

Defined in ​

profectus/src/features/hotkey.tsx:21


hotkeys ​

• Const hotkeys: Record<string, GenericHotkey | undefined>

A dictionary of all hotkeys.

Defined in ​

profectus/src/features/hotkey.tsx:19

Functions ​

createHotkey ​

â–¸ createHotkey<T>(optionsFunc): Hotkey<T>

Lazily creates a hotkey with the given options.

Type parameters ​

NameType
Textends HotkeyOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseHotkey, GenericHotkey>Hotkey options.

Returns ​

Hotkey<T>

Defined in ​

profectus/src/features/hotkey.tsx:68

+ \ No newline at end of file diff --git a/api/modules/features/infobox.html b/api/modules/features/infobox.html index 7e246388..9e25f5b1 100644 --- a/api/modules/features/infobox.html +++ b/api/modules/features/infobox.html @@ -5,12 +5,12 @@ Module: features/infoboxes/infobox | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/infoboxes/infobox ​

Interfaces ​

BaseInfobox ​

• BaseInfobox: Object

The properties that are added onto a processed InfoboxOptions to create an Infobox.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
collapsedPersistent<boolean>Whether or not this infobox is collapsed.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
typetypeof InfoboxTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/infoboxes/infobox.ts:50


InfoboxOptions ​

• InfoboxOptions: Object

An object that configures an Infobox.

NameTypeDescription
bodyStyle?Computable<StyleValue>CSS to apply to the body of the infobox.
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
color?Computable<string>The background color of the Infobox.
displayComputable<CoercableComponent>The main text that appears in the display.
style?Computable<StyleValue>CSS to apply to this feature.
titleComputable<CoercableComponent>A header to appear at the top of the display.
titleStyle?Computable<StyleValue>CSS to apply to the title of the infobox.
visibility?Computable<boolean | Visibility>Whether this clickable should be visible.

Defined in ​

profectus/src/features/infoboxes/infobox.ts:28

Type Aliases ​

GenericInfobox ​

Ƭ GenericInfobox: Replace<Infobox<InfoboxOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Infobox object.

Defined in ​

profectus/src/features/infoboxes/infobox.ts:79


Infobox ​

Ƭ Infobox<T>: Replace<T & BaseInfobox, { bodyStyle: GetComputableType<T["bodyStyle"]> ; classes: GetComputableType<T["classes"]> ; color: GetComputableType<T["color"]> ; display: GetComputableType<T["display"]> ; style: GetComputableType<T["style"]> ; title: GetComputableType<T["title"]> ; titleStyle: GetComputableType<T["titleStyle"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that displays information in a collapsible way.

Type parameters ​

NameType
Textends InfoboxOptions

Defined in ​

profectus/src/features/infoboxes/infobox.ts:64

Variables ​

InfoboxType ​

• Const InfoboxType: typeof InfoboxType

A symbol used to identify Infobox features.

Defined in ​

profectus/src/features/infoboxes/infobox.ts:23

Functions ​

createInfobox ​

â–¸ createInfobox<T>(optionsFunc): Infobox<T>

Lazily creates an infobox with the given options.

Type parameters ​
NameType
Textends InfoboxOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseInfobox, GenericInfobox>Infobox options.
Returns ​

Infobox<T>

Defined in ​

profectus/src/features/infoboxes/infobox.ts:90

Components ​

Infobox Component ​

Props ​

NameType
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
display*processedPropType<CoercableComponent>(Object, String, Function)
title*processedPropType<CoercableComponent>(Object, String, Function)
colorprocessedPropType<string>(String)
collapsed*Ref<boolean>
styleprocessedPropType<StyleValue>(Object, String, Array)
titleStyleprocessedPropType<StyleValue>(Object, String, Array)
bodyStyleprocessedPropType<StyleValue>(Object, String, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
id*string
- +
Skip to content
On this page

Module: features/infoboxes/infobox ​

Interfaces ​

BaseInfobox ​

• BaseInfobox: Object

The properties that are added onto a processed InfoboxOptions to create an Infobox.

Defined in ​

profectus/src/features/infoboxes/infobox.ts:50


InfoboxOptions ​

• InfoboxOptions: Object

An object that configures an Infobox.

Defined in ​

profectus/src/features/infoboxes/infobox.ts:28

Type Aliases ​

GenericInfobox ​

Ƭ GenericInfobox: Replace<Infobox<InfoboxOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Infobox object.

Defined in ​

profectus/src/features/infoboxes/infobox.ts:79


Infobox ​

Ƭ Infobox<T>: Replace<T & BaseInfobox, { bodyStyle: GetComputableType<T["bodyStyle"]> ; classes: GetComputableType<T["classes"]> ; color: GetComputableType<T["color"]> ; display: GetComputableType<T["display"]> ; style: GetComputableType<T["style"]> ; title: GetComputableType<T["title"]> ; titleStyle: GetComputableType<T["titleStyle"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that displays information in a collapsible way.

Type parameters ​

NameType
Textends InfoboxOptions

Defined in ​

profectus/src/features/infoboxes/infobox.ts:64

Variables ​

InfoboxType ​

• Const InfoboxType: typeof InfoboxType

A symbol used to identify Infobox features.

Defined in ​

profectus/src/features/infoboxes/infobox.ts:23

Functions ​

createInfobox ​

â–¸ createInfobox<T>(optionsFunc): Infobox<T>

Lazily creates an infobox with the given options.

Type parameters ​

NameType
Textends InfoboxOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseInfobox, GenericInfobox>Infobox options.

Returns ​

Infobox<T>

Defined in ​

profectus/src/features/infoboxes/infobox.ts:90

Components ​

Infobox Component ​

Props ​

NameType
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
display*processedPropType<CoercableComponent>(Object, String, Function)
title*processedPropType<CoercableComponent>(Object, String, Function)
colorprocessedPropType<string>(String)
collapsed*Ref<boolean>
styleprocessedPropType<StyleValue>(Object, String, Array)
titleStyleprocessedPropType<StyleValue>(Object, String, Array)
bodyStyleprocessedPropType<StyleValue>(Object, String, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
id*string
+ \ No newline at end of file diff --git a/api/modules/features/links.html b/api/modules/features/links.html index c73e960f..d5378811 100644 --- a/api/modules/features/links.html +++ b/api/modules/features/links.html @@ -5,12 +5,12 @@ Module: features/links/links | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page
- +
Skip to content
On this page
+ \ No newline at end of file diff --git a/api/modules/features/particles.html b/api/modules/features/particles.html index 74167ee8..f1c7a70f 100644 --- a/api/modules/features/particles.html +++ b/api/modules/features/particles.html @@ -5,12 +5,12 @@ Module: features/particles/particles | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/particles/particles ​

Interfaces ​

BaseParticles ​

• BaseParticles: Object

The properties that are added onto a processed ParticlesOptions to create an Particles.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
addEmitter(config: EmitterConfigV3) => Promise<Emitter>A function to asynchronously add an emitter to the canvas. The returned emitter can then be positioned as appropriate and started. See Particles
appRef<null | Application>The Pixi.JS Application powering this particles canvas.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
typetypeof ParticlesTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/particles/particles.tsx:31


ParticlesOptions ​

• ParticlesOptions: Object

An object that configures Particles.

NameTypeDescription
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
onContainerResized?(boundingRect: DOMRect) => voidA function that is called when the particles canvas is resized.
onHotReload?VoidFunctionA function that is called whenever the particles element is reloaded during development. For restarting particle effects.
style?Computable<StyleValue>CSS to apply to this feature.

Defined in ​

profectus/src/features/particles/particles.tsx:17

Type Aliases ​

GenericParticles ​

Ƭ GenericParticles: Particles<ParticlesOptions>

A type that matches any valid Particles object.

Defined in ​

profectus/src/features/particles/particles.tsx:63


Particles ​

Ƭ Particles<T>: Replace<T & BaseParticles, { classes: GetComputableType<T["classes"]> ; style: GetComputableType<T["style"]> }>

An object that represents a feature that display particle effects on the screen. The config should typically be gotten by designing the effect using the online particle effect editor and passing it into the upgradeConfig from @pixi/particle-emitter.

Type parameters ​

NameType
Textends ParticlesOptions

Defined in ​

profectus/src/features/particles/particles.tsx:54

Variables ​

ParticlesType ​

• Const ParticlesType: typeof ParticlesType

A symbol used to identify Particles features.

Defined in ​

profectus/src/features/particles/particles.tsx:12

Functions ​

createParticles ​

â–¸ createParticles<T>(optionsFunc?): Particles<T>

Lazily creates particles with the given options.

Type parameters ​
NameType
Textends ParticlesOptions
Parameters ​
NameTypeDescription
optionsFunc?OptionsFunc<T, BaseParticles, GenericParticles>Particles options.
Returns ​

Particles<T>

Defined in ​

profectus/src/features/particles/particles.tsx:69

Components ​

Particles Component ​

Props ​

NameType
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
onInit*(app: Application) => void
id*string
onContainerResized(rect: DOMRect) => void
onHotReloadVoidFunction
- +
Skip to content
On this page

Module: features/particles/particles ​

Interfaces ​

BaseParticles ​

• BaseParticles: Object

The properties that are added onto a processed ParticlesOptions to create an Particles.

Defined in ​

profectus/src/features/particles/particles.tsx:31


ParticlesOptions ​

• ParticlesOptions: Object

An object that configures Particles.

Defined in ​

profectus/src/features/particles/particles.tsx:17

Type Aliases ​

GenericParticles ​

Ƭ GenericParticles: Particles<ParticlesOptions>

A type that matches any valid Particles object.

Defined in ​

profectus/src/features/particles/particles.tsx:63


Particles ​

Ƭ Particles<T>: Replace<T & BaseParticles, { classes: GetComputableType<T["classes"]> ; style: GetComputableType<T["style"]> }>

An object that represents a feature that display particle effects on the screen. The config should typically be gotten by designing the effect using the online particle effect editor and passing it into the upgradeConfig from @pixi/particle-emitter.

Type parameters ​

NameType
Textends ParticlesOptions

Defined in ​

profectus/src/features/particles/particles.tsx:54

Variables ​

ParticlesType ​

• Const ParticlesType: typeof ParticlesType

A symbol used to identify Particles features.

Defined in ​

profectus/src/features/particles/particles.tsx:12

Functions ​

createParticles ​

â–¸ createParticles<T>(optionsFunc?): Particles<T>

Lazily creates particles with the given options.

Type parameters ​

NameType
Textends ParticlesOptions

Parameters ​

NameTypeDescription
optionsFunc?OptionsFunc<T, BaseParticles, GenericParticles>Particles options.

Returns ​

Particles<T>

Defined in ​

profectus/src/features/particles/particles.tsx:69

Components ​

Particles Component ​

Props ​

NameType
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
onInit*(app: Application) => void
id*string
onContainerResized(rect: DOMRect) => void
onHotReloadVoidFunction
+ \ No newline at end of file diff --git a/api/modules/features/repeatable.html b/api/modules/features/repeatable.html index 50f953c9..87505eb8 100644 --- a/api/modules/features/repeatable.html +++ b/api/modules/features/repeatable.html @@ -5,12 +5,12 @@ Module: features/repeatable | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/repeatable ​

Interfaces ​

BaseRepeatable ​

• BaseRepeatable: Object

The properties that are added onto a processed RepeatableOptions to create a Repeatable.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
amountPersistent<DecimalSource>The current amount this repeatable has.
amountToIncreaseRef<DecimalSource>How much amount can be increased by, or 1 if unclickable. Capped at 1 if maximize is false.
canClickProcessedComputable<boolean>Whether or not this repeatable can be clicked.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
maxedRef<boolean>Whether or not this repeatable's amount is at it's limit.
onClick(event?: MouseEvent | TouchEvent) => voidA function that gets called when this repeatable is clicked.
typetypeof RepeatableTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/repeatable.tsx:78


RepeatableOptions ​

• RepeatableOptions: Object

An object that configures a Repeatable.

NameTypeDescription
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
display?Computable<RepeatableDisplay>The display to use for this repeatable.
initialAmount?DecimalSourceThe initial amount this repeatable has on a new save / after reset.
limit?Computable<DecimalSource>The maximum amount obtainable for this repeatable.
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
maximize?Computable<boolean>Whether or not clicking this repeatable should attempt to maximize amount based on the requirements met. Requires requirements to be a requirement or array of requirements with Requirement.canMaximize true.
requirementsRequirementsThe requirement(s) to increase this repeatable.
small?Computable<boolean>Toggles a smaller design for the feature.
style?Computable<StyleValue>CSS to apply to this feature.
visibility?Computable<boolean | Visibility>Whether this repeatable should be visible.

Defined in ​

profectus/src/features/repeatable.tsx:52

Type Aliases ​

GenericRepeatable ​

Ƭ GenericRepeatable: Replace<Repeatable<RepeatableOptions>, { limit: ProcessedComputable<DecimalSource> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Repeatable object.

Defined in ​

profectus/src/features/repeatable.tsx:119


Repeatable ​

Ƭ Repeatable<T>: Replace<T & BaseRepeatable, { classes: GetComputableType<T["classes"]> ; display: Ref<CoercableComponent> ; limit: GetComputableTypeWithDefault<T["limit"], default> ; mark: GetComputableType<T["mark"]> ; maximize: GetComputableType<T["maximize"]> ; requirements: GetComputableType<T["requirements"]> ; small: GetComputableType<T["small"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature with multiple "levels" with scaling requirements.

Type parameters ​

NameType
Textends RepeatableOptions

Defined in ​

profectus/src/features/repeatable.tsx:103


RepeatableDisplay ​

Ƭ RepeatableDisplay: CoercableComponent | { description?: CoercableComponent ; effectDisplay?: CoercableComponent ; showAmount?: boolean ; title?: CoercableComponent }

A type that can be used to customize the Repeatable display.

Defined in ​

profectus/src/features/repeatable.tsx:38

Variables ​

RepeatableType ​

• Const RepeatableType: typeof RepeatableType

A symbol used to identify Repeatable features.

Defined in ​

profectus/src/features/repeatable.tsx:35

Functions ​

createRepeatable ​

â–¸ createRepeatable<T>(optionsFunc): Repeatable<T>

Lazily creates a repeatable with the given options.

Type parameters ​
NameType
Textends RepeatableOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseRepeatable, GenericRepeatable>Repeatable options.
Returns ​

Repeatable<T>

Defined in ​

profectus/src/features/repeatable.tsx:131

- +
Skip to content
On this page

Module: features/repeatable ​

Interfaces ​

BaseRepeatable ​

• BaseRepeatable: Object

The properties that are added onto a processed RepeatableOptions to create a Repeatable.

Defined in ​

profectus/src/features/repeatable.tsx:78


RepeatableOptions ​

• RepeatableOptions: Object

An object that configures a Repeatable.

Defined in ​

profectus/src/features/repeatable.tsx:52

Type Aliases ​

GenericRepeatable ​

Ƭ GenericRepeatable: Replace<Repeatable<RepeatableOptions>, { limit: ProcessedComputable<DecimalSource> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Repeatable object.

Defined in ​

profectus/src/features/repeatable.tsx:119


Repeatable ​

Ƭ Repeatable<T>: Replace<T & BaseRepeatable, { classes: GetComputableType<T["classes"]> ; display: Ref<CoercableComponent> ; limit: GetComputableTypeWithDefault<T["limit"], default> ; mark: GetComputableType<T["mark"]> ; maximize: GetComputableType<T["maximize"]> ; requirements: GetComputableType<T["requirements"]> ; small: GetComputableType<T["small"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature with multiple "levels" with scaling requirements.

Type parameters ​

NameType
Textends RepeatableOptions

Defined in ​

profectus/src/features/repeatable.tsx:103


RepeatableDisplay ​

Ƭ RepeatableDisplay: CoercableComponent | { description?: CoercableComponent ; effectDisplay?: CoercableComponent ; showAmount?: boolean ; title?: CoercableComponent }

A type that can be used to customize the Repeatable display.

Defined in ​

profectus/src/features/repeatable.tsx:38

Variables ​

RepeatableType ​

• Const RepeatableType: typeof RepeatableType

A symbol used to identify Repeatable features.

Defined in ​

profectus/src/features/repeatable.tsx:35

Functions ​

createRepeatable ​

â–¸ createRepeatable<T>(optionsFunc): Repeatable<T>

Lazily creates a repeatable with the given options.

Type parameters ​

NameType
Textends RepeatableOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseRepeatable, GenericRepeatable>Repeatable options.

Returns ​

Repeatable<T>

Defined in ​

profectus/src/features/repeatable.tsx:131

+ \ No newline at end of file diff --git a/api/modules/features/reset.html b/api/modules/features/reset.html index 1e0e0526..3f8af98b 100644 --- a/api/modules/features/reset.html +++ b/api/modules/features/reset.html @@ -5,12 +5,12 @@ Module: features/reset | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/reset ​

Interfaces ​

BaseReset ​

• BaseReset: Object

The properties that are added onto a processed ResetOptions to create an Reset.

NameTypeDescription
idstringAn auto-generated ID for identifying which reset is being performed. Will not persist between refreshes or updates.
resetVoidFunctionTrigger the reset.
typetypeof ResetTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/reset.ts:30


ResetOptions ​

• ResetOptions: Object

An object that configures a Clickable.

NameTypeDescription
onReset?VoidFunctionA function that is called when the reset is performed.
thingsToResetComputable<Record<string, unknown>[]>List of things to reset. Can include objects which will be recursed over for persistent values.

Defined in ​

profectus/src/features/reset.ts:20

Type Aliases ​

GenericReset ​

Ƭ GenericReset: Reset<ResetOptions>

A type that matches any valid Reset object.

Defined in ​

profectus/src/features/reset.ts:48


Reset ​

Ƭ Reset<T>: Replace<T & BaseReset, { thingsToReset: GetComputableType<T["thingsToReset"]> }>

An object that represents a reset mechanic, which resets progress back to its initial state.

Type parameters ​

NameType
Textends ResetOptions

Defined in ​

profectus/src/features/reset.ts:40

Variables ​

ResetType ​

• Const ResetType: typeof ResetType

A symbol used to identify Reset features.

Defined in ​

profectus/src/features/reset.ts:15

Functions ​

createReset ​

â–¸ createReset<T>(optionsFunc): Reset<T>

Lazily creates a reset with the given options.

Type parameters ​
NameType
Textends ResetOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseReset, GenericReset>Reset options.
Returns ​

Reset<T>

Defined in ​

profectus/src/features/reset.ts:54


trackResetTime ​

â–¸ trackResetTime(layer, reset): Persistent<default>

Track the time since the specified reset last occured.

Parameters ​
NameTypeDescription
layerBaseLayerThe layer the reset is attached to
resetGenericResetThe reset mechanic to track the time since
Returns ​

Persistent<default>

Defined in ​

profectus/src/features/reset.ts:92

- +
Skip to content
On this page

Module: features/reset ​

Interfaces ​

BaseReset ​

• BaseReset: Object

The properties that are added onto a processed ResetOptions to create an Reset.

Defined in ​

profectus/src/features/reset.ts:30


ResetOptions ​

• ResetOptions: Object

An object that configures a Clickable.

Defined in ​

profectus/src/features/reset.ts:20

Type Aliases ​

GenericReset ​

Ƭ GenericReset: Reset<ResetOptions>

A type that matches any valid Reset object.

Defined in ​

profectus/src/features/reset.ts:48


Reset ​

Ƭ Reset<T>: Replace<T & BaseReset, { thingsToReset: GetComputableType<T["thingsToReset"]> }>

An object that represents a reset mechanic, which resets progress back to its initial state.

Type parameters ​

NameType
Textends ResetOptions

Defined in ​

profectus/src/features/reset.ts:40

Variables ​

ResetType ​

• Const ResetType: typeof ResetType

A symbol used to identify Reset features.

Defined in ​

profectus/src/features/reset.ts:15

Functions ​

createReset ​

â–¸ createReset<T>(optionsFunc): Reset<T>

Lazily creates a reset with the given options.

Type parameters ​

NameType
Textends ResetOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseReset, GenericReset>Reset options.

Returns ​

Reset<T>

Defined in ​

profectus/src/features/reset.ts:54


trackResetTime ​

â–¸ trackResetTime(layer, reset): Persistent<default>

Track the time since the specified reset last occured.

Parameters ​

NameTypeDescription
layerBaseLayerThe layer the reset is attached to
resetGenericResetThe reset mechanic to track the time since

Returns ​

Persistent<default>

Defined in ​

profectus/src/features/reset.ts:92

+ \ No newline at end of file diff --git a/api/modules/features/resource.html b/api/modules/features/resource.html index 9a3d01e8..32695956 100644 --- a/api/modules/features/resource.html +++ b/api/modules/features/resource.html @@ -5,12 +5,12 @@ Module: features/resources/resource | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/resources/resource ​

Interfaces ​

Resource ​

• Resource<T>: Object

An object that represents a named and quantifiable resource in the game.

Type parameters ​

NameType
TDecimalSource
NameTypeDescription
[RefSymbol]trueType differentiator only. We need this to be in public d.ts but don't want it to show up in IDE autocomplete, so we use a private Symbol instead.
displayNamestringThe name of this resource.
precisionnumberWhen displaying the value of this resource, how many significant digits to display.
small?booleanWhether or not to display very small values using scientific notation, or rounding to 0.
valueT-

Defined in ​

profectus/src/features/resources/resource.ts:12

Functions ​

createResource ​

â–¸ createResource<T>(defaultValue, displayName?, precision?, small?): Resource<T> & Persistent<T> & { [NonPersistent]: Resource<T> }

Creates a resource.

Type parameters ​
NameType
Textends State
Parameters ​
NameTypeDescription
defaultValueTThe initial value of the resource
displayName?stringThe human readable name of this resource
precision?numberThe number of significant digits to display by default
small?booleanWhether or not to display very small values or round to 0, by default
Returns ​

Resource<T> & Persistent<T> & { [NonPersistent]: Resource<T> }

Other signatures ​

â–¸ createResource<T>(defaultValue, displayName?, precision?, small?): Resource<T>

NameType
defaultValueRef<T>
displayName?string
precision?number
small?boolean

Defined in ​

profectus/src/features/resources/resource.ts:28

profectus/src/features/resources/resource.ts:34

profectus/src/features/resources/resource.ts:40


displayResource ​

â–¸ displayResource(resource, overrideAmount?): string

Utility for displaying a resource with the correct precision.

Parameters ​
NameType
resourceResource<DecimalSource>
overrideAmount?DecimalSource
Returns ​

string

Defined in ​

profectus/src/features/resources/resource.ts:153


trackBest ​

â–¸ trackBest(resource): Ref<DecimalSource>

Returns a reference to the highest amount of the resource ever owned, which is updated automatically.

Parameters ​
NameType
resourceResource<DecimalSource>
Returns ​

Ref<DecimalSource>

Defined in ​

profectus/src/features/resources/resource.ts:64


trackOOMPS ​

â–¸ trackOOMPS(resource, pointGain?): Ref<string>

Returns a reference to the amount of resource being gained in terms of orders of magnitude per second, calcualted over the last tick. Useful for situations where the gain rate is increasing very rapidly.

Parameters ​
NameType
resourceResource<DecimalSource>
pointGain?ComputedRef<DecimalSource>
Returns ​

Ref<string>

Defined in ​

profectus/src/features/resources/resource.ts:94


trackTotal ​

â–¸ trackTotal(resource): Ref<DecimalSource>

Returns a reference to the total amount of the resource gained, updated automatically. "Refunds" count as gain.

Parameters ​
NameType
resourceResource<DecimalSource>
Returns ​

Ref<DecimalSource>

Defined in ​

profectus/src/features/resources/resource.ts:78


unwrapResource ​

â–¸ unwrapResource(resource): Resource

Utility for unwrapping a resource that may or may not be inside a ref.

Parameters ​
NameType
resourceProcessedComputable<Resource<DecimalSource>>
Returns ​

Resource

Defined in ​

profectus/src/features/resources/resource.ts:162

Components ​

MainDisplay Component ​

Props ​

NameType
resource*Resource
colorstring
classesRecord
styleStyleValue
effectDisplayCoercableComponent

Resource Component ​

Props ​

NameType
resource*Resource
color*string
- +
Skip to content
On this page

Module: features/resources/resource ​

Interfaces ​

Resource ​

• Resource<T>: Object

An object that represents a named and quantifiable resource in the game.

Type parameters ​

NameType
TDecimalSource

Defined in ​

profectus/src/features/resources/resource.ts:12

Functions ​

createResource ​

â–¸ createResource<T>(defaultValue, displayName?, precision?, small?): Resource<T> & Persistent<T> & { [NonPersistent]: Resource<T> }

Creates a resource.

Type parameters ​

NameType
Textends State

Parameters ​

NameTypeDescription
defaultValueTThe initial value of the resource
displayName?stringThe human readable name of this resource
precision?numberThe number of significant digits to display by default
small?booleanWhether or not to display very small values or round to 0, by default

Returns ​

Resource<T> & Persistent<T> & { [NonPersistent]: Resource<T> }

Defined in ​

profectus/src/features/resources/resource.ts:28

â–¸ createResource<T>(defaultValue, displayName?, precision?, small?): Resource<T>

Type parameters ​

NameType
Textends State

Parameters ​

NameType
defaultValueRef<T>
displayName?string
precision?number
small?boolean

Returns ​

Resource<T>

Defined in ​

profectus/src/features/resources/resource.ts:34


displayResource ​

â–¸ displayResource(resource, overrideAmount?): string

Utility for displaying a resource with the correct precision.

Parameters ​

NameType
resourceResource<DecimalSource>
overrideAmount?DecimalSource

Returns ​

string

Defined in ​

profectus/src/features/resources/resource.ts:153


trackBest ​

â–¸ trackBest(resource): Ref<DecimalSource>

Returns a reference to the highest amount of the resource ever owned, which is updated automatically.

Parameters ​

NameType
resourceResource<DecimalSource>

Returns ​

Ref<DecimalSource>

Defined in ​

profectus/src/features/resources/resource.ts:64


trackOOMPS ​

â–¸ trackOOMPS(resource, pointGain?): Ref<string>

Returns a reference to the amount of resource being gained in terms of orders of magnitude per second, calcualted over the last tick. Useful for situations where the gain rate is increasing very rapidly.

Parameters ​

NameType
resourceResource<DecimalSource>
pointGain?ComputedRef<DecimalSource>

Returns ​

Ref<string>

Defined in ​

profectus/src/features/resources/resource.ts:94


trackTotal ​

â–¸ trackTotal(resource): Ref<DecimalSource>

Returns a reference to the total amount of the resource gained, updated automatically. "Refunds" count as gain.

Parameters ​

NameType
resourceResource<DecimalSource>

Returns ​

Ref<DecimalSource>

Defined in ​

profectus/src/features/resources/resource.ts:78


unwrapResource ​

â–¸ unwrapResource(resource): Resource

Utility for unwrapping a resource that may or may not be inside a ref.

Parameters ​

NameType
resourceProcessedComputable<Resource<DecimalSource>>

Returns ​

Resource

Defined in ​

profectus/src/features/resources/resource.ts:162

Components ​

MainDisplay Component ​

Props ​

NameType
resource*Resource
colorstring
classesRecord
styleStyleValue
effectDisplayCoercableComponent

Resource Component ​

Props ​

NameType
resource*Resource
color*string
+ \ No newline at end of file diff --git a/api/modules/features/tabs/tab.html b/api/modules/features/tabs/tab.html index 3fd30459..eeca9e04 100644 --- a/api/modules/features/tabs/tab.html +++ b/api/modules/features/tabs/tab.html @@ -5,12 +5,12 @@ Module: features/tabs/tab | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/tabs/tab ​

Interfaces ​

BaseTab ​

• BaseTab: Object

The properties that are added onto a processed TabOptions to create an Tab.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
typetypeof TabTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/tabs/tab.ts:31


TabOptions ​

• TabOptions: Object

An object that configures a Tab.

NameTypeDescription
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
displayComputable<CoercableComponent>The display to use for this tab.
style?Computable<StyleValue>CSS to apply to this feature.

Defined in ​

profectus/src/features/tabs/tab.ts:19

Type Aliases ​

GenericTab ​

Ƭ GenericTab: Tab<TabOptions>

A type that matches any valid Tab object.

Defined in ​

profectus/src/features/tabs/tab.ts:56


Tab ​

Ƭ Tab<T>: Replace<T & BaseTab, { classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; style: GetComputableType<T["style"]> }>

An object representing a tab of content in a tabbed interface.

See

TabFamily

Type parameters ​

NameType
Textends TabOptions

Defined in ​

profectus/src/features/tabs/tab.ts:46

Variables ​

TabType ​

• Const TabType: typeof TabType

A symbol used to identify Tab features.

Defined in ​

profectus/src/features/tabs/tab.ts:14

Functions ​

createTab ​

â–¸ createTab<T>(optionsFunc): Tab<T>

Lazily creates a tab with the given options.

Type parameters ​
NameType
Textends TabOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseTab, GenericTab>Tab options.
Returns ​

Tab<T>

Defined in ​

profectus/src/features/tabs/tab.ts:62

- +
Skip to content
On this page

Module: features/tabs/tab ​

Interfaces ​

BaseTab ​

• BaseTab: Object

The properties that are added onto a processed TabOptions to create an Tab.

Defined in ​

profectus/src/features/tabs/tab.ts:31


TabOptions ​

• TabOptions: Object

An object that configures a Tab.

Defined in ​

profectus/src/features/tabs/tab.ts:19

Type Aliases ​

GenericTab ​

Ƭ GenericTab: Tab<TabOptions>

A type that matches any valid Tab object.

Defined in ​

profectus/src/features/tabs/tab.ts:56


Tab ​

Ƭ Tab<T>: Replace<T & BaseTab, { classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; style: GetComputableType<T["style"]> }>

An object representing a tab of content in a tabbed interface.

See

TabFamily

Type parameters ​

NameType
Textends TabOptions

Defined in ​

profectus/src/features/tabs/tab.ts:46

Variables ​

TabType ​

• Const TabType: typeof TabType

A symbol used to identify Tab features.

Defined in ​

profectus/src/features/tabs/tab.ts:14

Functions ​

createTab ​

â–¸ createTab<T>(optionsFunc): Tab<T>

Lazily creates a tab with the given options.

Type parameters ​

NameType
Textends TabOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseTab, GenericTab>Tab options.

Returns ​

Tab<T>

Defined in ​

profectus/src/features/tabs/tab.ts:62

+ \ No newline at end of file diff --git a/api/modules/features/tabs/tabFamily.html b/api/modules/features/tabs/tabFamily.html index 2e7028ed..d0b78b99 100644 --- a/api/modules/features/tabs/tabFamily.html +++ b/api/modules/features/tabs/tabFamily.html @@ -5,12 +5,12 @@ Module: features/tabs/tabFamily | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/tabs/tabFamily ​

Interfaces ​

BaseTabButton ​

• BaseTabButton: Object

The properties that are added onto a processed TabButtonOptions to create an TabButton.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
typetypeof TabButtonTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:58


BaseTabFamily ​

• BaseTabFamily: Object

The properties that are added onto a processed TabFamilyOptions to create an TabFamily.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
activeTabRef<null | CoercableComponent | GenericTab>The currently active tab, if any.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
selectedPersistent<string>The name of the tab that is currently active.
tabsRecord<string, TabButtonOptions>All the tabs within this family.
typetypeof TabFamilyTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:108


TabButtonOptions ​

• TabButtonOptions: Object

An object that configures a TabButton.

NameTypeDescription
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
displayComputable<CoercableComponent>The label on this button.
glowColor?Computable<string>The color of the glow effect to display when this button is active.
style?Computable<StyleValue>CSS to apply to this feature.
tabComputable<CoercableComponent | GenericTab>The tab to display when this button is clicked.
visibility?Computable<boolean | Visibility>Whether this tab button should be visible.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:40


TabFamilyOptions ​

• TabFamilyOptions: Object

An object that configures a TabFamily.

NameTypeDescription
buttonContainerClasses?Computable<Record<string, boolean>>A dictionary of CSS classes to apply to the list of buttons for changing tabs.
buttonContainerStyle?Computable<StyleValue>CSS to apply to the list of buttons for changing tabs.
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
style?Computable<StyleValue>CSS to apply to this feature.
visibility?Computable<boolean | Visibility>Whether this tab button should be visible.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:92

Type Aliases ​

GenericTabButton ​

Ƭ GenericTabButton: Replace<TabButton<TabButtonOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid TabButton object.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:82


GenericTabFamily ​

Ƭ GenericTabFamily: Replace<TabFamily<TabFamilyOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid TabFamily object.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:138


TabButton ​

Ƭ TabButton<T>: Replace<T & BaseTabButton, { classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; glowColor: GetComputableType<T["glowColor"]> ; style: GetComputableType<T["style"]> ; tab: GetComputableType<T["tab"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a button that can be clicked to change tabs in a tabbed interface.

See

TabFamily

Type parameters ​

NameType
Textends TabButtonOptions

Defined in ​

profectus/src/features/tabs/tabFamily.ts:69


TabFamily ​

Ƭ TabFamily<T>: Replace<T & BaseTabFamily, { tabs: Record<string, GenericTabButton> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a tabbed interface.

See

TabFamily

Type parameters ​

NameType
Textends TabFamilyOptions

Defined in ​

profectus/src/features/tabs/tabFamily.ts:129

Variables ​

TabButtonType ​

• Const TabButtonType: typeof TabButtonType

A symbol used to identify TabButton features.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:33


TabFamilyType ​

• Const TabFamilyType: typeof TabFamilyType

A symbol used to identify TabFamily features.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:35

Functions ​

createTabFamily ​

â–¸ createTabFamily<T>(tabs, optionsFunc?): TabFamily<T>

Lazily creates a tab family with the given options.

Type parameters ​
NameType
Textends TabFamilyOptions
Parameters ​
NameTypeDescription
tabsRecord<string, () => TabButtonOptions>-
optionsFunc?OptionsFunc<T, BaseTabFamily, GenericTabFamily>Tab family options.
Returns ​

TabFamily<T>

Defined in ​

profectus/src/features/tabs/tabFamily.ts:149

- +
Skip to content
On this page

Module: features/tabs/tabFamily ​

Interfaces ​

BaseTabButton ​

• BaseTabButton: Object

The properties that are added onto a processed TabButtonOptions to create an TabButton.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:58


BaseTabFamily ​

• BaseTabFamily: Object

The properties that are added onto a processed TabFamilyOptions to create an TabFamily.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:108


TabButtonOptions ​

• TabButtonOptions: Object

An object that configures a TabButton.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:40


TabFamilyOptions ​

• TabFamilyOptions: Object

An object that configures a TabFamily.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:92

Type Aliases ​

GenericTabButton ​

Ƭ GenericTabButton: Replace<TabButton<TabButtonOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid TabButton object.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:82


GenericTabFamily ​

Ƭ GenericTabFamily: Replace<TabFamily<TabFamilyOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid TabFamily object.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:138


TabButton ​

Ƭ TabButton<T>: Replace<T & BaseTabButton, { classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; glowColor: GetComputableType<T["glowColor"]> ; style: GetComputableType<T["style"]> ; tab: GetComputableType<T["tab"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a button that can be clicked to change tabs in a tabbed interface.

See

TabFamily

Type parameters ​

NameType
Textends TabButtonOptions

Defined in ​

profectus/src/features/tabs/tabFamily.ts:69


TabFamily ​

Ƭ TabFamily<T>: Replace<T & BaseTabFamily, { tabs: Record<string, GenericTabButton> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a tabbed interface.

See

TabFamily

Type parameters ​

NameType
Textends TabFamilyOptions

Defined in ​

profectus/src/features/tabs/tabFamily.ts:129

Variables ​

TabButtonType ​

• Const TabButtonType: typeof TabButtonType

A symbol used to identify TabButton features.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:33


TabFamilyType ​

• Const TabFamilyType: typeof TabFamilyType

A symbol used to identify TabFamily features.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:35

Functions ​

createTabFamily ​

â–¸ createTabFamily<T>(tabs, optionsFunc?): TabFamily<T>

Lazily creates a tab family with the given options.

Type parameters ​

NameType
Textends TabFamilyOptions

Parameters ​

NameTypeDescription
tabsRecord<string, () => TabButtonOptions>-
optionsFunc?OptionsFunc<T, BaseTabFamily, GenericTabFamily>Tab family options.

Returns ​

TabFamily<T>

Defined in ​

profectus/src/features/tabs/tabFamily.ts:149

+ \ No newline at end of file diff --git a/api/modules/features/tooltip.html b/api/modules/features/tooltip.html index 5cd43736..d052c7de 100644 --- a/api/modules/features/tooltip.html +++ b/api/modules/features/tooltip.html @@ -5,12 +5,12 @@ Module: features/tooltips/tooltip | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/tooltips/tooltip ​

Interfaces ​

BaseTooltip ​

• BaseTooltip: Object

The properties that are added onto a processed TooltipOptions to create an Tooltip.

NameType
pinned?Ref<boolean>

Defined in ​

profectus/src/features/tooltips/tooltip.ts:47


TooltipOptions ​

• TooltipOptions: Object

An object that configures a Tooltip.

NameTypeDescription
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
direction?Computable<Direction>The direction in which to display the tooltip
displayComputable<CoercableComponent>The text to display inside the tooltip.
pinnable?booleanWhether or not this tooltip can be pinned, meaning it'll stay visible even when not hovered.
style?Computable<StyleValue>CSS to apply to this feature.
xoffset?Computable<string>The x offset of the tooltip, in px.
yoffset?Computable<string>The y offset of the tooltip, in px.

Defined in ​

profectus/src/features/tooltips/tooltip.ts:27

Type Aliases ​

GenericTooltip ​

Ƭ GenericTooltip: Replace<Tooltip<TooltipOptions>, { direction: ProcessedComputable<Direction> ; pinnable: boolean ; pinned: Ref<boolean> | undefined }>

A type that matches any valid Tooltip object.

Defined in ​

profectus/src/features/tooltips/tooltip.ts:67


Tooltip ​

Ƭ Tooltip<T>: Replace<T & BaseTooltip, { classes: GetComputableType<T["classes"]> ; direction: GetComputableTypeWithDefault<T["direction"], Up> ; display: GetComputableType<T["display"]> ; pinnable: T["pinnable"] extends undefined ? false : T["pinnable"] ; pinned: T["pinnable"] extends true ? Ref<boolean> : undefined ; style: GetComputableType<T["style"]> ; xoffset: GetComputableType<T["xoffset"]> ; yoffset: GetComputableType<T["yoffset"]> }>

An object that represents a tooltip that appears when hovering over an element.

Type parameters ​

NameType
Textends TooltipOptions

Defined in ​

profectus/src/features/tooltips/tooltip.ts:52

Functions ​

addTooltip ​

â–¸ addTooltip<T>(element, options): Tooltip<T>

Creates a tooltip on the given element with the given options.

Type parameters ​
NameType
Textends TooltipOptions
Parameters ​
NameTypeDescription
elementVueFeatureThe renderable feature to display the tooltip on.
optionsT & ThisType<Tooltip<T>> & Partial<BaseTooltip>Tooltip options.
Returns ​

Tooltip<T>

Defined in ​

profectus/src/features/tooltips/tooltip.ts:81

Components ​

Tooltip Component ​

Props ​

NameType
elementVueFeature
display*processedPropType<CoercableComponent>(Object, String, Function)
styleprocessedPropType<StyleValue>(Object, String, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
directionprocessedPropType<Direction>(String)
xoffsetprocessedPropType<string>(String)
yoffsetprocessedPropType<string>(String)
pinnedPersistent<boolean>

Slots ​

Name
default
- +
Skip to content
On this page

Module: features/tooltips/tooltip ​

Interfaces ​

BaseTooltip ​

• BaseTooltip: Object

The properties that are added onto a processed TooltipOptions to create an Tooltip.

Defined in ​

profectus/src/features/tooltips/tooltip.ts:47


TooltipOptions ​

• TooltipOptions: Object

An object that configures a Tooltip.

Defined in ​

profectus/src/features/tooltips/tooltip.ts:27

Type Aliases ​

GenericTooltip ​

Ƭ GenericTooltip: Replace<Tooltip<TooltipOptions>, { direction: ProcessedComputable<Direction> ; pinnable: boolean ; pinned: Ref<boolean> | undefined }>

A type that matches any valid Tooltip object.

Defined in ​

profectus/src/features/tooltips/tooltip.ts:67


Tooltip ​

Ƭ Tooltip<T>: Replace<T & BaseTooltip, { classes: GetComputableType<T["classes"]> ; direction: GetComputableTypeWithDefault<T["direction"], Up> ; display: GetComputableType<T["display"]> ; pinnable: T["pinnable"] extends undefined ? false : T["pinnable"] ; pinned: T["pinnable"] extends true ? Ref<boolean> : undefined ; style: GetComputableType<T["style"]> ; xoffset: GetComputableType<T["xoffset"]> ; yoffset: GetComputableType<T["yoffset"]> }>

An object that represents a tooltip that appears when hovering over an element.

Type parameters ​

NameType
Textends TooltipOptions

Defined in ​

profectus/src/features/tooltips/tooltip.ts:52

Functions ​

addTooltip ​

â–¸ addTooltip<T>(element, options): Tooltip<T>

Creates a tooltip on the given element with the given options.

Type parameters ​

NameType
Textends TooltipOptions

Parameters ​

NameTypeDescription
elementVueFeatureThe renderable feature to display the tooltip on.
optionsT & ThisType<Tooltip<T>> & Partial<BaseTooltip>Tooltip options.

Returns ​

Tooltip<T>

Defined in ​

profectus/src/features/tooltips/tooltip.ts:81

Components ​

Tooltip Component ​

Props ​

NameType
elementVueFeature
display*processedPropType<CoercableComponent>(Object, String, Function)
styleprocessedPropType<StyleValue>(Object, String, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
directionprocessedPropType<Direction>(String)
xoffsetprocessedPropType<string>(String)
yoffsetprocessedPropType<string>(String)
pinnedPersistent<boolean>

Slots ​

Name
default
+ \ No newline at end of file diff --git a/api/modules/features/tree.html b/api/modules/features/tree.html index 3f69840e..a637f1f5 100644 --- a/api/modules/features/tree.html +++ b/api/modules/features/tree.html @@ -5,12 +5,12 @@ Module: features/trees/tree | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/trees/tree ​

Interfaces ​

BaseTree ​

• BaseTree: Object

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
isResettingRef<boolean>A flag that is true while the reset is still propagating through the tree.
linksRef<Link[]>The link objects for each of the branches of the tree.
reset(node: GenericTreeNode) => voidCause a reset on this node and propagate it through the tree according to resetPropagation.
resettingNodeRef<null | GenericTreeNode>A reference to the node that caused the currently propagating reset.
typetypeof TreeTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/trees/tree.ts:199


BaseTreeNode ​

• BaseTreeNode: Object

The properties that are added onto a processed TreeNodeOptions to create an TreeNode.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
typetypeof TreeNodeTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/trees/tree.ts:64


TreeBranch ​

• TreeBranch: Object

Represents a branch between two nodes in a tree.

NameTypeDescription
accent-height?Numberish-
accumulate?"none" | "sum"-
additive?"sum" | "replace"-
alignment-baseline?"alphabetic" | "hanging" | "ideographic" | "mathematical" | "auto" | "baseline" | "before-edge" | "text-before-edge" | "middle" | "central" | "after-edge" | "text-after-edge" | "inherit"-
allowReorder?"no" | "yes"-
alphabetic?Numberish-
amplitude?Numberish-
arabic-form?"initial" | "medial" | "terminal" | "isolated"-
aria-activedescendant?stringIdentifies the currently active element when DOM focus is on a composite widget, textbox, group, or application.
aria-atomic?BooleanishIndicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute.
aria-autocomplete?"none" | "inline" | "list" | "both"Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be presented if they are made.
aria-busy?BooleanishIndicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user.
aria-checked?Booleanish | "mixed"Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. See - aria-pressed - aria-selected.
aria-colcount?NumberishDefines the total number of columns in a table, grid, or treegrid. See aria-colindex.
aria-colindex?NumberishDefines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid. See - aria-colcount - aria-colspan.
aria-colspan?NumberishDefines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid. See - aria-colindex - aria-rowspan.
aria-controls?stringIdentifies the element (or elements) whose contents or presence are controlled by the current element. See aria-owns.
aria-current?"time" | Booleanish | "page" | "step" | "location" | "date"Indicates the element that represents the current item within a container or set of related elements.
aria-describedby?stringIdentifies the element (or elements) that describes the object. See aria-labelledby
aria-details?stringIdentifies the element that provides a detailed, extended description for the object. See aria-describedby.
aria-disabled?BooleanishIndicates that the element is perceivable but disabled, so it is not editable or otherwise operable. See - aria-hidden - aria-readonly.
aria-dropeffect?"none" | "copy" | "execute" | "link" | "move" | "popup"Indicates what functions can be performed when a dragged object is released on the drop target. Deprecated in ARIA 1.1
aria-errormessage?stringIdentifies the element that provides an error message for the object. See - aria-invalid - aria-describedby.
aria-expanded?BooleanishIndicates whether the element, or another grouping element it controls, is currently expanded or collapsed.
aria-flowto?stringIdentifies the next element (or elements) in an alternate reading order of content which, at the user's discretion, allows assistive technology to override the general default of reading in document source order.
aria-grabbed?BooleanishIndicates an element's "grabbed" state in a drag-and-drop operation. Deprecated in ARIA 1.1
aria-haspopup?"tree" | Booleanish | "menu" | "listbox" | "grid" | "dialog"Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element.
aria-hidden?BooleanishIndicates whether the element is exposed to an accessibility API. See aria-disabled.
aria-invalid?Booleanish | "grammar" | "spelling"Indicates the entered value does not conform to the format expected by the application. See aria-errormessage.
aria-keyshortcuts?stringIndicates keyboard shortcuts that an author has implemented to activate or give focus to an element.
aria-label?stringDefines a string value that labels the current element. See aria-labelledby.
aria-labelledby?stringIdentifies the element (or elements) that labels the current element. See aria-describedby.
aria-level?NumberishDefines the hierarchical level of an element within a structure.
aria-live?"off" | "assertive" | "polite"Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region.
aria-modal?BooleanishIndicates whether an element is modal when displayed.
aria-multiline?BooleanishIndicates whether a text box accepts multiple lines of input or only a single line.
aria-multiselectable?BooleanishIndicates that the user may select more than one item from the current selectable descendants.
aria-orientation?"horizontal" | "vertical"Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous.
aria-owns?stringIdentifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship between DOM elements where the DOM hierarchy cannot be used to represent the relationship. See aria-controls.
aria-placeholder?stringDefines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. A hint could be a sample value or a brief description of the expected format.
aria-posinset?NumberishDefines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. See aria-setsize.
aria-pressed?Booleanish | "mixed"Indicates the current "pressed" state of toggle buttons. See - aria-checked - aria-selected.
aria-readonly?BooleanishIndicates that the element is not editable, but is otherwise operable. See aria-disabled.
aria-relevant?"additions" | "additions text" | "all" | "removals" | "text"Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. See aria-atomic.
aria-required?BooleanishIndicates that user input is required on the element before a form may be submitted.
aria-roledescription?stringDefines a human-readable, author-localized description for the role of an element.
aria-rowcount?NumberishDefines the total number of rows in a table, grid, or treegrid. See aria-rowindex.
aria-rowindex?NumberishDefines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid. See - aria-rowcount - aria-rowspan.
aria-rowspan?NumberishDefines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid. See - aria-rowindex - aria-colspan.
aria-selected?BooleanishIndicates the current "selected" state of various widgets. See - aria-checked - aria-pressed.
aria-setsize?NumberishDefines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. See aria-posinset.
aria-sort?"none" | "ascending" | "descending" | "other"Indicates if items in a table or grid are sorted in ascending or descending order.
aria-valuemax?NumberishDefines the maximum allowed value for a range widget.
aria-valuemin?NumberishDefines the minimum allowed value for a range widget.
aria-valuenow?NumberishDefines the current value for a range widget. See aria-valuetext.
aria-valuetext?stringDefines the human readable text alternative of aria-valuenow for a range widget.
ascent?Numberish-
attributeName?string-
attributeType?string-
autoReverse?Numberish-
azimuth?Numberish-
baseFrequency?Numberish-
baseProfile?Numberish-
baseline-shift?Numberish-
bbox?Numberish-
begin?Numberish-
bias?Numberish-
by?Numberish-
calcMode?Numberish-
cap-height?Numberish-
class?anySVG Styling Attributes See https://www.w3.org/TR/SVG/styling.html#ElementSpecificStyling
clip?Numberish-
clip-path?string-
clip-rule?Numberish-
clipPathUnits?Numberish-
color?string-
color-interpolation?Numberish-
color-interpolation-filters?"auto" | "inherit" | "sRGB" | "linearRGB"-
color-profile?Numberish-
color-rendering?Numberish-
contentScriptType?Numberish-
contentStyleType?Numberish-
cursor?Numberish-
cx?Numberish-
cy?Numberish-
d?string-
decelerate?Numberish-
descent?Numberish-
diffuseConstant?Numberish-
direction?Numberish-
display?Numberish-
divisor?Numberish-
dominant-baseline?Numberish-
dur?Numberish-
dx?Numberish-
dy?Numberish-
edgeMode?Numberish-
elevation?Numberish-
enable-background?Numberish-
end?Numberish-
endNodeGenericTreeNode-
exponent?Numberish-
externalResourcesRequired?Numberish-
fill?string-
fill-opacity?Numberish-
fill-rule?"inherit" | "nonzero" | "evenodd"-
filter?string-
filterRes?Numberish-
filterUnits?Numberish-
flood-color?Numberish-
flood-opacity?Numberish-
focusable?Numberish-
font-family?string-
font-size?Numberish-
font-size-adjust?Numberish-
font-stretch?Numberish-
font-style?Numberish-
font-variant?Numberish-
font-weight?Numberish-
format?Numberish-
from?Numberish-
fx?Numberish-
fy?Numberish-
g1?Numberish-
g2?Numberish-
glyph-name?Numberish-
glyph-orientation-horizontal?Numberish-
glyph-orientation-vertical?Numberish-
glyphRef?Numberish-
gradientTransform?string-
gradientUnits?string-
hanging?Numberish-
height?Numberish-
horiz-adv-x?Numberish-
horiz-origin-x?Numberish-
href?string-
id?string-
ideographic?Numberish-
image-rendering?Numberish-
in?string-
in2?Numberish-
innerHTML?string-
intercept?Numberish-
k?Numberish-
k1?Numberish-
k2?Numberish-
k3?Numberish-
k4?Numberish-
kernelMatrix?Numberish-
kernelUnitLength?Numberish-
kerning?Numberish-
keyPoints?Numberish-
keySplines?Numberish-
keyTimes?Numberish-
lang?string-
lengthAdjust?Numberish-
letter-spacing?Numberish-
lighting-color?Numberish-
limitingConeAngle?Numberish-
local?Numberish-
marker-end?string-
marker-mid?string-
marker-start?string-
markerHeight?Numberish-
markerUnits?Numberish-
markerWidth?Numberish-
mask?string-
maskContentUnits?Numberish-
maskUnits?Numberish-
mathematical?Numberish-
max?Numberish-
media?string-
method?string-
min?Numberish-
mode?Numberish-
name?string-
numOctaves?Numberish-
offset?Numberish-
offsetEnd?Position-
offsetStart?Position-
onAbort?(payload: Event) => void-
onAnimationend?(payload: AnimationEvent) => void-
onAnimationiteration?(payload: AnimationEvent) => void-
onAnimationstart?(payload: AnimationEvent) => void-
onAuxclick?(payload: MouseEvent) => void-
onBeforeinput?(payload: Event) => void-
onBlur?(payload: FocusEvent) => void-
onCanplay?(payload: Event) => void-
onCanplaythrough?(payload: Event) => void-
onChange?(payload: Event) => void-
onClick?(payload: MouseEvent) => void-
onCompositionend?(payload: CompositionEvent) => void-
onCompositionstart?(payload: CompositionEvent) => void-
onCompositionupdate?(payload: CompositionEvent) => void-
onContextmenu?(payload: MouseEvent) => void-
onCopy?(payload: ClipboardEvent) => void-
onCut?(payload: ClipboardEvent) => void-
onDblclick?(payload: MouseEvent) => void-
onDrag?(payload: DragEvent) => void-
onDragend?(payload: DragEvent) => void-
onDragenter?(payload: DragEvent) => void-
onDragexit?(payload: DragEvent) => void-
onDragleave?(payload: DragEvent) => void-
onDragover?(payload: DragEvent) => void-
onDragstart?(payload: DragEvent) => void-
onDrop?(payload: DragEvent) => void-
onDurationchange?(payload: Event) => void-
onEmptied?(payload: Event) => void-
onEncrypted?(payload: Event) => void-
onEnded?(payload: Event) => void-
onError?(payload: Event) => void-
onFocus?(payload: FocusEvent) => void-
onFocusin?(payload: FocusEvent) => void-
onFocusout?(payload: FocusEvent) => void-
onInput?(payload: Event) => void-
onInvalid?(payload: Event) => void-
onKeydown?(payload: KeyboardEvent) => void-
onKeypress?(payload: KeyboardEvent) => void-
onKeyup?(payload: KeyboardEvent) => void-
onLoad?(payload: Event) => void-
onLoadeddata?(payload: Event) => void-
onLoadedmetadata?(payload: Event) => void-
onLoadstart?(payload: Event) => void-
onMousedown?(payload: MouseEvent) => void-
onMouseenter?(payload: MouseEvent) => void-
onMouseleave?(payload: MouseEvent) => void-
onMousemove?(payload: MouseEvent) => void-
onMouseout?(payload: MouseEvent) => void-
onMouseover?(payload: MouseEvent) => void-
onMouseup?(payload: MouseEvent) => void-
onPaste?(payload: ClipboardEvent) => void-
onPause?(payload: Event) => void-
onPlay?(payload: Event) => void-
onPlaying?(payload: Event) => void-
onPointercancel?(payload: PointerEvent) => void-
onPointerdown?(payload: PointerEvent) => void-
onPointerenter?(payload: PointerEvent) => void-
onPointerleave?(payload: PointerEvent) => void-
onPointermove?(payload: PointerEvent) => void-
onPointerout?(payload: PointerEvent) => void-
onPointerover?(payload: PointerEvent) => void-
onPointerup?(payload: PointerEvent) => void-
onProgress?(payload: Event) => void-
onRatechange?(payload: Event) => void-
onReset?(payload: Event) => void-
onScroll?(payload: UIEvent) => void-
onSeeked?(payload: Event) => void-
onSeeking?(payload: Event) => void-
onSelect?(payload: Event) => void-
onStalled?(payload: Event) => void-
onSubmit?(payload: Event) => void-
onSuspend?(payload: Event) => void-
onTimeupdate?(payload: Event) => void-
onTouchcancel?(payload: TouchEvent) => void-
onTouchend?(payload: TouchEvent) => void-
onTouchmove?(payload: TouchEvent) => void-
onTouchstart?(payload: TouchEvent) => void-
onTransitionend?(payload: TransitionEvent) => void-
onTransitionstart?(payload: TransitionEvent) => void-
onVolumechange?(payload: Event) => void-
onWaiting?(payload: Event) => void-
onWheel?(payload: WheelEvent) => void-
opacity?Numberish-
operator?Numberish-
order?Numberish-
orient?Numberish-
orientation?Numberish-
origin?Numberish-
overflow?Numberish-
overline-position?Numberish-
overline-thickness?Numberish-
paint-order?Numberish-
panose-1?Numberish-
pathLength?Numberish-
patternContentUnits?string-
patternTransform?Numberish-
patternUnits?string-
pointer-events?Numberish-
points?string-
pointsAtX?Numberish-
pointsAtY?Numberish-
pointsAtZ?Numberish-
preserveAlpha?Numberish-
preserveAspectRatio?string-
primitiveUnits?Numberish-
r?Numberish-
radius?Numberish-
refX?Numberish-
refY?Numberish-
renderingIntent?Numberish-
repeatCount?Numberish-
repeatDur?Numberish-
requiredExtensions?Numberish-
requiredFeatures?Numberish-
restart?Numberish-
result?string-
role?string-
rotate?Numberish-
rx?Numberish-
ry?Numberish-
scale?Numberish-
seed?Numberish-
shape-rendering?Numberish-
slope?Numberish-
spacing?Numberish-
specularConstant?Numberish-
specularExponent?Numberish-
speed?Numberish-
spreadMethod?string-
startNodeGenericTreeNode-
startOffset?Numberish-
stdDeviation?Numberish-
stemh?Numberish-
stemv?Numberish-
stitchTiles?Numberish-
stop-color?string-
stop-opacity?Numberish-
strikethrough-position?Numberish-
strikethrough-thickness?Numberish-
string?Numberish-
stroke?string-
stroke-dasharray?Numberish-
stroke-dashoffset?Numberish-
stroke-linecap?"inherit" | "butt" | "round" | "square"-
stroke-linejoin?"inherit" | "round" | "miter" | "bevel"-
stroke-miterlimit?Numberish-
stroke-opacity?Numberish-
stroke-width?Numberish-
style?string | CSSProperties-
surfaceScale?Numberish-
systemLanguage?Numberish-
tabindex?Numberish-
tableValues?Numberish-
target?string-
targetX?Numberish-
targetY?Numberish-
text-anchor?string-
text-decoration?Numberish-
text-rendering?Numberish-
textLength?Numberish-
to?Numberish-
transform?string-
type?string-
u1?Numberish-
u2?Numberish-
underline-position?Numberish-
underline-thickness?Numberish-
unicode?Numberish-
unicode-bidi?Numberish-
unicode-range?Numberish-
unitsPer-em?Numberish-
v-alphabetic?Numberish-
v-hanging?Numberish-
v-ideographic?Numberish-
v-mathematical?Numberish-
values?string-
vector-effect?Numberish-
version?string-
vert-adv-y?Numberish-
vert-origin-x?Numberish-
vert-origin-y?Numberish-
viewBox?string-
viewTarget?Numberish-
visibility?Numberish-
width?Numberish-
widths?Numberish-
word-spacing?Numberish-
writing-mode?Numberish-
x?Numberish-
x-height?Numberish-
x1?Numberish-
x2?Numberish-
xChannelSelector?string-
xlinkActuate?string-
xlinkArcrole?string-
xlinkHref?string-
xlinkRole?string-
xlinkShow?string-
xlinkTitle?string-
xlinkType?string-
xmlns?string-
y?Numberish-
y1?Numberish-
y2?Numberish-
yChannelSelector?string-
z?Numberish-
zoomAndPan?string-

Defined in ​

profectus/src/features/trees/tree.ts:174


TreeNodeOptions ​

• TreeNodeOptions: Object

An object that configures a TreeNode.

NameTypeDescription
canClick?Computable<boolean>Whether or not this tree node can be clicked.
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
color?Computable<string>The background color for this node.
display?Computable<CoercableComponent>The label to display on this tree node.
glowColor?Computable<string>The color of the glow effect shown to notify the user there's something to do with this node.
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
onClick?(e?: MouseEvent | TouchEvent) => voidA function that is called when the tree node is clicked.
onHold?VoidFunctionA function that is called when the tree node is held down.
reset?GenericResetA reset object attached to this node, used for propagating resets through the tree.
style?Computable<StyleValue>CSS to apply to this feature.
visibility?Computable<boolean | Visibility>Whether this tree node should be visible.

Defined in ​

profectus/src/features/trees/tree.ts:36


TreeOptions ​

• TreeOptions: Object

An object that configures a Tree.

NameTypeDescription
branches?Computable<TreeBranch[]>The branches between nodes within this tree.
leftSideNodes?Computable<GenericTreeNode[]>Nodes to show on the left side of the tree.
nodesComputable<GenericTreeNode[][]>The nodes within the tree, in a 2D array.
onReset?(node: GenericTreeNode) => voidA function that is called when a node within the tree is reset.
resetPropagation?ResetPropagationHow to propagate resets through the tree.
rightSideNodes?Computable<GenericTreeNode[]>Nodes to show on the right side of the tree.
visibility?Computable<boolean | Visibility>Whether this clickable should be visible.

Defined in ​

profectus/src/features/trees/tree.ts:182

Type Aliases ​

GenericTree ​

Ƭ GenericTree: Replace<Tree<TreeOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Tree object.

Defined in ​

profectus/src/features/trees/tree.ts:231


GenericTreeNode ​

Ƭ GenericTreeNode: Replace<TreeNode<TreeNodeOptions>, { canClick: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid TreeNode object.

Defined in ​

profectus/src/features/trees/tree.ts:91


ResetPropagation ​

Ƭ ResetPropagation: (tree: GenericTree, resettingNode: GenericTreeNode) => void

Type declaration ​

â–¸ (tree, resettingNode): void

A function that is used to propagate resets through a tree.

Parameters ​
NameType
treeGenericTree
resettingNodeGenericTreeNode
Returns ​

void

Defined in ​

profectus/src/features/trees/tree.ts:285


Tree ​

Ƭ Tree<T>: Replace<T & BaseTree, { branches: GetComputableType<T["branches"]> ; leftSideNodes: GetComputableType<T["leftSideNodes"]> ; nodes: GetComputableType<T["nodes"]> ; rightSideNodes: GetComputableType<T["rightSideNodes"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that is a tree of nodes with branches between them. Contains support for reset mechanics that can propagate through the tree.

Type parameters ​

NameType
Textends TreeOptions

Defined in ​

profectus/src/features/trees/tree.ts:219


TreeNode ​

Ƭ TreeNode<T>: Replace<T & BaseTreeNode, { canClick: GetComputableTypeWithDefault<T["canClick"], true> ; classes: GetComputableType<T["classes"]> ; color: GetComputableType<T["color"]> ; display: GetComputableType<T["display"]> ; glowColor: GetComputableType<T["glowColor"]> ; mark: GetComputableType<T["mark"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a node on a tree.

Type parameters ​

NameType
Textends TreeNodeOptions

Defined in ​

profectus/src/features/trees/tree.ts:76

Variables ​

TreeNodeType ​

• Const TreeNodeType: typeof TreeNodeType

A symbol used to identify TreeNode features.

Defined in ​

profectus/src/features/trees/tree.ts:29


TreeType ​

• Const TreeType: typeof TreeType

A symbol used to identify Tree features.

Defined in ​

profectus/src/features/trees/tree.ts:31

Functions ​

branchedResetPropagation ​

â–¸ branchedResetPropagation(tree, resettingNode): void

Propagate resets down the branches of the tree.

Parameters ​
NameType
treeGenericTree
resettingNodeGenericTreeNode
Returns ​

void

Defined in ​

profectus/src/features/trees/tree.ts:314


createResourceTooltip ​

â–¸ createResourceTooltip(resource, requiredResource?, requirement?): Ref<string>

Utility for creating a tooltip for a tree node that displays a resource-based unlock requirement, and after unlock shows the amount of another resource. It sounds oddly specific, but comes up a lot.

Parameters ​
NameTypeDefault value
resourceResource<DecimalSource>undefined
requiredResourcenull | Resource<DecimalSource>null
requirementComputable<DecimalSource>0
Returns ​

Ref<string>

Defined in ​

profectus/src/features/trees/tree.ts:353


createTree ​

â–¸ createTree<T>(optionsFunc): Tree<T>

Lazily creates a tree with the given options.

Type parameters ​
NameType
Textends TreeOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseTree, GenericTree>Tree options.
Returns ​

Tree<T>

Defined in ​

profectus/src/features/trees/tree.ts:242


createTreeNode ​

â–¸ createTreeNode<T>(optionsFunc?): TreeNode<T>

Lazily creates a tree node with the given options.

Type parameters ​
NameType
Textends TreeNodeOptions
Parameters ​
NameTypeDescription
optionsFunc?OptionsFunc<T, BaseTreeNode, GenericTreeNode>Tree Node options.
Returns ​

TreeNode<T>

Defined in ​

profectus/src/features/trees/tree.ts:103


defaultResetPropagation ​

â–¸ defaultResetPropagation(tree, resettingNode): void

Propagate resets down the tree by resetting every node in a lower row.

Parameters ​
NameType
treeGenericTree
resettingNodeGenericTreeNode
Returns ​

void

Defined in ​

profectus/src/features/trees/tree.ts:290


invertedResetPropagation ​

â–¸ invertedResetPropagation(tree, resettingNode): void

Propagate resets down the tree by resetting every node in a lower row.

Parameters ​
NameType
treeGenericTree
resettingNodeGenericTreeNode
Returns ​

void

Defined in ​

profectus/src/features/trees/tree.ts:302

Components ​

Tree Component ​

Props ​

NameType
nodes*processedPropType<GenericTreeNode[][]>(Array)
leftSideNodesprocessedPropType<GenericTreeNode[]>(Array)
rightSideNodesprocessedPropType<GenericTreeNode[]>(Array)
branchesprocessedPropType<TreeBranch[]>(Array)

TreeNode Component ​

Props ​

NameType
displayprocessedPropType<CoercableComponent>(Object, String, Function)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
onClick(e?: MouseEvent | TouchEvent) => void
onHoldVoidFunction
colorprocessedPropType<string>(String)
glowColorprocessedPropType<string>(String)
canClick*processedPropType<boolean>(Boolean)
markprocessedPropType<boolean | string>(Boolean, String)
id*string
- +
Skip to content
On this page

Module: features/trees/tree ​

Interfaces ​

BaseTree ​

• BaseTree: Object

Defined in ​

profectus/src/features/trees/tree.ts:199


BaseTreeNode ​

• BaseTreeNode: Object

The properties that are added onto a processed TreeNodeOptions to create an TreeNode.

Defined in ​

profectus/src/features/trees/tree.ts:64


TreeBranch ​

• TreeBranch: Object

Represents a branch between two nodes in a tree.

Defined in ​

profectus/src/features/trees/tree.ts:174


TreeNodeOptions ​

• TreeNodeOptions: Object

An object that configures a TreeNode.

Defined in ​

profectus/src/features/trees/tree.ts:36


TreeOptions ​

• TreeOptions: Object

An object that configures a Tree.

Defined in ​

profectus/src/features/trees/tree.ts:182

Type Aliases ​

GenericTree ​

Ƭ GenericTree: Replace<Tree<TreeOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Tree object.

Defined in ​

profectus/src/features/trees/tree.ts:231


GenericTreeNode ​

Ƭ GenericTreeNode: Replace<TreeNode<TreeNodeOptions>, { canClick: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid TreeNode object.

Defined in ​

profectus/src/features/trees/tree.ts:91


ResetPropagation ​

Ƭ ResetPropagation: (tree: GenericTree, resettingNode: GenericTreeNode) => void

Type declaration ​

â–¸ (tree, resettingNode): void

A function that is used to propagate resets through a tree.

Parameters ​
NameType
treeGenericTree
resettingNodeGenericTreeNode
Returns ​

void

Defined in ​

profectus/src/features/trees/tree.ts:285


Tree ​

Ƭ Tree<T>: Replace<T & BaseTree, { branches: GetComputableType<T["branches"]> ; leftSideNodes: GetComputableType<T["leftSideNodes"]> ; nodes: GetComputableType<T["nodes"]> ; rightSideNodes: GetComputableType<T["rightSideNodes"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that is a tree of nodes with branches between them. Contains support for reset mechanics that can propagate through the tree.

Type parameters ​

NameType
Textends TreeOptions

Defined in ​

profectus/src/features/trees/tree.ts:219


TreeNode ​

Ƭ TreeNode<T>: Replace<T & BaseTreeNode, { canClick: GetComputableTypeWithDefault<T["canClick"], true> ; classes: GetComputableType<T["classes"]> ; color: GetComputableType<T["color"]> ; display: GetComputableType<T["display"]> ; glowColor: GetComputableType<T["glowColor"]> ; mark: GetComputableType<T["mark"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a node on a tree.

Type parameters ​

NameType
Textends TreeNodeOptions

Defined in ​

profectus/src/features/trees/tree.ts:76

Variables ​

TreeNodeType ​

• Const TreeNodeType: typeof TreeNodeType

A symbol used to identify TreeNode features.

Defined in ​

profectus/src/features/trees/tree.ts:29


TreeType ​

• Const TreeType: typeof TreeType

A symbol used to identify Tree features.

Defined in ​

profectus/src/features/trees/tree.ts:31

Functions ​

branchedResetPropagation ​

â–¸ branchedResetPropagation(tree, resettingNode): void

Propagate resets down the branches of the tree.

Parameters ​

NameType
treeGenericTree
resettingNodeGenericTreeNode

Returns ​

void

Defined in ​

profectus/src/features/trees/tree.ts:314


createResourceTooltip ​

â–¸ createResourceTooltip(resource, requiredResource?, requirement?): Ref<string>

Utility for creating a tooltip for a tree node that displays a resource-based unlock requirement, and after unlock shows the amount of another resource. It sounds oddly specific, but comes up a lot.

Parameters ​

NameTypeDefault value
resourceResource<DecimalSource>undefined
requiredResourcenull | Resource<DecimalSource>null
requirementComputable<DecimalSource>0

Returns ​

Ref<string>

Defined in ​

profectus/src/features/trees/tree.ts:353


createTree ​

â–¸ createTree<T>(optionsFunc): Tree<T>

Lazily creates a tree with the given options.

Type parameters ​

NameType
Textends TreeOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseTree, GenericTree>Tree options.

Returns ​

Tree<T>

Defined in ​

profectus/src/features/trees/tree.ts:242


createTreeNode ​

â–¸ createTreeNode<T>(optionsFunc?): TreeNode<T>

Lazily creates a tree node with the given options.

Type parameters ​

NameType
Textends TreeNodeOptions

Parameters ​

NameTypeDescription
optionsFunc?OptionsFunc<T, BaseTreeNode, GenericTreeNode>Tree Node options.

Returns ​

TreeNode<T>

Defined in ​

profectus/src/features/trees/tree.ts:103


defaultResetPropagation ​

â–¸ defaultResetPropagation(tree, resettingNode): void

Propagate resets down the tree by resetting every node in a lower row.

Parameters ​

NameType
treeGenericTree
resettingNodeGenericTreeNode

Returns ​

void

Defined in ​

profectus/src/features/trees/tree.ts:290


invertedResetPropagation ​

â–¸ invertedResetPropagation(tree, resettingNode): void

Propagate resets down the tree by resetting every node in a lower row.

Parameters ​

NameType
treeGenericTree
resettingNodeGenericTreeNode

Returns ​

void

Defined in ​

profectus/src/features/trees/tree.ts:302

Components ​

Tree Component ​

Props ​

NameType
nodes*processedPropType<GenericTreeNode[][]>(Array)
leftSideNodesprocessedPropType<GenericTreeNode[]>(Array)
rightSideNodesprocessedPropType<GenericTreeNode[]>(Array)
branchesprocessedPropType<TreeBranch[]>(Array)

TreeNode Component ​

Props ​

NameType
displayprocessedPropType<CoercableComponent>(Object, String, Function)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
onClick(e?: MouseEvent | TouchEvent) => void
onHoldVoidFunction
colorprocessedPropType<string>(String)
glowColorprocessedPropType<string>(String)
canClick*processedPropType<boolean>(Boolean)
markprocessedPropType<boolean | string>(Boolean, String)
id*string
+ \ No newline at end of file diff --git a/api/modules/features/upgrade.html b/api/modules/features/upgrade.html index e54e019b..329ce503 100644 --- a/api/modules/features/upgrade.html +++ b/api/modules/features/upgrade.html @@ -5,12 +5,12 @@ Module: features/upgrades/upgrade | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: features/upgrades/upgrade ​

Interfaces ​

BaseUpgrade ​

• BaseUpgrade: Object

The properties that are added onto a processed UpgradeOptions to create an Upgrade.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
boughtPersistent<boolean>Whether or not this upgrade has been purchased.
canPurchaseRef<boolean>Whether or not the upgrade can currently be purchased.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
purchaseVoidFunctionPurchase the upgrade
typetypeof UpgradeTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/upgrades/upgrade.ts:75


UpgradeOptions ​

• UpgradeOptions: Object

An object that configures a Upgrade.

NameTypeDescription
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
display?Computable<CoercableComponent | { description: CoercableComponent ; effectDisplay?: CoercableComponent ; title?: CoercableComponent }>The display to use for this clickable.
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
onPurchase?VoidFunctionA function that is called when the upgrade is purchased.
requirementsRequirementsThe requirements to purchase this upgrade.
style?Computable<StyleValue>CSS to apply to this feature.
visibility?Computable<boolean | Visibility>Whether this clickable should be visible.

Defined in ​

profectus/src/features/upgrades/upgrade.ts:45

Type Aliases ​

GenericUpgrade ​

Ƭ GenericUpgrade: Replace<Upgrade<UpgradeOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Upgrade object.

Defined in ​

profectus/src/features/upgrades/upgrade.ts:106


Upgrade ​

Ƭ Upgrade<T>: Replace<T & BaseUpgrade, { classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; mark: GetComputableType<T["mark"]> ; requirements: GetComputableType<T["requirements"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that can be purchased a single time.

Type parameters ​

NameType
Textends UpgradeOptions

Defined in ​

profectus/src/features/upgrades/upgrade.ts:93

Variables ​

UpgradeType ​

• Const UpgradeType: typeof UpgradeType

A symbol used to identify Upgrade features.

Defined in ​

profectus/src/features/upgrades/upgrade.ts:40

Functions ​

createUpgrade ​

â–¸ createUpgrade<T>(optionsFunc): Upgrade<T>

Lazily creates an upgrade with the given options.

Type parameters ​
NameType
Textends UpgradeOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseUpgrade, GenericUpgrade>Upgrade options.
Returns ​

Upgrade<T>

Defined in ​

profectus/src/features/upgrades/upgrade.ts:117


setupAutoPurchase ​

â–¸ setupAutoPurchase(layer, autoActive, upgrades?): void

Utility to auto purchase a list of upgrades whenever they're affordable.

Parameters ​
NameTypeDefault valueDescription
layerGenericLayerundefinedThe layer the upgrades are apart of
autoActiveComputable<boolean>undefinedWhether or not the upgrades should currently be auto-purchasing
upgradesGenericUpgrade[][]The specific upgrades to upgrade. If unspecified, uses all upgrades on the layer.
Returns ​

void

Defined in ​

profectus/src/features/upgrades/upgrade.ts:190

Components ​

Upgrade Component ​

Props ​

NameType
display*processedPropType<UnwrapRef<GenericUpgrade["display"]>>(String, Object, Function)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
requirements*Requirements
canPurchase*processedPropType<boolean>(Boolean)
bought*processedPropType<boolean>(Boolean)
markprocessedPropType<boolean | string>(Boolean, String)
id*string
purchase*VoidFunction
- +
Skip to content
On this page

Module: features/upgrades/upgrade ​

Interfaces ​

BaseUpgrade ​

• BaseUpgrade: Object

The properties that are added onto a processed UpgradeOptions to create an Upgrade.

Defined in ​

profectus/src/features/upgrades/upgrade.ts:75


UpgradeOptions ​

• UpgradeOptions: Object

An object that configures a Upgrade.

Defined in ​

profectus/src/features/upgrades/upgrade.ts:45

Type Aliases ​

GenericUpgrade ​

Ƭ GenericUpgrade: Replace<Upgrade<UpgradeOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Upgrade object.

Defined in ​

profectus/src/features/upgrades/upgrade.ts:106


Upgrade ​

Ƭ Upgrade<T>: Replace<T & BaseUpgrade, { classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; mark: GetComputableType<T["mark"]> ; requirements: GetComputableType<T["requirements"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that can be purchased a single time.

Type parameters ​

NameType
Textends UpgradeOptions

Defined in ​

profectus/src/features/upgrades/upgrade.ts:93

Variables ​

UpgradeType ​

• Const UpgradeType: typeof UpgradeType

A symbol used to identify Upgrade features.

Defined in ​

profectus/src/features/upgrades/upgrade.ts:40

Functions ​

createUpgrade ​

â–¸ createUpgrade<T>(optionsFunc): Upgrade<T>

Lazily creates an upgrade with the given options.

Type parameters ​

NameType
Textends UpgradeOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseUpgrade, GenericUpgrade>Upgrade options.

Returns ​

Upgrade<T>

Defined in ​

profectus/src/features/upgrades/upgrade.ts:117


setupAutoPurchase ​

â–¸ setupAutoPurchase(layer, autoActive, upgrades?): void

Utility to auto purchase a list of upgrades whenever they're affordable.

Parameters ​

NameTypeDefault valueDescription
layerGenericLayerundefinedThe layer the upgrades are apart of
autoActiveComputable<boolean>undefinedWhether or not the upgrades should currently be auto-purchasing
upgradesGenericUpgrade[][]The specific upgrades to upgrade. If unspecified, uses all upgrades on the layer.

Returns ​

void

Defined in ​

profectus/src/features/upgrades/upgrade.ts:190

Components ​

Upgrade Component ​

Props ​

NameType
display*processedPropType<UnwrapRef<GenericUpgrade["display"]>>(String, Object, Function)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
requirements*Requirements
canPurchase*processedPropType<boolean>(Boolean)
bought*processedPropType<boolean>(Boolean)
markprocessedPropType<boolean | string>(Boolean, String)
id*string
purchase*VoidFunction
+ \ No newline at end of file diff --git a/api/modules/game/events.html b/api/modules/game/events.html index 48e3012d..206c42ea 100644 --- a/api/modules/game/events.html +++ b/api/modules/game/events.html @@ -5,12 +5,12 @@ Module: game/events | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: game/events ​

Interfaces ​

GlobalEvents ​

• GlobalEvents: Object

All types of events able to be sent or emitted from the global event bus.

NameTypeDescription
addLayer(layer: GenericLayer, saveData: Record<string, unknown>) => voidSent whenever a layer is added.
fontsLoadedVoidFunctionUsing document.fonts.ready returns too early on firefox, so we use document.fonts.onloadingdone instead, which doesn't accept multiple listeners. This event fires when that callback is called.
gameWonVoidFunctionSent when the game has ended.
loadSettings(settings: Partial<Settings>) => voidSent when constructing the Settings object. Use it to add default values for custom properties to the object. See features/features.setDefault for setting default values.
onLoadVoidFunctionSent whenever a save has finished loading. Happens when the page is opened and upon switching saves in the saves manager.
removeLayer(layer: GenericLayer) => voidSent whenever a layer is removed.
reset(reset: GenericReset) => void-
setupVue(vue: App<any>) => voidSent when setting up the Vue Application instance. Use it to register global components or otherwise set up things that should affect Vue globally.
update(diff: number, trueDiff: number) => voidSent every game tick. Runs the life cycle of the project.

Defined in ​

profectus/src/game/events.ts:7

profectus/src/features/reset.ts:116

Variables ​

globalBus ​

• Const globalBus: Emitter<GlobalEvents>

A global event bus for hooking into GlobalEvents.

Defined in ​

profectus/src/game/events.ts:55

- +
+ \ No newline at end of file diff --git a/api/modules/game/formulas/formulas.html b/api/modules/game/formulas/formulas.html index 0676814c..59606d6e 100644 --- a/api/modules/game/formulas/formulas.html +++ b/api/modules/game/formulas/formulas.html @@ -5,12 +5,12 @@ Module: game/formulas/formulas | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: game/formulas/formulas ​

Classes ​

default ​

• default<T>: Object

A class that can be used for cost/goal functions. It can be evaluated similar to a cost function, but also provides extra features for supported formulas. For example, a lot of math functions can be inverted. Typically, the use of these extra features is to support cost/goal functions that have multiple levels purchased/completed at once efficiently.

See

Type parameters ​

NameType
Textends [FormulaSource] | FormulaSource[]
NameType
constructor<T>(options: FormulaOptions<T>) => default<T>
applySubstitutionundefined | SubstitutionFunction<T>
divide<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
divideBy<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
dividedBy<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
innermostVariableundefined | ProcessedComputable<DecimalSource>
inputsT
integralFormulaundefined | GenericFormula
internalEvaluateundefined | EvaluateFunction<T>
internalIntegrateundefined | IntegrateFunction<T>
internalIntegrateInnerundefined | IntegrateFunction<T>
internalInvertundefined | InvertFunction<T>
internalVariablesnumber
logarithm<T>(this: T, value: FormulaSource) => T<T>(this: FormulaSource, value: T) => T(this: FormulaSource, value: FormulaSource) => GenericFormula
minus<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
multiply<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
negate<T>(this: T) => T(this: GenericFormula) => GenericFormula
negated<T>(this: T) => T(this: GenericFormula) => GenericFormula
plus<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
reciprocal<T>(this: T) => T(this: FormulaSource) => GenericFormula
reciprocate<T>(this: T) => T(this: FormulaSource) => GenericFormula
sgn() => GenericFormula
subtract<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
times<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
clampMax(value: FormulaSource, other: FormulaSource) => default<[FormulaSource, FormulaSource]>
clampMin(value: FormulaSource, other: FormulaSource) => default<[FormulaSource, FormulaSource]>
divide<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
divideBy<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
dividedBy<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
logarithm<T>(value: T, base: FormulaSource) => T<T>(value: FormulaSource, base: T) => T(value: FormulaSource, base: FormulaSource) => GenericFormula
max(value: FormulaSource, other: FormulaSource) => default<[FormulaSource, FormulaSource]>
maxabs(value: FormulaSource, other: FormulaSource) => default<[FormulaSource, FormulaSource]>
min(value: FormulaSource, other: FormulaSource) => default<[FormulaSource, FormulaSource]>
minabs(value: FormulaSource, other: FormulaSource) => default<[FormulaSource, FormulaSource]>
minus<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
multiply<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
negate<T>(value: T) => T(value: FormulaSource) => GenericFormula
negated<T>(value: T) => T(value: FormulaSource) => GenericFormula
plus<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
reciprocal<T>(value: T) => T(value: FormulaSource) => GenericFormula
reciprocate<T>(value: T) => T(value: FormulaSource) => GenericFormula
sgn(value: FormulaSource) => GenericFormula
subtract<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
times<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
abs() => GenericFormula
absLog10() => GenericFormula
acos<T>(this: T) => T(this: FormulaSource) => GenericFormula
acosh<T>(this: T) => T(this: FormulaSource) => GenericFormula
add<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
asin<T>(this: T) => T(this: FormulaSource) => GenericFormula
asinh<T>(this: T) => T(this: FormulaSource) => GenericFormula
atan<T>(this: T) => T(this: FormulaSource) => GenericFormula
atanh<T>(this: T) => T(this: FormulaSource) => GenericFormula
calculateConstantOfIntegration() => default
cbrt<T>(this: T) => T(this: FormulaSource) => GenericFormula
ceil() => GenericFormula
clamp(min: FormulaSource, max: FormulaSource) => GenericFormula
clampMax(value: FormulaSource) => default<[FormulaSource, FormulaSource]>
clampMin(value: FormulaSource) => default<[FormulaSource, FormulaSource]>
conditional(condition: Computable<boolean>, formulaModifier: (value: GenericFormula & { invert: (value: DecimalSource) => DecimalSource } & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource } & { invertIntegral: (value: DecimalSource) => DecimalSource }) => GenericFormula) => GenericFormula
cos<T>(this: T) => T(this: FormulaSource) => GenericFormula
cosh<T>(this: T) => T(this: FormulaSource) => GenericFormula
cube<T>(this: T) => T(this: FormulaSource) => GenericFormula
div<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
equals(other: GenericFormula) => boolean
evaluate(variable?: DecimalSource) => DecimalSource
evaluateIntegral(variable?: DecimalSource) => DecimalSource
exp<T>(this: T) => T(this: FormulaSource) => GenericFormula
factorial() => default<[FormulaSource]>
floor() => GenericFormula
gamma() => default<[FormulaSource]>
getIntegralFormula(stack?: SubstitutionStack) => GenericFormula
hasVariable() => boolean
if(condition: Computable<boolean>, formulaModifier: (value: GenericFormula & { invert: (value: DecimalSource) => DecimalSource } & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource } & { invertIntegral: (value: DecimalSource) => DecimalSource }) => GenericFormula) => GenericFormula
invert(value: DecimalSource) => DecimalSource
invertIntegral(value: DecimalSource) => DecimalSource
isIntegrable() => this is IntegrableFormula
isIntegralInvertible() => this is InvertibleIntegralFormula
isInvertible() => this is InvertibleFormula
iteratedexp<T>(this: T, height?: FormulaSource, payload?: FormulaSource) => Omit<T, "integrate">(this: FormulaSource, height?: FormulaSource, payload?: FormulaSource) => GenericFormula
iteratedlog(base: FormulaSource, times: FormulaSource) => GenericFormula
lambertw<T>(this: T) => Omit<T, "integrate">(this: FormulaSource) => GenericFormula
layeradd<T>(this: T, diff: FormulaSource, base?: FormulaSource) => Omit<T, "integrate">(this: FormulaSource, diff: FormulaSource, base?: FormulaSource) => GenericFormula
layeradd10(diff: FormulaSource) => default<[FormulaSource, FormulaSource]>
ln<T>(this: T) => T(this: FormulaSource) => GenericFormula
lngamma() => default<[FormulaSource]>
log<T>(this: T, value: FormulaSource) => T<T>(this: FormulaSource, value: T) => T(this: FormulaSource, value: FormulaSource) => GenericFormula
log10<T>(this: T) => T(this: FormulaSource) => GenericFormula
log2<T>(this: T) => T(this: FormulaSource) => GenericFormula
max(value: FormulaSource) => default<[FormulaSource, FormulaSource]>
maxabs(value: FormulaSource) => default<[FormulaSource, FormulaSource]>
min(value: FormulaSource) => default<[FormulaSource, FormulaSource]>
minabs(value: FormulaSource) => default<[FormulaSource, FormulaSource]>
mul<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
neg<T>(this: T) => T(this: GenericFormula) => GenericFormula
pLog10() => GenericFormula
pentate(height: FormulaSource, payload: FormulaSource) => GenericFormula
pow<T>(this: T, value: FormulaSource) => T<T>(this: FormulaSource, value: T) => T(this: FormulaSource, value: FormulaSource) => GenericFormula
pow10<T>(this: T) => T(this: FormulaSource) => GenericFormula
pow_base<T>(this: T, value: FormulaSource) => T<T>(this: FormulaSource, value: T) => T(this: FormulaSource, value: FormulaSource) => GenericFormula
recip<T>(this: T) => T(this: FormulaSource) => GenericFormula
root<T>(this: T, value: FormulaSource) => T<T>(this: FormulaSource, value: T) => T(this: FormulaSource, value: FormulaSource) => GenericFormula
round() => GenericFormula
setupConstant(__namedParameters: { inputs: [FormulaSource] }) => InternalFormulaProperties<T>
setupFormula(options: GeneralFormulaOptions<T>) => InternalFormulaProperties<T>
setupVariable(__namedParameters: { variable: ProcessedComputable<DecimalSource> }) => InternalFormulaProperties<T>
sign() => GenericFormula
sin<T>(this: T) => T(this: FormulaSource) => GenericFormula
sinh<T>(this: T) => T(this: FormulaSource) => GenericFormula
slog<T>(this: T, base?: FormulaSource) => Omit<T, "integrate">(this: FormulaSource, base?: FormulaSource) => GenericFormula
sqr<T>(this: T) => T(this: FormulaSource) => GenericFormula
sqrt<T>(this: T) => T(this: FormulaSource) => GenericFormula
ssqrt<T>(this: T) => Omit<T, "integrate">(this: FormulaSource) => GenericFormula
step(start: Computable<DecimalSource>, formulaModifier: (value: GenericFormula & { invert: (value: DecimalSource) => DecimalSource } & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource } & { invertIntegral: (value: DecimalSource) => DecimalSource }) => GenericFormula) => GenericFormula
sub<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
tan<T>(this: T) => T(this: FormulaSource) => GenericFormula
tanh<T>(this: T) => T(this: FormulaSource) => GenericFormula
tetrate<T>(this: T, height?: FormulaSource, payload?: FormulaSource) => Omit<T, "integrate">(this: FormulaSource, height?: FormulaSource, payload?: FormulaSource) => GenericFormula
trunc() => GenericFormula
abs(value: FormulaSource) => GenericFormula
absLog10(value: FormulaSource) => GenericFormula
acos<T>(value: T) => T(value: FormulaSource) => GenericFormula
acosh<T>(value: T) => T(value: FormulaSource) => GenericFormula
add<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
asin<T>(value: T) => T(value: FormulaSource) => GenericFormula
asinh<T>(value: T) => T(value: FormulaSource) => GenericFormula
atan<T>(value: T) => T(value: FormulaSource) => GenericFormula
atanh<T>(value: T) => T(value: FormulaSource) => GenericFormula
cbrt<T>(value: T) => T(value: FormulaSource) => GenericFormula
ceil(value: FormulaSource) => GenericFormula
clamp(value: FormulaSource, min: FormulaSource, max: FormulaSource) => GenericFormula
conditional(value: FormulaSource, condition: Computable<boolean>, formulaModifier: (value: GenericFormula & { invert: (value: DecimalSource) => DecimalSource } & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource } & { invertIntegral: (value: DecimalSource) => DecimalSource }) => GenericFormula) => GenericFormula
constant(value: ProcessedComputable<DecimalSource>) => GenericFormula & { invert: (value: DecimalSource) => DecimalSource } & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource } & { invertIntegral: (value: DecimalSource) => DecimalSource }
cos<T>(value: T) => T(value: FormulaSource) => GenericFormula
cosh<T>(value: T) => T(value: FormulaSource) => GenericFormula
cube<T>(value: T) => T(value: FormulaSource) => GenericFormula
div<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
exp<T>(value: T) => T(value: FormulaSource) => GenericFormula
factorial(value: FormulaSource) => default<[FormulaSource]>
floor(value: FormulaSource) => GenericFormula
gamma(value: FormulaSource) => default<[FormulaSource]>
if(value: FormulaSource, condition: Computable<boolean>, formulaModifier: (value: GenericFormula & { invert: (value: DecimalSource) => DecimalSource } & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource } & { invertIntegral: (value: DecimalSource) => DecimalSource }) => GenericFormula) => GenericFormula
iteratedexp<T>(value: T, height?: FormulaSource, payload?: FormulaSource) => Omit<T, "integrate">(value: FormulaSource, height?: FormulaSource, payload?: FormulaSource) => GenericFormula
iteratedlog(value: FormulaSource, base: FormulaSource, times: FormulaSource) => GenericFormula
lambertw<T>(value: T) => Omit<T, "integrate">(value: FormulaSource) => GenericFormula
layeradd<T>(value: T, diff: FormulaSource, base?: FormulaSource) => Omit<T, "integrate">(value: FormulaSource, diff: FormulaSource, base?: FormulaSource) => GenericFormula
layeradd10(value: FormulaSource, diff: FormulaSource) => default<[FormulaSource, FormulaSource]>
ln<T>(value: T) => T(value: FormulaSource) => GenericFormula
lngamma(value: FormulaSource) => default<[FormulaSource]>
log<T>(value: T, base: FormulaSource) => T<T>(value: FormulaSource, base: T) => T(value: FormulaSource, base: FormulaSource) => GenericFormula
log10<T>(value: T) => T(value: FormulaSource) => GenericFormula
log2<T>(value: T) => T(value: FormulaSource) => GenericFormula
mul<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
neg<T>(value: T) => T(value: FormulaSource) => GenericFormula
pLog10(value: FormulaSource) => GenericFormula
pentate(value: FormulaSource, height: FormulaSource, payload: FormulaSource) => GenericFormula
pow<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
pow10<T>(value: T) => T(value: FormulaSource) => GenericFormula
pow_base<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
recip<T>(value: T) => T(value: FormulaSource) => GenericFormula
root<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
round(value: FormulaSource) => GenericFormula
sign(value: FormulaSource) => GenericFormula
sin<T>(value: T) => T(value: FormulaSource) => GenericFormula
sinh<T>(value: T) => T(value: FormulaSource) => GenericFormula
slog<T>(value: T, base?: FormulaSource) => Omit<T, "integrate">(value: FormulaSource, base?: FormulaSource) => GenericFormula
sqr<T>(value: T) => T(value: FormulaSource) => GenericFormula
sqrt<T>(value: T) => T(value: FormulaSource) => GenericFormula
ssqrt<T>(value: T) => Omit<T, "integrate">(value: FormulaSource) => GenericFormula
step(value: FormulaSource, start: Computable<DecimalSource>, formulaModifier: (value: GenericFormula & { invert: (value: DecimalSource) => DecimalSource } & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource } & { invertIntegral: (value: DecimalSource) => DecimalSource }) => GenericFormula) => GenericFormula
sub<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
tan<T>(value: T) => T(value: FormulaSource) => GenericFormula
tanh<T>(value: T) => T(value: FormulaSource) => GenericFormula
tetrate<T>(value: T, height?: FormulaSource, payload?: FormulaSource) => Omit<T, "integrate">(value: FormulaSource, height?: FormulaSource, payload?: FormulaSource) => GenericFormula
trunc(value: FormulaSource) => GenericFormula
variable(value: ProcessedComputable<DecimalSource>) => GenericFormula & { invert: (value: DecimalSource) => DecimalSource } & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource } & { invertIntegral: (value: DecimalSource) => DecimalSource }

Defined in ​

profectus/src/game/formulas/formulas.ts:45

Functions ​

calculateCost ​

â–¸ calculateCost(formula, amountToBuy, spendResources?, summedPurchases?): DecimalSource

Utility for calculating the cost of a formula for a given amount of purchases. If spendResources is changed to false, the calculation will be much faster with higher numbers.

Parameters ​
NameTypeDescription
formulaInvertibleFormulaThe formula to use for calculating buy max from
amountToBuyDecimalSourceThe amount of purchases to calculate the cost for
spendResources?trueWhether or not to count spent resources on each purchase or not. If true, costs will be approximated for performance, skewing towards higher cost
summedPurchases?numberHow many purchases to manually sum for improved accuracy. If not specified, defaults to 10 when spending resources and 0 when not
Returns ​

DecimalSource

Other signatures ​

â–¸ calculateCost(formula, amountToBuy, spendResources, summedPurchases?): DecimalSource

NameType
formulaInvertibleIntegralFormula
amountToBuyDecimalSource
spendResourcesboolean
summedPurchases?number

Defined in ​

profectus/src/game/formulas/formulas.ts:1433

profectus/src/game/formulas/formulas.ts:1439

profectus/src/game/formulas/formulas.ts:1445


calculateMaxAffordable ​

â–¸ calculateMaxAffordable(formula, resource, spendResources?, summedPurchases?): ComputedRef<DecimalSource>

Utility for calculating the maximum amount of purchases possible with a given formula and resource. If spendResources is changed to false, the calculation will be much faster with higher numbers.

Parameters ​
NameTypeDescription
formulaInvertibleFormulaThe formula to use for calculating buy max from
resourceResource<DecimalSource>The resource used when purchasing (is only read from)
spendResources?trueWhether or not to count spent resources on each purchase or not. If true, costs will be approximated for performance, skewing towards fewer purchases
summedPurchases?numberHow many of the most expensive purchases should be manually summed for better accuracy. If unspecified uses 10 when spending resources and 0 when not
Returns ​

ComputedRef<DecimalSource>

Other signatures ​

â–¸ calculateMaxAffordable(formula, resource, spendResources, summedPurchases?): ComputedRef<DecimalSource>

NameType
formulaInvertibleIntegralFormula
resourceResource<DecimalSource>
spendResourcesComputable<boolean>
summedPurchases?number

Defined in ​

profectus/src/game/formulas/formulas.ts:1365

profectus/src/game/formulas/formulas.ts:1371

profectus/src/game/formulas/formulas.ts:1377


findNonInvertible ​

â–¸ findNonInvertible(formula): GenericFormula | null

Utility for recursively searching through a formula for the cause of non-invertibility.

Parameters ​
NameTypeDescription
formulaGenericFormulaThe formula to search for a non-invertible formula within
Returns ​

GenericFormula | null

Defined in ​

profectus/src/game/formulas/formulas.ts:1322


hasVariable ​

â–¸ hasVariable(value): value is InvertibleFormula

NameType
valueFormulaSource

Defined in ​

profectus/src/game/formulas/formulas.ts:23


printFormula ​

â–¸ printFormula(formula): string

Stringifies a formula so it's more easy to read in the console

Parameters ​
NameTypeDescription
formulaFormulaSourceThe formula to print
Returns ​

string

Defined in ​

profectus/src/game/formulas/formulas.ts:1340


unrefFormulaSource ​

â–¸ unrefFormulaSource(value, variable?): DecimalSource

NameType
valueFormulaSource
variable?DecimalSource

Defined in ​

profectus/src/game/formulas/formulas.ts:27

- +
Skip to content
On this page

Module: game/formulas/formulas ​

Classes ​

default ​

• default<T>: Object

A class that can be used for cost/goal functions. It can be evaluated similar to a cost function, but also provides extra features for supported formulas. For example, a lot of math functions can be inverted. Typically, the use of these extra features is to support cost/goal functions that have multiple levels purchased/completed at once efficiently.

See

Type parameters ​

NameType
Textends [FormulaSource] | FormulaSource[]

Defined in ​

profectus/src/game/formulas/formulas.ts:45

Functions ​

calculateCost ​

â–¸ calculateCost(formula, amountToBuy, spendResources?, summedPurchases?): DecimalSource

Utility for calculating the cost of a formula for a given amount of purchases. If spendResources is changed to false, the calculation will be much faster with higher numbers.

Parameters ​

NameTypeDescription
formulaInvertibleFormulaThe formula to use for calculating buy max from
amountToBuyDecimalSourceThe amount of purchases to calculate the cost for
spendResources?trueWhether or not to count spent resources on each purchase or not. If true, costs will be approximated for performance, skewing towards higher cost
summedPurchases?numberHow many purchases to manually sum for improved accuracy. If not specified, defaults to 10 when spending resources and 0 when not

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/formulas.ts:1433

â–¸ calculateCost(formula, amountToBuy, spendResources, summedPurchases?): DecimalSource

Parameters ​

NameType
formulaInvertibleIntegralFormula
amountToBuyDecimalSource
spendResourcesboolean
summedPurchases?number

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/formulas.ts:1439


calculateMaxAffordable ​

â–¸ calculateMaxAffordable(formula, resource, spendResources?, summedPurchases?): ComputedRef<DecimalSource>

Utility for calculating the maximum amount of purchases possible with a given formula and resource. If spendResources is changed to false, the calculation will be much faster with higher numbers.

Parameters ​

NameTypeDescription
formulaInvertibleFormulaThe formula to use for calculating buy max from
resourceResource<DecimalSource>The resource used when purchasing (is only read from)
spendResources?trueWhether or not to count spent resources on each purchase or not. If true, costs will be approximated for performance, skewing towards fewer purchases
summedPurchases?numberHow many of the most expensive purchases should be manually summed for better accuracy. If unspecified uses 10 when spending resources and 0 when not

Returns ​

ComputedRef<DecimalSource>

Defined in ​

profectus/src/game/formulas/formulas.ts:1365

â–¸ calculateMaxAffordable(formula, resource, spendResources, summedPurchases?): ComputedRef<DecimalSource>

Parameters ​

NameType
formulaInvertibleIntegralFormula
resourceResource<DecimalSource>
spendResourcesComputable<boolean>
summedPurchases?number

Returns ​

ComputedRef<DecimalSource>

Defined in ​

profectus/src/game/formulas/formulas.ts:1371


findNonInvertible ​

â–¸ findNonInvertible(formula): GenericFormula | null

Utility for recursively searching through a formula for the cause of non-invertibility.

Parameters ​

NameTypeDescription
formulaGenericFormulaThe formula to search for a non-invertible formula within

Returns ​

GenericFormula | null

Defined in ​

profectus/src/game/formulas/formulas.ts:1322


hasVariable ​

â–¸ hasVariable(value): value is InvertibleFormula

Parameters ​

NameType
valueFormulaSource

Returns ​

value is InvertibleFormula

Defined in ​

profectus/src/game/formulas/formulas.ts:23


printFormula ​

â–¸ printFormula(formula): string

Stringifies a formula so it's more easy to read in the console

Parameters ​

NameTypeDescription
formulaFormulaSourceThe formula to print

Returns ​

string

Defined in ​

profectus/src/game/formulas/formulas.ts:1340


unrefFormulaSource ​

â–¸ unrefFormulaSource(value, variable?): DecimalSource

Parameters ​

NameType
valueFormulaSource
variable?DecimalSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/formulas.ts:27

+ \ No newline at end of file diff --git a/api/modules/game/formulas/operations.html b/api/modules/game/formulas/operations.html index 26df7aa1..22a16668 100644 --- a/api/modules/game/formulas/operations.html +++ b/api/modules/game/formulas/operations.html @@ -5,12 +5,12 @@ Module: game/formulas/operations | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: game/formulas/operations ​

Functions ​

applySubstitutionDiv ​

â–¸ applySubstitutionDiv(value, lhs, rhs): GenericFormula

NameType
valueGenericFormula
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:152


applySubstitutionMul ​

â–¸ applySubstitutionMul(value, lhs, rhs): GenericFormula

NameType
valueGenericFormula
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:119


applySubstitutionNeg ​

â–¸ applySubstitutionNeg(value): GenericFormula

NameType
valueGenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:25


createPassthroughBinaryFormula ​

â–¸ createPassthroughBinaryFormula(operation): (value: FormulaSource, other: FormulaSource) => default<[FormulaSource, FormulaSource]>

NameType
operation(a: DecimalSource, b: DecimalSource) => DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:696


integrateAcos ​

â–¸ integrateAcos(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:575


integrateAcosh ​

â–¸ integrateAcosh(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:669


integrateAdd ​

â–¸ integrateAdd(stack, lhs, rhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:38


integrateAsin ​

â–¸ integrateAsin(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:558


integrateAsinh ​

â–¸ integrateAsinh(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:654


integrateAtan ​

â–¸ integrateAtan(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:592


integrateAtanh ​

â–¸ integrateAtanh(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:686


integrateCos ​

â–¸ integrateCos(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:528


integrateCosh ​

â–¸ integrateCosh(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:624


integrateDiv ​

â–¸ integrateDiv(stack, lhs, rhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:141


integrateExp ​

â–¸ integrateExp(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:382


integrateInnerAdd ​

â–¸ integrateInnerAdd(stack, lhs, rhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:49


integrateInnerSub ​

â–¸ integrateInnerSub(stack, lhs, rhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:84


integrateLn ​

â–¸ integrateLn(stack, lhs): default<[GenericFormula]>

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:290


integrateLog ​

â–¸ integrateLog(stack, lhs, rhs): default<[GenericFormula, FormulaSource]>

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:231


integrateLog10 ​

â–¸ integrateLog10(stack, lhs): default<[GenericFormula]>

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:199


integrateLog2 ​

â–¸ integrateLog2(stack, lhs): default<[GenericFormula]>

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:261


integrateMul ​

â–¸ integrateMul(stack, lhs, rhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:108


integrateNeg ​

â–¸ integrateNeg(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:18


integratePow ​

â–¸ integratePow(stack, lhs, rhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:310


integratePow10 ​

â–¸ integratePow10(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:329


integratePowBase ​

â–¸ integratePowBase(stack, lhs, rhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:346


integrateRecip ​

â–¸ integrateRecip(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:172


integrateRoot ​

â–¸ integrateRoot(stack, lhs, rhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:367


integrateSin ​

â–¸ integrateSin(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:513


integrateSinh ​

â–¸ integrateSinh(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:609


integrateSub ​

â–¸ integrateSub(stack, lhs, rhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:73


integrateTan ​

â–¸ integrateTan(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:543


integrateTanh ​

â–¸ integrateTanh(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:639


invertAcos ​

â–¸ invertAcos(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:568


invertAcosh ​

â–¸ invertAcosh(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:662


invertAdd ​

â–¸ invertAdd(value, lhs, rhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:29


invertAsin ​

â–¸ invertAsin(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:551


invertAsinh ​

â–¸ invertAsinh(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:647


invertAtan ​

â–¸ invertAtan(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:585


invertAtanh ​

â–¸ invertAtanh(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:679


invertCos ​

â–¸ invertCos(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:521


invertCosh ​

â–¸ invertCosh(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:617


invertDiv ​

â–¸ invertDiv(value, lhs, rhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:132


invertExp ​

â–¸ invertExp(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:375


invertIteratedExp ​

â–¸ invertIteratedExp(value, lhs, height, payload): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
heightFormulaSource
payloadFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:421


invertLambertw ​

â–¸ invertLambertw(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:487


invertLayeradd ​

â–¸ invertLayeradd(value, lhs, diff, base): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
diffFormulaSource
baseFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:469


invertLn ​

â–¸ invertLn(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:272


invertLog ​

â–¸ invertLog(value, lhs, rhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:210


invertLog10 ​

â–¸ invertLog10(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:180


invertLog2 ​

â–¸ invertLog2(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:242


invertMul ​

â–¸ invertMul(value, lhs, rhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:99


invertNeg ​

â–¸ invertNeg(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:11


invertPow ​

â–¸ invertPow(value, lhs, rhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:301


invertPow10 ​

â–¸ invertPow10(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:322


invertPowBase ​

â–¸ invertPowBase(value, lhs, rhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:337


invertRecip ​

â–¸ invertRecip(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:165


invertRoot ​

â–¸ invertRoot(value, lhs, rhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:358


invertSin ​

â–¸ invertSin(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:506


invertSinh ​

â–¸ invertSinh(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:602


invertSlog ​

â–¸ invertSlog(value, lhs, rhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:454


invertSsqrt ​

â–¸ invertSsqrt(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:494


invertSub ​

â–¸ invertSub(value, lhs, rhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:64


invertTan ​

â–¸ invertTan(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:536


invertTanh ​

â–¸ invertTanh(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:632


invertTetrate ​

â–¸ invertTetrate(value, base, height, payload): DecimalSource

NameType
valueDecimalSource
baseFormulaSource
heightFormulaSource
payloadFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:399


iteratedLog ​

â–¸ iteratedLog(value, lhs?, times?): default

NameTypeDefault value
valueDecimalSourceundefined
lhsDecimalSource10
timesDecimalSource2

Defined in ​

profectus/src/game/formulas/operations.ts:440


iteratedexp ​

â–¸ iteratedexp(value, height?, payload?): default

NameTypeDefault value
valueDecimalSourceundefined
heightDecimalSource2
payloadDecimalSourceundefined

Defined in ​

profectus/src/game/formulas/operations.ts:412


layeradd ​

â–¸ layeradd(value, diff, base): default

NameType
valueDecimalSource
diffDecimalSource
baseDecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:464


passthrough ​

â–¸ passthrough<T>(value): T

NameType
valueT

Defined in ​

profectus/src/game/formulas/operations.ts:7


pentate ​

â–¸ pentate(value, height, payload): default

NameType
valueDecimalSource
heightDecimalSource
payloadDecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:501


slog ​

â–¸ slog(value, lhs?): default

NameTypeDefault value
valueDecimalSourceundefined
lhsDecimalSource10

Defined in ​

profectus/src/game/formulas/operations.ts:449


tetrate ​

â–¸ tetrate(value, height?, payload?): default

NameTypeDefault value
valueDecimalSourceundefined
heightDecimalSource2
payloadDecimalSourceundefined

Defined in ​

profectus/src/game/formulas/operations.ts:390

- +
Skip to content
On this page

Module: game/formulas/operations ​

Functions ​

applySubstitutionDiv ​

â–¸ applySubstitutionDiv(value, lhs, rhs): GenericFormula

Parameters ​

NameType
valueGenericFormula
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:152


applySubstitutionMul ​

â–¸ applySubstitutionMul(value, lhs, rhs): GenericFormula

Parameters ​

NameType
valueGenericFormula
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:119


applySubstitutionNeg ​

â–¸ applySubstitutionNeg(value): GenericFormula

Parameters ​

NameType
valueGenericFormula

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:25


createPassthroughBinaryFormula ​

â–¸ createPassthroughBinaryFormula(operation): (value: FormulaSource, other: FormulaSource) => default<[FormulaSource, FormulaSource]>

Parameters ​

NameType
operation(a: DecimalSource, b: DecimalSource) => DecimalSource

Returns ​

fn

â–¸ (value, other): default<[FormulaSource, FormulaSource]>

Parameters ​
NameType
valueFormulaSource
otherFormulaSource
Returns ​

default<[FormulaSource, FormulaSource]>

Defined in ​

profectus/src/game/formulas/operations.ts:696


integrateAcos ​

â–¸ integrateAcos(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:575


integrateAcosh ​

â–¸ integrateAcosh(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:669


integrateAdd ​

â–¸ integrateAdd(stack, lhs, rhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:38


integrateAsin ​

â–¸ integrateAsin(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:558


integrateAsinh ​

â–¸ integrateAsinh(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:654


integrateAtan ​

â–¸ integrateAtan(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:592


integrateAtanh ​

â–¸ integrateAtanh(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:686


integrateCos ​

â–¸ integrateCos(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:528


integrateCosh ​

â–¸ integrateCosh(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:624


integrateDiv ​

â–¸ integrateDiv(stack, lhs, rhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:141


integrateExp ​

â–¸ integrateExp(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:382


integrateInnerAdd ​

â–¸ integrateInnerAdd(stack, lhs, rhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:49


integrateInnerSub ​

â–¸ integrateInnerSub(stack, lhs, rhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:84


integrateLn ​

â–¸ integrateLn(stack, lhs): default<[GenericFormula]>

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

default<[GenericFormula]>

Defined in ​

profectus/src/game/formulas/operations.ts:290


integrateLog ​

â–¸ integrateLog(stack, lhs, rhs): default<[GenericFormula, FormulaSource]>

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

default<[GenericFormula, FormulaSource]>

Defined in ​

profectus/src/game/formulas/operations.ts:231


integrateLog10 ​

â–¸ integrateLog10(stack, lhs): default<[GenericFormula]>

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

default<[GenericFormula]>

Defined in ​

profectus/src/game/formulas/operations.ts:199


integrateLog2 ​

â–¸ integrateLog2(stack, lhs): default<[GenericFormula]>

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

default<[GenericFormula]>

Defined in ​

profectus/src/game/formulas/operations.ts:261


integrateMul ​

â–¸ integrateMul(stack, lhs, rhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:108


integrateNeg ​

â–¸ integrateNeg(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:18


integratePow ​

â–¸ integratePow(stack, lhs, rhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:310


integratePow10 ​

â–¸ integratePow10(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:329


integratePowBase ​

â–¸ integratePowBase(stack, lhs, rhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:346


integrateRecip ​

â–¸ integrateRecip(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:172


integrateRoot ​

â–¸ integrateRoot(stack, lhs, rhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:367


integrateSin ​

â–¸ integrateSin(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:513


integrateSinh ​

â–¸ integrateSinh(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:609


integrateSub ​

â–¸ integrateSub(stack, lhs, rhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:73


integrateTan ​

â–¸ integrateTan(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:543


integrateTanh ​

â–¸ integrateTanh(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:639


invertAcos ​

â–¸ invertAcos(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:568


invertAcosh ​

â–¸ invertAcosh(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:662


invertAdd ​

â–¸ invertAdd(value, lhs, rhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:29


invertAsin ​

â–¸ invertAsin(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:551


invertAsinh ​

â–¸ invertAsinh(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:647


invertAtan ​

â–¸ invertAtan(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:585


invertAtanh ​

â–¸ invertAtanh(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:679


invertCos ​

â–¸ invertCos(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:521


invertCosh ​

â–¸ invertCosh(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:617


invertDiv ​

â–¸ invertDiv(value, lhs, rhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:132


invertExp ​

â–¸ invertExp(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:375


invertIteratedExp ​

â–¸ invertIteratedExp(value, lhs, height, payload): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
heightFormulaSource
payloadFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:421


invertLambertw ​

â–¸ invertLambertw(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:487


invertLayeradd ​

â–¸ invertLayeradd(value, lhs, diff, base): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
diffFormulaSource
baseFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:469


invertLn ​

â–¸ invertLn(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:272


invertLog ​

â–¸ invertLog(value, lhs, rhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:210


invertLog10 ​

â–¸ invertLog10(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:180


invertLog2 ​

â–¸ invertLog2(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:242


invertMul ​

â–¸ invertMul(value, lhs, rhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:99


invertNeg ​

â–¸ invertNeg(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:11


invertPow ​

â–¸ invertPow(value, lhs, rhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:301


invertPow10 ​

â–¸ invertPow10(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:322


invertPowBase ​

â–¸ invertPowBase(value, lhs, rhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:337


invertRecip ​

â–¸ invertRecip(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:165


invertRoot ​

â–¸ invertRoot(value, lhs, rhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:358


invertSin ​

â–¸ invertSin(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:506


invertSinh ​

â–¸ invertSinh(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:602


invertSlog ​

â–¸ invertSlog(value, lhs, rhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:454


invertSsqrt ​

â–¸ invertSsqrt(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:494


invertSub ​

â–¸ invertSub(value, lhs, rhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:64


invertTan ​

â–¸ invertTan(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:536


invertTanh ​

â–¸ invertTanh(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:632


invertTetrate ​

â–¸ invertTetrate(value, base, height, payload): DecimalSource

Parameters ​

NameType
valueDecimalSource
baseFormulaSource
heightFormulaSource
payloadFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:399


iteratedLog ​

â–¸ iteratedLog(value, lhs?, times?): default

Parameters ​

NameTypeDefault value
valueDecimalSourceundefined
lhsDecimalSource10
timesDecimalSource2

Returns ​

default

Defined in ​

profectus/src/game/formulas/operations.ts:440


iteratedexp ​

â–¸ iteratedexp(value, height?, payload?): default

Parameters ​

NameTypeDefault value
valueDecimalSourceundefined
heightDecimalSource2
payloadDecimalSourceundefined

Returns ​

default

Defined in ​

profectus/src/game/formulas/operations.ts:412


layeradd ​

â–¸ layeradd(value, diff, base): default

Parameters ​

NameType
valueDecimalSource
diffDecimalSource
baseDecimalSource

Returns ​

default

Defined in ​

profectus/src/game/formulas/operations.ts:464


passthrough ​

â–¸ passthrough<T>(value): T

Type parameters ​

NameType
Textends DecimalSource | GenericFormula

Parameters ​

NameType
valueT

Returns ​

T

Defined in ​

profectus/src/game/formulas/operations.ts:7


pentate ​

â–¸ pentate(value, height, payload): default

Parameters ​

NameType
valueDecimalSource
heightDecimalSource
payloadDecimalSource

Returns ​

default

Defined in ​

profectus/src/game/formulas/operations.ts:501


slog ​

â–¸ slog(value, lhs?): default

Parameters ​

NameTypeDefault value
valueDecimalSourceundefined
lhsDecimalSource10

Returns ​

default

Defined in ​

profectus/src/game/formulas/operations.ts:449


tetrate ​

â–¸ tetrate(value, height?, payload?): default

Parameters ​

NameTypeDefault value
valueDecimalSourceundefined
heightDecimalSource2
payloadDecimalSourceundefined

Returns ​

default

Defined in ​

profectus/src/game/formulas/operations.ts:390

+ \ No newline at end of file diff --git a/api/modules/game/formulas/types.html b/api/modules/game/formulas/types.html index f9c6217e..23848b6e 100644 --- a/api/modules/game/formulas/types.html +++ b/api/modules/game/formulas/types.html @@ -5,12 +5,12 @@ Module: game/formulas/types | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: game/formulas/types ​

Type Aliases ​

ConstantFormulaOptions ​

Ƭ ConstantFormulaOptions: Object

Type declaration ​

NameType
inputs[FormulaSource]

Defined in ​

profectus/src/game/formulas/types.d.ts:35


EvaluateFunction ​

Ƭ EvaluateFunction<T>: (this: default<T>, ...inputs: GuardedFormulasToDecimals<T>) => DecimalSource

Type parameters ​

Name
T

Type declaration ​

â–¸ (this, ...inputs): DecimalSource

NameType
thisdefault<T>
...inputsGuardedFormulasToDecimals<T>

Defined in ​

profectus/src/game/formulas/types.d.ts:18


FormulaOptions ​

Ƭ FormulaOptions<T>: VariableFormulaOptions | ConstantFormulaOptions | GeneralFormulaOptions<T>

Type parameters ​

NameType
Textends [FormulaSource] | FormulaSource[]

Defined in ​

profectus/src/game/formulas/types.d.ts:46


FormulaSource ​

Ƭ FormulaSource: ProcessedComputable<DecimalSource> | GenericFormula

Defined in ​

profectus/src/game/formulas/types.d.ts:7


FormulasToDecimals ​

Ƭ FormulasToDecimals<T>: { [K in keyof T]: DecimalSource }

Type parameters ​

NameType
Textends FormulaSource[]

Defined in ​

profectus/src/game/formulas/types.d.ts:65


GeneralFormulaOptions ​

Ƭ GeneralFormulaOptions<T>: Object

Type parameters ​

NameType
Textends [FormulaSource] | FormulaSource[]

Type declaration ​

NameType
applySubstitution?SubstitutionFunction<T>
evaluateEvaluateFunction<T>
inputsT
integrate?IntegrateFunction<T>
integrateInner?IntegrateFunction<T>
invert?InvertFunction<T>

Defined in ​

profectus/src/game/formulas/types.d.ts:38


GenericFormula ​

Ƭ GenericFormula: default<any>

Defined in ​

profectus/src/game/formulas/types.d.ts:6


GuardedFormulasToDecimals ​

Ƭ GuardedFormulasToDecimals<T>: TupleGuard<T>

Type parameters ​

NameType
Textends FormulaSource[]

Defined in ​

profectus/src/game/formulas/types.d.ts:70


IntegrableFormula ​

Ƭ IntegrableFormula: GenericFormula & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource }

Defined in ​

profectus/src/game/formulas/types.d.ts:11


IntegrateFunction ​

Ƭ IntegrateFunction<T>: (this: default<T>, stack: SubstitutionStack | undefined, ...inputs: T) => GenericFormula

Type parameters ​

Name
T

Type declaration ​

â–¸ (this, stack, ...inputs): GenericFormula

NameType
thisdefault<T>
stackSubstitutionStack | undefined
...inputsT

Defined in ​

profectus/src/game/formulas/types.d.ts:23


InternalFormulaProperties ​

Ƭ InternalFormulaProperties<T>: Object

Type parameters ​

NameType
Textends [FormulaSource] | FormulaSource[]

Type declaration ​

NameType
applySubstitution?SubstitutionFunction<T>
innermostVariable?ProcessedComputable<DecimalSource>
inputsT
internalEvaluate?EvaluateFunction<T>
internalIntegrate?IntegrateFunction<T>
internalIntegrateInner?IntegrateFunction<T>
internalInvert?InvertFunction<T>
internalVariablesnumber

Defined in ​

profectus/src/game/formulas/types.d.ts:51


InvertFunction ​

Ƭ InvertFunction<T>: (this: default<T>, value: DecimalSource, ...inputs: T) => DecimalSource

Type parameters ​

Name
T

Type declaration ​

â–¸ (this, value, ...inputs): DecimalSource

NameType
thisdefault<T>
valueDecimalSource
...inputsT

Defined in ​

profectus/src/game/formulas/types.d.ts:22


InvertibleFormula ​

Ƭ InvertibleFormula: GenericFormula & { invert: (value: DecimalSource) => DecimalSource }

Defined in ​

profectus/src/game/formulas/types.d.ts:8


InvertibleIntegralFormula ​

Ƭ InvertibleIntegralFormula: GenericFormula & { invertIntegral: (value: DecimalSource) => DecimalSource }

Defined in ​

profectus/src/game/formulas/types.d.ts:14


SubstitutionFunction ​

Ƭ SubstitutionFunction<T>: (this: default<T>, variable: GenericFormula, ...inputs: T) => GenericFormula

Type parameters ​

Name
T

Type declaration ​

â–¸ (this, variable, ...inputs): GenericFormula

NameType
thisdefault<T>
variableGenericFormula
...inputsT

Defined in ​

profectus/src/game/formulas/types.d.ts:28


SubstitutionStack ​

Ƭ SubstitutionStack: (value: GenericFormula) => GenericFormula[] | undefined

Defined in ​

profectus/src/game/formulas/types.d.ts:62


TupleGuard ​

Ƭ TupleGuard<T>: T extends any[] ? FormulasToDecimals<T> : never

Type parameters ​

NameType
Textends any[]

Defined in ​

profectus/src/game/formulas/types.d.ts:69


VariableFormulaOptions ​

Ƭ VariableFormulaOptions: Object

Type declaration ​

NameType
variableProcessedComputable<DecimalSource>

Defined in ​

profectus/src/game/formulas/types.d.ts:34

- +
Skip to content
On this page

Module: game/formulas/types ​

Type Aliases ​

ConstantFormulaOptions ​

Ƭ ConstantFormulaOptions: Object

Type declaration ​

NameType
inputs[FormulaSource]

Defined in ​

profectus/src/game/formulas/types.d.ts:35


EvaluateFunction ​

Ƭ EvaluateFunction<T>: (this: default<T>, ...inputs: GuardedFormulasToDecimals<T>) => DecimalSource

Type parameters ​

Name
T

Type declaration ​

â–¸ (this, ...inputs): DecimalSource

Parameters ​
NameType
thisdefault<T>
...inputsGuardedFormulasToDecimals<T>
Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/types.d.ts:18


FormulaOptions ​

Ƭ FormulaOptions<T>: VariableFormulaOptions | ConstantFormulaOptions | GeneralFormulaOptions<T>

Type parameters ​

NameType
Textends [FormulaSource] | FormulaSource[]

Defined in ​

profectus/src/game/formulas/types.d.ts:46


FormulaSource ​

Ƭ FormulaSource: ProcessedComputable<DecimalSource> | GenericFormula

Defined in ​

profectus/src/game/formulas/types.d.ts:7


FormulasToDecimals ​

Ƭ FormulasToDecimals<T>:

Type parameters ​

NameType
Textends FormulaSource[]

Defined in ​

profectus/src/game/formulas/types.d.ts:65


GeneralFormulaOptions ​

Ƭ GeneralFormulaOptions<T>: Object

Type parameters ​

NameType
Textends [FormulaSource] | FormulaSource[]

Type declaration ​

NameType
applySubstitution?SubstitutionFunction<T>
evaluateEvaluateFunction<T>
inputsT
integrate?IntegrateFunction<T>
integrateInner?IntegrateFunction<T>
invert?InvertFunction<T>

Defined in ​

profectus/src/game/formulas/types.d.ts:38


GenericFormula ​

Ƭ GenericFormula: default<any>

Defined in ​

profectus/src/game/formulas/types.d.ts:6


GuardedFormulasToDecimals ​

Ƭ GuardedFormulasToDecimals<T>: TupleGuard<T>

Type parameters ​

NameType
Textends FormulaSource[]

Defined in ​

profectus/src/game/formulas/types.d.ts:70


IntegrableFormula ​

Ƭ IntegrableFormula: GenericFormula & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource }

Defined in ​

profectus/src/game/formulas/types.d.ts:11


IntegrateFunction ​

Ƭ IntegrateFunction<T>: (this: default<T>, stack: SubstitutionStack | undefined, ...inputs: T) => GenericFormula

Type parameters ​

Name
T

Type declaration ​

â–¸ (this, stack, ...inputs): GenericFormula

Parameters ​
NameType
thisdefault<T>
stackSubstitutionStack | undefined
...inputsT
Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/types.d.ts:23


InternalFormulaProperties ​

Ƭ InternalFormulaProperties<T>: Object

Type parameters ​

NameType
Textends [FormulaSource] | FormulaSource[]

Type declaration ​

NameType
applySubstitution?SubstitutionFunction<T>
innermostVariable?ProcessedComputable<DecimalSource>
inputsT
internalEvaluate?EvaluateFunction<T>
internalIntegrate?IntegrateFunction<T>
internalIntegrateInner?IntegrateFunction<T>
internalInvert?InvertFunction<T>
internalVariablesnumber

Defined in ​

profectus/src/game/formulas/types.d.ts:51


InvertFunction ​

Ƭ InvertFunction<T>: (this: default<T>, value: DecimalSource, ...inputs: T) => DecimalSource

Type parameters ​

Name
T

Type declaration ​

â–¸ (this, value, ...inputs): DecimalSource

Parameters ​
NameType
thisdefault<T>
valueDecimalSource
...inputsT
Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/types.d.ts:22


InvertibleFormula ​

Ƭ InvertibleFormula: GenericFormula & { invert: (value: DecimalSource) => DecimalSource }

Defined in ​

profectus/src/game/formulas/types.d.ts:8


InvertibleIntegralFormula ​

Ƭ InvertibleIntegralFormula: GenericFormula & { invertIntegral: (value: DecimalSource) => DecimalSource }

Defined in ​

profectus/src/game/formulas/types.d.ts:14


SubstitutionFunction ​

Ƭ SubstitutionFunction<T>: (this: default<T>, variable: GenericFormula, ...inputs: T) => GenericFormula

Type parameters ​

Name
T

Type declaration ​

â–¸ (this, variable, ...inputs): GenericFormula

Parameters ​
NameType
thisdefault<T>
variableGenericFormula
...inputsT
Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/types.d.ts:28


SubstitutionStack ​

Ƭ SubstitutionStack: (value: GenericFormula) => GenericFormula[] | undefined

Defined in ​

profectus/src/game/formulas/types.d.ts:62


TupleGuard ​

Ƭ TupleGuard<T>: T extends any[] ? FormulasToDecimals<T> : never

Type parameters ​

NameType
Textends any[]

Defined in ​

profectus/src/game/formulas/types.d.ts:69


VariableFormulaOptions ​

Ƭ VariableFormulaOptions: Object

Type declaration ​

NameType
variableProcessedComputable<DecimalSource>

Defined in ​

profectus/src/game/formulas/types.d.ts:34

+ \ No newline at end of file diff --git a/api/modules/game/gameLoop.html b/api/modules/game/gameLoop.html index c1928f0b..2421b943 100644 --- a/api/modules/game/gameLoop.html +++ b/api/modules/game/gameLoop.html @@ -5,12 +5,12 @@ Module: game/gameLoop | Profectus - + - + @@ -21,9 +21,9 @@ -
- +
+ \ No newline at end of file diff --git a/api/modules/game/layers.html b/api/modules/game/layers.html index 28a4fff6..23060e48 100644 --- a/api/modules/game/layers.html +++ b/api/modules/game/layers.html @@ -5,12 +5,12 @@ Module: game/layers | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: game/layers ​

Interfaces ​

BaseLayer ​

• BaseLayer: Object

The properties that are added onto a processed LayerOptions to create a Layer

NameTypeDescription
emit<K>(...args: [K, ...Parameters<LayerEvents[K]>[]]) => voidA function to emit a LayerEvents event to this layer.
emitterEmitter<LayerEvents>An emitter for sending LayerEvents events for this layer.
idstringThe ID of the layer. Populated from the createLayer parameters. Used for saving and tracking open tabs.
minimizedPersistent<boolean>A persistent ref tracking if the tab is minimized or not.
nodesRef<Record<string, undefined | FeatureNode>>A map of FeatureNodes present in this layer's ContextComponent component.
on(...args: [event: keyof LayerEvents, cb: Function | Function | Function]) => UnsubscribeA function to register an event listener on emitter.

Defined in ​

profectus/src/game/layers.tsx:148


FeatureNode ​

• FeatureNode: Object

A feature's node in the DOM that has its size tracked.

NameType
elementHTMLElement
observerMutationObserver
rectDOMRect

Defined in ​

profectus/src/game/layers.tsx:28


LayerEvents ​

• LayerEvents: Object

All types of events able to be sent or emitted from a layer's emitter.

NameType
postUpdate(diff: number) => void
preUpdate(diff: number) => void
update(diff: number) => void

Defined in ​

profectus/src/game/layers.tsx:55


LayerOptions ​

• LayerOptions: Object

An object that configures a Layer. Even moreso than features, the developer is expected to include extra properties in this object. All Persistent refs must be included somewhere within the layer object.

NameTypeDescription
classes?Computable<Record<string, boolean>>An object of classes that should be applied to the display.
color?Computable<string>The color of the layer, used to theme the entire layer's display.
displayComputable<CoercableComponent>The layout of this layer's features. When the layer is open in game/player.PlayerData.tabs, this is the content that is displayed.
forceHideGoBack?Computable<boolean>Whether or not to force the go back button to be hidden. If true, go back will be hidden regardless of data/projInfo.allowGoBack.
minWidth?Computable<string | number>A CSS min-width value that is applied to the layer. Can be a number, in which case the unit is assumed to be px. Defaults to 600px.
minimizable?Computable<boolean>Whether or not the layer can be minimized. Defaults to true.
minimizedDisplay?Computable<CoercableComponent>The layout of this layer's features. When the layer is open in game/player.PlayerData.tabs, but the tab is Layer.minimized this is the content that is displayed.
name?Computable<string>The name of the layer, used on minimized tabs. Defaults to id.
style?Computable<StyleValue>Styles that should be applied to the display.

Defined in ​

profectus/src/game/layers.tsx:107


Position ​

• Position: Object

An object representing the position of some entity.

NameTypeDescription
xnumberThe X component of the entity's position.
ynumberThe Y component of the entity's position.

Defined in ​

profectus/src/game/layers.tsx:95

Type Aliases ​

GenericLayer ​

Ƭ GenericLayer: Replace<Layer<LayerOptions>, { minWidth: ProcessedComputable<number> ; minimizable: ProcessedComputable<boolean> ; name: ProcessedComputable<string> }>

A type that matches any valid Layer object.

Defined in ​

profectus/src/game/layers.tsx:184


Layer ​

Ƭ Layer<T>: Replace<T & BaseLayer, { classes: GetComputableType<T["classes"]> ; color: GetComputableType<T["color"]> ; display: GetComputableType<T["display"]> ; forceHideGoBack: GetComputableType<T["forceHideGoBack"]> ; minWidth: GetComputableTypeWithDefault<T["minWidth"], 600> ; minimizable: GetComputableTypeWithDefault<T["minimizable"], true> ; minimizedDisplay: GetComputableType<T["minimizedDisplay"]> ; name: GetComputableTypeWithDefault<T["name"], string> ; style: GetComputableType<T["style"]> }>

An unit of game content. Displayed to the user as a tab or modal.

Type parameters ​

NameType
Textends LayerOptions

Defined in ​

profectus/src/game/layers.tsx:168

Variables ​

BoundsInjectionKey ​

• Const BoundsInjectionKey: InjectionKey<Ref<DOMRect | undefined>>

An injection key that a ContextComponent will use to provide a ref to a bounding rect of the Context.

Defined in ​

profectus/src/game/layers.tsx:52


NodesInjectionKey ​

• Const NodesInjectionKey: InjectionKey<Ref<Record<string, FeatureNode | undefined>>>

An injection key that a ContextComponent will use to provide a ref to a map of all currently registered FeatureNodes.

Defined in ​

profectus/src/game/layers.tsx:47


RegisterNodeInjectionKey ​

• Const RegisterNodeInjectionKey: InjectionKey<(id: string, element: HTMLElement) => void>

An injection key that a ContextComponent will use to provide a function that registers a FeatureNode with the given id and HTML element.

Defined in ​

profectus/src/game/layers.tsx:37


UnregisterNodeInjectionKey ​

• Const UnregisterNodeInjectionKey: InjectionKey<(id: string) => void>

An injection key that a ContextComponent will use to provide a function that unregisters a FeatureNode with the given id.

Defined in ​

profectus/src/game/layers.tsx:42


addingLayers ​

• Const addingLayers: string[] = []

When creating layers, this array stores the layers currently being created, as a stack.

Defined in ​

profectus/src/game/layers.tsx:200


layers ​

• Const layers: Record<string, Readonly<GenericLayer> | undefined>

A reference to all the current layers. It is shallow reactive so it will update when layers are added or removed, but not interfere with the existing refs within each layer.

Defined in ​

profectus/src/game/layers.tsx:77


persistentRefs ​

• Const persistentRefs: Record<string, Set<Persistent>> = {}

When creating layers, this object a map of layer ID to a set of any created persistent refs in order to check they're all included in the final layer object.

Defined in ​

profectus/src/game/layers.tsx:196

Functions ​

addLayer ​

â–¸ addLayer(layer, player): void

Enables a layer object, so it will be updated every tick. Note that accessing a layer/its properties does NOT require it to be enabled. For dynamic layers you can call this function and removeLayer as necessary. Just make sure getInitialLayers will provide an accurate list of layers based on the player data object. For static layers just make getInitialLayers return all the layers.

Parameters ​
NameTypeDescription
layerGenericLayerThe layer to add.
playerObjectThe player data object, which will have a data object for this layer.
player.layers?Record<string, Record<string, unknown>>-
Returns ​

void

Defined in ​

profectus/src/game/layers.tsx:284


createLayer ​

â–¸ createLayer<T>(id, optionsFunc): Layer<T>

Lazily creates a layer with the given options.

Type parameters ​
NameType
Textends LayerOptions
Parameters ​
NameTypeDescription
idstringThe ID this layer will have. See id.
optionsFuncOptionsFunc<T, BaseLayer, BaseLayer>Layer options.
Returns ​

Layer<T>

Defined in ​

profectus/src/game/layers.tsx:206


getLayer ​

â–¸ getLayer<T>(layerID): T

Convenience method for getting a layer by its ID with correct typing.

Type parameters ​
NameType
Textends GenericLayer
Parameters ​
NameTypeDescription
layerIDstringThe ID of the layer to get.
Returns ​

T

Defined in ​

profectus/src/game/layers.tsx:311


reloadLayer ​

â–¸ reloadLayer(layer): void

Convenience method for removing and immediately re-adding a layer. This is useful for layers with dynamic content, to ensure persistent refs are correctly configured.

Parameters ​
NameTypeDescription
layerGenericLayerLayer to remove and then re-add
Returns ​

void

Defined in ​

profectus/src/game/layers.tsx:332


removeLayer ​

â–¸ removeLayer(layer): void

Disables a layer, so it will no longer be updated every tick. Note that accessing a layer/its properties does NOT require it to be enabled.

Parameters ​
NameTypeDescription
layerGenericLayerThe layer to remove.
Returns ​

void

Defined in ​

profectus/src/game/layers.tsx:320


setupLayerModal ​

â–¸ setupLayerModal(layer): Object

Utility function for creating a modal that display's a display. Returns the modal itself, which can be rendered anywhere you need, as well as a function to open the modal.

Parameters ​
NameTypeDescription
layerGenericLayerThe layer to display in the modal.
Returns ​

Object

NameType
modalJSXFunction
openModalVoidFunction

Defined in ​

profectus/src/game/layers.tsx:344

- +
Skip to content
On this page

Module: game/layers ​

Interfaces ​

BaseLayer ​

• BaseLayer: Object

The properties that are added onto a processed LayerOptions to create a Layer

Defined in ​

profectus/src/game/layers.tsx:148


FeatureNode ​

• FeatureNode: Object

A feature's node in the DOM that has its size tracked.

Defined in ​

profectus/src/game/layers.tsx:28


LayerEvents ​

• LayerEvents: Object

All types of events able to be sent or emitted from a layer's emitter.

Defined in ​

profectus/src/game/layers.tsx:55


LayerOptions ​

• LayerOptions: Object

An object that configures a Layer. Even moreso than features, the developer is expected to include extra properties in this object. All Persistent refs must be included somewhere within the layer object.

Defined in ​

profectus/src/game/layers.tsx:107


Position ​

• Position: Object

An object representing the position of some entity.

Defined in ​

profectus/src/game/layers.tsx:95

Type Aliases ​

GenericLayer ​

Ƭ GenericLayer: Replace<Layer<LayerOptions>, { minWidth: ProcessedComputable<number> ; minimizable: ProcessedComputable<boolean> ; name: ProcessedComputable<string> }>

A type that matches any valid Layer object.

Defined in ​

profectus/src/game/layers.tsx:184


Layer ​

Ƭ Layer<T>: Replace<T & BaseLayer, { classes: GetComputableType<T["classes"]> ; color: GetComputableType<T["color"]> ; display: GetComputableType<T["display"]> ; forceHideGoBack: GetComputableType<T["forceHideGoBack"]> ; minWidth: GetComputableTypeWithDefault<T["minWidth"], 600> ; minimizable: GetComputableTypeWithDefault<T["minimizable"], true> ; minimizedDisplay: GetComputableType<T["minimizedDisplay"]> ; name: GetComputableTypeWithDefault<T["name"], string> ; style: GetComputableType<T["style"]> }>

An unit of game content. Displayed to the user as a tab or modal.

Type parameters ​

NameType
Textends LayerOptions

Defined in ​

profectus/src/game/layers.tsx:168

Variables ​

BoundsInjectionKey ​

• Const BoundsInjectionKey: InjectionKey<Ref<DOMRect | undefined>>

An injection key that a ContextComponent will use to provide a ref to a bounding rect of the Context.

Defined in ​

profectus/src/game/layers.tsx:52


NodesInjectionKey ​

• Const NodesInjectionKey: InjectionKey<Ref<Record<string, FeatureNode | undefined>>>

An injection key that a ContextComponent will use to provide a ref to a map of all currently registered FeatureNodes.

Defined in ​

profectus/src/game/layers.tsx:47


RegisterNodeInjectionKey ​

• Const RegisterNodeInjectionKey: InjectionKey<(id: string, element: HTMLElement) => void>

An injection key that a ContextComponent will use to provide a function that registers a FeatureNode with the given id and HTML element.

Defined in ​

profectus/src/game/layers.tsx:37


UnregisterNodeInjectionKey ​

• Const UnregisterNodeInjectionKey: InjectionKey<(id: string) => void>

An injection key that a ContextComponent will use to provide a function that unregisters a FeatureNode with the given id.

Defined in ​

profectus/src/game/layers.tsx:42


addingLayers ​

• Const addingLayers: string[] = []

When creating layers, this array stores the layers currently being created, as a stack.

Defined in ​

profectus/src/game/layers.tsx:200


layers ​

• Const layers: Record<string, Readonly<GenericLayer> | undefined>

A reference to all the current layers. It is shallow reactive so it will update when layers are added or removed, but not interfere with the existing refs within each layer.

Defined in ​

profectus/src/game/layers.tsx:77


persistentRefs ​

• Const persistentRefs: Record<string, Set<Persistent>> = {}

When creating layers, this object a map of layer ID to a set of any created persistent refs in order to check they're all included in the final layer object.

Defined in ​

profectus/src/game/layers.tsx:196

Functions ​

addLayer ​

â–¸ addLayer(layer, player): void

Enables a layer object, so it will be updated every tick. Note that accessing a layer/its properties does NOT require it to be enabled. For dynamic layers you can call this function and removeLayer as necessary. Just make sure getInitialLayers will provide an accurate list of layers based on the player data object. For static layers just make getInitialLayers return all the layers.

Parameters ​

NameTypeDescription
layerGenericLayerThe layer to add.
playerObjectThe player data object, which will have a data object for this layer.
player.layers?Record<string, Record<string, unknown>>-

Returns ​

void

Defined in ​

profectus/src/game/layers.tsx:284


createLayer ​

â–¸ createLayer<T>(id, optionsFunc): Layer<T>

Lazily creates a layer with the given options.

Type parameters ​

NameType
Textends LayerOptions

Parameters ​

NameTypeDescription
idstringThe ID this layer will have. See id.
optionsFuncOptionsFunc<T, BaseLayer>Layer options.

Returns ​

Layer<T>

Defined in ​

profectus/src/game/layers.tsx:206


getLayer ​

â–¸ getLayer<T>(layerID): T

Convenience method for getting a layer by its ID with correct typing.

Type parameters ​

NameType
Textends GenericLayer

Parameters ​

NameTypeDescription
layerIDstringThe ID of the layer to get.

Returns ​

T

Defined in ​

profectus/src/game/layers.tsx:311


reloadLayer ​

â–¸ reloadLayer(layer): void

Convenience method for removing and immediately re-adding a layer. This is useful for layers with dynamic content, to ensure persistent refs are correctly configured.

Parameters ​

NameTypeDescription
layerGenericLayerLayer to remove and then re-add

Returns ​

void

Defined in ​

profectus/src/game/layers.tsx:332


removeLayer ​

â–¸ removeLayer(layer): void

Disables a layer, so it will no longer be updated every tick. Note that accessing a layer/its properties does NOT require it to be enabled.

Parameters ​

NameTypeDescription
layerGenericLayerThe layer to remove.

Returns ​

void

Defined in ​

profectus/src/game/layers.tsx:320


setupLayerModal ​

â–¸ setupLayerModal(layer): Object

Utility function for creating a modal that display's a display. Returns the modal itself, which can be rendered anywhere you need, as well as a function to open the modal.

Parameters ​

NameTypeDescription
layerGenericLayerThe layer to display in the modal.

Returns ​

Object

NameType
modalJSXFunction
openModalVoidFunction

Defined in ​

profectus/src/game/layers.tsx:344

+ \ No newline at end of file diff --git a/api/modules/game/modifiers.html b/api/modules/game/modifiers.html index 8811fa83..ff0ebb0f 100644 --- a/api/modules/game/modifiers.html +++ b/api/modules/game/modifiers.html @@ -5,12 +5,12 @@ Module: game/modifiers | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: game/modifiers ​

Interfaces ​

AdditiveModifierOptions ​

• AdditiveModifierOptions: Object

An object that configures an additive modifier via createAdditiveModifier.

NameTypeDescription
addendComputable<DecimalSource>The amount to add to the input value.
description?Computable<CoercableComponent>Description of what this modifier is doing.
enabled?Computable<boolean>A computable that will be processed and passed directly into the returned modifier.
smallerIsBetter?booleanDetermines if numbers larger or smaller than 0 should be displayed as red.

Defined in ​

profectus/src/game/modifiers.tsx:49


ExponentialModifierOptions ​

• ExponentialModifierOptions: Object

An object that configures an exponential modifier via createExponentialModifier.

NameTypeDescription
description?Computable<CoercableComponent>Description of what this modifier is doing.
enabled?Computable<boolean>A computable that will be processed and passed directly into the returned modifier.
exponentComputable<DecimalSource>The amount to raise the input value to the power of.
smallerIsBetter?booleanDetermines if numbers larger or smaller than 1 should be displayed as red.
supportLowNumbers?booleanAdd 1 before calculating, then remove it afterwards. This prevents low numbers from becoming lower.

Defined in ​

profectus/src/game/modifiers.tsx:170


Modifier ​

• Modifier: Object

An object that can be used to apply or unapply some modification to a number. Being reversible requires the operation being invertible, but some features may rely on that. Descriptions can be optionally included for displaying them to the player. The built-in modifier creators are designed to display the modifiers using createModifierSection.

NameTypeDescription
apply(gain: DecimalSource) => DecimalSourceApplies some operation on the input and returns the result.
description?ProcessedComputable<CoercableComponent>A description of this modifier. See createModifierSection.
enabled?ProcessedComputable<boolean>Whether or not this modifier should be considered enabled. Typically for use with modifiers passed into createSequentialModifier.
revert?(gain: DecimalSource) => DecimalSourceReverses the operation applied by the apply property. Required by some features.

Defined in ​

profectus/src/game/modifiers.tsx:20


ModifierSectionOptions ​

• ModifierSectionOptions: Object

An object that configures a modifier section via createModifierSection.

NameTypeDescription
base?DecimalSourceThe base value that'll be passed into the modifier. Defaults to 1.
baseText?CoercableComponentThe label to use for the base value. Defaults to "Base".
modifierWithRequired<Modifier, "description">The modifier to render.
smallerIsBetter?booleanDetermines if numbers larger or smaller than the base should be displayed as red.
subtitle?stringSmaller text that appears in the header after the title.
titlestringThe header for the section.
unit?stringThe unit of the value being modified, if any.

Defined in ​

profectus/src/game/modifiers.tsx:297


MultiplicativeModifierOptions ​

• MultiplicativeModifierOptions: Object

An object that configures an multiplicative modifier via createMultiplicativeModifier.

NameTypeDescription
description?Computable<CoercableComponent>Description of what this modifier is doing.
enabled?Computable<boolean>A computable that will be processed and passed directly into the returned modifier.
multiplierComputable<DecimalSource>The amount to multiply the input value by.
smallerIsBetter?booleanDetermines if numbers larger or smaller than 1 should be displayed as red.

Defined in ​

profectus/src/game/modifiers.tsx:110

Type Aliases ​

ModifierFromOptionalParams ​

Ƭ ModifierFromOptionalParams<T, S>: T extends undefined ? S extends undefined ? Omit<WithRequired<Modifier, "revert">, "description" | "enabled"> : Omit<WithRequired<Modifier, "revert" | "enabled">, "description"> : S extends undefined ? Omit<WithRequired<Modifier, "revert" | "description">, "enabled"> : WithRequired<Modifier, "revert" | "enabled" | "description">

Utility type used to narrow down a modifier type that will have a description and/or enabled property based on optional parameters, T and S (respectively).

Type parameters ​

Name
T
S

Defined in ​

profectus/src/game/modifiers.tsx:40

Functions ​

createAdditiveModifier ​

â–¸ createAdditiveModifier<T>(optionsFunc): ModifierFromOptionalParams<T["description"], T["enabled"]>

Create a modifier that adds some value to the input value.

Type parameters ​
NameType
Textends AdditiveModifierOptions
Parameters ​
NameTypeDescription
optionsFunc() => TAdditive modifier options.
Returns ​

ModifierFromOptionalParams<T["description"], T["enabled"]>

Defined in ​

profectus/src/game/modifiers.tsx:64


createExponentialModifier ​

â–¸ createExponentialModifier<T>(optionsFunc): ModifierFromOptionalParams<T["description"], T["enabled"]>

Create a modifier that raises the input value to the power of some value.

Type parameters ​
NameType
Textends ExponentialModifierOptions
Parameters ​
NameTypeDescription
optionsFunc() => TExponential modifier options.
Returns ​

ModifierFromOptionalParams<T["description"], T["enabled"]>

Defined in ​

profectus/src/game/modifiers.tsx:187


createModifierSection ​

â–¸ createModifierSection(options): Element

Create a JSX element that displays a modifier. Intended to be used with the output from createSequentialModifier.

Parameters ​
NameTypeDescription
optionsModifierSectionOptionsModifier section options.
Returns ​

Element

Defined in ​

profectus/src/game/modifiers.tsx:319


createMultiplicativeModifier ​

â–¸ createMultiplicativeModifier<T>(optionsFunc): ModifierFromOptionalParams<T["description"], T["enabled"]>

Create a modifier that multiplies the input value by some value.

Type parameters ​
NameType
Textends MultiplicativeModifierOptions
Parameters ​
NameTypeDescription
optionsFunc() => TMultiplicative modifier options.
Returns ​

ModifierFromOptionalParams<T["description"], T["enabled"]>

Defined in ​

profectus/src/game/modifiers.tsx:125


createSequentialModifier ​

â–¸ createSequentialModifier<T, S>(modifiersFunc): S

Takes an array of modifiers and applies and reverses them in order. Modifiers that are not enabled will not be applied nor reversed. Also joins their descriptions together.

See

createModifierSection.

Type parameters ​
NameType
Textends Modifier[]
ST extends WithRequired<Modifier, "revert">[] ? WithRequired<Modifier, "revert" | "description"> : Omit<WithRequired<Modifier, "description">, "revert">
Parameters ​
NameTypeDescription
modifiersFunc() => TThe modifiers to perform sequentially.
Returns ​

S

Defined in ​

profectus/src/game/modifiers.tsx:260

- +
Skip to content
On this page

Module: game/modifiers ​

Interfaces ​

AdditiveModifierOptions ​

• AdditiveModifierOptions: Object

An object that configures an additive modifier via createAdditiveModifier.

Defined in ​

profectus/src/game/modifiers.tsx:53


ExponentialModifierOptions ​

• ExponentialModifierOptions: Object

An object that configures an exponential modifier via createExponentialModifier.

Defined in ​

profectus/src/game/modifiers.tsx:176


Modifier ​

• Modifier: Object

An object that can be used to apply or unapply some modification to a number. Being reversible requires the operation being invertible, but some features may rely on that. Descriptions can be optionally included for displaying them to the player. The built-in modifier creators are designed to display the modifiers using createModifierSection.

Defined in ​

profectus/src/game/modifiers.tsx:22


ModifierSectionOptions ​

• ModifierSectionOptions: Object

An object that configures a modifier section via createModifierSection.

Defined in ​

profectus/src/game/modifiers.tsx:318


MultiplicativeModifierOptions ​

• MultiplicativeModifierOptions: Object

An object that configures an multiplicative modifier via createMultiplicativeModifier.

Defined in ​

profectus/src/game/modifiers.tsx:115

Type Aliases ​

ModifierFromOptionalParams ​

Ƭ ModifierFromOptionalParams<T, S>: T extends undefined ? S extends undefined ? Omit<WithRequired<Modifier, "invert" | "getFormula">, "description" | "enabled"> : Omit<WithRequired<Modifier, "invert" | "enabled" | "getFormula">, "description"> : S extends undefined ? Omit<WithRequired<Modifier, "invert" | "description" | "getFormula">, "enabled"> : WithRequired<Modifier, "invert" | "enabled" | "description" | "getFormula">

Utility type used to narrow down a modifier type that will have a description and/or enabled property based on optional parameters, T and S (respectively).

Type parameters ​

Name
T
S

Defined in ​

profectus/src/game/modifiers.tsx:44

Functions ​

createAdditiveModifier ​

â–¸ createAdditiveModifier<T>(optionsFunc): ModifierFromOptionalParams<T["description"], T["enabled"]>

Create a modifier that adds some value to the input value.

Type parameters ​

NameType
Textends AdditiveModifierOptions

Parameters ​

NameTypeDescription
optionsFunc() => TAdditive modifier options.

Returns ​

ModifierFromOptionalParams<T["description"], T["enabled"]>

Defined in ​

profectus/src/game/modifiers.tsx:68


createExponentialModifier ​

â–¸ createExponentialModifier<T>(optionsFunc): ModifierFromOptionalParams<T["description"], T["enabled"]>

Create a modifier that raises the input value to the power of some value.

Type parameters ​

NameType
Textends ExponentialModifierOptions

Parameters ​

NameTypeDescription
optionsFunc() => TExponential modifier options.

Returns ​

ModifierFromOptionalParams<T["description"], T["enabled"]>

Defined in ​

profectus/src/game/modifiers.tsx:193


createModifierSection ​

â–¸ createModifierSection(options): Element

Create a JSX element that displays a modifier. Intended to be used with the output from createSequentialModifier.

Parameters ​

NameTypeDescription
optionsModifierSectionOptionsModifier section options.

Returns ​

Element

Defined in ​

profectus/src/game/modifiers.tsx:340


createMultiplicativeModifier ​

â–¸ createMultiplicativeModifier<T>(optionsFunc): ModifierFromOptionalParams<T["description"], T["enabled"]>

Create a modifier that multiplies the input value by some value.

Type parameters ​

NameType
Textends MultiplicativeModifierOptions

Parameters ​

NameTypeDescription
optionsFunc() => TMultiplicative modifier options.

Returns ​

ModifierFromOptionalParams<T["description"], T["enabled"]>

Defined in ​

profectus/src/game/modifiers.tsx:130


createSequentialModifier ​

â–¸ createSequentialModifier<T, S>(modifiersFunc): S

Takes an array of modifiers and applies and reverses them in order. Modifiers that are not enabled will not be applied nor reversed. Also joins their descriptions together.

See

createModifierSection.

Type parameters ​

NameType
Textends Modifier[]
ST extends WithRequired<Modifier, "invert">[] ? WithRequired<Modifier, "description" | "invert"> : Omit<WithRequired<Modifier, "description">, "invert">

Parameters ​

NameTypeDescription
modifiersFunc() => TThe modifiers to perform sequentially.

Returns ​

S

Defined in ​

profectus/src/game/modifiers.tsx:270

+ \ No newline at end of file diff --git a/api/modules/game/notifications.html b/api/modules/game/notifications.html index 2072b20a..4764ea80 100644 --- a/api/modules/game/notifications.html +++ b/api/modules/game/notifications.html @@ -5,12 +5,12 @@ Module: game/notifications | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: game/notifications ​

Functions ​

createDismissableNotify ​

â–¸ createDismissableNotify(element, shouldNotify): Ref<boolean>

Create a boolean ref that will automatically be set based on the given condition, but also dismissed when hovering over a given element, typically the element where acting upon the notification would take place.

Parameters ​
NameTypeDescription
elementVueFeatureThe element that will dismiss the notification on hover.
shouldNotifyRef<boolean> | () => booleanA function or ref that determines if the notif should be active currently or not.
Returns ​

Ref<boolean>

Defined in ​

profectus/src/game/notifications.ts:36


getHighNotifyStyle ​

â–¸ getHighNotifyStyle(): Object

Utility function to call getNotifyStyle with "high importance" parameters.

Returns ​

Object

NameType
borderColorstring
boxShadowstring
transformstring
zIndexnumber

Defined in ​

profectus/src/game/notifications.ts:27


getNotifyStyle ​

â–¸ getNotifyStyle(color?, strength?): Object

Gives a CSSProperties object that makes an object glow, to bring focus to it. Default values are for a "soft" white notif effect.

Parameters ​
NameTypeDefault valueDescription
colorstring"white"The color of the glow effect.
strengthstring"8px"The strength of the glow effect - affects its spread.
Returns ​

Object

NameType
borderColorstring
boxShadowstring
transformstring
zIndexnumber

Defined in ​

profectus/src/game/notifications.ts:17

- +
Skip to content
On this page

Module: game/notifications ​

Functions ​

createDismissableNotify ​

â–¸ createDismissableNotify(element, shouldNotify): Ref<boolean>

Create a boolean ref that will automatically be set based on the given condition, but also dismissed when hovering over a given element, typically the element where acting upon the notification would take place.

Parameters ​

NameTypeDescription
elementVueFeatureThe element that will dismiss the notification on hover.
shouldNotifyRef<boolean> | () => booleanA function or ref that determines if the notif should be active currently or not.

Returns ​

Ref<boolean>

Defined in ​

profectus/src/game/notifications.ts:36


getHighNotifyStyle ​

â–¸ getHighNotifyStyle(): Object

Utility function to call getNotifyStyle with "high importance" parameters.

Returns ​

Object

NameType
borderColorstring
boxShadowstring
transformstring
zIndexnumber

Defined in ​

profectus/src/game/notifications.ts:27


getNotifyStyle ​

â–¸ getNotifyStyle(color?, strength?): Object

Gives a CSSProperties object that makes an object glow, to bring focus to it. Default values are for a "soft" white notif effect.

Parameters ​

NameTypeDefault valueDescription
colorstring"white"The color of the glow effect.
strengthstring"8px"The strength of the glow effect - affects its spread.

Returns ​

Object

NameType
borderColorstring
boxShadowstring
transformstring
zIndexnumber

Defined in ​

profectus/src/game/notifications.ts:17

+ \ No newline at end of file diff --git a/api/modules/game/persistence.html b/api/modules/game/persistence.html index 93893451..662e2ab2 100644 --- a/api/modules/game/persistence.html +++ b/api/modules/game/persistence.html @@ -5,12 +5,12 @@ Module: game/persistence | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: game/persistence ​

Type Aliases ​

NonPersistent ​

Ƭ NonPersistent<T>: WritableComputedRef<T> & { [DefaultValue]: T }

Type parameters ​

NameType
Textends State = State

Defined in ​

profectus/src/game/persistence.ts:37

profectus/src/game/persistence.ts:92


Persistent ​

Ƭ Persistent<T>: Ref<T> & { [CheckNaN]: boolean ; [DefaultValue]: T ; [Deleted]: boolean ; [NonPersistent]: NonPersistent<T> ; [PersistentState]: Ref<T> ; [SaveDataPath]: string[] | undefined ; [StackTrace]: string ; value: T }

A Ref that has been augmented with properties to allow it to be saved and loaded within the player save data object.

Type parameters ​

NameType
Textends State = State

Defined in ​

profectus/src/game/persistence.ts:65


State ​

Ƭ State: string | number | boolean | DecimalSource | { [key: string]: State; } | { [key: number]: State; }

This is a union of things that should be safely stringifiable without needing special processes or knowing what to load them in as.

  • Decimals aren't allowed because we'd need to know to parse them back.
  • DecimalSources are allowed because the string is a valid value for them

Defined in ​

profectus/src/game/persistence.ts:54

Variables ​

CheckNaN ​

• Const CheckNaN: typeof CheckNaN

A symbol used in Persistent objects.

See

[CheckNaN]

Defined in ​

profectus/src/game/persistence.ts:47


DefaultValue ​

• Const DefaultValue: typeof DefaultValue

A symbol used in Persistent objects.

See

[DefaultValue]

Defined in ​

profectus/src/game/persistence.ts:22


Deleted ​

• Const Deleted: typeof Deleted

A symbol used in Persistent objects.

See

[Deleted]

Defined in ​

profectus/src/game/persistence.ts:32


NonPersistent ​

• Const NonPersistent: typeof NonPersistent

A symbol used in Persistent objects.

See

[NonPersistent]

Defined in ​

profectus/src/game/persistence.ts:37

profectus/src/game/persistence.ts:92


PersistentState ​

• Const PersistentState: typeof PersistentState

A symbol used in Persistent objects.

See

[PersistentState]

Defined in ​

profectus/src/game/persistence.ts:17


SaveDataPath ​

• Const SaveDataPath: typeof SaveDataPath

A symbol used in Persistent objects.

See

[SaveDataPath]

Defined in ​

profectus/src/game/persistence.ts:42


StackTrace ​

• Const StackTrace: typeof StackTrace

A symbol used in Persistent objects.

See

[StackTrace]

Defined in ​

profectus/src/game/persistence.ts:27

Functions ​

deletePersistent ​

â–¸ deletePersistent(persistent): void

Mark a Persistent as deleted, so it won't be saved and loaded. Since persistent refs must be created during a layer's options func, features can not create persistent refs after evaluating their own options funcs. As a result, it must create any persistent refs it might need. This function can then be called after the options func is evaluated to mark the persistent ref to not be saved or loaded.

Parameters ​
NameType
persistentPersistent<State>
Returns ​

void

Defined in ​

profectus/src/game/persistence.ts:213


isPersistent ​

â–¸ isPersistent(value): value is Persistent<State>

Type guard for whether an arbitrary value is a persistent ref

Parameters ​
NameTypeDescription
valueunknownThe value that may or may not be a persistent ref
Returns ​

value is Persistent<State>

Defined in ​

profectus/src/game/persistence.ts:193


noPersist ​

â–¸ noPersist<T, S>(persistent): T[typeof NonPersistent]

Unwraps the non-persistent ref inside of persistent refs, to be passed to other features without duplicating values in the save data object.

Type parameters ​
NameType
Textends Ref<S, T> & { [CheckNaN]: boolean ; [DefaultValue]: S ; [Deleted]: boolean ; [NonPersistent]: NonPersistent<S> ; [PersistentState]: Ref<S> ; [SaveDataPath]: undefined | string[] ; [StackTrace]: string ; value: S }
Sextends State
Parameters ​
NameTypeDescription
persistentTThe persistent ref to unwrap
Returns ​

T[typeof NonPersistent]

Defined in ​

profectus/src/game/persistence.ts:201


persistent ​

â–¸ persistent<T>(defaultValue, checkNaN?): Persistent<T>

Create a persistent ref, which can be saved and loaded. All (non-deleted) persistent refs must be included somewhere within the layer object returned by that layer's options func.

Type parameters ​
NameType
Textends State
Parameters ​
NameTypeDefault valueDescription
defaultValueT | Ref<T>undefinedThe value the persistent ref should start at on fresh saves or when reset.
checkNaNbooleantrueWhether or not to check this ref for being NaN on set. Only use on refs that should always be DecimalSources.
Returns ​

Persistent<T>

Defined in ​

profectus/src/game/persistence.ts:129

- +
Skip to content
On this page

Module: game/persistence ​

Type Aliases ​

NonPersistent ​

Ƭ NonPersistent<T>: WritableComputedRef<T> & { [DefaultValue]: T }

Type parameters ​

NameType
Textends State = State

Defined in ​

profectus/src/game/persistence.ts:37

profectus/src/game/persistence.ts:97


Persistent ​

Ƭ Persistent<T>: Ref<T> & { [CheckNaN]: boolean ; [DefaultValue]: T ; [Deleted]: boolean ; [NonPersistent]: NonPersistent<T> ; [PersistentState]: Ref<T> ; [SaveDataPath]: string[] | undefined ; [StackTrace]: string ; value: T }

A Ref that has been augmented with properties to allow it to be saved and loaded within the player save data object.

Type parameters ​

NameType
Textends State = State

Defined in ​

profectus/src/game/persistence.ts:70


State ​

Ƭ State: string | number | boolean | DecimalSource | { [key: string]: State; } | { [key: number]: State; }

This is a union of things that should be safely stringifiable without needing special processes or knowing what to load them in as.

  • Decimals aren't allowed because we'd need to know to parse them back.
  • DecimalSources are allowed because the string is a valid value for them

Defined in ​

profectus/src/game/persistence.ts:59

Variables ​

CheckNaN ​

• Const CheckNaN: typeof CheckNaN

A symbol used in Persistent objects.

See

[CheckNaN]

Defined in ​

profectus/src/game/persistence.ts:47


DefaultValue ​

• Const DefaultValue: typeof DefaultValue

A symbol used in Persistent objects.

See

[DefaultValue]

Defined in ​

profectus/src/game/persistence.ts:22


Deleted ​

• Const Deleted: typeof Deleted

A symbol used in Persistent objects.

See

[Deleted]

Defined in ​

profectus/src/game/persistence.ts:32


NonPersistent ​

• Const NonPersistent: typeof NonPersistent

A symbol used in Persistent objects.

See

[NonPersistent]

Defined in ​

profectus/src/game/persistence.ts:37

profectus/src/game/persistence.ts:97


PersistentState ​

• Const PersistentState: typeof PersistentState

A symbol used in Persistent objects.

See

[PersistentState]

Defined in ​

profectus/src/game/persistence.ts:17


SaveDataPath ​

• Const SaveDataPath: typeof SaveDataPath

A symbol used in Persistent objects.

See

[SaveDataPath]

Defined in ​

profectus/src/game/persistence.ts:42


SkipPersistence ​

• Const SkipPersistence: typeof SkipPersistence

A symbol used to flag objects that should not be checked for persistent values.

Defined in ​

profectus/src/game/persistence.ts:52


StackTrace ​

• Const StackTrace: typeof StackTrace

A symbol used in Persistent objects.

See

[StackTrace]

Defined in ​

profectus/src/game/persistence.ts:27

Functions ​

deletePersistent ​

â–¸ deletePersistent(persistent): void

Mark a Persistent as deleted, so it won't be saved and loaded. Since persistent refs must be created during a layer's options func, features can not create persistent refs after evaluating their own options funcs. As a result, it must create any persistent refs it might need. This function can then be called after the options func is evaluated to mark the persistent ref to not be saved or loaded.

Parameters ​

NameType
persistentPersistent<State>

Returns ​

void

Defined in ​

profectus/src/game/persistence.ts:248


isPersistent ​

â–¸ isPersistent(value): value is Persistent<State>

Type guard for whether an arbitrary value is a persistent ref

Parameters ​

NameTypeDescription
valueunknownThe value that may or may not be a persistent ref

Returns ​

value is Persistent<State>

Defined in ​

profectus/src/game/persistence.ts:198


noPersist ​

â–¸ noPersist<T, S>(persistent): T[typeof NonPersistent]

Unwraps the non-persistent ref inside of persistent refs, to be passed to other features without duplicating values in the save data object.

Type parameters ​

NameType
Textends Ref<S, T> & { [CheckNaN]: boolean ; [DefaultValue]: S ; [Deleted]: boolean ; [NonPersistent]: NonPersistent<S> ; [PersistentState]: Ref<S> ; [SaveDataPath]: undefined | string[] ; [StackTrace]: string ; value: S }
Sextends State

Parameters ​

NameTypeDescription
persistentTThe persistent ref to unwrap, or an object to ignore all persistent refs within

Returns ​

T[typeof NonPersistent]

Defined in ​

profectus/src/game/persistence.ts:206

â–¸ noPersist<T>(persistent): T

Type parameters ​

NameType
Textends object

Parameters ​

NameType
persistentT

Returns ​

T

Defined in ​

profectus/src/game/persistence.ts:209


persistent ​

â–¸ persistent<T>(defaultValue, checkNaN?): Persistent<T>

Create a persistent ref, which can be saved and loaded. All (non-deleted) persistent refs must be included somewhere within the layer object returned by that layer's options func.

Type parameters ​

NameType
Textends State

Parameters ​

NameTypeDefault valueDescription
defaultValueT | Ref<T>undefinedThe value the persistent ref should start at on fresh saves or when reset.
checkNaNbooleantrueWhether or not to check this ref for being NaN on set. Only use on refs that should always be DecimalSources.

Returns ​

Persistent<T>

Defined in ​

profectus/src/game/persistence.ts:134

+ \ No newline at end of file diff --git a/api/modules/game/player.html b/api/modules/game/player.html index 9f11a0fc..e8b12b05 100644 --- a/api/modules/game/player.html +++ b/api/modules/game/player.html @@ -5,12 +5,12 @@ Module: game/player | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: game/player ​

Interfaces ​

Player ​

• Player: Object

The player save data object.

NameTypeDescription
autosavebooleanWhether or not to automatically save every couple of seconds and on tab close.
devSpeednull | numberA multiplier for time passing. Set to 0 when the game is paused.
idstringThe ID of this save.
keepGoingbooleanWhether or not to continue playing after hasWon is true.
layersRecord<string, LayerData<unknown>>A dictionary of layer save data.
modIDstringThe ID of this project, to make sure saves aren't imported into the wrong project.
modVersionstringThe version of the project this save was created by. Used for upgrading saves for new versions.
namestringThe display name of this save.
offlineProdbooleanWhether or not to apply offline time when loading this save.
offlineTimenull | numberHow much offline time has been accumulated and not yet processed.
tabsstring[]The open tabs.
timenumberThe current time this save was last opened at, in ms since the unix epoch.
timePlayednumberHow long, in ms, this game has been played.

Defined in ​

profectus/src/game/player.ts:5

Type Aliases ​

LayerData ​

Ƭ LayerData<T>: { [P in keyof T]?: T[P] extends (infer U)[] ? Record<string, LayerData<U>> : T[P] extends Record<string, never> ? never : T[P] extends Ref<infer S> ? S : T[P] extends object ? LayerData<T[P]> : T[P] }

A layer's save data. Automatically unwraps refs.

Type parameters ​

Name
T

Defined in ​

profectus/src/game/player.ts:35

Variables ​

default ​

• default: Object

Type declaration ​

NameTypeDescription
autosavebooleanWhether or not to automatically save every couple of seconds and on tab close.
devSpeednull | numberA multiplier for time passing. Set to 0 when the game is paused.
idstringThe ID of this save.
keepGoingbooleanWhether or not to continue playing after hasWon is true.
layersRecord<string, LayerData<unknown>>A dictionary of layer save data.
modIDstringThe ID of this project, to make sure saves aren't imported into the wrong project.
modVersionstringThe version of the project this save was created by. Used for upgrading saves for new versions.
namestringThe display name of this save.
offlineProdbooleanWhether or not to apply offline time when loading this save.
offlineTimenull | numberHow much offline time has been accumulated and not yet processed.
tabsstring[]The open tabs.
timenumberThe current time this save was last opened at, in ms since the unix epoch.
timePlayednumberHow long, in ms, this game has been played.

Defined in ​

profectus/src/game/player.ts:63

Functions ​

stringifySave ​

â–¸ stringifySave(player): string

Convert a player save data object into a JSON string. Unwraps refs.

Parameters ​
NameType
playerPlayer
Returns ​

string

Defined in ​

profectus/src/game/player.ts:66

- +
Skip to content
On this page

Module: game/player ​

Interfaces ​

Player ​

• Player: Object

The player save data object.

Defined in ​

profectus/src/game/player.ts:5

Type Aliases ​

LayerData ​

Ƭ LayerData<T>: { [P in keyof T]?: T[P] extends (infer U)[] ? Record<string, LayerData<U>> : T[P] extends Record<string, never> ? never : T[P] extends Ref<infer S> ? S : T[P] extends object ? LayerData<T[P]> : T[P] }

A layer's save data. Automatically unwraps refs.

Type parameters ​

Name
T

Defined in ​

profectus/src/game/player.ts:35

Variables ​

default ​

• default: Object

Type declaration ​

NameTypeDescription
autosavebooleanWhether or not to automatically save every couple of seconds and on tab close.
devSpeednull | numberA multiplier for time passing. Set to 0 when the game is paused.
idstringThe ID of this save.
keepGoingbooleanWhether or not to continue playing after hasWon is true.
layersRecord<string, LayerData<unknown>>A dictionary of layer save data.
modIDstringThe ID of this project, to make sure saves aren't imported into the wrong project.
modVersionstringThe version of the project this save was created by. Used for upgrading saves for new versions.
namestringThe display name of this save.
offlineProdbooleanWhether or not to apply offline time when loading this save.
offlineTimenull | numberHow much offline time has been accumulated and not yet processed.
tabsstring[]The open tabs.
timenumberThe current time this save was last opened at, in ms since the unix epoch.
timePlayednumberHow long, in ms, this game has been played.

Defined in ​

profectus/src/game/player.ts:63

Functions ​

stringifySave ​

â–¸ stringifySave(player): string

Convert a player save data object into a JSON string. Unwraps refs.

Parameters ​

NameType
playerPlayer

Returns ​

string

Defined in ​

profectus/src/game/player.ts:66

+ \ No newline at end of file diff --git a/api/modules/game/requirements.html b/api/modules/game/requirements.html index 00563fb1..19c0e470 100644 --- a/api/modules/game/requirements.html +++ b/api/modules/game/requirements.html @@ -5,12 +5,12 @@ Module: game/requirements | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: game/requirements ​

Interfaces ​

CostRequirementOptions ​

• CostRequirementOptions: Object

An object that configures a Requirement based on a resource cost.

NameTypeDescription
costComputable<DecimalSource> | GenericFormulaThe amount of resource that must be met for this requirement. You can pass a formula, in which case maximizing will work out of the box (assuming its invertible and, for more accurate calculations, its integral is invertible). If you don't pass a formula then you can still support maximizing by passing a custom pay function.
pay?(amount?: DecimalSource) => voidPass-through to pay. May be required for maximizing support. See cost for restrictions on maximizing support.
requiresPay?Computable<boolean>Pass-through to requiresPay. If not set to false, the default pay function will remove cost from resource.
resourceResource<DecimalSource>The resource that will be checked for meeting the cost.
spendResources?Computable<boolean>When calculating multiple levels to be handled at once, whether it should consider resources used for each level as spent. Setting this to false causes calculations to be faster with larger numbers and supports more math functions. See
visibility?Computable<boolean | Visible | None>Pass-through to visibility.

Defined in ​

profectus/src/game/requirements.tsx:67


Requirement ​

• Requirement: Object

An object that can be used to describe a requirement to perform some purchase or other action.

See

createCostRequirement

NameTypeDescription
canMaximize?ProcessedComputable<boolean>Whether or not this requirement can have multiple levels of requirements that can be met at once. Requirement is assumed to not have multiple levels if this property not present.
display?(amount?: DecimalSource) => ElementThe display for this specific requirement. Required if visibility can be Visibility.Visible.
partialDisplay?(amount?: DecimalSource) => ElementThe display for this specific requirement. This is used for displays multiple requirements condensed. Required if visibility can be Visibility.Visible.
pay?(amount?: DecimalSource) => voidPerform any effects to the game state that should happen when the requirement gets triggered.
requirementMetProcessedComputable<boolean | DecimalSource>Whether or not this requirement has been met.
requiresPayProcessedComputable<boolean>Whether or not this requirement will need to affect the game state when whatever is using this requirement gets triggered.
visibilityProcessedComputable<boolean | Visible | None>Whether or not this requirement should be displayed in Vue Features. displayRequirements will respect this property.

Defined in ​

profectus/src/game/requirements.tsx:29

Type Aliases ​

CostRequirement ​

Ƭ CostRequirement: Replace<Requirement & CostRequirementOptions, { cost: ProcessedComputable<DecimalSource> | GenericFormula ; requiresPay: ProcessedComputable<boolean> ; spendResources: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visible | None | boolean> }>

Defined in ​

profectus/src/game/requirements.tsx:96


Requirements ​

Ƭ Requirements: Requirement | Requirement[]

Utility type for accepting 1 or more Requirements.

Defined in ​

profectus/src/game/requirements.tsx:64

Functions ​

createBooleanRequirement ​

â–¸ createBooleanRequirement(requirement, display?): Requirement

Creates a requirement based on a true/false value

Parameters ​
NameTypeDescription
requirementComputable<boolean>The boolean requirement to use
display?CoercableComponentHow to display this requirement to the user
Returns ​

Requirement

Defined in ​

profectus/src/game/requirements.tsx:205


createCostRequirement ​

â–¸ createCostRequirement<T>(optionsFunc): CostRequirement

Lazily creates a requirement with the given options, that is based on meeting an amount of a resource.

Type parameters ​
NameType
Textends CostRequirementOptions
Parameters ​
NameTypeDescription
optionsFunc() => TCost requirement options.
Returns ​

CostRequirement

Defined in ​

profectus/src/game/requirements.tsx:110


createVisibilityRequirement ​

â–¸ createVisibilityRequirement(feature): Requirement

Utility function for creating a requirement that a specified vue feature is visible

Parameters ​
NameTypeDescription
featureObjectThe feature to check the visibility of
feature.visibilityProcessedComputable<boolean | Visibility>-
Returns ​

Requirement

Defined in ​

profectus/src/game/requirements.tsx:190


displayRequirements ​

â–¸ displayRequirements(requirements, amount?): Element

Utility function for display 1+ requirements compactly.

Parameters ​
NameTypeDefault valueDescription
requirementsRequirementsundefinedThe 1+ requirements to display
amountDecimalSource1The amount of levels earned to be displayed
Returns ​

Element

Defined in ​

profectus/src/game/requirements.tsx:252


maxRequirementsMet ​

â–¸ maxRequirementsMet(requirements): DecimalSource

Calculates the maximum number of levels that could be acquired with the current requirement states. True/false requirements will be counted as Infinity or 0.

Parameters ​
NameTypeDescription
requirementsRequirementsThe 1+ requirements to check
Returns ​

DecimalSource

Defined in ​

profectus/src/game/requirements.tsx:234


payByDivision ​

â–¸ payByDivision(this, amount?): void

NameType
thisCostRequirement
amount?DecimalSource

Defined in ​

profectus/src/game/requirements.tsx:302


payByReset ​

â–¸ payByReset(overrideDefaultValue?): (this: CostRequirement) => void

NameType
overrideDefaultValue?DecimalSource

Defined in ​

profectus/src/game/requirements.tsx:314


payRequirements ​

â–¸ payRequirements(requirements, amount?): void

Utility function for paying the costs for 1+ requirements

Parameters ​
NameTypeDefault valueDescription
requirementsRequirementsundefinedThe 1+ requirements to pay
amountDecimalSource1How many levels to pay for
Returns ​

void

Defined in ​

profectus/src/game/requirements.tsx:294


requirementsMet ​

â–¸ requirementsMet(requirements): boolean

Utility for checking if 1+ requirements are all met

Parameters ​
NameTypeDescription
requirementsRequirementsThe 1+ requirements to check
Returns ​

boolean

Defined in ​

profectus/src/game/requirements.tsx:222

- +
Skip to content
On this page

Module: game/requirements ​

Interfaces ​

CostRequirementOptions ​

• CostRequirementOptions: Object

An object that configures a Requirement based on a resource cost.

Defined in ​

profectus/src/game/requirements.tsx:67


Requirement ​

• Requirement: Object

An object that can be used to describe a requirement to perform some purchase or other action.

See

createCostRequirement

Defined in ​

profectus/src/game/requirements.tsx:29

Type Aliases ​

CostRequirement ​

Ƭ CostRequirement: Replace<Requirement & CostRequirementOptions, { cost: ProcessedComputable<DecimalSource> | GenericFormula ; requiresPay: ProcessedComputable<boolean> ; spendResources: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visible | None | boolean> }>

Defined in ​

profectus/src/game/requirements.tsx:96


Requirements ​

Ƭ Requirements: Requirement | Requirement[]

Utility type for accepting 1 or more Requirements.

Defined in ​

profectus/src/game/requirements.tsx:64

Functions ​

createBooleanRequirement ​

â–¸ createBooleanRequirement(requirement, display?): Requirement

Creates a requirement based on a true/false value

Parameters ​

NameTypeDescription
requirementComputable<boolean>The boolean requirement to use
display?CoercableComponentHow to display this requirement to the user

Returns ​

Requirement

Defined in ​

profectus/src/game/requirements.tsx:205


createCostRequirement ​

â–¸ createCostRequirement<T>(optionsFunc): CostRequirement

Lazily creates a requirement with the given options, that is based on meeting an amount of a resource.

Type parameters ​

NameType
Textends CostRequirementOptions

Parameters ​

NameTypeDescription
optionsFunc() => TCost requirement options.

Returns ​

CostRequirement

Defined in ​

profectus/src/game/requirements.tsx:110


createVisibilityRequirement ​

â–¸ createVisibilityRequirement(feature): Requirement

Utility function for creating a requirement that a specified vue feature is visible

Parameters ​

NameTypeDescription
featureObjectThe feature to check the visibility of
feature.visibilityProcessedComputable<boolean | Visibility>-

Returns ​

Requirement

Defined in ​

profectus/src/game/requirements.tsx:190


displayRequirements ​

â–¸ displayRequirements(requirements, amount?): Element

Utility function for display 1+ requirements compactly.

Parameters ​

NameTypeDefault valueDescription
requirementsRequirementsundefinedThe 1+ requirements to display
amountDecimalSource1The amount of levels earned to be displayed

Returns ​

Element

Defined in ​

profectus/src/game/requirements.tsx:252


maxRequirementsMet ​

â–¸ maxRequirementsMet(requirements): DecimalSource

Calculates the maximum number of levels that could be acquired with the current requirement states. True/false requirements will be counted as Infinity or 0.

Parameters ​

NameTypeDescription
requirementsRequirementsThe 1+ requirements to check

Returns ​

DecimalSource

Defined in ​

profectus/src/game/requirements.tsx:234


payByDivision ​

â–¸ payByDivision(this, amount?): void

Parameters ​

NameType
thisCostRequirement
amount?DecimalSource

Returns ​

void

Defined in ​

profectus/src/game/requirements.tsx:302


payByReset ​

â–¸ payByReset(overrideDefaultValue?): (this: CostRequirement) => void

Parameters ​

NameType
overrideDefaultValue?DecimalSource

Returns ​

fn

â–¸ (this): void

Parameters ​
NameType
thisCostRequirement
Returns ​

void

Defined in ​

profectus/src/game/requirements.tsx:314


payRequirements ​

â–¸ payRequirements(requirements, amount?): void

Utility function for paying the costs for 1+ requirements

Parameters ​

NameTypeDefault valueDescription
requirementsRequirementsundefinedThe 1+ requirements to pay
amountDecimalSource1How many levels to pay for

Returns ​

void

Defined in ​

profectus/src/game/requirements.tsx:294


requirementsMet ​

â–¸ requirementsMet(requirements): boolean

Utility for checking if 1+ requirements are all met

Parameters ​

NameTypeDescription
requirementsRequirementsThe 1+ requirements to check

Returns ​

boolean

Defined in ​

profectus/src/game/requirements.tsx:222

+ \ No newline at end of file diff --git a/api/modules/game/settings.html b/api/modules/game/settings.html index 98a3c07b..2793a834 100644 --- a/api/modules/game/settings.html +++ b/api/modules/game/settings.html @@ -5,12 +5,12 @@ Module: game/settings | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: game/settings ​

Interfaces ​

Settings ​

• Settings: Object

The player's settings object.

NameTypeDescription
activestringThe ID of the active save.
alignUnitsbooleanWhether to align modifiers to the unit.
hideChallengesboolean-
msDisplayAchievementDisplay-
savesstring[]The IDs of all created saves.
showTPSbooleanWhether or not to show the current ticks per second in the lower left corner of the page.
themeThemesThe current theme to display the game in.
unthrottledbooleanWhether or not to cap the project at 20 ticks per second.

Defined in ​

profectus/src/game/settings.ts:10

profectus/src/features/achievements/achievement.tsx:269

profectus/src/features/challenges/challenge.tsx:344

Variables ​

default ​

• default: Settings

The player settings object. Stores data that persists across all saves. Automatically saved to localStorage whenever changed.

Defined in ​

profectus/src/game/settings.ts:56


gameComponents ​

• Const gameComponents: CoercableComponent[]

A list of components to add to the root of the page.

Defined in ​

profectus/src/game/settings.ts:119


infoComponents ​

• Const infoComponents: CoercableComponent[]

A list of components to show in the info modal.

Defined in ​

profectus/src/game/settings.ts:112


settingFields ​

• Const settingFields: CoercableComponent[]

A list of fields to append to the settings modal.

Defined in ​

profectus/src/game/settings.ts:105

Functions ​

hardResetSettings ​

â–¸ hardResetSettings(): void

A function that erases all player settings, including all saves.

Returns ​

void

Defined in ​

profectus/src/game/settings.ts:58


loadSettings ​

â–¸ loadSettings(): void

Loads the player settings from localStorage. Calls the GlobalEvents.loadSettings event for custom properties to be included. Custom properties should be added by the file they relate to, so they won't be included if the file is tree shaken away. Custom properties should also register the field to modify said setting using registerSettingField.

Returns ​

void

Defined in ​

profectus/src/game/settings.ts:77


registerGameComponent ​

â–¸ registerGameComponent(component): void

Register a component to be displayed at the root of the page.

Parameters ​
NameType
componentCoercableComponent
Returns ​

void

Defined in ​

profectus/src/game/settings.ts:121


registerInfoComponent ​

â–¸ registerInfoComponent(component): void

Register a component to be displayed in the info modal.

Parameters ​
NameType
componentCoercableComponent
Returns ​

void

Defined in ​

profectus/src/game/settings.ts:114


registerSettingField ​

â–¸ registerSettingField(component): void

Register a field to be displayed in the settings modal.

Parameters ​
NameType
componentCoercableComponent
Returns ​

void

Defined in ​

profectus/src/game/settings.ts:107

- +
Skip to content
On this page

Module: game/settings ​

Interfaces ​

Settings ​

• Settings: Object

The player's settings object.

Defined in ​

profectus/src/game/settings.ts:10

profectus/src/features/achievements/achievement.tsx:269

profectus/src/features/challenges/challenge.tsx:344

Variables ​

default ​

• default: Settings

The player settings object. Stores data that persists across all saves. Automatically saved to localStorage whenever changed.

Defined in ​

profectus/src/game/settings.ts:56


gameComponents ​

• Const gameComponents: CoercableComponent[]

A list of components to add to the root of the page.

Defined in ​

profectus/src/game/settings.ts:119


infoComponents ​

• Const infoComponents: CoercableComponent[]

A list of components to show in the info modal.

Defined in ​

profectus/src/game/settings.ts:112


settingFields ​

• Const settingFields: CoercableComponent[]

A list of fields to append to the settings modal.

Defined in ​

profectus/src/game/settings.ts:105

Functions ​

hardResetSettings ​

â–¸ hardResetSettings(): void

A function that erases all player settings, including all saves.

Returns ​

void

Defined in ​

profectus/src/game/settings.ts:58


loadSettings ​

â–¸ loadSettings(): void

Loads the player settings from localStorage. Calls the GlobalEvents.loadSettings event for custom properties to be included. Custom properties should be added by the file they relate to, so they won't be included if the file is tree shaken away. Custom properties should also register the field to modify said setting using registerSettingField.

Returns ​

void

Defined in ​

profectus/src/game/settings.ts:77


registerGameComponent ​

â–¸ registerGameComponent(component): void

Register a component to be displayed at the root of the page.

Parameters ​

NameType
componentCoercableComponent

Returns ​

void

Defined in ​

profectus/src/game/settings.ts:121


registerInfoComponent ​

â–¸ registerInfoComponent(component): void

Register a component to be displayed in the info modal.

Parameters ​

NameType
componentCoercableComponent

Returns ​

void

Defined in ​

profectus/src/game/settings.ts:114


registerSettingField ​

â–¸ registerSettingField(component): void

Register a field to be displayed in the settings modal.

Parameters ​

NameType
componentCoercableComponent

Returns ​

void

Defined in ​

profectus/src/game/settings.ts:107

+ \ No newline at end of file diff --git a/api/modules/game/state.html b/api/modules/game/state.html index 861a8653..e291bf17 100644 --- a/api/modules/game/state.html +++ b/api/modules/game/state.html @@ -5,12 +5,12 @@ Module: game/state | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: game/state ​

Interfaces ​

Transient ​

• Transient: Object

An object of global data that is not persistent.

NameTypeDescription
NaNPath?string[]The location within the player save data object of the NaN value.
NaNPersistent?Persistent<DecimalSource>The ref that was being set to NaN.
hasNaNbooleanWhether or not a NaN value has been detected and undealt with.
lastTenTicksnumber[]A list of the duration, in ms, of the last 10 game ticks. Used for calculating TPS.

Defined in ​

profectus/src/game/state.ts:6

Variables ​

default ​

• default: ShallowReactive<Transient>

The global transient state object.

Defined in ​

profectus/src/game/state.ts:24

- +
+ \ No newline at end of file diff --git a/api/modules/lib/break_eternity.html b/api/modules/lib/break_eternity.html index e6477a3a..399fe09d 100644 --- a/api/modules/lib/break_eternity.html +++ b/api/modules/lib/break_eternity.html @@ -5,12 +5,12 @@ Module: lib/break_eternity | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: lib/break_eternity ​

Classes ​

default ​

• default: Object

The Decimal's value is simply mantissa * 10^exponent.

NameType
constructor(value?: DecimalSource) => default
layernumber
magnumber
signnumber
dInfdefault
dNaNdefault
dNegInfdefault
dNegOnedefault
dNumberMaxdefault
dNumberMindefault
dOnedefault
dTendefault
dTwodefault
dZerodefault
fromStringCacheLRUCache<string, default>
get e()number
get exponent()number
get m()number
get mantissa()number
get s()number
abs() => default
absLog10() => default
acos() => default
acosh() => default
add(value: DecimalSource) => default
ascensionPenalty(ascensions: DecimalSource) => default
asin() => default
asinh() => default
atan() => default
atanh() => default
cbrt() => default
ceil() => default
clamp(min: DecimalSource, max: DecimalSource) => default
clampMax(max: DecimalSource) => default
clampMin(min: DecimalSource) => default
cmp(value: DecimalSource) => CompareResult
cmp_tolerance(value: DecimalSource, tolerance: number) => CompareResult
cmpabs(value: DecimalSource) => CompareResult
compare(value: DecimalSource) => CompareResult
compare_tolerance(value: DecimalSource, tolerance: number) => CompareResult
cos() => default
cosh() => default
cube() => default
div(value: DecimalSource) => default
divide(value: DecimalSource) => default
divideBy(value: DecimalSource) => default
dividedBy(value: DecimalSource) => default
egg() => default
eq(value: DecimalSource) => boolean
eq_tolerance(value: DecimalSource, tolerance?: number) => boolean
equals(value: DecimalSource) => boolean
equals_tolerance(value: DecimalSource, tolerance: number) => boolean
exp() => default
factorial() => default
floor() => default
fromComponents(sign: number, layer: number, mag: number) => default
fromComponents_noNormalize(sign: number, layer: number, mag: number) => default
fromDecimal(value: default) => default
fromMantissaExponent(mantissa: number, exponent: number) => default
fromMantissaExponent_noNormalize(mantissa: number, exponent: number) => default
fromNumber(value: number) => default
fromString(value: string) => default
fromValue(value: DecimalSource) => default
gamma() => default
greaterThan(other: DecimalSource) => boolean
greaterThanOrEqualTo(other: DecimalSource) => boolean
gt(value: DecimalSource) => boolean
gt_tolerance(value: DecimalSource, tolerance: number) => boolean
gte(value: DecimalSource) => boolean
gte_tolerance(value: DecimalSource, tolerance: number) => boolean
isFinite() => boolean
isNan() => boolean
iteratedexp(height: number, payload: default) => default
iteratedlog(base: DecimalSource, times: number) => default
lambertw() => default
layeradd(diff: number, base: DecimalSource) => default
layeradd10(diff: DecimalSource) => default
lessThan(other: DecimalSource) => boolean
lessThanOrEqualTo(other: DecimalSource) => boolean
ln() => default
lngamma() => default
log(base: DecimalSource) => default
log10() => default
log2() => default
logarithm(base: DecimalSource) => default
lt(value: DecimalSource) => boolean
lt_tolerance(value: DecimalSource, tolerance: number) => boolean
lte(value: DecimalSource) => boolean
lte_tolerance(value: DecimalSource, tolerance: number) => boolean
magnitudeWithDecimalPlaces(places: number) => number
mantissaWithDecimalPlaces(places: number) => number
max(value: DecimalSource) => default
maxabs(value: DecimalSource) => default
min(value: DecimalSource) => default
minabs(value: DecimalSource) => default
minus(value: DecimalSource) => default
mul(value: DecimalSource) => default
multiply(value: DecimalSource) => default
neg() => default
negate() => default
negated() => default
neq(value: DecimalSource) => boolean
neq_tolerance(value: DecimalSource, tolerance: number) => boolean
normalize() => default
notEquals(value: DecimalSource) => boolean
notEquals_tolerance(value: DecimalSource, tolerance: number) => boolean
pLog10() => default
pentate(height: number, payload: DecimalSource) => default
plus(value: DecimalSource) => default
pow(value: DecimalSource) => default
pow10() => default
pow_base(value: DecimalSource) => default
recip() => default
reciprocal() => default
reciprocate() => default
root(value: DecimalSource) => default
round() => default
sgn() => number
sin() => default
sinh() => default
slog(base: DecimalSource, iterations: number) => default
slog_internal(base: DecimalSource) => default
sqr() => default
sqrt() => default
ssqrt() => default
sub(value: DecimalSource) => default
subtract(value: DecimalSource) => default
tan() => default
tanh() => default
tetrate(height: number, payload: DecimalSource) => default
times(value: DecimalSource) => default
toExponential(places: number) => string
toFixed(places: number) => string
toJSON() => string
toNumber() => number
toPrecision(places: number) => string
toString() => string
toStringWithDecimalPlaces(places: number) => string
trunc() => default
valueOf() => string
abs(value: DecimalSource) => default
absLog10(value: DecimalSource) => default
acos(value: DecimalSource) => default
acosh(value: DecimalSource) => default
add(value: DecimalSource, other: DecimalSource) => default
affordArithmeticSeries(resourcesAvailable: DecimalSource, priceStart: DecimalSource, priceAdd: DecimalSource, currentOwned: DecimalSource) => default
affordArithmeticSeries_core(resourcesAvailable: default, priceStart: default, priceAdd: default, currentOwned: default) => default
affordGeometricSeries(resourcesAvailable: DecimalSource, priceStart: DecimalSource, priceRatio: DecimalSource, currentOwned: DecimalSource) => default
affordGeometricSeries_core(resourcesAvailable: default, priceStart: default, priceRatio: default, currentOwned: DecimalSource) => default
asin(value: DecimalSource) => default
asinh(value: DecimalSource) => default
atan(value: DecimalSource) => default
atanh(value: DecimalSource) => default
cbrt(value: DecimalSource) => default
ceil(value: DecimalSource) => default
clamp(value: DecimalSource, min: DecimalSource, max: DecimalSource) => default
clampMax(value: DecimalSource, max: DecimalSource) => default
clampMin(value: DecimalSource, min: DecimalSource) => default
cmp(value: DecimalSource, other: DecimalSource) => CompareResult
cmp_tolerance(value: DecimalSource, other: DecimalSource, tolerance: number) => CompareResult
cmpabs(value: DecimalSource, other: DecimalSource) => CompareResult
compare(value: DecimalSource, other: DecimalSource) => CompareResult
compare_tolerance(value: DecimalSource, other: DecimalSource, tolerance: number) => CompareResult
cos(value: DecimalSource) => default
cosh(value: DecimalSource) => default
critical_section(base: number, height: number, grid: number[][]) => number
cube(value: DecimalSource) => default
div(value: DecimalSource, other: DecimalSource) => default
divide(value: DecimalSource, other: DecimalSource) => default
efficiencyOfPurchase(cost: DecimalSource, currentRpS: DecimalSource, deltaRpS: DecimalSource) => default
efficiencyOfPurchase_core(cost: default, currentRpS: default, deltaRpS: default) => default
eq(value: DecimalSource, other: DecimalSource) => boolean
eq_tolerance(value: DecimalSource, other: DecimalSource, tolerance?: number) => boolean
equals(value: DecimalSource, other: DecimalSource) => boolean
equals_tolerance(value: DecimalSource, other: DecimalSource, tolerance?: number) => boolean
exp(value: DecimalSource) => default
factorial(value: DecimalSource, _other?: undefined) => default
floor(value: DecimalSource) => default
fromComponents(sign: number, layer: number, mag: number) => default
fromComponents_noNormalize(sign: number, layer: number, mag: number) => default
fromDecimal(value: default) => default
fromMantissaExponent(mantissa: number, exponent: number) => default
fromMantissaExponent_noNormalize(mantissa: number, exponent: number) => default
fromNumber(value: number) => default
fromString(value: string) => default
fromValue(value: DecimalSource) => default
fromValue_noAlloc(value: DecimalSource) => Readonly<default>
gamma(value: DecimalSource, _other?: undefined) => default
gt(value: DecimalSource, other: DecimalSource) => boolean
gt_tolerance(value: DecimalSource, other: DecimalSource, tolerance: number) => boolean
gte(value: DecimalSource, other: DecimalSource) => boolean
gte_tolerance(value: DecimalSource, other: DecimalSource, tolerance: number) => boolean
isFinite(value: DecimalSource) => boolean
isNaN(value: DecimalSource) => boolean
iteratedexp(value: DecimalSource, height: number, payload: default) => default
iteratedlog(value: DecimalSource, base: DecimalSource, times: number) => default
lambertw(value: DecimalSource) => default
layeradd(value: DecimalSource, diff: number, base: DecimalSource) => default
layeradd10(value: DecimalSource, diff: DecimalSource) => default
ln(value: DecimalSource) => default
lngamma(value: DecimalSource, _other?: undefined) => default
log(value: DecimalSource, base: DecimalSource) => default
log10(value: DecimalSource) => default
log2(value: DecimalSource) => default
logarithm(value: DecimalSource, base: DecimalSource) => default
lt(value: DecimalSource, other: DecimalSource) => boolean
lt_tolerance(value: DecimalSource, other: DecimalSource, tolerance: number) => boolean
lte(value: DecimalSource, other: DecimalSource) => boolean
lte_tolerance(value: DecimalSource, other: DecimalSource, tolerance: number) => boolean
max(value: DecimalSource, other: DecimalSource) => default
maxabs(value: DecimalSource, other: DecimalSource) => default
min(value: DecimalSource, other: DecimalSource) => default
minabs(value: DecimalSource, other: DecimalSource) => default
minus(value: DecimalSource, other: DecimalSource) => default
mul(value: DecimalSource, other: DecimalSource) => default
multiply(value: DecimalSource, other: DecimalSource) => default
neg(value: DecimalSource) => default
negate(value: DecimalSource) => default
negated(value: DecimalSource) => default
neq(value: DecimalSource, other: DecimalSource) => boolean
neq_tolerance(value: DecimalSource, other: DecimalSource, tolerance: number) => boolean
notEquals(value: DecimalSource, other: DecimalSource) => boolean
notEquals_tolerance(value: DecimalSource, other: DecimalSource, tolerance: number) => boolean
pLog10(value: DecimalSource) => default
pentate(value: DecimalSource, height: number, payload: DecimalSource) => default
plus(value: DecimalSource, other: DecimalSource) => default
pow(value: DecimalSource, other: DecimalSource) => default
pow10(value: DecimalSource) => default
pow_base(value: DecimalSource, other: DecimalSource) => default
randomDecimalForTesting(maxLayers: number) => default
recip(value: DecimalSource) => default
reciprocal(value: DecimalSource) => default
reciprocate(value: DecimalSource) => default
root(value: DecimalSource, other: DecimalSource) => default
round(value: DecimalSource) => default
sgn(value: DecimalSource) => number
sign(value: DecimalSource) => number
sin(value: DecimalSource) => default
sinh(value: DecimalSource) => default
slog(value: DecimalSource, base: number) => default
slog_critical(base: number, height: number) => number
sqr(value: DecimalSource) => default
sqrt(value: DecimalSource) => default
ssqrt(value: DecimalSource) => default
sub(value: DecimalSource, other: DecimalSource) => default
subtract(value: DecimalSource, other: DecimalSource) => default
sumArithmeticSeries(numItems: DecimalSource, priceStart: DecimalSource, priceAdd: DecimalSource, currentOwned: DecimalSource) => default
sumArithmeticSeries_core(numItems: default, priceStart: default, priceAdd: default, currentOwned: default) => default
sumGeometricSeries(numItems: DecimalSource, priceStart: DecimalSource, priceRatio: DecimalSource, currentOwned: DecimalSource) => default
sumGeometricSeries_core(numItems: DecimalSource, priceStart: default, priceRatio: default, currentOwned: DecimalSource) => default
tan(value: DecimalSource) => default
tanh(value: DecimalSource) => default
tetrate(value: DecimalSource, height: number, payload: DecimalSource) => default
tetrate_critical(base: number, height: number) => number
times(value: DecimalSource, other: DecimalSource) => default
trunc(value: DecimalSource) => default

Defined in ​

profectus/src/lib/break_eternity.ts:346

Type Aliases ​

CompareResult ​

Ƭ CompareResult: -1 | 0 | 1

Defined in ​

profectus/src/lib/break_eternity.ts:5


DecimalSource ​

Ƭ DecimalSource: default | number | string

Defined in ​

profectus/src/lib/break_eternity.ts:341

- +
Skip to content
On this page

Module: lib/break_eternity ​

Classes ​

default ​

• default: Object

The Decimal's value is simply mantissa * 10^exponent.

Defined in ​

profectus/src/lib/break_eternity.ts:346

Type Aliases ​

CompareResult ​

Ƭ CompareResult: -1 | 0 | 1

Defined in ​

profectus/src/lib/break_eternity.ts:5


DecimalSource ​

Ƭ DecimalSource: default | number | string

Defined in ​

profectus/src/lib/break_eternity.ts:341

+ \ No newline at end of file diff --git a/api/modules/lib/collapseTransition.html b/api/modules/lib/collapseTransition.html index c4732836..4e541f56 100644 --- a/api/modules/lib/collapseTransition.html +++ b/api/modules/lib/collapseTransition.html @@ -5,7 +5,7 @@ Module: lib/collapseTransition | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/modules/lib/lru-cache.html b/api/modules/lib/lru-cache.html index 94b78acd..9cccb866 100644 --- a/api/modules/lib/lru-cache.html +++ b/api/modules/lib/lru-cache.html @@ -5,12 +5,12 @@ Module: lib/lru-cache | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: lib/lru-cache ​

Classes ​

LRUCache ​

• LRUCache<K, V>: Object

A LRU cache intended for caching pure functions.

Type parameters ​

Name
K
V
NameType
constructor<K, V>(maxSize: number) => LRUCache<K, V>
firstundefined | ListNode<K, V>
lastundefined | ListNode<K, V>
mapMap<K, ListNode<K, V>>
maxSizenumber
get size()number
get(key: K) => undefined | V
set(key: K, value: V) => void

Defined in ​

profectus/src/lib/lru-cache.ts:4

- +
+ \ No newline at end of file diff --git a/api/modules/lib/pixi.html b/api/modules/lib/pixi.html index 20a7c1b8..201de16b 100644 --- a/api/modules/lib/pixi.html +++ b/api/modules/lib/pixi.html @@ -5,7 +5,7 @@ Module: lib/pixi | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/modules/lib/pwa-register.html b/api/modules/lib/pwa-register.html index 39c0f14e..1880f918 100644 --- a/api/modules/lib/pwa-register.html +++ b/api/modules/lib/pwa-register.html @@ -5,12 +5,12 @@ Module: lib/pwa-register | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: lib/pwa-register ​

Interfaces ​

RegisterSWOptions ​

• RegisterSWOptions: Object

NameType
immediate?boolean
onNeedRefresh?() => void
onOfflineReady?() => void
onRegisterError?(error: any) => void
onRegistered?(registration: undefined | ServiceWorkerRegistration) => void

Defined in ​

profectus/src/lib/pwa-register.d.ts:4

Functions ​

useRegisterSW ​

â–¸ useRegisterSW(options?): Object

NameType
options?RegisterSWOptions

Defined in ​

profectus/src/lib/pwa-register.d.ts:12

- +
Skip to content
On this page

Module: lib/pwa-register ​

Interfaces ​

RegisterSWOptions ​

• RegisterSWOptions: Object

Defined in ​

profectus/src/lib/pwa-register.d.ts:4

Functions ​

useRegisterSW ​

â–¸ useRegisterSW(options?): Object

Parameters ​

NameType
options?RegisterSWOptions

Returns ​

Object

NameType
needRefreshRef<boolean>
offlineReadyRef<boolean>
updateServiceWorker(reloadPage?: boolean) => Promise<void>

Defined in ​

profectus/src/lib/pwa-register.d.ts:12

+ \ No newline at end of file diff --git a/api/modules/lib/vue-panzoom.html b/api/modules/lib/vue-panzoom.html index 58ad494f..93dd5513 100644 --- a/api/modules/lib/vue-panzoom.html +++ b/api/modules/lib/vue-panzoom.html @@ -5,7 +5,7 @@ Module: lib/vue-panzoom | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/modules/lib/vue-textarea-autosize.html b/api/modules/lib/vue-textarea-autosize.html index 6453d4a8..9688640c 100644 --- a/api/modules/lib/vue-textarea-autosize.html +++ b/api/modules/lib/vue-textarea-autosize.html @@ -5,7 +5,7 @@ Module: lib/vue-textarea-autosize | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/api/modules/util/bignum.html b/api/modules/util/bignum.html index 55e5a3ce..260440dd 100644 --- a/api/modules/util/bignum.html +++ b/api/modules/util/bignum.html @@ -5,12 +5,12 @@ Module: util/bignum | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: util/bignum ​

References ​

default ​

Re-exports default

Type Aliases ​

DecimalSource ​

Ƭ DecimalSource: DecimalSource

Defined in ​

profectus/src/util/bignum.ts:18

Functions ​

commaFormat ​

â–¸ commaFormat(num, precision): string

NameType
numDecimalSource
precisionnumber

Defined in ​

profectus/src/util/bignum.ts:8


exponentialFormat ​

â–¸ exponentialFormat(num, precision, mantissa?): string

NameTypeDefault value
numDecimalSourceundefined
precisionnumberundefined
mantissabooleantrue

Defined in ​

profectus/src/util/bignum.ts:7


format ​

â–¸ format(num, precision?, small?): string

NameType
numDecimalSource
precision?number
small?boolean

Defined in ​

profectus/src/util/bignum.ts:10


formatSmall ​

â–¸ formatSmall(x, precision?): string

NameType
xDecimalSource
precision?number

Defined in ​

profectus/src/util/bignum.ts:14


formatTime ​

â–¸ formatTime(seconds): string

NameType
secondsDecimalSource

Defined in ​

profectus/src/util/bignum.ts:12


formatWhole ​

â–¸ formatWhole(num): string

NameType
numDecimalSource

Defined in ​

profectus/src/util/bignum.ts:11


invertOOM ​

â–¸ invertOOM(x): default

NameType
xDecimalSource

Defined in ​

profectus/src/util/bignum.ts:15


regularFormat ​

â–¸ regularFormat(num, precision): string

NameType
numDecimalSource
precisionnumber

Defined in ​

profectus/src/util/bignum.ts:9


toPlaces ​

â–¸ toPlaces(x, precision, maxAccepted): string

NameType
xDecimalSource
precisionnumber
maxAcceptedDecimalSource

Defined in ​

profectus/src/util/bignum.ts:13

- +
Skip to content
On this page

Module: util/bignum ​

References ​

default ​

Re-exports default

Type Aliases ​

DecimalSource ​

Ƭ DecimalSource: DecimalSource

Defined in ​

profectus/src/util/bignum.ts:18

Functions ​

commaFormat ​

â–¸ commaFormat(num, precision): string

Parameters ​

NameType
numDecimalSource
precisionnumber

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:28


exponentialFormat ​

â–¸ exponentialFormat(num, precision, mantissa?): string

Parameters ​

NameTypeDefault value
numDecimalSourceundefined
precisionnumberundefined
mantissabooleantrue

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:9


format ​

â–¸ format(num, precision?, small?): string

Parameters ​

NameType
numDecimalSource
precision?number
small?boolean

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:69


formatSmall ​

â–¸ formatSmall(x, precision?): string

Parameters ​

NameType
xDecimalSource
precision?number

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:185


formatTime ​

â–¸ formatTime(seconds): string

Parameters ​

NameType
secondsDecimalSource

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:130


formatWhole ​

â–¸ formatWhole(num): string

Parameters ​

NameType
numDecimalSource

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:116


invertOOM ​

â–¸ invertOOM(x): default

Parameters ​

NameType
xDecimalSource

Returns ​

default

Defined in ​

profectus/src/util/break_eternity.ts:189


regularFormat ​

â–¸ regularFormat(num, precision): string

Parameters ​

NameType
numDecimalSource
precisionnumber

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:43


toPlaces ​

â–¸ toPlaces(x, precision, maxAccepted): string

Parameters ​

NameType
xDecimalSource
precisionnumber
maxAcceptedDecimalSource

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:173

+ \ No newline at end of file diff --git a/api/modules/util/break_eternity.html b/api/modules/util/break_eternity.html index a2d4e704..fda8c0d2 100644 --- a/api/modules/util/break_eternity.html +++ b/api/modules/util/break_eternity.html @@ -5,12 +5,12 @@ Module: util/break_eternity | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: util/break_eternity ​

References ​

default ​

Re-exports default

Functions ​

commaFormat ​

â–¸ commaFormat(num, precision): string

NameType
numDecimalSource
precisionnumber

Defined in ​

profectus/src/util/break_eternity.ts:28


exponentialFormat ​

â–¸ exponentialFormat(num, precision, mantissa?): string

NameTypeDefault value
numDecimalSourceundefined
precisionnumberundefined
mantissabooleantrue

Defined in ​

profectus/src/util/break_eternity.ts:9


format ​

â–¸ format(num, precision?, small?): string

NameType
numDecimalSource
precision?number
small?boolean

Defined in ​

profectus/src/util/break_eternity.ts:69


formatSmall ​

â–¸ formatSmall(x, precision?): string

NameType
xDecimalSource
precision?number

Defined in ​

profectus/src/util/break_eternity.ts:185


formatTime ​

â–¸ formatTime(seconds): string

NameType
secondsDecimalSource

Defined in ​

profectus/src/util/break_eternity.ts:130


formatWhole ​

â–¸ formatWhole(num): string

NameType
numDecimalSource

Defined in ​

profectus/src/util/break_eternity.ts:116


invertOOM ​

â–¸ invertOOM(x): default

NameType
xDecimalSource

Defined in ​

profectus/src/util/break_eternity.ts:189


regularFormat ​

â–¸ regularFormat(num, precision): string

NameType
numDecimalSource
precisionnumber

Defined in ​

profectus/src/util/break_eternity.ts:43


toPlaces ​

â–¸ toPlaces(x, precision, maxAccepted): string

NameType
xDecimalSource
precisionnumber
maxAcceptedDecimalSource

Defined in ​

profectus/src/util/break_eternity.ts:173

- +
Skip to content
On this page

Module: util/break_eternity ​

References ​

default ​

Re-exports default

Functions ​

commaFormat ​

â–¸ commaFormat(num, precision): string

Parameters ​

NameType
numDecimalSource
precisionnumber

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:28


exponentialFormat ​

â–¸ exponentialFormat(num, precision, mantissa?): string

Parameters ​

NameTypeDefault value
numDecimalSourceundefined
precisionnumberundefined
mantissabooleantrue

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:9


format ​

â–¸ format(num, precision?, small?): string

Parameters ​

NameType
numDecimalSource
precision?number
small?boolean

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:69


formatSmall ​

â–¸ formatSmall(x, precision?): string

Parameters ​

NameType
xDecimalSource
precision?number

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:185


formatTime ​

â–¸ formatTime(seconds): string

Parameters ​

NameType
secondsDecimalSource

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:130


formatWhole ​

â–¸ formatWhole(num): string

Parameters ​

NameType
numDecimalSource

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:116


invertOOM ​

â–¸ invertOOM(x): default

Parameters ​

NameType
xDecimalSource

Returns ​

default

Defined in ​

profectus/src/util/break_eternity.ts:189


regularFormat ​

â–¸ regularFormat(num, precision): string

Parameters ​

NameType
numDecimalSource
precisionnumber

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:43


toPlaces ​

â–¸ toPlaces(x, precision, maxAccepted): string

Parameters ​

NameType
xDecimalSource
precisionnumber
maxAcceptedDecimalSource

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:173

+ \ No newline at end of file diff --git a/api/modules/util/common.html b/api/modules/util/common.html index 0f783374..d7f95242 100644 --- a/api/modules/util/common.html +++ b/api/modules/util/common.html @@ -5,12 +5,12 @@ Module: util/common | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: util/common ​

Enumerations ​

Direction ​

• Direction: Object

NameType
Default"Up"
Down"Down"
Left"Left"
Right"Right"
Up"Up"

Defined in ​

profectus/src/util/common.ts:21

Type Aliases ​

ArrayElements ​

Ƭ ArrayElements<T>: T extends ReadonlyArray<infer S> ? S : never

Type parameters ​

NameType
Textends ReadonlyArray<unknown>

Defined in ​

profectus/src/util/common.ts:3


WithRequired ​

Ƭ WithRequired<T, K>: T &

Type parameters ​

NameType
TT
Kextends keyof T

Defined in ​

profectus/src/util/common.ts:1

Functions ​

camelToTitle ​

â–¸ camelToTitle(camel): string

NameType
camelstring

Defined in ​

profectus/src/util/common.ts:9


isFunction ​

â–¸ isFunction<T, S, R>(functionOrValue): functionOrValue is Function

NameType
functionOrValueR | (...args: S) => T

Defined in ​

profectus/src/util/common.ts:15

- +
Skip to content
On this page

Module: util/common ​

Enumerations ​

Direction ​

• Direction: Object

Defined in ​

profectus/src/util/common.ts:21

Type Aliases ​

ArrayElements ​

Ƭ ArrayElements<T>: T extends ReadonlyArray<infer S> ? S : never

Type parameters ​

NameType
Textends ReadonlyArray<unknown>

Defined in ​

profectus/src/util/common.ts:3


WithRequired ​

Ƭ WithRequired<T, K>: T &

Type parameters ​

NameType
TT
Kextends keyof T

Defined in ​

profectus/src/util/common.ts:1

Functions ​

camelToTitle ​

â–¸ camelToTitle(camel): string

Parameters ​

NameType
camelstring

Returns ​

string

Defined in ​

profectus/src/util/common.ts:9


isFunction ​

â–¸ isFunction<T, S, R>(functionOrValue): functionOrValue is Function

Type parameters ​

NameType
TT
Sextends readonly unknown[]
RR

Parameters ​

NameType
functionOrValueR | (...args: S) => T

Returns ​

functionOrValue is Function

Defined in ​

profectus/src/util/common.ts:15

+ \ No newline at end of file diff --git a/api/modules/util/computed.html b/api/modules/util/computed.html index 593db471..fad2d8e5 100644 --- a/api/modules/util/computed.html +++ b/api/modules/util/computed.html @@ -5,12 +5,12 @@ Module: util/computed | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: util/computed ​

Type Aliases ​

Computable ​

Ƭ Computable<T>: T | Ref<T> | () => T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:8


ComputableKeysOf ​

Ƭ ComputableKeysOf<T>: Pick<T, { [K in keyof T]: T[K] extends Computable<unknown> ? K : never }[keyof T]>

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:22


GetComputableType ​

Ƭ GetComputableType<T>: T extends { [DoNotCache]: true } ? T : T extends () => infer S ? Ref<S> : undefined extends T ? undefined : T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:10


GetComputableTypeWithDefault ​

Ƭ GetComputableTypeWithDefault<T, S>: undefined extends T ? S : GetComputableType<NonNullable<T>>

Type parameters ​

Name
T
S

Defined in ​

profectus/src/util/computed.ts:17


ProcessedComputable ​

Ƭ ProcessedComputable<T>: T | Ref<T>

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:9


UnwrapComputableType ​

Ƭ UnwrapComputableType<T>: T extends Ref<infer S> ? S : T extends () => infer S ? S : T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:20

Variables ​

DoNotCache ​

• Const DoNotCache: typeof DoNotCache

Defined in ​

profectus/src/util/computed.ts:6

Functions ​

convertComputable ​

â–¸ convertComputable<T>(obj): ProcessedComputable<T>

NameType
objComputable<T>

Defined in ​

profectus/src/util/computed.ts:50


processComputable ​

â–¸ processComputable<T, S>(obj, key): asserts obj is T & { [K in string | number | symbol]: ProcessedComputable<UnwrapComputableType<T[S]>> }

NameType
objT
keyS

Defined in ​

profectus/src/util/computed.ts:31

- +
Skip to content
On this page

Module: util/computed ​

Type Aliases ​

Computable ​

Ƭ Computable<T>: T | Ref<T> | () => T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:8


ComputableKeysOf ​

Ƭ ComputableKeysOf<T>: Pick<T, { [K in keyof T]: T[K] extends Computable<unknown> ? K : never }[keyof T]>

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:22


GetComputableType ​

Ƭ GetComputableType<T>: T extends { [DoNotCache]: true } ? T : T extends () => infer S ? Ref<S> : undefined extends T ? undefined : T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:10


GetComputableTypeWithDefault ​

Ƭ GetComputableTypeWithDefault<T, S>: undefined extends T ? S : GetComputableType<NonNullable<T>>

Type parameters ​

Name
T
S

Defined in ​

profectus/src/util/computed.ts:17


ProcessedComputable ​

Ƭ ProcessedComputable<T>: T | Ref<T>

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:9


UnwrapComputableType ​

Ƭ UnwrapComputableType<T>: T extends Ref<infer S> ? S : T extends () => infer S ? S : T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:20

Variables ​

DoNotCache ​

• Const DoNotCache: typeof DoNotCache

Defined in ​

profectus/src/util/computed.ts:6

Functions ​

convertComputable ​

â–¸ convertComputable<T>(obj): ProcessedComputable<T>

Type parameters ​

Name
T

Parameters ​

NameType
objComputable<T>

Returns ​

ProcessedComputable<T>

Defined in ​

profectus/src/util/computed.ts:50


processComputable ​

â–¸ processComputable<T, S>(obj, key): asserts obj is T & { [K in string | number | symbol]: ProcessedComputable<UnwrapComputableType<T[S]>> }

Type parameters ​

NameType
TT
Sextends string | number | symbol

Parameters ​

NameType
objT
keyS

Returns ​

asserts obj is T & { [K in string | number | symbol]: ProcessedComputable<UnwrapComputableType<T[S]>> }

Defined in ​

profectus/src/util/computed.ts:31

+ \ No newline at end of file diff --git a/api/modules/util/proxies.html b/api/modules/util/proxies.html index c7f7a4a7..71cdb96e 100644 --- a/api/modules/util/proxies.html +++ b/api/modules/util/proxies.html @@ -5,12 +5,12 @@ Module: util/proxies | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: util/proxies ​

Type Aliases ​

Proxied ​

Ƭ Proxied<T>: NonNullable<T> extends Record<PropertyKey, unknown> ? NonNullable<T> extends Persistent<infer S> ? NonPersistent<S> : NonNullable<T> extends default ? T : { [K in keyof T]: Proxied<T[K]> } & { [ProxyState]: T } : T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/proxies.ts:19


ProxiedWithState ​

Ƭ ProxiedWithState<T>: NonNullable<T> extends Record<PropertyKey, unknown> ? NonNullable<T> extends default ? T : { [K in keyof T]: ProxiedWithState<T[K]> } & { [ProxyPath]: string[] ; [ProxyState]: T } : T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/proxies.ts:8

Variables ​

ProxyPath ​

• Const ProxyPath: typeof ProxyPath

Defined in ​

profectus/src/util/proxies.ts:6


ProxyState ​

• Const ProxyState: typeof ProxyState

Defined in ​

profectus/src/util/proxies.ts:5

Functions ​

createLazyProxy ​

â–¸ createLazyProxy<T, S>(objectFunc, baseObject?): T

NameType
objectFunc(baseObject: S) => T & S
baseObjectS

Defined in ​

profectus/src/util/proxies.ts:33

- +
Skip to content
On this page

Module: util/proxies ​

Type Aliases ​

Proxied ​

Ƭ Proxied<T>: NonNullable<T> extends Record<PropertyKey, unknown> ? NonNullable<T> extends Persistent<infer S> ? NonPersistent<S> : NonNullable<T> extends default ? T : { [K in keyof T]: Proxied<T[K]> } & { [ProxyState]: T } : T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/proxies.ts:19


ProxiedWithState ​

Ƭ ProxiedWithState<T>: NonNullable<T> extends Record<PropertyKey, unknown> ? NonNullable<T> extends default ? T : { [K in keyof T]: ProxiedWithState<T[K]> } & { [ProxyPath]: string[] ; [ProxyState]: T } : T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/proxies.ts:8

Variables ​

ProxyPath ​

• Const ProxyPath: typeof ProxyPath

Defined in ​

profectus/src/util/proxies.ts:6


ProxyState ​

• Const ProxyState: typeof ProxyState

Defined in ​

profectus/src/util/proxies.ts:5

Functions ​

createLazyProxy ​

â–¸ createLazyProxy<T, S>(objectFunc, baseObject?): T

Type parameters ​

NameType
Textends object
Sextends object

Parameters ​

NameType
objectFunc(baseObject: S) => T & S
baseObjectS

Returns ​

T

Defined in ​

profectus/src/util/proxies.ts:33

+ \ No newline at end of file diff --git a/api/modules/util/save.html b/api/modules/util/save.html index bd1cdaa9..e8ae5c93 100644 --- a/api/modules/util/save.html +++ b/api/modules/util/save.html @@ -5,12 +5,12 @@ Module: util/save | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: util/save ​

Variables ​

loadingSave ​

• Const loadingSave: Ref<boolean>

Defined in ​

profectus/src/util/save.ts:89

Functions ​

deleteLowerSaves ​

â–¸ deleteLowerSaves(): void

Defined in ​

profectus/src/util/save.ts:155


getUniqueID ​

â–¸ getUniqueID(): string

Defined in ​

profectus/src/util/save.ts:80


hardReset ​

â–¸ hardReset(): Promise<void>

Defined in ​

profectus/src/util/save.ts:152


load ​

â–¸ load(): Promise<void>

Defined in ​

profectus/src/util/save.ts:35


loadSave ​

â–¸ loadSave(playerObj): Promise<void>

NameType
playerObjPartial<Player>

Defined in ​

profectus/src/util/save.ts:91


newSave ​

â–¸ newSave(): Player

Defined in ​

profectus/src/util/save.ts:70


save ​

â–¸ save(playerData?): string

NameType
playerData?Player

Defined in ​

profectus/src/util/save.ts:29


setupInitialStore ​

â–¸ setupInitialStore(player?): Player

NameType
playerPartial<Player>

Defined in ​

profectus/src/util/save.ts:9

- +
Skip to content
On this page

Module: util/save ​

Variables ​

loadingSave ​

• Const loadingSave: Ref<boolean>

Defined in ​

profectus/src/util/save.ts:89

Functions ​

deleteLowerSaves ​

â–¸ deleteLowerSaves(): void

Returns ​

void

Defined in ​

profectus/src/util/save.ts:155


getUniqueID ​

â–¸ getUniqueID(): string

Returns ​

string

Defined in ​

profectus/src/util/save.ts:80


hardReset ​

â–¸ hardReset(): Promise<void>

Returns ​

Promise<void>

Defined in ​

profectus/src/util/save.ts:152


load ​

â–¸ load(): Promise<void>

Returns ​

Promise<void>

Defined in ​

profectus/src/util/save.ts:35


loadSave ​

â–¸ loadSave(playerObj): Promise<void>

Parameters ​

NameType
playerObjPartial<Player>

Returns ​

Promise<void>

Defined in ​

profectus/src/util/save.ts:91


newSave ​

â–¸ newSave(): Player

Returns ​

Player

Defined in ​

profectus/src/util/save.ts:70


save ​

â–¸ save(playerData?): string

Parameters ​

NameType
playerData?Player

Returns ​

string

Defined in ​

profectus/src/util/save.ts:29


setupInitialStore ​

â–¸ setupInitialStore(player?): Player

Parameters ​

NameType
playerPartial<Player>

Returns ​

Player

Defined in ​

profectus/src/util/save.ts:9

+ \ No newline at end of file diff --git a/api/modules/util/vue.html b/api/modules/util/vue.html index 97357496..542ddd78 100644 --- a/api/modules/util/vue.html +++ b/api/modules/util/vue.html @@ -5,12 +5,12 @@ Module: util/vue | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Module: util/vue ​

Interfaces ​

VueFeature ​

• VueFeature: Object

NameType
[Component]GenericComponent
[GatherProps]() => Record<string, unknown>

Defined in ​

profectus/src/util/vue.tsx:46

Type Aliases ​

PropTypes ​

Ƭ PropTypes: typeof Boolean | typeof String | typeof Number | typeof Function | typeof Object | typeof Array

Defined in ​

profectus/src/util/vue.tsx:216

Functions ​

coerceComponent ​

â–¸ coerceComponent(component, defaultWrapper?): DefineComponent

NameTypeDefault value
componentCoercableComponentundefined
defaultWrapperstring"span"

Defined in ​

profectus/src/util/vue.tsx:25


computeComponent ​

â–¸ computeComponent(component, defaultWrapper?): ShallowRef<Component | "">

NameTypeDefault value
componentRef<ProcessedComputable<CoercableComponent>>undefined
defaultWrapperstring"div"

Defined in ​

profectus/src/util/vue.tsx:175


computeOptionalComponent ​

â–¸ computeOptionalComponent(component, defaultWrapper?): ShallowRef<Component | "" | null>

NameTypeDefault value
componentRef<ProcessedComputable<undefined | CoercableComponent>>undefined
defaultWrapperstring"div"

Defined in ​

profectus/src/util/vue.tsx:185


getFirstFeature ​

â–¸ getFirstFeature<T>(features, filter): Object

NameType
featuresT[]
filter(feature: T) => boolean

Defined in ​

profectus/src/util/vue.tsx:155


isCoercableComponent ​

â–¸ isCoercableComponent(component): component is CoercableComponent

NameType
componentunknown

Defined in ​

profectus/src/util/vue.tsx:104


joinJSX ​

â–¸ joinJSX(objects, joiner): JSX.Element

NameType
objectsElement[]
joinerElement

Defined in ​

profectus/src/util/vue.tsx:94


processedPropType ​

â–¸ processedPropType<T>(...types): PropType<ProcessedComputable<T>>

NameType
...typesPropTypes[]

Defined in ​

profectus/src/util/vue.tsx:225


render ​

â–¸ render(object): JSX.Element | DefineComponent

NameType
objectCoercableComponent | VueFeature

Defined in ​

profectus/src/util/vue.tsx:51


renderCol ​

â–¸ renderCol(...objects): JSX.Element

NameType
...objects(CoercableComponent | VueFeature)[]

Defined in ​

profectus/src/util/vue.tsx:66


renderColJSX ​

â–¸ renderColJSX(...objects): JSX.Element

NameType
...objects(CoercableComponent | VueFeature)[]

Defined in ​

profectus/src/util/vue.tsx:90


renderJSX ​

â–¸ renderJSX(object): JSX.Element

NameType
objectCoercableComponent | VueFeature

Defined in ​

profectus/src/util/vue.tsx:70


renderRow ​

â–¸ renderRow(...objects): JSX.Element

NameType
...objects(CoercableComponent | VueFeature)[]

Defined in ​

profectus/src/util/vue.tsx:62


renderRowJSX ​

â–¸ renderRowJSX(...objects): JSX.Element

NameType
...objects(CoercableComponent | VueFeature)[]

Defined in ​

profectus/src/util/vue.tsx:86


setRefValue ​

â–¸ setRefValue<T>(ref, value): void

NameType
refRef<T | Ref<T>>
valueT

Defined in ​

profectus/src/util/vue.tsx:208


setupHoldToClick ​

â–¸ setupHoldToClick(onClick?, onHold?): Object

NameType
onClick?Ref<undefined | (e?: MouseEvent | TouchEvent) => void>
onHold?Ref<undefined | VoidFunction>

Defined in ​

profectus/src/util/vue.tsx:119


trackHover ​

â–¸ trackHover(element): Ref<boolean>

NameType
elementVueFeature

Defined in ​

profectus/src/util/vue.tsx:232


unwrapRef ​

â–¸ unwrapRef<T>(ref): T

NameType
refRef<ProcessedComputable<T>>

Defined in ​

profectus/src/util/vue.tsx:204


wrapRef ​

â–¸ wrapRef<T>(ref): ComputedRef<T>

NameType
refRef<ProcessedComputable<T>>

Defined in ​

profectus/src/util/vue.tsx:200

- +
Skip to content
On this page

Module: util/vue ​

Interfaces ​

VueFeature ​

• VueFeature: Object

Defined in ​

profectus/src/util/vue.tsx:46

Type Aliases ​

PropTypes ​

Ƭ PropTypes: typeof Boolean | typeof String | typeof Number | typeof Function | typeof Object | typeof Array

Defined in ​

profectus/src/util/vue.tsx:216

Functions ​

coerceComponent ​

â–¸ coerceComponent(component, defaultWrapper?): DefineComponent

Parameters ​

NameTypeDefault value
componentCoercableComponentundefined
defaultWrapperstring"span"

Returns ​

DefineComponent

Defined in ​

profectus/src/util/vue.tsx:25


computeComponent ​

â–¸ computeComponent(component, defaultWrapper?): ShallowRef<Component | "">

Parameters ​

NameTypeDefault value
componentRef<ProcessedComputable<CoercableComponent>>undefined
defaultWrapperstring"div"

Returns ​

ShallowRef<Component | "">

Defined in ​

profectus/src/util/vue.tsx:175


computeOptionalComponent ​

â–¸ computeOptionalComponent(component, defaultWrapper?): ShallowRef<Component | "" | null>

Parameters ​

NameTypeDefault value
componentRef<ProcessedComputable<undefined | CoercableComponent>>undefined
defaultWrapperstring"div"

Returns ​

ShallowRef<Component | "" | null>

Defined in ​

profectus/src/util/vue.tsx:185


getFirstFeature ​

â–¸ getFirstFeature<T>(features, filter): Object

Type parameters ​

NameType
Textends VueFeature & { visibility: ProcessedComputable<boolean | Visibility> }

Parameters ​

NameType
featuresT[]
filter(feature: T) => boolean

Returns ​

Object

NameType
collapsedContentJSXFunction
firstFeatureRef<T | undefined>
hasCollapsedContentRef<boolean>

Defined in ​

profectus/src/util/vue.tsx:155


isCoercableComponent ​

â–¸ isCoercableComponent(component): component is CoercableComponent

Parameters ​

NameType
componentunknown

Returns ​

component is CoercableComponent

Defined in ​

profectus/src/util/vue.tsx:104


joinJSX ​

â–¸ joinJSX(objects, joiner): JSX.Element

Parameters ​

NameType
objectsElement[]
joinerElement

Returns ​

JSX.Element

Defined in ​

profectus/src/util/vue.tsx:94


processedPropType ​

â–¸ processedPropType<T>(...types): PropType<ProcessedComputable<T>>

Type parameters ​

Name
T

Parameters ​

NameType
...typesPropTypes[]

Returns ​

PropType<ProcessedComputable<T>>

Defined in ​

profectus/src/util/vue.tsx:225


render ​

â–¸ render(object): JSX.Element | DefineComponent

Parameters ​

NameType
objectCoercableComponent | VueFeature

Returns ​

JSX.Element | DefineComponent

Defined in ​

profectus/src/util/vue.tsx:51


renderCol ​

â–¸ renderCol(...objects): JSX.Element

Parameters ​

NameType
...objects(CoercableComponent | VueFeature)[]

Returns ​

JSX.Element

Defined in ​

profectus/src/util/vue.tsx:66


renderColJSX ​

â–¸ renderColJSX(...objects): JSX.Element

Parameters ​

NameType
...objects(CoercableComponent | VueFeature)[]

Returns ​

JSX.Element

Defined in ​

profectus/src/util/vue.tsx:90


renderJSX ​

â–¸ renderJSX(object): JSX.Element

Parameters ​

NameType
objectCoercableComponent | VueFeature

Returns ​

JSX.Element

Defined in ​

profectus/src/util/vue.tsx:70


renderRow ​

â–¸ renderRow(...objects): JSX.Element

Parameters ​

NameType
...objects(CoercableComponent | VueFeature)[]

Returns ​

JSX.Element

Defined in ​

profectus/src/util/vue.tsx:62


renderRowJSX ​

â–¸ renderRowJSX(...objects): JSX.Element

Parameters ​

NameType
...objects(CoercableComponent | VueFeature)[]

Returns ​

JSX.Element

Defined in ​

profectus/src/util/vue.tsx:86


setRefValue ​

â–¸ setRefValue<T>(ref, value): void

Type parameters ​

Name
T

Parameters ​

NameType
refRef<T | Ref<T>>
valueT

Returns ​

void

Defined in ​

profectus/src/util/vue.tsx:208


setupHoldToClick ​

â–¸ setupHoldToClick(onClick?, onHold?): Object

Parameters ​

NameType
onClick?Ref<undefined | (e?: MouseEvent | TouchEvent) => void>
onHold?Ref<undefined | VoidFunction>

Returns ​

Object

NameType
handleHoldingVoidFunction
start(e: MouseEvent | TouchEvent) => void
stopVoidFunction

Defined in ​

profectus/src/util/vue.tsx:119


trackHover ​

â–¸ trackHover(element): Ref<boolean>

Parameters ​

NameType
elementVueFeature

Returns ​

Ref<boolean>

Defined in ​

profectus/src/util/vue.tsx:232


unwrapRef ​

â–¸ unwrapRef<T>(ref): T

Type parameters ​

Name
T

Parameters ​

NameType
refRef<ProcessedComputable<T>>

Returns ​

T

Defined in ​

profectus/src/util/vue.tsx:204


wrapRef ​

â–¸ wrapRef<T>(ref): ComputedRef<T>

Type parameters ​

Name
T

Parameters ​

NameType
refRef<ProcessedComputable<T>>

Returns ​

ComputedRef<T>

Defined in ​

profectus/src/util/vue.tsx:200

+ \ No newline at end of file diff --git a/api/overview.html b/api/overview.html index 44e357aa..a99eb57d 100644 --- a/api/overview.html +++ b/api/overview.html @@ -5,7 +5,7 @@ Profectus API | Profectus - + @@ -22,8 +22,8 @@
- + \ No newline at end of file diff --git a/assets/api_modules_data_common.md.47fec908.js b/assets/api_modules_data_common.md.47fec908.js new file mode 100644 index 00000000..08207370 --- /dev/null +++ b/assets/api_modules_data_common.md.47fec908.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Module: data/common","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/data/common.md","lastUpdated":null}'),r={name:"api/modules/data/common.md"},d=o('

Module: data/common ​

Interfaces ​

LayerTreeNodeOptions ​

• LayerTreeNodeOptions: Object

An object that configures a LayerTreeNode

Defined in ​

profectus/src/data/common.tsx:176


ResetButtonOptions ​

• ResetButtonOptions: Object

An object that configures a ResetButton

Defined in ​

profectus/src/data/common.tsx:34


Section ​

• Section: Object

An option object for a modifier display as a single section. *

Defined in ​

profectus/src/data/common.tsx:241

Type Aliases ​

GenericLayerTreeNode ​

Ƭ GenericLayerTreeNode: Replace<LayerTreeNode<LayerTreeNodeOptions>, { append?: ProcessedComputable<boolean> ; display: ProcessedComputable<CoercableComponent> }>

A type that matches any valid LayerTreeNode object.

Defined in ​

profectus/src/data/common.tsx:201


GenericResetButton ​

Ƭ GenericResetButton: Replace<GenericClickable & ResetButton<ResetButtonOptions>, { canClick: ProcessedComputable<boolean> ; display: ProcessedComputable<CoercableComponent> ; minimumGain: ProcessedComputable<DecimalSource> ; resetDescription: ProcessedComputable<string> ; showNextAt: ProcessedComputable<boolean> }>

A type that matches any valid ResetButton object.

Defined in ​

profectus/src/data/common.tsx:84


LayerTreeNode ​

Ƭ LayerTreeNode<T>: Replace<TreeNode<T>, { append: GetComputableType<T["append"]> ; display: GetComputableTypeWithDefault<T["display"], T["layerID"]> }>

A tree node that is associated with a given layer, and which opens the layer when clicked.

Type parameters ​

NameType
Textends LayerTreeNodeOptions

Defined in ​

profectus/src/data/common.tsx:193


ResetButton ​

Ƭ ResetButton<T>: Replace<Clickable<T>, { canClick: GetComputableTypeWithDefault<T["canClick"], Ref<boolean>> ; display: GetComputableTypeWithDefault<T["display"], Ref<JSX.Element>> ; minimumGain: GetComputableTypeWithDefault<T["minimumGain"], 1> ; onClick: (event?: MouseEvent | TouchEvent) => void ; resetDescription: GetComputableTypeWithDefault<T["resetDescription"], Ref<string>> ; showNextAt: GetComputableTypeWithDefault<T["showNextAt"], true> }>

A button that is used to control a conversion. It will show how much can be converted currently, and can show when that amount will go up, as well as handle only being clickable when a sufficient amount of currency can be gained. Assumes this button is associated with a specific node on a tree, and triggers that tree's reset propagation.

Type parameters ​

NameType
Textends ResetButtonOptions

Defined in ​

profectus/src/data/common.tsx:71

Functions ​

colorText ​

â–¸ colorText(textToColor, color?): JSX.Element

Creates an HTML string for a span that writes some given text in a given color.

Parameters ​

NameTypeDefault valueDescription
textToColorstringundefinedThe content to change the color of
colorstring"var(--accent2)"The color to change the content to look like. Defaults to the current theme's accent 2 variable.

Returns ​

JSX.Element

Defined in ​

profectus/src/data/common.tsx:384


createCollapsibleAchievements ​

â–¸ createCollapsibleAchievements(achievements): Object

Creates a collapsible display of a list of achievements

Parameters ​

NameTypeDescription
achievementsRecord<string, GenericAchievement>A dictionary of the achievements to display, inserted in the order from easiest to hardest

Returns ​

Object

NameType
collapseAchievementsPersistent<boolean>
displayJSXFunction

Defined in ​

profectus/src/data/common.tsx:392


createCollapsibleModifierSections ​

â–¸ createCollapsibleModifierSections(sectionsFunc): [JSXFunction, Persistent<Record<number, boolean>>]

Takes an array of modifier "sections", and creates a JSXFunction that can render all those sections, and allow each section to be collapsed. Also returns a list of persistent refs that are used to control which sections are currently collapsed.

Parameters ​

NameTypeDescription
sectionsFunc() => Section[]A function that returns the sections to display.

Returns ​

[JSXFunction, Persistent<Record<number, boolean>>]

Defined in ​

profectus/src/data/common.tsx:265


createFormulaPreview ​

â–¸ createFormulaPreview(formula, showPreview, previewAmount?): ComputedRef<CoercableComponent>

Utility function for displaying the result of a formula such that it will, when told to, preview how the formula's result will change. Requires a formula with a single variable inside.

Parameters ​

NameTypeDefault valueDescription
formulaGenericFormulaundefinedThe formula to display the result of.
showPreviewComputable<boolean>undefinedWhether or not to preview how the formula's result will change.
previewAmountComputable<DecimalSource>1The amount to add to the current formula's variable amount to preview the change in result.

Returns ​

ComputedRef<CoercableComponent>

Defined in ​

profectus/src/data/common.tsx:462


createLayerTreeNode ​

â–¸ createLayerTreeNode<T>(optionsFunc): LayerTreeNode<T>

Lazily creates a tree node that's associated with a specific layer, with the given options.

Type parameters ​

NameType
Textends LayerTreeNodeOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T>A function that returns the options object for this tree node.

Returns ​

LayerTreeNode<T>

Defined in ​

profectus/src/data/common.tsx:213


createResetButton ​

â–¸ createResetButton<T>(optionsFunc): ResetButton<T>

Lazily creates a reset button with the given options.

Type parameters ​

NameType
Textends ClickableOptions & ResetButtonOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T>A function that returns the options object for this reset button.

Returns ​

ResetButton<T>

Defined in ​

profectus/src/data/common.tsx:99


estimateTime ​

â–¸ estimateTime(resource, rate, target): ComputedRef<string>

Utility function for getting an ETA for when a target will be reached by a resource with a known (and assumed consistent) gain.

Parameters ​

NameTypeDescription
resourceResource<DecimalSource>The resource that will be increasing over time.
rateComputable<DecimalSource>The rate at which the resource is increasing.
targetComputable<DecimalSource>The target amount of the resource to estimate the duration until.

Returns ​

ComputedRef<string>

Defined in ​

profectus/src/data/common.tsx:436

',122),c=[d];function n(l,i,s,h,u,f){return a(),t("div",null,c)}const b=e(r,[["render",n]]);export{m as __pageData,b as default}; diff --git a/assets/api_modules_data_common.md.47fec908.lean.js b/assets/api_modules_data_common.md.47fec908.lean.js new file mode 100644 index 00000000..34bca70c --- /dev/null +++ b/assets/api_modules_data_common.md.47fec908.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Module: data/common","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/data/common.md","lastUpdated":null}'),r={name:"api/modules/data/common.md"},d=o("",122),c=[d];function n(l,i,s,h,u,f){return a(),t("div",null,c)}const b=e(r,[["render",n]]);export{m as __pageData,b as default}; diff --git a/assets/api_modules_data_common.md.cea7349b.js b/assets/api_modules_data_common.md.cea7349b.js deleted file mode 100644 index 0e18b461..00000000 --- a/assets/api_modules_data_common.md.cea7349b.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Module: data/common","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/data/common.md","lastUpdated":null}'),r={name:"api/modules/data/common.md"},d=a('

Module: data/common ​

Interfaces ​

LayerTreeNodeOptions ​

• LayerTreeNodeOptions: Object

An object that configures a LayerTreeNode

NameTypeDescription
append?Computable<boolean>Whether or not to append the layer to the tabs list. If set to false, then the tree node will instead always remove all tabs to its right and then add the layer tab. Defaults to true.
canClick?Computable<boolean>Whether or not this tree node can be clicked.
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
colorComputable<string>The color to display this tree node as
display?Computable<CoercableComponent>The content to display in the tree node. Defaults to the layer's ID
glowColor?Computable<string>The color of the glow effect shown to notify the user there's something to do with this node.
layerIDstringThe ID of the layer this tree node is associated with
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
onClick?(e?: MouseEvent | TouchEvent) => voidA function that is called when the tree node is clicked.
onHold?VoidFunctionA function that is called when the tree node is held down.
reset?GenericResetA reset object attached to this node, used for propagating resets through the tree.
style?Computable<StyleValue>CSS to apply to this feature.
visibility?Computable<boolean | Visibility>Whether this tree node should be visible.

Defined in ​

profectus/src/data/common.tsx:176


ResetButtonOptions ​

• ResetButtonOptions: Object

An object that configures a ResetButton

NameTypeDescription
canClick?Computable<boolean>Whether or not this button can currently be clicked. Defaults to checking the current gain amount is greater than minimumGain
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
conversionGenericConversionThe conversion the button uses to calculate how much resources will be gained on click
display?Computable<CoercableComponent>The content to display on the button. By default, this includes the reset description, and amount of currency to be gained.
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
minimumGain?Computable<DecimalSource>When canClick is left to its default, minimumGain is used to only enable the reset button when a sufficient amount of currency to gain is available.
onClick?(e?: MouseEvent | TouchEvent) => voidA function that is called when the clickable is clicked.
onHold?VoidFunctionA function that is called when the clickable is held down.
resetDescription?Computable<string>Text to display on low conversion amounts, describing what "resetting" is in this context. Defaults to "Reset for ".
resetTime?Persistent<DecimalSource>A persistent ref to track how much time has passed since the last time this tree node was reset.
showNextAt?Computable<boolean>Whether or not to show how much currency would be required to make the gain amount increase.
small?booleanToggles a smaller design for the feature.
style?Computable<StyleValue>CSS to apply to this feature.
treeGenericTreeThe tree this reset button is apart of
treeNodeGenericTreeNodeThe specific tree node associated with this reset button
visibility?Computable<boolean | Visibility>Whether this clickable should be visible.

Defined in ​

profectus/src/data/common.tsx:34


Section ​

• Section: Object

An option object for a modifier display as a single section. *

NameTypeDescription
base?Computable<DecimalSource>The base value being modified. *
baseText?Computable<CoercableComponent>The label to call the base amount. Defaults to "Base". *
modifierWithRequired<Modifier, "description">The modifier to be displaying in this section. *
subtitle?Computable<string>A subtitle for this modifier, e.g. to explain the context for the modifier. *
titleComputable<string>The header for this modifier. *
unit?stringThe unit of measurement for the base. *
visible?Computable<boolean>Whether or not this section should be currently visible to the player. *

Defined in ​

profectus/src/data/common.tsx:241

Type Aliases ​

GenericLayerTreeNode ​

Ƭ GenericLayerTreeNode: Replace<LayerTreeNode<LayerTreeNodeOptions>, { append?: ProcessedComputable<boolean> ; display: ProcessedComputable<CoercableComponent> }>

A type that matches any valid LayerTreeNode object.

Defined in ​

profectus/src/data/common.tsx:201


GenericResetButton ​

Ƭ GenericResetButton: Replace<GenericClickable & ResetButton<ResetButtonOptions>, { canClick: ProcessedComputable<boolean> ; display: ProcessedComputable<CoercableComponent> ; minimumGain: ProcessedComputable<DecimalSource> ; resetDescription: ProcessedComputable<string> ; showNextAt: ProcessedComputable<boolean> }>

A type that matches any valid ResetButton object.

Defined in ​

profectus/src/data/common.tsx:84


LayerTreeNode ​

Ƭ LayerTreeNode<T>: Replace<TreeNode<T>, { append: GetComputableType<T["append"]> ; display: GetComputableTypeWithDefault<T["display"], T["layerID"]> }>

A tree node that is associated with a given layer, and which opens the layer when clicked.

Type parameters ​

NameType
Textends LayerTreeNodeOptions

Defined in ​

profectus/src/data/common.tsx:193


ResetButton ​

Ƭ ResetButton<T>: Replace<Clickable<T>, { canClick: GetComputableTypeWithDefault<T["canClick"], Ref<boolean>> ; display: GetComputableTypeWithDefault<T["display"], Ref<JSX.Element>> ; minimumGain: GetComputableTypeWithDefault<T["minimumGain"], 1> ; onClick: (event?: MouseEvent | TouchEvent) => void ; resetDescription: GetComputableTypeWithDefault<T["resetDescription"], Ref<string>> ; showNextAt: GetComputableTypeWithDefault<T["showNextAt"], true> }>

A button that is used to control a conversion. It will show how much can be converted currently, and can show when that amount will go up, as well as handle only being clickable when a sufficient amount of currency can be gained. Assumes this button is associated with a specific node on a tree, and triggers that tree's reset propagation.

Type parameters ​

NameType
Textends ResetButtonOptions

Defined in ​

profectus/src/data/common.tsx:71

Functions ​

colorText ​

â–¸ colorText(textToColor, color?): JSX.Element

Creates an HTML string for a span that writes some given text in a given color.

Parameters ​
NameTypeDefault valueDescription
textToColorstringundefinedThe content to change the color of
colorstring"var(--accent2)"The color to change the content to look like. Defaults to the current theme's accent 2 variable.
Returns ​

JSX.Element

Defined in ​

profectus/src/data/common.tsx:382


createCollapsibleAchievements ​

â–¸ createCollapsibleAchievements(achievements): Object

Creates a collapsible display of a list of achievements

Parameters ​
NameTypeDescription
achievementsRecord<string, GenericAchievement>A dictionary of the achievements to display, inserted in the order from easiest to hardest
Returns ​

Object

NameType
collapseAchievementsPersistent<boolean>
displayJSXFunction

Defined in ​

profectus/src/data/common.tsx:390


createCollapsibleModifierSections ​

â–¸ createCollapsibleModifierSections(sectionsFunc, smallerIsBetter?): [JSXFunction, Persistent<Record<number, boolean>>]

Takes an array of modifier "sections", and creates a JSXFunction that can render all those sections, and allow each section to be collapsed. Also returns a list of persistent refs that are used to control which sections are currently collapsed.

Parameters ​
NameTypeDefault valueDescription
sectionsFunc() => Section[]undefinedA function that returns the sections to display.
smallerIsBetterbooleanfalseDetermines whether numbers larger or smaller than the base should be displayed as red.
Returns ​

[JSXFunction, Persistent<Record<number, boolean>>]

Defined in ​

profectus/src/data/common.tsx:264


createFormulaPreview ​

â–¸ createFormulaPreview(formula, showPreview, previewAmount?): ComputedRef<CoercableComponent>

Utility function for displaying the result of a formula such that it will, when told to, preview how the formula's result will change. Requires a formula with a single variable inside.

Parameters ​
NameTypeDefault valueDescription
formulaGenericFormulaundefinedThe formula to display the result of.
showPreviewComputable<boolean>undefinedWhether or not to preview how the formula's result will change.
previewAmountComputable<DecimalSource>1The amount to add to the current formula's variable amount to preview the change in result.
Returns ​

ComputedRef<CoercableComponent>

Defined in ​

profectus/src/data/common.tsx:460


createLayerTreeNode ​

â–¸ createLayerTreeNode<T>(optionsFunc): LayerTreeNode<T>

Lazily creates a tree node that's associated with a specific layer, with the given options.

Type parameters ​
NameType
Textends LayerTreeNodeOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, Record<string, unknown>, Record<string, unknown>>A function that returns the options object for this tree node.
Returns ​

LayerTreeNode<T>

Defined in ​

profectus/src/data/common.tsx:213


createResetButton ​

â–¸ createResetButton<T>(optionsFunc): ResetButton<T>

Lazily creates a reset button with the given options.

Type parameters ​
NameType
Textends ClickableOptions & ResetButtonOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, Record<string, unknown>, Record<string, unknown>>A function that returns the options object for this reset button.
Returns ​

ResetButton<T>

Defined in ​

profectus/src/data/common.tsx:99


estimateTime ​

â–¸ estimateTime(resource, rate, target): ComputedRef<string>

Utility function for getting an ETA for when a target will be reached by a resource with a known (and assumed consistent) gain.

Parameters ​
NameTypeDescription
resourceResource<DecimalSource>The resource that will be increasing over time.
rateComputable<DecimalSource>The rate at which the resource is increasing.
targetComputable<DecimalSource>The target amount of the resource to estimate the duration until.
Returns ​

ComputedRef<string>

Defined in ​

profectus/src/data/common.tsx:434


modifierToFormula ​

â–¸ modifierToFormula<T>(modifier, base): T

Utility for converting a modifier into a formula. Takes the input for this formula as the base parameter.

Type parameters ​
NameType
Textends default<any, T>
Parameters ​
NameTypeDescription
modifierWithRequired<Modifier, "revert">The modifier to convert to the formula
baseTAn existing formula or processed DecimalSource that will be the input to the formula
Returns ​

T

Other signatures ​

â–¸ modifierToFormula(modifier, base): GenericFormula

NameType
modifierModifier
baseFormulaSource

Defined in ​

profectus/src/data/common.tsx:500

profectus/src/data/common.tsx:504

profectus/src/data/common.tsx:505

',142),l=[d];function c(n,i,s,h,f,u){return o(),t("div",null,l)}const g=e(r,[["render",c]]);export{m as __pageData,g as default}; diff --git a/assets/api_modules_data_common.md.cea7349b.lean.js b/assets/api_modules_data_common.md.cea7349b.lean.js deleted file mode 100644 index a680b003..00000000 --- a/assets/api_modules_data_common.md.cea7349b.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Module: data/common","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/data/common.md","lastUpdated":null}'),r={name:"api/modules/data/common.md"},d=a("",142),l=[d];function c(n,i,s,h,f,u){return o(),t("div",null,l)}const g=e(r,[["render",c]]);export{m as __pageData,g as default}; diff --git a/assets/api_modules_data_projEntry.md.85e931a3.js b/assets/api_modules_data_projEntry.md.77f70a60.js similarity index 84% rename from assets/api_modules_data_projEntry.md.85e931a3.js rename to assets/api_modules_data_projEntry.md.77f70a60.js index 61e4545f..d8156c3d 100644 --- a/assets/api_modules_data_projEntry.md.85e931a3.js +++ b/assets/api_modules_data_projEntry.md.77f70a60.js @@ -1 +1 @@ -import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const y=JSON.parse('{"title":"Module: data/projEntry","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/data/projEntry.md","lastUpdated":null}'),o={name:"api/modules/data/projEntry.md"},n=r('

Module: data/projEntry ​

Variables ​

hasWon ​

• Const hasWon: ComputedRef<boolean>

A computed ref whose value is true whenever the game is over.

Defined in ​

profectus/src/data/projEntry.tsx:88

Functions ​

fixOldSave ​

â–¸ fixOldSave(oldVersion, player): void

Given a player save data object being loaded with a different version, update the save data object to match the structure of the current version.

Parameters ​
NameTypeDescription
oldVersionundefined | stringThe version of the save being loaded in
playerPartial<Player>The save data being loaded in
Returns ​

void

Defined in ​

profectus/src/data/projEntry.tsx:98


getInitialLayers ​

â–¸ getInitialLayers(player): GenericLayer[]

Given a player save data object being loaded, return a list of layers that should currently be enabled. If your project does not use dynamic layers, this should just return all layers.

Parameters ​
NameType
playerPartial<Player>
Returns ​

GenericLayer[]

Defined in ​

profectus/src/data/projEntry.tsx:80

',27),d=[n];function l(i,s,c,h,p,f){return t(),a("div",null,d)}const b=e(o,[["render",l]]);export{y as __pageData,b as default}; +import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const y=JSON.parse('{"title":"Module: data/projEntry","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/data/projEntry.md","lastUpdated":null}'),o={name:"api/modules/data/projEntry.md"},n=r('

Module: data/projEntry ​

Variables ​

hasWon ​

• Const hasWon: ComputedRef<boolean>

A computed ref whose value is true whenever the game is over.

Defined in ​

profectus/src/data/projEntry.tsx:88

Functions ​

fixOldSave ​

â–¸ fixOldSave(oldVersion, player): void

Given a player save data object being loaded with a different version, update the save data object to match the structure of the current version.

Parameters ​

NameTypeDescription
oldVersionundefined | stringThe version of the save being loaded in
playerPartial<Player>The save data being loaded in

Returns ​

void

Defined in ​

profectus/src/data/projEntry.tsx:98


getInitialLayers ​

â–¸ getInitialLayers(player): GenericLayer[]

Given a player save data object being loaded, return a list of layers that should currently be enabled. If your project does not use dynamic layers, this should just return all layers.

Parameters ​

NameType
playerPartial<Player>

Returns ​

GenericLayer[]

Defined in ​

profectus/src/data/projEntry.tsx:80

',27),d=[n];function l(i,s,h,c,p,f){return t(),a("div",null,d)}const b=e(o,[["render",l]]);export{y as __pageData,b as default}; diff --git a/assets/api_modules_data_projEntry.md.85e931a3.lean.js b/assets/api_modules_data_projEntry.md.77f70a60.lean.js similarity index 85% rename from assets/api_modules_data_projEntry.md.85e931a3.lean.js rename to assets/api_modules_data_projEntry.md.77f70a60.lean.js index 37927c4e..616ff94b 100644 --- a/assets/api_modules_data_projEntry.md.85e931a3.lean.js +++ b/assets/api_modules_data_projEntry.md.77f70a60.lean.js @@ -1 +1 @@ -import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const y=JSON.parse('{"title":"Module: data/projEntry","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/data/projEntry.md","lastUpdated":null}'),o={name:"api/modules/data/projEntry.md"},n=r("",27),d=[n];function l(i,s,c,h,p,f){return t(),a("div",null,d)}const b=e(o,[["render",l]]);export{y as __pageData,b as default}; +import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const y=JSON.parse('{"title":"Module: data/projEntry","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/data/projEntry.md","lastUpdated":null}'),o={name:"api/modules/data/projEntry.md"},n=r("",27),d=[n];function l(i,s,h,c,p,f){return t(),a("div",null,d)}const b=e(o,[["render",l]]);export{y as __pageData,b as default}; diff --git a/assets/api_modules_data_themes.md.04121ce6.js b/assets/api_modules_data_themes.md.04121ce6.js deleted file mode 100644 index 9f53b50b..00000000 --- a/assets/api_modules_data_themes.md.04121ce6.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as e,o as a,N as d}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: data/themes","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/data/themes.md","lastUpdated":null}'),l={name:"api/modules/data/themes.md"},o=d('

Module: data/themes ​

Enumerations ​

Themes ​

• Themes: Object

An enum of all available themes and their internal IDs. The keys are their display names.

NameType
Aqua"aqua"
Classic"classic"
Nordic"nordic"
Paper"paper"

Defined in ​

profectus/src/data/themes.ts:73

Interfaces ​

Theme ​

• Theme: Object

An object representing a theme the player can use to change the look of the game.

NameTypeDescription
floatingTabsbooleanWhether or not tabs should "float" in the center of their container.
mergeAdjacentbooleanWhether or not adjacent features should merge together - removing the margin between them, and only applying the border radius to the first and last elements in the row or column.
showPinbooleanWhether or not to show a pin icon on pinned tooltips.
variablesThemeVarsThe values of the theme's CSS variables.

Defined in ​

profectus/src/data/themes.ts:24


ThemeVars ​

• ThemeVars: Object

A object of all CSS variables determined by the current theme.

NameType
--accent1string
--accent2string
--accent3string
--backgroundstring
--border-radiusstring
--boughtstring
--dangerstring
--feature-foregroundstring
--feature-marginstring
--foregroundstring
--highlightedstring
--linkstring
--lockedstring
--modal-borderstring
--outlinestring
--pointsstring
--raised-backgroundstring
--tooltip-backgroundstring

Defined in ​

profectus/src/data/themes.ts:2

Variables ​

default ​

• default: Record<Themes, Theme>

A dictionary of all available themes.

Defined in ​

profectus/src/data/themes.ts:81

',28),r=[o];function n(s,i,c,h,f,g){return a(),e("div",null,r)}const y=t(l,[["render",n]]);export{u as __pageData,y as default}; diff --git a/assets/api_modules_data_themes.md.04121ce6.lean.js b/assets/api_modules_data_themes.md.04121ce6.lean.js deleted file mode 100644 index 3da29ce1..00000000 --- a/assets/api_modules_data_themes.md.04121ce6.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as e,o as a,N as d}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: data/themes","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/data/themes.md","lastUpdated":null}'),l={name:"api/modules/data/themes.md"},o=d("",28),r=[o];function n(s,i,c,h,f,g){return a(),e("div",null,r)}const y=t(l,[["render",n]]);export{u as __pageData,y as default}; diff --git a/assets/api_modules_data_themes.md.fcd738aa.js b/assets/api_modules_data_themes.md.fcd738aa.js new file mode 100644 index 00000000..2516af05 --- /dev/null +++ b/assets/api_modules_data_themes.md.fcd738aa.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: data/themes","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/data/themes.md","lastUpdated":null}'),s={name:"api/modules/data/themes.md"},n=r('

Module: data/themes ​

Enumerations ​

Themes ​

• Themes: Object

An enum of all available themes and their internal IDs. The keys are their display names.

Defined in ​

profectus/src/data/themes.ts:73

Interfaces ​

Theme ​

• Theme: Object

An object representing a theme the player can use to change the look of the game.

Defined in ​

profectus/src/data/themes.ts:24


ThemeVars ​

• ThemeVars: Object

A object of all CSS variables determined by the current theme.

Defined in ​

profectus/src/data/themes.ts:2

Variables ​

default ​

• default: Record<Themes, Theme>

A dictionary of all available themes.

Defined in ​

profectus/src/data/themes.ts:81

',25),o=[n];function h(i,d,l,c,f,m){return t(),a("div",null,o)}const p=e(s,[["render",h]]);export{b as __pageData,p as default}; diff --git a/assets/api_modules_data_themes.md.fcd738aa.lean.js b/assets/api_modules_data_themes.md.fcd738aa.lean.js new file mode 100644 index 00000000..24f43321 --- /dev/null +++ b/assets/api_modules_data_themes.md.fcd738aa.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: data/themes","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/data/themes.md","lastUpdated":null}'),s={name:"api/modules/data/themes.md"},n=r("",25),o=[n];function h(i,d,l,c,f,m){return t(),a("div",null,o)}const p=e(s,[["render",h]]);export{b as __pageData,p as default}; diff --git a/assets/api_modules_features_achievement.md.2dda368f.js b/assets/api_modules_features_achievement.md.2dda368f.js new file mode 100644 index 00000000..38c563ab --- /dev/null +++ b/assets/api_modules_features_achievement.md.2dda368f.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/achievements/achievement","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/achievement.md","lastUpdated":null}'),c={name:"api/modules/features/achievement.md"},i=o('

Module: features/achievements/achievement ​

Enumerations ​

AchievementDisplay ​

• AchievementDisplay: Object

Modes for only displaying some achievements.

Defined in ​

profectus/src/features/achievements/achievement.tsx:50

Interfaces ​

AchievementOptions ​

• AchievementOptions: Object

An object that configures an Achievement.

Defined in ​

profectus/src/features/achievements/achievement.tsx:61


BaseAchievement ​

• BaseAchievement: Object

The properties that are added onto a processed AchievementOptions to create an Achievement.

Defined in ​

profectus/src/features/achievements/achievement.tsx:97

Type Aliases ​

Achievement ​

Ƭ Achievement<T>: Replace<T & BaseAchievement, { classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; image: GetComputableType<T["image"]> ; mark: GetComputableType<T["mark"]> ; showPopups: GetComputableTypeWithDefault<T["showPopups"], true> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature with requirements that is passively earned upon meeting certain requirements.

Type parameters ​

NameType
Textends AchievementOptions

Defined in ​

profectus/src/features/achievements/achievement.tsx:113


GenericAchievement ​

Ƭ GenericAchievement: Replace<Achievement<AchievementOptions>, { showPopups: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Achievement object.

Defined in ​

profectus/src/features/achievements/achievement.tsx:127

Variables ​

AchievementType ​

• Const AchievementType: typeof AchievementType

A symbol used to identify Achievement features.

Defined in ​

profectus/src/features/achievements/achievement.tsx:47

Functions ​

createAchievement ​

â–¸ createAchievement<T>(optionsFunc?): Achievement<T>

Lazily creates an achievement with the given options.

Type parameters ​

NameType
Textends AchievementOptions

Parameters ​

NameTypeDescription
optionsFunc?OptionsFunc<T, BaseAchievement, GenericAchievement>Achievement options.

Returns ​

Achievement<T>

Defined in ​

profectus/src/features/achievements/achievement.tsx:139

Components ​

Achievement Component ​

Props ​

NameType
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
displayprocessedPropType<UnwrapRef<GenericAchievement["display"]>>(Object, String, Function)
earned*processedPropType<boolean>(Boolean)
requirementsprocessedPropType<Requirements>(Object, Array)
imageprocessedPropType<string>(String)
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
markprocessedPropType<boolean | string>(Boolean, String)
smallprocessedPropType<boolean>(Boolean)
id*string
',55),n=[i];function r(d,s,l,h,m,p){return a(),t("div",null,n)}const b=e(c,[["render",r]]);export{u as __pageData,b as default}; diff --git a/assets/api_modules_features_achievement.md.41fd9d95.lean.js b/assets/api_modules_features_achievement.md.2dda368f.lean.js similarity index 68% rename from assets/api_modules_features_achievement.md.41fd9d95.lean.js rename to assets/api_modules_features_achievement.md.2dda368f.lean.js index 88bbc7fd..e8a15872 100644 --- a/assets/api_modules_features_achievement.md.41fd9d95.lean.js +++ b/assets/api_modules_features_achievement.md.2dda368f.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/achievements/achievement","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/achievement.md","lastUpdated":null}'),c={name:"api/modules/features/achievement.md"},d=o("",58),l=[d];function n(i,r,s,h,p,f){return a(),t("div",null,l)}const g=e(c,[["render",n]]);export{u as __pageData,g as default}; +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/achievements/achievement","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/achievement.md","lastUpdated":null}'),c={name:"api/modules/features/achievement.md"},i=o("",55),n=[i];function r(d,s,l,h,m,p){return a(),t("div",null,n)}const b=e(c,[["render",r]]);export{u as __pageData,b as default}; diff --git a/assets/api_modules_features_achievement.md.41fd9d95.js b/assets/api_modules_features_achievement.md.41fd9d95.js deleted file mode 100644 index cf06e77c..00000000 --- a/assets/api_modules_features_achievement.md.41fd9d95.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/achievements/achievement","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/achievement.md","lastUpdated":null}'),c={name:"api/modules/features/achievement.md"},d=o('

Module: features/achievements/achievement ​

Enumerations ​

AchievementDisplay ​

• AchievementDisplay: Object

Modes for only displaying some achievements.

NameType
All"all"
Configurable"configurable"
Incomplete"incomplete"
None"none"

Defined in ​

profectus/src/features/achievements/achievement.tsx:50

Interfaces ​

AchievementOptions ​

• AchievementOptions: Object

An object that configures an Achievement.

NameTypeDescription
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
display?Computable<CoercableComponent | { effectDisplay?: CoercableComponent ; optionsDisplay?: CoercableComponent ; requirement?: CoercableComponent }>The display to use for this achievement.
image?Computable<string>An image to display as the background for this achievement.
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
onComplete?VoidFunctionA function that is called when the achievement is completed.
requirements?RequirementsThe requirement(s) to earn this achievement. Can be left null if using complete.
showPopups?Computable<boolean>Whether or not to display a notification popup when this achievement is earned.
small?Computable<boolean>Toggles a smaller design for the feature.
style?Computable<StyleValue>CSS to apply to this feature.
visibility?Computable<boolean | Visibility>Whether this achievement should be visible.

Defined in ​

profectus/src/features/achievements/achievement.tsx:61


BaseAchievement ​

• BaseAchievement: Object

The properties that are added onto a processed AchievementOptions to create an Achievement.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
completeVoidFunctionA function to complete this achievement.
earnedPersistent<boolean>Whether or not this achievement has been earned.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
typetypeof AchievementTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/achievements/achievement.tsx:97

Type Aliases ​

Achievement ​

Ƭ Achievement<T>: Replace<T & BaseAchievement, { classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; image: GetComputableType<T["image"]> ; mark: GetComputableType<T["mark"]> ; showPopups: GetComputableTypeWithDefault<T["showPopups"], true> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature with requirements that is passively earned upon meeting certain requirements.

Type parameters ​

NameType
Textends AchievementOptions

Defined in ​

profectus/src/features/achievements/achievement.tsx:113


GenericAchievement ​

Ƭ GenericAchievement: Replace<Achievement<AchievementOptions>, { showPopups: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Achievement object.

Defined in ​

profectus/src/features/achievements/achievement.tsx:127

Variables ​

AchievementType ​

• Const AchievementType: typeof AchievementType

A symbol used to identify Achievement features.

Defined in ​

profectus/src/features/achievements/achievement.tsx:47

Functions ​

createAchievement ​

â–¸ createAchievement<T>(optionsFunc?): Achievement<T>

Lazily creates an achievement with the given options.

Type parameters ​
NameType
Textends AchievementOptions
Parameters ​
NameTypeDescription
optionsFunc?OptionsFunc<T, BaseAchievement, GenericAchievement>Achievement options.
Returns ​

Achievement<T>

Defined in ​

profectus/src/features/achievements/achievement.tsx:139

Components ​

Achievement Component ​

Props ​

NameType
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
displayprocessedPropType<UnwrapRef<GenericAchievement["display"]>>(Object, String, Function)
earned*processedPropType<boolean>(Boolean)
requirementsprocessedPropType<Requirements>(Object, Array)
imageprocessedPropType<string>(String)
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
markprocessedPropType<boolean | string>(Boolean, String)
smallprocessedPropType<boolean>(Boolean)
id*string
',58),l=[d];function n(i,r,s,h,p,f){return a(),t("div",null,l)}const g=e(c,[["render",n]]);export{u as __pageData,g as default}; diff --git a/assets/api_modules_features_action.md.70d6eb9f.js b/assets/api_modules_features_action.md.70d6eb9f.js new file mode 100644 index 00000000..9144bcbf --- /dev/null +++ b/assets/api_modules_features_action.md.70d6eb9f.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/action","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/action.md","lastUpdated":null}'),c={name:"api/modules/features/action.md"},i=o('

Module: features/action ​

Interfaces ​

ActionOptions ​

• ActionOptions: Object

An object that configures an Action.

Defined in ​

profectus/src/features/action.tsx:41


BaseAction ​

• BaseAction: Object

The properties that are added onto a processed ActionOptions to create an Action.

Defined in ​

profectus/src/features/action.tsx:55

Type Aliases ​

Action ​

Ƭ Action<T>: Replace<T & BaseAction, { autoStart: GetComputableTypeWithDefault<T["autoStart"], false> ; canClick: GetComputableTypeWithDefault<T["canClick"], true> ; classes: GetComputableType<T["classes"]> ; display: JSXFunction ; duration: GetComputableType<T["duration"]> ; mark: GetComputableType<T["mark"]> ; onClick: VoidFunction ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that can be clicked upon, and then has a cooldown before it can be clicked again.

Type parameters ​

NameType
Textends ActionOptions

Defined in ​

profectus/src/features/action.tsx:75


GenericAction ​

Ƭ GenericAction: Replace<Action<ActionOptions>, { autoStart: ProcessedComputable<boolean> ; canClick: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Action object.

Defined in ​

profectus/src/features/action.tsx:91

Variables ​

ActionType ​

• Const ActionType: typeof ActionType

A symbol used to identify Action features.

Defined in ​

profectus/src/features/action.tsx:36

Functions ​

createAction ​

â–¸ createAction<T>(optionsFunc?): Action<T>

Lazily creates an action with the given options.

Type parameters ​

NameType
Textends ActionOptions<T>

Parameters ​

NameTypeDescription
optionsFunc?OptionsFunc<T, BaseAction, GenericAction>Action options.

Returns ​

Action<T>

Defined in ​

profectus/src/features/action.tsx:104

',45),n=[i];function r(d,s,l,h,u,f){return a(),t("div",null,n)}const m=e(c,[["render",r]]);export{b as __pageData,m as default}; diff --git a/assets/api_modules_features_action.md.70d6eb9f.lean.js b/assets/api_modules_features_action.md.70d6eb9f.lean.js new file mode 100644 index 00000000..49743637 --- /dev/null +++ b/assets/api_modules_features_action.md.70d6eb9f.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/action","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/action.md","lastUpdated":null}'),c={name:"api/modules/features/action.md"},i=o("",45),n=[i];function r(d,s,l,h,u,f){return a(),t("div",null,n)}const m=e(c,[["render",r]]);export{b as __pageData,m as default}; diff --git a/assets/api_modules_features_action.md.accd9686.js b/assets/api_modules_features_action.md.accd9686.js deleted file mode 100644 index bf676f7c..00000000 --- a/assets/api_modules_features_action.md.accd9686.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/action","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/action.md","lastUpdated":null}'),c={name:"api/modules/features/action.md"},d=a('

Module: features/action ​

Interfaces ​

ActionOptions ​

• ActionOptions: Object

An object that configures a Action.

NameTypeDescription
autoStart?Computable<boolean>Whether or not the action should perform automatically when the cooldown is finished.
barOptions?Partial<BarOptions>A pass-through to the Bar used to display the cooldown progress for the action.
canClick?Computable<boolean>Whether or not the clickable may be clicked.
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
display?Computable<CoercableComponent | { description: CoercableComponent ; title?: CoercableComponent }>The display to use for this clickable.
durationComputable<DecimalSource>The cooldown during which the action cannot be performed again, in seconds.
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
onClick(amount: DecimalSource) => voidA function that is called when the action is clicked.
small?booleanToggles a smaller design for the feature.
style?Computable<StyleValue>CSS to apply to this feature.
visibility?Computable<boolean | Visibility>Whether this clickable should be visible.

Defined in ​

profectus/src/features/action.tsx:41


BaseAction ​

• BaseAction: Object

The properties that are added onto a processed ActionOptions to create an Action.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
isHoldingRef<boolean>Whether or not the player is holding down the action. Actions will be considered clicked as soon as the cooldown completes when being held down.
progressRef<DecimalSource>The current amount of progress through the cooldown.
progressBarGenericBarThe bar used to display the current cooldown progress.
typetypeof ActionTypeA symbol that helps identify features of the same type.
update(diff: number) => voidUpdate the cooldown the specified number of seconds

Defined in ​

profectus/src/features/action.tsx:55

Type Aliases ​

Action ​

Ƭ Action<T>: Replace<T & BaseAction, { autoStart: GetComputableTypeWithDefault<T["autoStart"], false> ; canClick: GetComputableTypeWithDefault<T["canClick"], true> ; classes: GetComputableType<T["classes"]> ; display: JSXFunction ; duration: GetComputableType<T["duration"]> ; mark: GetComputableType<T["mark"]> ; onClick: VoidFunction ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represens a feature that can be clicked upon, and then have a cooldown before they can be clicked again.

Type parameters ​

NameType
Textends ActionOptions

Defined in ​

profectus/src/features/action.tsx:75


GenericAction ​

Ƭ GenericAction: Replace<Action<ActionOptions>, { autoStart: ProcessedComputable<boolean> ; canClick: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Action object.

Defined in ​

profectus/src/features/action.tsx:91

Variables ​

ActionType ​

• Const ActionType: typeof ActionType

A symbol used to identify Action features.

Defined in ​

profectus/src/features/action.tsx:36

Functions ​

createAction ​

â–¸ createAction<T>(optionsFunc?): Action<T>

Lazily creates an action with the given options.

Type parameters ​
NameType
Textends ActionOptions<T>
Parameters ​
NameTypeDescription
optionsFunc?OptionsFunc<T, BaseAction, GenericAction>Action options.
Returns ​

Action<T>

Defined in ​

profectus/src/features/action.tsx:104

',47),l=[d];function r(i,n,s,h,f,p){return o(),t("div",null,l)}const g=e(c,[["render",r]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_features_action.md.accd9686.lean.js b/assets/api_modules_features_action.md.accd9686.lean.js deleted file mode 100644 index 95d60cce..00000000 --- a/assets/api_modules_features_action.md.accd9686.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/action","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/action.md","lastUpdated":null}'),c={name:"api/modules/features/action.md"},d=a("",47),l=[d];function r(i,n,s,h,f,p){return o(),t("div",null,l)}const g=e(c,[["render",r]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_features_bar.md.d549ae50.js b/assets/api_modules_features_bar.md.d549ae50.js deleted file mode 100644 index 2e447d48..00000000 --- a/assets/api_modules_features_bar.md.d549ae50.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/bars/bar","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/bar.md","lastUpdated":null}'),r={name:"api/modules/features/bar.md"},d=o('

Module: features/bars/bar ​

Interfaces ​

BarOptions ​

• BarOptions: Object

An object that configures a Bar.

NameTypeDescription
baseStyle?Computable<StyleValue>CSS to apply to the bar's base.
borderStyle?Computable<StyleValue>CSS to apply to the bar's border.
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
directionComputable<Direction>The direction in which the bar progresses.
display?Computable<CoercableComponent>The display to use for this bar.
fillStyle?Computable<StyleValue>CSS to apply to the bar's fill.
heightComputable<number>The height of the bar.
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
progressComputable<DecimalSource>The progress value of the bar, from 0 to 1.
style?Computable<StyleValue>CSS to apply to this feature.
textStyle?Computable<StyleValue>CSS to apply to the bar's text.
visibility?Computable<boolean | Visibility>Whether this bar should be visible.
widthComputable<number>The width of the bar.

Defined in ​

profectus/src/features/bars/bar.ts:28


BaseBar ​

• BaseBar: Object

The properties that are added onto a processed BarOptions to create a Bar.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
typetypeof BarTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/bars/bar.ts:60

Type Aliases ​

Bar ​

Ƭ Bar<T>: Replace<T & BaseBar, { baseStyle: GetComputableType<T["baseStyle"]> ; borderStyle: GetComputableType<T["borderStyle"]> ; classes: GetComputableType<T["classes"]> ; direction: GetComputableType<T["direction"]> ; display: GetComputableType<T["display"]> ; fillStyle: GetComputableType<T["fillStyle"]> ; height: GetComputableType<T["height"]> ; mark: GetComputableType<T["mark"]> ; progress: GetComputableType<T["progress"]> ; style: GetComputableType<T["style"]> ; textStyle: GetComputableType<T["textStyle"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> ; width: GetComputableType<T["width"]> }>

An object that represents a feature that displays some sort of progress or completion or resource with a cap.

Type parameters ​

NameType
Textends BarOptions

Defined in ​

profectus/src/features/bars/bar.ts:72


GenericBar ​

Ƭ GenericBar: Replace<Bar<BarOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Bar object.

Defined in ​

profectus/src/features/bars/bar.ts:92

Variables ​

BarType ​

• Const BarType: typeof BarType

A symbol used to identify Bar features.

Defined in ​

profectus/src/features/bars/bar.ts:23

Functions ​

createBar ​

â–¸ createBar<T>(optionsFunc): Bar<T>

Lazily creates a bar with the given options.

Type parameters ​
NameType
Textends BarOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseBar, GenericBar>Bar options.
Returns ​

Bar<T>

Defined in ​

profectus/src/features/bars/bar.ts:103

Components ​

Bar Component ​

Props ​

NameType
progress*processedPropType<DecimalSource>(String, Object, Number)
width*processedPropType<number>(Number)
height*processedPropType<number>(Number)
direction*processedPropType<Direction>(String)
displayprocessedPropType<CoercableComponent>(Object, String, Function)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(Object, String, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
borderStyleprocessedPropType<StyleValue>(Object, String, Array)
textStyleprocessedPropType<StyleValue>(Object, String, Array)
baseStyleprocessedPropType<StyleValue>(Object, String, Array)
fillStyleprocessedPropType<StyleValue>(Object, String, Array)
markprocessedPropType<boolean | string>(Boolean, String)
id*string
',51),l=[d];function c(s,i,n,p,f,h){return a(),t("div",null,l)}const y=e(r,[["render",c]]);export{b as __pageData,y as default}; diff --git a/assets/api_modules_features_bar.md.d549ae50.lean.js b/assets/api_modules_features_bar.md.d549ae50.lean.js deleted file mode 100644 index afe05e3d..00000000 --- a/assets/api_modules_features_bar.md.d549ae50.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/bars/bar","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/bar.md","lastUpdated":null}'),r={name:"api/modules/features/bar.md"},d=o("",51),l=[d];function c(s,i,n,p,f,h){return a(),t("div",null,l)}const y=e(r,[["render",c]]);export{b as __pageData,y as default}; diff --git a/assets/api_modules_features_bar.md.e8448677.js b/assets/api_modules_features_bar.md.e8448677.js new file mode 100644 index 00000000..dc31c55e --- /dev/null +++ b/assets/api_modules_features_bar.md.e8448677.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Module: features/bars/bar","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/bar.md","lastUpdated":null}'),r={name:"api/modules/features/bar.md"},d=o('

Module: features/bars/bar ​

Interfaces ​

BarOptions ​

• BarOptions: Object

An object that configures a Bar.

Defined in ​

profectus/src/features/bars/bar.ts:28


BaseBar ​

• BaseBar: Object

The properties that are added onto a processed BarOptions to create a Bar.

Defined in ​

profectus/src/features/bars/bar.ts:60

Type Aliases ​

Bar ​

Ƭ Bar<T>: Replace<T & BaseBar, { baseStyle: GetComputableType<T["baseStyle"]> ; borderStyle: GetComputableType<T["borderStyle"]> ; classes: GetComputableType<T["classes"]> ; direction: GetComputableType<T["direction"]> ; display: GetComputableType<T["display"]> ; fillStyle: GetComputableType<T["fillStyle"]> ; height: GetComputableType<T["height"]> ; mark: GetComputableType<T["mark"]> ; progress: GetComputableType<T["progress"]> ; style: GetComputableType<T["style"]> ; textStyle: GetComputableType<T["textStyle"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> ; width: GetComputableType<T["width"]> }>

An object that represents a feature that displays some sort of progress or completion or resource with a cap.

Type parameters ​

NameType
Textends BarOptions

Defined in ​

profectus/src/features/bars/bar.ts:72


GenericBar ​

Ƭ GenericBar: Replace<Bar<BarOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Bar object.

Defined in ​

profectus/src/features/bars/bar.ts:92

Variables ​

BarType ​

• Const BarType: typeof BarType

A symbol used to identify Bar features.

Defined in ​

profectus/src/features/bars/bar.ts:23

Functions ​

createBar ​

â–¸ createBar<T>(optionsFunc): Bar<T>

Lazily creates a bar with the given options.

Type parameters ​

NameType
Textends BarOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseBar, GenericBar>Bar options.

Returns ​

Bar<T>

Defined in ​

profectus/src/features/bars/bar.ts:103

Components ​

Bar Component ​

Props ​

NameType
progress*processedPropType<DecimalSource>(String, Object, Number)
width*processedPropType<number>(Number)
height*processedPropType<number>(Number)
direction*processedPropType<Direction>(String)
displayprocessedPropType<CoercableComponent>(Object, String, Function)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(Object, String, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
borderStyleprocessedPropType<StyleValue>(Object, String, Array)
textStyleprocessedPropType<StyleValue>(Object, String, Array)
baseStyleprocessedPropType<StyleValue>(Object, String, Array)
fillStyleprocessedPropType<StyleValue>(Object, String, Array)
markprocessedPropType<boolean | string>(Boolean, String)
id*string
',49),c=[d];function l(s,i,n,p,b,h){return a(),t("div",null,c)}const y=e(r,[["render",l]]);export{f as __pageData,y as default}; diff --git a/assets/api_modules_features_bar.md.e8448677.lean.js b/assets/api_modules_features_bar.md.e8448677.lean.js new file mode 100644 index 00000000..6612e007 --- /dev/null +++ b/assets/api_modules_features_bar.md.e8448677.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Module: features/bars/bar","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/bar.md","lastUpdated":null}'),r={name:"api/modules/features/bar.md"},d=o("",49),c=[d];function l(s,i,n,p,b,h){return a(),t("div",null,c)}const y=e(r,[["render",l]]);export{f as __pageData,y as default}; diff --git a/assets/api_modules_features_board.md.83c56444.js b/assets/api_modules_features_board.md.83c56444.js deleted file mode 100644 index 5baed94e..00000000 --- a/assets/api_modules_features_board.md.83c56444.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as e,o as d,N as o}from"./chunks/framework.0799945b.js";const x=JSON.parse('{"title":"Module: features/boards/board","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/board.md","lastUpdated":null}'),l={name:"api/modules/features/board.md"},a=o('

Module: features/boards/board ​

Enumerations ​

ProgressDisplay ​

• ProgressDisplay: Object

Ways to display progress of an action with a duration.

NameType
Fill"Fill"
Outline"Outline"

Defined in ​

profectus/src/features/boards/board.ts:39


Shape ​

• Shape: Object

Node shapes.

NameType
Circle"Circle"
Diamond"Triangle"

Defined in ​

profectus/src/features/boards/board.ts:45

Interfaces ​

BaseBoard ​

• BaseBoard: Object

The properties that are added onto a processed BoardOptions to create a Board.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
mousePositionRef<null | { x: number ; y: number }>The current mouse position, if over the board.
nodesRef<BoardNode[]>All the nodes currently on the board.
selectedActionRef<null | GenericBoardNodeAction>The currently selected action, if any.
selectedNodeRef<null | BoardNode>The currently selected node, if any.
typetypeof BoardTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/boards/board.ts:240


BaseBoardNodeAction ​

• BaseBoardNodeAction: Object

The properties that are added onto a processed BoardNodeActionOptions to create an BoardNodeAction.

NameType
links?Ref<BoardNodeLink[]>

Defined in ​

profectus/src/features/boards/board.ts:189


BaseNodeType ​

• BaseNodeType: Object

The properties that are added onto a processed NodeTypeOptions to create a NodeType.

NameTypeDescription
nodesRef<BoardNode[]>The nodes currently on the board of this type.

Defined in ​

profectus/src/features/boards/board.ts:126


BoardNode ​

• BoardNode: Object

An object representing a node on the board.

NameType
idnumber
pinned?boolean
position{ x: number ; y: number }
position.xnumber
position.ynumber
state?State
typestring

Defined in ​

profectus/src/features/boards/board.ts:51


BoardNodeActionOptions ​

• BoardNodeActionOptions: Object

An object that configures a BoardNodeAction.

NameTypeDescription
fillColor?NodeComputable<string>The fill color of the action.
iconNodeComputable<string>The icon to display for the action.
idstringA unique identifier for the action.
links?NodeComputable<BoardNodeLink[]>An array of board node links associated with the action. They appear when the action is focused.
onClick(node: BoardNode) => undefined | booleanA function that is called when the action is clicked.
tooltipNodeComputable<string>The tooltip text to display for the action.
visibility?NodeComputable<boolean | Visibility>Whether this action should be visible.

Defined in ​

profectus/src/features/boards/board.ts:169


• BoardNodeLink: Object

An object representing a link between two nodes on the board.

NameTypeDescription
accent-height?Numberish-
accumulate?"none" | "sum"-
additive?"sum" | "replace"-
alignment-baseline?"alphabetic" | "hanging" | "ideographic" | "mathematical" | "auto" | "baseline" | "before-edge" | "text-before-edge" | "middle" | "central" | "after-edge" | "text-after-edge" | "inherit"-
allowReorder?"no" | "yes"-
alphabetic?Numberish-
amplitude?Numberish-
arabic-form?"initial" | "medial" | "terminal" | "isolated"-
aria-activedescendant?stringIdentifies the currently active element when DOM focus is on a composite widget, textbox, group, or application.
aria-atomic?BooleanishIndicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute.
aria-autocomplete?"none" | "inline" | "list" | "both"Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be presented if they are made.
aria-busy?BooleanishIndicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user.
aria-checked?Booleanish | "mixed"Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. See - aria-pressed - aria-selected.
aria-colcount?NumberishDefines the total number of columns in a table, grid, or treegrid. See aria-colindex.
aria-colindex?NumberishDefines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid. See - aria-colcount - aria-colspan.
aria-colspan?NumberishDefines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid. See - aria-colindex - aria-rowspan.
aria-controls?stringIdentifies the element (or elements) whose contents or presence are controlled by the current element. See aria-owns.
aria-current?"time" | Booleanish | "page" | "step" | "location" | "date"Indicates the element that represents the current item within a container or set of related elements.
aria-describedby?stringIdentifies the element (or elements) that describes the object. See aria-labelledby
aria-details?stringIdentifies the element that provides a detailed, extended description for the object. See aria-describedby.
aria-disabled?BooleanishIndicates that the element is perceivable but disabled, so it is not editable or otherwise operable. See - aria-hidden - aria-readonly.
aria-dropeffect?"none" | "copy" | "execute" | "link" | "move" | "popup"Indicates what functions can be performed when a dragged object is released on the drop target. Deprecated in ARIA 1.1
aria-errormessage?stringIdentifies the element that provides an error message for the object. See - aria-invalid - aria-describedby.
aria-expanded?BooleanishIndicates whether the element, or another grouping element it controls, is currently expanded or collapsed.
aria-flowto?stringIdentifies the next element (or elements) in an alternate reading order of content which, at the user's discretion, allows assistive technology to override the general default of reading in document source order.
aria-grabbed?BooleanishIndicates an element's "grabbed" state in a drag-and-drop operation. Deprecated in ARIA 1.1
aria-haspopup?"tree" | Booleanish | "menu" | "listbox" | "grid" | "dialog"Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element.
aria-hidden?BooleanishIndicates whether the element is exposed to an accessibility API. See aria-disabled.
aria-invalid?Booleanish | "grammar" | "spelling"Indicates the entered value does not conform to the format expected by the application. See aria-errormessage.
aria-keyshortcuts?stringIndicates keyboard shortcuts that an author has implemented to activate or give focus to an element.
aria-label?stringDefines a string value that labels the current element. See aria-labelledby.
aria-labelledby?stringIdentifies the element (or elements) that labels the current element. See aria-describedby.
aria-level?NumberishDefines the hierarchical level of an element within a structure.
aria-live?"off" | "assertive" | "polite"Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region.
aria-modal?BooleanishIndicates whether an element is modal when displayed.
aria-multiline?BooleanishIndicates whether a text box accepts multiple lines of input or only a single line.
aria-multiselectable?BooleanishIndicates that the user may select more than one item from the current selectable descendants.
aria-orientation?"horizontal" | "vertical"Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous.
aria-owns?stringIdentifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship between DOM elements where the DOM hierarchy cannot be used to represent the relationship. See aria-controls.
aria-placeholder?stringDefines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. A hint could be a sample value or a brief description of the expected format.
aria-posinset?NumberishDefines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. See aria-setsize.
aria-pressed?Booleanish | "mixed"Indicates the current "pressed" state of toggle buttons. See - aria-checked - aria-selected.
aria-readonly?BooleanishIndicates that the element is not editable, but is otherwise operable. See aria-disabled.
aria-relevant?"additions" | "additions text" | "all" | "removals" | "text"Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. See aria-atomic.
aria-required?BooleanishIndicates that user input is required on the element before a form may be submitted.
aria-roledescription?stringDefines a human-readable, author-localized description for the role of an element.
aria-rowcount?NumberishDefines the total number of rows in a table, grid, or treegrid. See aria-rowindex.
aria-rowindex?NumberishDefines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid. See - aria-rowcount - aria-rowspan.
aria-rowspan?NumberishDefines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid. See - aria-rowindex - aria-colspan.
aria-selected?BooleanishIndicates the current "selected" state of various widgets. See - aria-checked - aria-pressed.
aria-setsize?NumberishDefines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. See aria-posinset.
aria-sort?"none" | "ascending" | "descending" | "other"Indicates if items in a table or grid are sorted in ascending or descending order.
aria-valuemax?NumberishDefines the maximum allowed value for a range widget.
aria-valuemin?NumberishDefines the minimum allowed value for a range widget.
aria-valuenow?NumberishDefines the current value for a range widget. See aria-valuetext.
aria-valuetext?stringDefines the human readable text alternative of aria-valuenow for a range widget.
ascent?Numberish-
attributeName?string-
attributeType?string-
autoReverse?Numberish-
azimuth?Numberish-
baseFrequency?Numberish-
baseProfile?Numberish-
baseline-shift?Numberish-
bbox?Numberish-
begin?Numberish-
bias?Numberish-
by?Numberish-
calcMode?Numberish-
cap-height?Numberish-
class?anySVG Styling Attributes See https://www.w3.org/TR/SVG/styling.html#ElementSpecificStyling
clip?Numberish-
clip-path?string-
clip-rule?Numberish-
clipPathUnits?Numberish-
color?string-
color-interpolation?Numberish-
color-interpolation-filters?"auto" | "inherit" | "sRGB" | "linearRGB"-
color-profile?Numberish-
color-rendering?Numberish-
contentScriptType?Numberish-
contentStyleType?Numberish-
cursor?Numberish-
cx?Numberish-
cy?Numberish-
d?string-
decelerate?Numberish-
descent?Numberish-
diffuseConstant?Numberish-
direction?Numberish-
display?Numberish-
divisor?Numberish-
dominant-baseline?Numberish-
dur?Numberish-
dx?Numberish-
dy?Numberish-
edgeMode?Numberish-
elevation?Numberish-
enable-background?Numberish-
end?Numberish-
endNodeBoardNode-
exponent?Numberish-
externalResourcesRequired?Numberish-
fill?string-
fill-opacity?Numberish-
fill-rule?"inherit" | "nonzero" | "evenodd"-
filter?string-
filterRes?Numberish-
filterUnits?Numberish-
flood-color?Numberish-
flood-opacity?Numberish-
focusable?Numberish-
font-family?string-
font-size?Numberish-
font-size-adjust?Numberish-
font-stretch?Numberish-
font-style?Numberish-
font-variant?Numberish-
font-weight?Numberish-
format?Numberish-
from?Numberish-
fx?Numberish-
fy?Numberish-
g1?Numberish-
g2?Numberish-
glyph-name?Numberish-
glyph-orientation-horizontal?Numberish-
glyph-orientation-vertical?Numberish-
glyphRef?Numberish-
gradientTransform?string-
gradientUnits?string-
hanging?Numberish-
height?Numberish-
horiz-adv-x?Numberish-
horiz-origin-x?Numberish-
href?string-
id?string-
ideographic?Numberish-
image-rendering?Numberish-
in?string-
in2?Numberish-
innerHTML?string-
intercept?Numberish-
k?Numberish-
k1?Numberish-
k2?Numberish-
k3?Numberish-
k4?Numberish-
kernelMatrix?Numberish-
kernelUnitLength?Numberish-
kerning?Numberish-
keyPoints?Numberish-
keySplines?Numberish-
keyTimes?Numberish-
lang?string-
lengthAdjust?Numberish-
letter-spacing?Numberish-
lighting-color?Numberish-
limitingConeAngle?Numberish-
local?Numberish-
marker-end?string-
marker-mid?string-
marker-start?string-
markerHeight?Numberish-
markerUnits?Numberish-
markerWidth?Numberish-
mask?string-
maskContentUnits?Numberish-
maskUnits?Numberish-
mathematical?Numberish-
max?Numberish-
media?string-
method?string-
min?Numberish-
mode?Numberish-
name?string-
numOctaves?Numberish-
offset?Numberish-
offsetEnd?Position-
offsetStart?Position-
onAbort?(payload: Event) => void-
onAnimationend?(payload: AnimationEvent) => void-
onAnimationiteration?(payload: AnimationEvent) => void-
onAnimationstart?(payload: AnimationEvent) => void-
onAuxclick?(payload: MouseEvent) => void-
onBeforeinput?(payload: Event) => void-
onBlur?(payload: FocusEvent) => void-
onCanplay?(payload: Event) => void-
onCanplaythrough?(payload: Event) => void-
onChange?(payload: Event) => void-
onClick?(payload: MouseEvent) => void-
onCompositionend?(payload: CompositionEvent) => void-
onCompositionstart?(payload: CompositionEvent) => void-
onCompositionupdate?(payload: CompositionEvent) => void-
onContextmenu?(payload: MouseEvent) => void-
onCopy?(payload: ClipboardEvent) => void-
onCut?(payload: ClipboardEvent) => void-
onDblclick?(payload: MouseEvent) => void-
onDrag?(payload: DragEvent) => void-
onDragend?(payload: DragEvent) => void-
onDragenter?(payload: DragEvent) => void-
onDragexit?(payload: DragEvent) => void-
onDragleave?(payload: DragEvent) => void-
onDragover?(payload: DragEvent) => void-
onDragstart?(payload: DragEvent) => void-
onDrop?(payload: DragEvent) => void-
onDurationchange?(payload: Event) => void-
onEmptied?(payload: Event) => void-
onEncrypted?(payload: Event) => void-
onEnded?(payload: Event) => void-
onError?(payload: Event) => void-
onFocus?(payload: FocusEvent) => void-
onFocusin?(payload: FocusEvent) => void-
onFocusout?(payload: FocusEvent) => void-
onInput?(payload: Event) => void-
onInvalid?(payload: Event) => void-
onKeydown?(payload: KeyboardEvent) => void-
onKeypress?(payload: KeyboardEvent) => void-
onKeyup?(payload: KeyboardEvent) => void-
onLoad?(payload: Event) => void-
onLoadeddata?(payload: Event) => void-
onLoadedmetadata?(payload: Event) => void-
onLoadstart?(payload: Event) => void-
onMousedown?(payload: MouseEvent) => void-
onMouseenter?(payload: MouseEvent) => void-
onMouseleave?(payload: MouseEvent) => void-
onMousemove?(payload: MouseEvent) => void-
onMouseout?(payload: MouseEvent) => void-
onMouseover?(payload: MouseEvent) => void-
onMouseup?(payload: MouseEvent) => void-
onPaste?(payload: ClipboardEvent) => void-
onPause?(payload: Event) => void-
onPlay?(payload: Event) => void-
onPlaying?(payload: Event) => void-
onPointercancel?(payload: PointerEvent) => void-
onPointerdown?(payload: PointerEvent) => void-
onPointerenter?(payload: PointerEvent) => void-
onPointerleave?(payload: PointerEvent) => void-
onPointermove?(payload: PointerEvent) => void-
onPointerout?(payload: PointerEvent) => void-
onPointerover?(payload: PointerEvent) => void-
onPointerup?(payload: PointerEvent) => void-
onProgress?(payload: Event) => void-
onRatechange?(payload: Event) => void-
onReset?(payload: Event) => void-
onScroll?(payload: UIEvent) => void-
onSeeked?(payload: Event) => void-
onSeeking?(payload: Event) => void-
onSelect?(payload: Event) => void-
onStalled?(payload: Event) => void-
onSubmit?(payload: Event) => void-
onSuspend?(payload: Event) => void-
onTimeupdate?(payload: Event) => void-
onTouchcancel?(payload: TouchEvent) => void-
onTouchend?(payload: TouchEvent) => void-
onTouchmove?(payload: TouchEvent) => void-
onTouchstart?(payload: TouchEvent) => void-
onTransitionend?(payload: TransitionEvent) => void-
onTransitionstart?(payload: TransitionEvent) => void-
onVolumechange?(payload: Event) => void-
onWaiting?(payload: Event) => void-
onWheel?(payload: WheelEvent) => void-
opacity?Numberish-
operator?Numberish-
order?Numberish-
orient?Numberish-
orientation?Numberish-
origin?Numberish-
overflow?Numberish-
overline-position?Numberish-
overline-thickness?Numberish-
paint-order?Numberish-
panose-1?Numberish-
pathLength?Numberish-
patternContentUnits?string-
patternTransform?Numberish-
patternUnits?string-
pointer-events?Numberish-
points?string-
pointsAtX?Numberish-
pointsAtY?Numberish-
pointsAtZ?Numberish-
preserveAlpha?Numberish-
preserveAspectRatio?string-
primitiveUnits?Numberish-
pulsing?boolean-
r?Numberish-
radius?Numberish-
refX?Numberish-
refY?Numberish-
renderingIntent?Numberish-
repeatCount?Numberish-
repeatDur?Numberish-
requiredExtensions?Numberish-
requiredFeatures?Numberish-
restart?Numberish-
result?string-
role?string-
rotate?Numberish-
rx?Numberish-
ry?Numberish-
scale?Numberish-
seed?Numberish-
shape-rendering?Numberish-
slope?Numberish-
spacing?Numberish-
specularConstant?Numberish-
specularExponent?Numberish-
speed?Numberish-
spreadMethod?string-
startNodeBoardNode-
startOffset?Numberish-
stdDeviation?Numberish-
stemh?Numberish-
stemv?Numberish-
stitchTiles?Numberish-
stop-color?string-
stop-opacity?Numberish-
strikethrough-position?Numberish-
strikethrough-thickness?Numberish-
string?Numberish-
stroke?string-
stroke-dasharray?Numberish-
stroke-dashoffset?Numberish-
stroke-linecap?"inherit" | "butt" | "round" | "square"-
stroke-linejoin?"inherit" | "round" | "miter" | "bevel"-
stroke-miterlimit?Numberish-
stroke-opacity?Numberish-
stroke-width?Numberish-
style?string | CSSProperties-
surfaceScale?Numberish-
systemLanguage?Numberish-
tabindex?Numberish-
tableValues?Numberish-
target?string-
targetX?Numberish-
targetY?Numberish-
text-anchor?string-
text-decoration?Numberish-
text-rendering?Numberish-
textLength?Numberish-
to?Numberish-
transform?string-
type?string-
u1?Numberish-
u2?Numberish-
underline-position?Numberish-
underline-thickness?Numberish-
unicode?Numberish-
unicode-bidi?Numberish-
unicode-range?Numberish-
unitsPer-em?Numberish-
v-alphabetic?Numberish-
v-hanging?Numberish-
v-ideographic?Numberish-
v-mathematical?Numberish-
values?string-
vector-effect?Numberish-
version?string-
vert-adv-y?Numberish-
vert-origin-x?Numberish-
vert-origin-y?Numberish-
viewBox?string-
viewTarget?Numberish-
visibility?Numberish-
width?Numberish-
widths?Numberish-
word-spacing?Numberish-
writing-mode?Numberish-
x?Numberish-
x-height?Numberish-
x1?Numberish-
x2?Numberish-
xChannelSelector?string-
xlinkActuate?string-
xlinkArcrole?string-
xlinkHref?string-
xlinkRole?string-
xlinkShow?string-
xlinkTitle?string-
xlinkType?string-
xmlns?string-
y?Numberish-
y1?Numberish-
y2?Numberish-
yChannelSelector?string-
z?Numberish-
zoomAndPan?string-

Defined in ​

profectus/src/features/boards/board.ts:63


BoardOptions ​

• BoardOptions: Object

An object that configures a Board.

NameTypeDescription
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
height?Computable<string>The height of the board. Defaults to 100%
links?Computable<null | BoardNodeLink[]>An array of board node links to display.
startNodes() => Omit<BoardNode, "id">[]A function that returns an array of initial board nodes, without IDs.
state?Computable<BoardData>The persistent state of the board.
style?Computable<StyleValue>CSS to apply to this feature.
typesRecord<string, NodeTypeOptions>A dictionary of node types that can appear on the board.
visibility?Computable<boolean | Visibility>Whether this board should be visible.
width?Computable<string>The width of the board. Defaults to 100%

Defined in ​

profectus/src/features/boards/board.ts:216


NodeLabel ​

• NodeLabel: Object

An object representing a label for a node.

NameType
color?string
pulsing?boolean
textstring

Defined in ​

profectus/src/features/boards/board.ts:70


NodeTypeOptions ​

• NodeTypeOptions: Object

An object that configures a NodeType.

NameTypeDescription
actionDistance?NodeComputable<number>The distance between the center of the node and its actions.
actions?BoardNodeActionOptions[]The list of action options for the node.
canAccept?boolean | Ref<boolean> | (node: BoardNode, otherNode: BoardNode) => booleanWhether the node can accept another node being dropped upon it.
draggable?NodeComputable<boolean>Whether the node is draggable or not.
fillColor?NodeComputable<string>The fill color of the node.
label?NodeComputable<null | NodeLabel>An optional label for the node.
onClick?(node: BoardNode) => voidA function that is called when the node is clicked.
onDrop?(node: BoardNode, otherNode: BoardNode) => voidA function that is called when a node is dropped onto this node.
outlineColor?NodeComputable<string>The outline color of the node.
progress?NodeComputable<number>The progress value of the node.
progressColor?NodeComputable<string>The color of the progress indicator.
progressDisplay?NodeComputable<ProgressDisplay>How the progress should be displayed on the node.
shapeNodeComputable<Shape>The shape of the node.
sizeNodeComputable<number>The size of the node - diameter for circles, width and height for squares.
titleNodeComputable<string>The title to display for the node.
titleColor?NodeComputable<string>The color of the title text.
update?(node: BoardNode, diff: number) => voidA function that is called for each node of this type every tick.

Defined in ​

profectus/src/features/boards/board.ts:86

Type Aliases ​

Board ​

Ƭ Board<T>: Replace<T & BaseBoard, { classes: GetComputableType<T["classes"]> ; height: GetComputableType<T["height"]> ; links: GetComputableTypeWithDefault<T["links"], Ref<BoardNodeLink[] | null>> ; state: GetComputableTypeWithDefault<T["state"], Persistent<BoardData>> ; style: GetComputableType<T["style"]> ; types: Record<string, GenericNodeType> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> ; width: GetComputableType<T["width"]> }>

An object that represents a feature that is a zoomable, pannable board with various nodes upon it.

Type parameters ​

NameType
Textends BoardOptions

Defined in ​

profectus/src/features/boards/board.ts:260


BoardData ​

Ƭ BoardData: Object

The persistent data for a board.

Type declaration ​

NameType
nodesBoardNode[]
selectedActionstring | null
selectedNodenumber | null

Defined in ​

profectus/src/features/boards/board.ts:77


BoardNodeAction ​

Ƭ BoardNodeAction<T>: Replace<T & BaseBoardNodeAction, { fillColor: GetComputableType<T["fillColor"]> ; icon: GetComputableType<T["icon"]> ; links: GetComputableType<T["links"]> ; tooltip: GetComputableType<T["tooltip"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents an action that can be taken upon a node.

Type parameters ​

NameType
Textends BoardNodeActionOptions

Defined in ​

profectus/src/features/boards/board.ts:194


GenericBoard ​

Ƭ GenericBoard: Replace<Board<BoardOptions>, { links: ProcessedComputable<BoardNodeLink[] | null> ; state: ProcessedComputable<BoardData> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Board object.

Defined in ​

profectus/src/features/boards/board.ts:275


GenericBoardNodeAction ​

Ƭ GenericBoardNodeAction: Replace<BoardNodeAction<BoardNodeActionOptions>, { visibility: NodeComputable<Visibility | boolean> }>

A type that matches any valid BoardNodeAction object.

Defined in ​

profectus/src/features/boards/board.ts:206


GenericNodeType ​

Ƭ GenericNodeType: Replace<NodeType<NodeTypeOptions>, { actionDistance: NodeComputable<number> ; canAccept: NodeComputable<boolean> ; draggable: NodeComputable<boolean> ; progressColor: NodeComputable<string> ; progressDisplay: NodeComputable<ProgressDisplay> ; shape: NodeComputable<Shape> ; size: NodeComputable<number> }>

A type that matches any valid NodeType object.

Defined in ​

profectus/src/features/boards/board.ts:153


NodeComputable ​

Ƭ NodeComputable<T>: Computable<T> | (node: BoardNode) => T

A type representing a computable value for a node on the board. Used for node types to return different values based on the given node and the state of the board.

Type parameters ​

Name
T

Defined in ​

profectus/src/features/boards/board.ts:36


NodeType ​

Ƭ NodeType<T>: Replace<T & BaseNodeType, { actionDistance: GetComputableTypeWithDefault<T["actionDistance"], number> ; actions?: GenericBoardNodeAction[] ; canAccept: GetComputableTypeWithDefault<T["canAccept"], false> ; draggable: GetComputableTypeWithDefault<T["draggable"], false> ; fillColor: GetComputableType<T["fillColor"]> ; label: GetComputableType<T["label"]> ; outlineColor: GetComputableType<T["outlineColor"]> ; progress: GetComputableType<T["progress"]> ; progressColor: GetComputableTypeWithDefault<T["progressColor"], "none"> ; progressDisplay: GetComputableTypeWithDefault<T["progressDisplay"], Fill> ; shape: GetComputableTypeWithDefault<T["shape"], Circle> ; size: GetComputableTypeWithDefault<T["size"], 50> ; title: GetComputableType<T["title"]> ; titleColor: GetComputableType<T["titleColor"]> }>

An object that represents a type of node that can appear on a board. It will handle getting properties and callbacks for every node of that type.

Type parameters ​

NameType
Textends NodeTypeOptions

Defined in ​

profectus/src/features/boards/board.ts:132

Variables ​

BoardType ​

• Const BoardType: typeof BoardType

A symbol used to identify Board features.

Defined in ​

profectus/src/features/boards/board.ts:31

Functions ​

createBoard ​

â–¸ createBoard<T>(optionsFunc): Board<T>

Lazily creates a board with the given options.

Type parameters ​
NameType
Textends BoardOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseBoard, GenericBoard>Board options.
Returns ​

Board<T>

Defined in ​

profectus/src/features/boards/board.ts:288


getNodeProperty ​

â–¸ getNodeProperty<T>(property, node): T

Gets the value of a property for a specified node.

Type parameters ​
Name
T
Parameters ​
NameTypeDescription
propertyNodeComputable<T>The property to find the value of
nodeBoardNodeThe node to get the property of
Returns ​

T

Defined in ​

profectus/src/features/boards/board.ts:456


getUniqueNodeID ​

â–¸ getUniqueNodeID(board): number

Utility to get an ID for a node that is guaranteed unique.

Parameters ​
NameTypeDescription
boardGenericBoardThe board feature to generate an ID for
Returns ​

number

Defined in ​

profectus/src/features/boards/board.ts:464

Components ​

Board Component ​

Props ​

NameType
nodes*Ref
types*Record
state*Ref
visibility*ProcessedComputable
widthProcessedComputable
heightProcessedComputable
styleProcessedComputable
classesProcessedComputable
links*Ref
selectedAction*Ref
selectedNode*Ref
mousePosition*Ref

Props ​

NameType
link*BoardNodeLink

BoardNode Component ​

Props ​

NameType
node*BoardNode
nodeType*GenericNodeType
draggingBoardNode
dragged{
x: number;
y: number;
}
hasDraggedboolean
receivingNodeboolean
selectedNodeBoardNode | null
selectedActionGenericBoardNodeAction | null

Events ​

Name
mouseDown
endDragging
',188),r=[a];function c(n,i,s,f,g,y){return d(),e("div",null,r)}const b=t(l,[["render",c]]);export{x as __pageData,b as default}; diff --git a/assets/api_modules_features_board.md.83c56444.lean.js b/assets/api_modules_features_board.md.83c56444.lean.js deleted file mode 100644 index c404f2c9..00000000 --- a/assets/api_modules_features_board.md.83c56444.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as e,o as d,N as o}from"./chunks/framework.0799945b.js";const x=JSON.parse('{"title":"Module: features/boards/board","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/board.md","lastUpdated":null}'),l={name:"api/modules/features/board.md"},a=o("",188),r=[a];function c(n,i,s,f,g,y){return d(),e("div",null,r)}const b=t(l,[["render",c]]);export{x as __pageData,b as default}; diff --git a/assets/api_modules_features_board.md.f946e582.js b/assets/api_modules_features_board.md.f946e582.js new file mode 100644 index 00000000..1aa8c531 --- /dev/null +++ b/assets/api_modules_features_board.md.f946e582.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/boards/board","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/board.md","lastUpdated":null}'),d={name:"api/modules/features/board.md"},r=a('

Module: features/boards/board ​

Enumerations ​

ProgressDisplay ​

• ProgressDisplay: Object

Ways to display progress of an action with a duration.

Defined in ​

profectus/src/features/boards/board.ts:39


Shape ​

• Shape: Object

Node shapes.

Defined in ​

profectus/src/features/boards/board.ts:45

Interfaces ​

BaseBoard ​

• BaseBoard: Object

The properties that are added onto a processed BoardOptions to create a Board.

Defined in ​

profectus/src/features/boards/board.ts:240


BaseBoardNodeAction ​

• BaseBoardNodeAction: Object

The properties that are added onto a processed BoardNodeActionOptions to create an BoardNodeAction.

Defined in ​

profectus/src/features/boards/board.ts:189


BaseNodeType ​

• BaseNodeType: Object

The properties that are added onto a processed NodeTypeOptions to create a NodeType.

Defined in ​

profectus/src/features/boards/board.ts:126


BoardNode ​

• BoardNode: Object

An object representing a node on the board.

Defined in ​

profectus/src/features/boards/board.ts:51


BoardNodeActionOptions ​

• BoardNodeActionOptions: Object

An object that configures a BoardNodeAction.

Defined in ​

profectus/src/features/boards/board.ts:169


• BoardNodeLink: Object

An object representing a link between two nodes on the board.

Defined in ​

profectus/src/features/boards/board.ts:63


BoardOptions ​

• BoardOptions: Object

An object that configures a Board.

Defined in ​

profectus/src/features/boards/board.ts:216


NodeLabel ​

• NodeLabel: Object

An object representing a label for a node.

Defined in ​

profectus/src/features/boards/board.ts:70


NodeTypeOptions ​

• NodeTypeOptions: Object

An object that configures a NodeType.

Defined in ​

profectus/src/features/boards/board.ts:86

Type Aliases ​

Board ​

Ƭ Board<T>: Replace<T & BaseBoard, { classes: GetComputableType<T["classes"]> ; height: GetComputableType<T["height"]> ; links: GetComputableTypeWithDefault<T["links"], Ref<BoardNodeLink[] | null>> ; state: GetComputableTypeWithDefault<T["state"], Persistent<BoardData>> ; style: GetComputableType<T["style"]> ; types: Record<string, GenericNodeType> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> ; width: GetComputableType<T["width"]> }>

An object that represents a feature that is a zoomable, pannable board with various nodes upon it.

Type parameters ​

NameType
Textends BoardOptions

Defined in ​

profectus/src/features/boards/board.ts:260


BoardData ​

Ƭ BoardData: Object

The persistent data for a board.

Type declaration ​

NameType
nodesBoardNode[]
selectedActionstring | null
selectedNodenumber | null

Defined in ​

profectus/src/features/boards/board.ts:77


BoardNodeAction ​

Ƭ BoardNodeAction<T>: Replace<T & BaseBoardNodeAction, { fillColor: GetComputableType<T["fillColor"]> ; icon: GetComputableType<T["icon"]> ; links: GetComputableType<T["links"]> ; tooltip: GetComputableType<T["tooltip"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents an action that can be taken upon a node.

Type parameters ​

NameType
Textends BoardNodeActionOptions

Defined in ​

profectus/src/features/boards/board.ts:194


GenericBoard ​

Ƭ GenericBoard: Replace<Board<BoardOptions>, { links: ProcessedComputable<BoardNodeLink[] | null> ; state: ProcessedComputable<BoardData> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Board object.

Defined in ​

profectus/src/features/boards/board.ts:275


GenericBoardNodeAction ​

Ƭ GenericBoardNodeAction: Replace<BoardNodeAction<BoardNodeActionOptions>, { visibility: NodeComputable<Visibility | boolean> }>

A type that matches any valid BoardNodeAction object.

Defined in ​

profectus/src/features/boards/board.ts:206


GenericNodeType ​

Ƭ GenericNodeType: Replace<NodeType<NodeTypeOptions>, { actionDistance: NodeComputable<number> ; canAccept: NodeComputable<boolean> ; draggable: NodeComputable<boolean> ; progressColor: NodeComputable<string> ; progressDisplay: NodeComputable<ProgressDisplay> ; shape: NodeComputable<Shape> ; size: NodeComputable<number> }>

A type that matches any valid NodeType object.

Defined in ​

profectus/src/features/boards/board.ts:153


NodeComputable ​

Ƭ NodeComputable<T>: Computable<T> | (node: BoardNode) => T

A type representing a computable value for a node on the board. Used for node types to return different values based on the given node and the state of the board.

Type parameters ​

Name
T

Defined in ​

profectus/src/features/boards/board.ts:36


NodeType ​

Ƭ NodeType<T>: Replace<T & BaseNodeType, { actionDistance: GetComputableTypeWithDefault<T["actionDistance"], number> ; actions?: GenericBoardNodeAction[] ; canAccept: GetComputableTypeWithDefault<T["canAccept"], false> ; draggable: GetComputableTypeWithDefault<T["draggable"], false> ; fillColor: GetComputableType<T["fillColor"]> ; label: GetComputableType<T["label"]> ; outlineColor: GetComputableType<T["outlineColor"]> ; progress: GetComputableType<T["progress"]> ; progressColor: GetComputableTypeWithDefault<T["progressColor"], "none"> ; progressDisplay: GetComputableTypeWithDefault<T["progressDisplay"], Fill> ; shape: GetComputableTypeWithDefault<T["shape"], Circle> ; size: GetComputableTypeWithDefault<T["size"], 50> ; title: GetComputableType<T["title"]> ; titleColor: GetComputableType<T["titleColor"]> }>

An object that represents a type of node that can appear on a board. It will handle getting properties and callbacks for every node of that type.

Type parameters ​

NameType
Textends NodeTypeOptions

Defined in ​

profectus/src/features/boards/board.ts:132

Variables ​

BoardType ​

• Const BoardType: typeof BoardType

A symbol used to identify Board features.

Defined in ​

profectus/src/features/boards/board.ts:31

Functions ​

createBoard ​

â–¸ createBoard<T>(optionsFunc): Board<T>

Lazily creates a board with the given options.

Type parameters ​

NameType
Textends BoardOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseBoard, GenericBoard>Board options.

Returns ​

Board<T>

Defined in ​

profectus/src/features/boards/board.ts:288


getNodeProperty ​

â–¸ getNodeProperty<T>(property, node): T

Gets the value of a property for a specified node.

Type parameters ​

Name
T

Parameters ​

NameTypeDescription
propertyNodeComputable<T>The property to find the value of
nodeBoardNodeThe node to get the property of

Returns ​

T

Defined in ​

profectus/src/features/boards/board.ts:456


getUniqueNodeID ​

â–¸ getUniqueNodeID(board): number

Utility to get an ID for a node that is guaranteed unique.

Parameters ​

NameTypeDescription
boardGenericBoardThe board feature to generate an ID for

Returns ​

number

Defined in ​

profectus/src/features/boards/board.ts:464

Components ​

Board Component ​

Props ​

NameType
nodes*Ref
types*Record
state*Ref
visibility*ProcessedComputable
widthProcessedComputable
heightProcessedComputable
styleProcessedComputable
classesProcessedComputable
links*Ref
selectedAction*Ref
selectedNode*Ref
mousePosition*Ref

Props ​

NameType
link*BoardNodeLink

BoardNode Component ​

Props ​

NameType
node*BoardNode
nodeType*GenericNodeType
draggingBoardNode
dragged{
x: number;
y: number;
}
hasDraggedboolean
receivingNodeboolean
selectedNodeBoardNode | null
selectedActionGenericBoardNodeAction | null

Events ​

Name
mouseDown
endDragging
',177),c=[r];function n(l,i,s,b,h,p){return o(),t("div",null,c)}const g=e(d,[["render",n]]);export{u as __pageData,g as default}; diff --git a/assets/api_modules_features_board.md.f946e582.lean.js b/assets/api_modules_features_board.md.f946e582.lean.js new file mode 100644 index 00000000..558898c7 --- /dev/null +++ b/assets/api_modules_features_board.md.f946e582.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/boards/board","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/board.md","lastUpdated":null}'),d={name:"api/modules/features/board.md"},r=a("",177),c=[r];function n(l,i,s,b,h,p){return o(),t("div",null,c)}const g=e(d,[["render",n]]);export{u as __pageData,g as default}; diff --git a/assets/api_modules_features_challenge.md.538635b7.js b/assets/api_modules_features_challenge.md.538635b7.js new file mode 100644 index 00000000..01f1b1db --- /dev/null +++ b/assets/api_modules_features_challenge.md.538635b7.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as l}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/challenges/challenge","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/challenge.md","lastUpdated":null}'),o={name:"api/modules/features/challenge.md"},c=l('

Module: features/challenges/challenge ​

Interfaces ​

BaseChallenge ​

• BaseChallenge: Object

The properties that are added onto a processed ChallengeOptions to create a Challenge.

Defined in ​

profectus/src/features/challenges/challenge.tsx:91


ChallengeOptions ​

• ChallengeOptions: Object

An object that configures a Challenge.

Defined in ​

profectus/src/features/challenges/challenge.tsx:45

Type Aliases ​

Challenge ​

Ƭ Challenge<T>: Replace<T & BaseChallenge, { canStart: GetComputableTypeWithDefault<T["canStart"], true> ; classes: GetComputableType<T["classes"]> ; completionLimit: GetComputableTypeWithDefault<T["completionLimit"], 1> ; display: GetComputableType<T["display"]> ; mark: GetComputableTypeWithDefault<T["mark"], Ref<boolean>> ; maximize: GetComputableType<T["maximize"]> ; requirements: GetComputableType<T["requirements"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that can be entered and exited, and have one or more completions with scaling requirements.

Type parameters ​

NameType
Textends ChallengeOptions

Defined in ​

profectus/src/features/challenges/challenge.tsx:120


GenericChallenge ​

Ƭ GenericChallenge: Replace<Challenge<ChallengeOptions>, { canStart: ProcessedComputable<boolean> ; completionLimit: ProcessedComputable<DecimalSource> ; mark: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Challenge object.

Defined in ​

profectus/src/features/challenges/challenge.tsx:136

Variables ​

ChallengeType ​

• Const ChallengeType: typeof ChallengeType

A symbol used to identify Challenge features.

Defined in ​

profectus/src/features/challenges/challenge.tsx:40

Functions ​

createActiveChallenge ​

â–¸ createActiveChallenge(challenges): Ref<GenericChallenge | null>

Utility for taking an array of challenges where only one may be active at a time, and giving a ref to the one currently active (or null if none are active)

Parameters ​

NameTypeDescription
challengesGenericChallenge[]The list of challenges that are mutually exclusive

Returns ​

Ref<GenericChallenge | null>

Defined in ​

profectus/src/features/challenges/challenge.tsx:324


createChallenge ​

â–¸ createChallenge<T>(optionsFunc): Challenge<T>

Lazily creates a challenge with the given options.

Type parameters ​

NameType
Textends ChallengeOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseChallenge, GenericChallenge>Challenge options.

Returns ​

Challenge<T>

Defined in ​

profectus/src/features/challenges/challenge.tsx:150


isAnyChallengeActive ​

â–¸ isAnyChallengeActive(challenges): Ref<boolean>

Utility for reporting if any challenge in a list is currently active. Intended for preventing entering a challenge if another is already active.

Parameters ​

NameTypeDescription
challengesGenericChallenge[] | Ref<null | GenericChallenge>List of challenges that are mutually exclusive

Returns ​

Ref<boolean>

Defined in ​

profectus/src/features/challenges/challenge.tsx:334


setupAutoComplete ​

â–¸ setupAutoComplete(challenge, autoActive?, exitOnComplete?): WatchStopHandle

This will automatically complete a challenge when it's requirements are met.

Parameters ​

NameTypeDefault valueDescription
challengeGenericChallengeundefinedThe challenge to auto-complete
autoActiveComputable<boolean>trueWhether or not auto-completing should currently occur
exitOnCompletebooleantrueWhether or not to exit the challenge after auto-completion

Returns ​

WatchStopHandle

Defined in ​

profectus/src/features/challenges/challenge.tsx:304

Components ​

Challenge Component ​

Props ​

NameType
active*processedPropType<boolean>(Boolean)
maxed*processedPropType<boolean>(Boolean)
canComplete*processedPropType<boolean>(Boolean)
displayprocessedPropType<UnwrapRef<GenericChallenge["display"]>>(
String,
Object,
Function
)
requirementsprocessedPropType<Requirements>(Object, Array)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
completed*processedPropType<boolean>(Boolean)
canStart*processedPropType<boolean>(Boolean)
markprocessedPropType<boolean | string>(Boolean, String)
id*string
toggle*VoidFunction
',79),n=[c];function r(d,i,s,h,g,f){return a(),t("div",null,n)}const b=e(o,[["render",r]]);export{u as __pageData,b as default}; diff --git a/assets/api_modules_features_challenge.md.b67ac4a6.lean.js b/assets/api_modules_features_challenge.md.538635b7.lean.js similarity index 57% rename from assets/api_modules_features_challenge.md.b67ac4a6.lean.js rename to assets/api_modules_features_challenge.md.538635b7.lean.js index 86026d51..0476aa5e 100644 --- a/assets/api_modules_features_challenge.md.b67ac4a6.lean.js +++ b/assets/api_modules_features_challenge.md.538635b7.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as l,N as a}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/challenges/challenge","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/challenge.md","lastUpdated":null}'),o={name:"api/modules/features/challenge.md"},c=a("",81),d=[c];function n(r,i,s,h,g,f){return l(),t("div",null,d)}const y=e(o,[["render",n]]);export{u as __pageData,y as default}; +import{_ as e,c as t,o as a,N as l}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/challenges/challenge","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/challenge.md","lastUpdated":null}'),o={name:"api/modules/features/challenge.md"},c=l("",79),n=[c];function r(d,i,s,h,g,f){return a(),t("div",null,n)}const b=e(o,[["render",r]]);export{u as __pageData,b as default}; diff --git a/assets/api_modules_features_challenge.md.b67ac4a6.js b/assets/api_modules_features_challenge.md.b67ac4a6.js deleted file mode 100644 index ce034faf..00000000 --- a/assets/api_modules_features_challenge.md.b67ac4a6.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as l,N as a}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/challenges/challenge","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/challenge.md","lastUpdated":null}'),o={name:"api/modules/features/challenge.md"},c=a('

Module: features/challenges/challenge ​

Interfaces ​

BaseChallenge ​

• BaseChallenge: Object

The properties that are added onto a processed ChallengeOptions to create a Challenge.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
activePersistent<boolean>Whether or not this challenge is currently active.
canCompleteRef<DecimalSource>The current amount of times this challenge can be completed.
complete(remainInChallenge?: boolean) => voidA function to complete this challenge.
completedRef<boolean>Whether or not this challenge has been completed.
completionsPersistent<DecimalSource>The current number of times this challenge has been completed.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
maxedRef<boolean>Whether or not this challenge's completion count is at its limit.
toggleVoidFunctionA function to enter or leave the challenge.
typetypeof ChallengeTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/challenges/challenge.tsx:91


ChallengeOptions ​

• ChallengeOptions: Object

An object that configures a Challenge.

NameTypeDescription
canStart?Computable<boolean>Whether this challenge can be started.
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
completionLimit?Computable<DecimalSource>The maximum number of times the challenge can be completed.
display?Computable<CoercableComponent | { description: CoercableComponent ; effectDisplay?: CoercableComponent ; goal?: CoercableComponent ; reward?: CoercableComponent ; title?: CoercableComponent }>The display to use for this challenge.
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
maximize?Computable<boolean>Whether or not completing this challenge should grant multiple completions if requirements met. Requires requirements to be a requirement or array of requirements with Requirement.canMaximize true.
onComplete?VoidFunctionA function that is called when the challenge is completed.
onEnter?VoidFunctionA function that is called when the challenge is entered.
onExit?VoidFunctionA function that is called when the challenge is exited.
requirementsRequirementsThe requirement(s) to complete this challenge.
reset?GenericResetThe reset function for this challenge.
style?Computable<StyleValue>CSS to apply to this feature.
visibility?Computable<boolean | Visibility>Whether this challenge should be visible.

Defined in ​

profectus/src/features/challenges/challenge.tsx:45

Type Aliases ​

Challenge ​

Ƭ Challenge<T>: Replace<T & BaseChallenge, { canStart: GetComputableTypeWithDefault<T["canStart"], true> ; classes: GetComputableType<T["classes"]> ; completionLimit: GetComputableTypeWithDefault<T["completionLimit"], 1> ; display: GetComputableType<T["display"]> ; mark: GetComputableTypeWithDefault<T["mark"], Ref<boolean>> ; maximize: GetComputableType<T["maximize"]> ; requirements: GetComputableType<T["requirements"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that can be entered and exited, and have one or more completions with scaling requirements.

Type parameters ​

NameType
Textends ChallengeOptions

Defined in ​

profectus/src/features/challenges/challenge.tsx:120


GenericChallenge ​

Ƭ GenericChallenge: Replace<Challenge<ChallengeOptions>, { canStart: ProcessedComputable<boolean> ; completionLimit: ProcessedComputable<DecimalSource> ; mark: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Challenge object.

Defined in ​

profectus/src/features/challenges/challenge.tsx:136

Variables ​

ChallengeType ​

• Const ChallengeType: typeof ChallengeType

A symbol used to identify Challenge features.

Defined in ​

profectus/src/features/challenges/challenge.tsx:40

Functions ​

createActiveChallenge ​

â–¸ createActiveChallenge(challenges): Ref<GenericChallenge | null>

Utility for taking an array of challenges where only one may be active at a time, and giving a ref to the one currently active (or null if none are active)

Parameters ​
NameTypeDescription
challengesGenericChallenge[]The list of challenges that are mutually exclusive
Returns ​

Ref<GenericChallenge | null>

Defined in ​

profectus/src/features/challenges/challenge.tsx:324


createChallenge ​

â–¸ createChallenge<T>(optionsFunc): Challenge<T>

Lazily creates a challenge with the given options.

Type parameters ​
NameType
Textends ChallengeOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseChallenge, GenericChallenge>Challenge options.
Returns ​

Challenge<T>

Defined in ​

profectus/src/features/challenges/challenge.tsx:150


isAnyChallengeActive ​

â–¸ isAnyChallengeActive(challenges): Ref<boolean>

Utility for reporting if any challenge in a list is currently active. Intended for preventing entering a challenge if another is already active.

Parameters ​
NameTypeDescription
challengesGenericChallenge[] | Ref<null | GenericChallenge>List of challenges that are mutually exclusive
Returns ​

Ref<boolean>

Defined in ​

profectus/src/features/challenges/challenge.tsx:334


setupAutoComplete ​

â–¸ setupAutoComplete(challenge, autoActive?, exitOnComplete?): WatchStopHandle

This will automatically complete a challenge when it's requirements are met.

Parameters ​
NameTypeDefault valueDescription
challengeGenericChallengeundefinedThe challenge to auto-complete
autoActiveComputable<boolean>trueWhether or not auto-completing should currently occur
exitOnCompletebooleantrueWhether or not to exit the challenge after auto-completion
Returns ​

WatchStopHandle

Defined in ​

profectus/src/features/challenges/challenge.tsx:304

Components ​

Challenge Component ​

Props ​

NameType
active*processedPropType<boolean>(Boolean)
maxed*processedPropType<boolean>(Boolean)
canComplete*processedPropType<boolean>(Boolean)
displayprocessedPropType<UnwrapRef<GenericChallenge["display"]>>(
String,
Object,
Function
)
requirementsprocessedPropType<Requirements>(Object, Array)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
completed*processedPropType<boolean>(Boolean)
canStart*processedPropType<boolean>(Boolean)
markprocessedPropType<boolean | string>(Boolean, String)
id*string
toggle*VoidFunction
',81),d=[c];function n(r,i,s,h,g,f){return l(),t("div",null,d)}const y=e(o,[["render",n]]);export{u as __pageData,y as default}; diff --git a/assets/api_modules_features_clickable.md.81af6047.js b/assets/api_modules_features_clickable.md.81af6047.js deleted file mode 100644 index deb2ecba..00000000 --- a/assets/api_modules_features_clickable.md.81af6047.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as l}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/clickables/clickable","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/clickable.md","lastUpdated":null}'),c={name:"api/modules/features/clickable.md"},o=l('

Module: features/clickables/clickable ​

Interfaces ​

BaseClickable ​

• BaseClickable: Object

The properties that are added onto a processed ClickableOptions to create an Clickable.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
typetypeof ClickableTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/clickables/clickable.ts:60


ClickableOptions ​

• ClickableOptions: Object

An object that configures a Clickable.

NameTypeDescription
canClick?Computable<boolean>Whether or not the clickable may be clicked.
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
display?Computable<CoercableComponent | { description: CoercableComponent ; title?: CoercableComponent }>The display to use for this clickable.
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
onClick?(e?: MouseEvent | TouchEvent) => voidA function that is called when the clickable is clicked.
onHold?VoidFunctionA function that is called when the clickable is held down.
small?booleanToggles a smaller design for the feature.
style?Computable<StyleValue>CSS to apply to this feature.
visibility?Computable<boolean | Visibility>Whether this clickable should be visible.

Defined in ​

profectus/src/features/clickables/clickable.ts:28

Type Aliases ​

Clickable ​

Ƭ Clickable<T>: Replace<T & BaseClickable, { canClick: GetComputableTypeWithDefault<T["canClick"], true> ; classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; mark: GetComputableType<T["mark"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that can be clicked or held down.

Type parameters ​

NameType
Textends ClickableOptions

Defined in ​

profectus/src/features/clickables/clickable.ts:72


GenericClickable ​

Ƭ GenericClickable: Replace<Clickable<ClickableOptions>, { canClick: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Clickable object.

Defined in ​

profectus/src/features/clickables/clickable.ts:85

Variables ​

ClickableType ​

• Const ClickableType: typeof ClickableType

A symbol used to identify Clickable features.

Defined in ​

profectus/src/features/clickables/clickable.ts:23

Functions ​

createClickable ​

â–¸ createClickable<T>(optionsFunc?): Clickable<T>

Lazily creates a clickable with the given options.

Type parameters ​
NameType
Textends ClickableOptions
Parameters ​
NameTypeDescription
optionsFunc?OptionsFunc<T, BaseClickable, GenericClickable>Clickable options.
Returns ​

Clickable<T>

Defined in ​

profectus/src/features/clickables/clickable.ts:97


setupAutoClick ​

â–¸ setupAutoClick(layer, clickable, autoActive?): Unsubscribe

Utility to auto click a clickable whenever it can be.

Parameters ​
NameTypeDefault valueDescription
layerBaseLayerundefinedThe layer the clickable is apart of
clickableGenericClickableundefinedThe clicker to click automatically
autoActiveComputable<boolean>trueWhether or not the clickable should currently be auto-clicking
Returns ​

Unsubscribe

Defined in ​

profectus/src/features/clickables/clickable.ts:169

Components ​

Clickable Component ​

Props ​

NameType
display*processedPropType<UnwrapRef<GenericClickable["display"]>>(
Object,
String,
Function
)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(Object, String, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
onClick(e?: MouseEvent | TouchEvent) => void
onHoldVoidFunction
canClick*processedPropType<boolean>(Boolean)
smallboolean
markprocessedPropType<boolean | string>(Boolean, String)
id*string
',61),d=[o];function i(r,s,n,b,h,f){return a(),t("div",null,d)}const y=e(c,[["render",i]]);export{u as __pageData,y as default}; diff --git a/assets/api_modules_features_clickable.md.f229af4e.js b/assets/api_modules_features_clickable.md.f229af4e.js new file mode 100644 index 00000000..7cbd1eca --- /dev/null +++ b/assets/api_modules_features_clickable.md.f229af4e.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as l}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/clickables/clickable","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/clickable.md","lastUpdated":null}'),c={name:"api/modules/features/clickable.md"},o=l('

Module: features/clickables/clickable ​

Interfaces ​

BaseClickable ​

• BaseClickable: Object

The properties that are added onto a processed ClickableOptions to create an Clickable.

Defined in ​

profectus/src/features/clickables/clickable.ts:60


ClickableOptions ​

• ClickableOptions: Object

An object that configures a Clickable.

Defined in ​

profectus/src/features/clickables/clickable.ts:28

Type Aliases ​

Clickable ​

Ƭ Clickable<T>: Replace<T & BaseClickable, { canClick: GetComputableTypeWithDefault<T["canClick"], true> ; classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; mark: GetComputableType<T["mark"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that can be clicked or held down.

Type parameters ​

NameType
Textends ClickableOptions

Defined in ​

profectus/src/features/clickables/clickable.ts:72


GenericClickable ​

Ƭ GenericClickable: Replace<Clickable<ClickableOptions>, { canClick: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Clickable object.

Defined in ​

profectus/src/features/clickables/clickable.ts:85

Variables ​

ClickableType ​

• Const ClickableType: typeof ClickableType

A symbol used to identify Clickable features.

Defined in ​

profectus/src/features/clickables/clickable.ts:23

Functions ​

createClickable ​

â–¸ createClickable<T>(optionsFunc?): Clickable<T>

Lazily creates a clickable with the given options.

Type parameters ​

NameType
Textends ClickableOptions

Parameters ​

NameTypeDescription
optionsFunc?OptionsFunc<T, BaseClickable, GenericClickable>Clickable options.

Returns ​

Clickable<T>

Defined in ​

profectus/src/features/clickables/clickable.ts:97


setupAutoClick ​

â–¸ setupAutoClick(layer, clickable, autoActive?): Unsubscribe

Utility to auto click a clickable whenever it can be.

Parameters ​

NameTypeDefault valueDescription
layerBaseLayerundefinedThe layer the clickable is apart of
clickableGenericClickableundefinedThe clicker to click automatically
autoActiveComputable<boolean>trueWhether or not the clickable should currently be auto-clicking

Returns ​

Unsubscribe

Defined in ​

profectus/src/features/clickables/clickable.ts:169

Components ​

Clickable Component ​

Props ​

NameType
display*processedPropType<UnwrapRef<GenericClickable["display"]>>(
Object,
String,
Function
)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(Object, String, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
onClick(e?: MouseEvent | TouchEvent) => void
onHoldVoidFunction
canClick*processedPropType<boolean>(Boolean)
smallboolean
markprocessedPropType<boolean | string>(Boolean, String)
id*string
',59),i=[o];function r(d,s,n,b,h,f){return a(),t("div",null,i)}const k=e(c,[["render",r]]);export{u as __pageData,k as default}; diff --git a/assets/api_modules_features_clickable.md.81af6047.lean.js b/assets/api_modules_features_clickable.md.f229af4e.lean.js similarity index 71% rename from assets/api_modules_features_clickable.md.81af6047.lean.js rename to assets/api_modules_features_clickable.md.f229af4e.lean.js index fd3b7087..1032bb86 100644 --- a/assets/api_modules_features_clickable.md.81af6047.lean.js +++ b/assets/api_modules_features_clickable.md.f229af4e.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as l}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/clickables/clickable","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/clickable.md","lastUpdated":null}'),c={name:"api/modules/features/clickable.md"},o=l("",61),d=[o];function i(r,s,n,b,h,f){return a(),t("div",null,d)}const y=e(c,[["render",i]]);export{u as __pageData,y as default}; +import{_ as e,c as t,o as a,N as l}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/clickables/clickable","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/clickable.md","lastUpdated":null}'),c={name:"api/modules/features/clickable.md"},o=l("",59),i=[o];function r(d,s,n,b,h,f){return a(),t("div",null,i)}const k=e(c,[["render",r]]);export{u as __pageData,k as default}; diff --git a/assets/api_modules_features_conversion.md.c27720d1.js b/assets/api_modules_features_conversion.md.c27720d1.js new file mode 100644 index 00000000..321dccfb --- /dev/null +++ b/assets/api_modules_features_conversion.md.c27720d1.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/conversion","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/conversion.md","lastUpdated":null}'),r={name:"api/modules/features/conversion.md"},n=a('

Module: features/conversion ​

Interfaces ​

BaseConversion ​

• BaseConversion: Object

The properties that are added onto a processed ConversionOptions to create a Conversion.

Defined in ​

profectus/src/features/conversion.ts:84


ConversionOptions ​

• ConversionOptions: Object

An object that configures a Conversion.

Defined in ​

profectus/src/features/conversion.ts:20

Type Aliases ​

Conversion ​

Ƭ Conversion<T>: Replace<T & BaseConversion, { actualGain: GetComputableTypeWithDefault<T["actualGain"], Ref<DecimalSource>> ; buyMax: GetComputableTypeWithDefault<T["buyMax"], true> ; currentAt: GetComputableTypeWithDefault<T["currentAt"], Ref<DecimalSource>> ; currentGain: GetComputableTypeWithDefault<T["currentGain"], Ref<DecimalSource>> ; formula: InvertibleFormula ; nextAt: GetComputableTypeWithDefault<T["nextAt"], Ref<DecimalSource>> ; spend: undefined extends T["spend"] ? (amountGained: DecimalSource) => void : T["spend"] }>

An object that converts one Resource into another at a given rate.

Type parameters ​

NameType
Textends ConversionOptions

Defined in ​

profectus/src/features/conversion.ts:92


GenericConversion ​

Ƭ GenericConversion: Replace<Conversion<ConversionOptions>, { actualGain: ProcessedComputable<DecimalSource> ; buyMax: ProcessedComputable<boolean> ; currentAt: ProcessedComputable<DecimalSource> ; currentGain: ProcessedComputable<DecimalSource> ; nextAt: ProcessedComputable<DecimalSource> ; spend: (amountGained: DecimalSource) => void }>

A type that matches any valid Conversion object.

Defined in ​

profectus/src/features/conversion.ts:106

Functions ​

createConversion ​

â–¸ createConversion<T>(optionsFunc): Conversion<T>

Lazily creates a conversion with the given options. You typically shouldn't use this function directly. Instead use one of the other conversion constructors, which will then call this.

See

Type parameters ​

NameType
Textends ConversionOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseConversion, GenericConversion>Conversion options.

Returns ​

Conversion<T>

Defined in ​

profectus/src/features/conversion.ts:125


createCumulativeConversion ​

â–¸ createCumulativeConversion<S>(optionsFunc): Conversion<S>

Creates a conversion that simply adds to the gainResource amount upon converting. This is similar to the behavior of "normal" layers in The Modding Tree. This is equivalent to just calling createConversion directly.

Type parameters ​

NameType
Sextends ConversionOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<S, BaseConversion, GenericConversion>Conversion options.

Returns ​

Conversion<S>

Defined in ​

profectus/src/features/conversion.ts:200


createIndependentConversion ​

â–¸ createIndependentConversion<S>(optionsFunc): Conversion<S>

Creates a conversion that will replace the gainResource amount with the new amount upon converting. This is similar to the behavior of "static" layers in The Modding Tree.

Type parameters ​

NameType
Sextends ConversionOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<S, BaseConversion, GenericConversion>Converison options.

Returns ​

Conversion<S>

Defined in ​

profectus/src/features/conversion.ts:211


setupPassiveGeneration ​

â–¸ setupPassiveGeneration(layer, conversion, rate?, cap?): void

This will automatically increase the value of conversion.gainResource without lowering the value of the input resource. It will by default perform 100% of a conversion's currentGain per second. If you use a ref for the rate you can set it's value to 0 when passive generation should be disabled.

Parameters ​

NameTypeDefault valueDescription
layerBaseLayerundefinedThe layer this passive generation will be associated with. Typically this when calling this function from inside a layer's options function.
conversionGenericConversionundefinedThe conversion that will determine how much generation there is.
rateComputable<DecimalSource>1A multiplier to multiply against the conversion's currentGain.
capComputable<DecimalSource>Decimal.dInfA value that should not be passed via passive generation.

Returns ​

void

Defined in ​

profectus/src/features/conversion.ts:271

',75),c=[n];function i(s,d,l,u,h,f){return o(),t("div",null,c)}const m=e(r,[["render",i]]);export{b as __pageData,m as default}; diff --git a/assets/api_modules_features_conversion.md.e67c86a2.lean.js b/assets/api_modules_features_conversion.md.c27720d1.lean.js similarity index 71% rename from assets/api_modules_features_conversion.md.e67c86a2.lean.js rename to assets/api_modules_features_conversion.md.c27720d1.lean.js index abad009a..68f24d85 100644 --- a/assets/api_modules_features_conversion.md.e67c86a2.lean.js +++ b/assets/api_modules_features_conversion.md.c27720d1.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/conversion","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/conversion.md","lastUpdated":null}'),r={name:"api/modules/features/conversion.md"},n=a("",77),c=[n];function i(d,s,l,u,h,f){return o(),t("div",null,c)}const m=e(r,[["render",i]]);export{b as __pageData,m as default}; +import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/conversion","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/conversion.md","lastUpdated":null}'),r={name:"api/modules/features/conversion.md"},n=a("",75),c=[n];function i(s,d,l,u,h,f){return o(),t("div",null,c)}const m=e(r,[["render",i]]);export{b as __pageData,m as default}; diff --git a/assets/api_modules_features_conversion.md.e67c86a2.js b/assets/api_modules_features_conversion.md.e67c86a2.js deleted file mode 100644 index 4c9da190..00000000 --- a/assets/api_modules_features_conversion.md.e67c86a2.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/conversion","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/conversion.md","lastUpdated":null}'),r={name:"api/modules/features/conversion.md"},n=a('

Module: features/conversion ​

Interfaces ​

BaseConversion ​

• BaseConversion: Object

The properties that are added onto a processed ConversionOptions to create a Conversion.

NameTypeDescription
convertVoidFunctionThe function that performs the actual conversion.

Defined in ​

profectus/src/features/conversion.ts:84


ConversionOptions ​

• ConversionOptions: Object

An object that configures a Conversion.

NameTypeDescription
actualGain?Computable<DecimalSource>The absolute amount the output resource will be changed by. Typically this will be set for you in a conversion constructor. This will differ from currentGain in the cases where the conversion isn't just adding the converted amount to the output resource.
baseResourceResource<DecimalSource>The input Resource for this conversion.
buyMax?Computable<boolean>Whether or not to cap the amount of the output resource gained by converting at 1. Defaults to true.
convert?VoidFunctionThe function that performs the actual conversion from baseResource to gainResource. Typically this will be set for you in a conversion constructor.
currentAt?Computable<DecimalSource>The amount of the input resource currently being required in order to produce the currentGain. That is, if it went below this value then currentGain would decrease. Typically this will be set for you in a conversion constructor.
currentGain?Computable<DecimalSource>How much of the output resource the conversion can currently convert for. Typically this will be set for you in a conversion constructor.
formula(variable: GenericFormula & { invert: (value: DecimalSource) => DecimalSource } & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource } & { invertIntegral: (value: DecimalSource) => DecimalSource }) => InvertibleFormulaThe formula used to determine how much gainResource should be earned by this converting. The passed value will be a Formula representing the baseResource variable.
gainResourceResource<DecimalSource>The output Resource for this conversion. i.e. the resource being generated.
nextAt?Computable<DecimalSource>The amount of the input resource required to make currentGain increase. Typically this will be set for you in a conversion constructor.
onConvert?(amountGained: DecimalSource) => voidA callback that happens after a conversion has been completed. Receives the amount gained via conversion. This will not be called whenever using currentGain without calling convert (e.g. passive generation)
spend?(amountGained: DecimalSource) => voidThe function that spends the baseResource as part of the conversion. Defaults to setting the baseResource amount to 0.

Defined in ​

profectus/src/features/conversion.ts:20

Type Aliases ​

Conversion ​

Ƭ Conversion<T>: Replace<T & BaseConversion, { actualGain: GetComputableTypeWithDefault<T["actualGain"], Ref<DecimalSource>> ; buyMax: GetComputableTypeWithDefault<T["buyMax"], true> ; currentAt: GetComputableTypeWithDefault<T["currentAt"], Ref<DecimalSource>> ; currentGain: GetComputableTypeWithDefault<T["currentGain"], Ref<DecimalSource>> ; formula: InvertibleFormula ; nextAt: GetComputableTypeWithDefault<T["nextAt"], Ref<DecimalSource>> ; spend: undefined extends T["spend"] ? (amountGained: DecimalSource) => void : T["spend"] }>

An object that converts one Resource into another at a given rate.

Type parameters ​

NameType
Textends ConversionOptions

Defined in ​

profectus/src/features/conversion.ts:92


GenericConversion ​

Ƭ GenericConversion: Replace<Conversion<ConversionOptions>, { actualGain: ProcessedComputable<DecimalSource> ; buyMax: ProcessedComputable<boolean> ; currentAt: ProcessedComputable<DecimalSource> ; currentGain: ProcessedComputable<DecimalSource> ; nextAt: ProcessedComputable<DecimalSource> ; spend: (amountGained: DecimalSource) => void }>

A type that matches any valid Conversion object.

Defined in ​

profectus/src/features/conversion.ts:106

Functions ​

createConversion ​

â–¸ createConversion<T>(optionsFunc): Conversion<T>

Lazily creates a conversion with the given options. You typically shouldn't use this function directly. Instead use one of the other conversion constructors, which will then call this.

See

Type parameters ​
NameType
Textends ConversionOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseConversion, GenericConversion>Conversion options.
Returns ​

Conversion<T>

Defined in ​

profectus/src/features/conversion.ts:125


createCumulativeConversion ​

â–¸ createCumulativeConversion<S>(optionsFunc): Conversion<S>

Creates a conversion that simply adds to the gainResource amount upon converting. This is similar to the behavior of "normal" layers in The Modding Tree. This is equivalent to just calling createConversion directly.

Type parameters ​
NameType
Sextends ConversionOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<S, BaseConversion, GenericConversion>Conversion options.
Returns ​

Conversion<S>

Defined in ​

profectus/src/features/conversion.ts:200


createIndependentConversion ​

â–¸ createIndependentConversion<S>(optionsFunc): Conversion<S>

Creates a conversion that will replace the gainResource amount with the new amount upon converting. This is similar to the behavior of "static" layers in The Modding Tree.

Type parameters ​
NameType
Sextends ConversionOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<S, BaseConversion, GenericConversion>Converison options.
Returns ​

Conversion<S>

Defined in ​

profectus/src/features/conversion.ts:211


setupPassiveGeneration ​

â–¸ setupPassiveGeneration(layer, conversion, rate?, cap?): void

This will automatically increase the value of conversion.gainResource without lowering the value of the input resource. It will by default perform 100% of a conversion's currentGain per second. If you use a ref for the rate you can set it's value to 0 when passive generation should be disabled.

Parameters ​
NameTypeDefault valueDescription
layerBaseLayerundefinedThe layer this passive generation will be associated with. Typically this when calling this function from inside a layer's options function.
conversionGenericConversionundefinedThe conversion that will determine how much generation there is.
rateComputable<DecimalSource>1A multiplier to multiply against the conversion's currentGain.
capComputable<DecimalSource>Decimal.dInfA value that should not be passed via passive generation.
Returns ​

void

Defined in ​

profectus/src/features/conversion.ts:271

',77),c=[n];function i(d,s,l,u,h,f){return o(),t("div",null,c)}const m=e(r,[["render",i]]);export{b as __pageData,m as default}; diff --git a/assets/api_modules_features_feature.md.6c0b6f85.js b/assets/api_modules_features_feature.md.6c0b6f85.js deleted file mode 100644 index 18a72079..00000000 --- a/assets/api_modules_features_feature.md.6c0b6f85.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/feature","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/feature.md","lastUpdated":null}'),o={name:"api/modules/features/feature.md"},n=r('

Module: features/feature ​

Enumerations ​

Visibility ​

• Visibility: Object

Enum for what the visibility of a feature or component should be

NameTypeDescription
Hidden1The feature or component should not appear but still take up space
None2The feature or component should not appear not take up space
Visible0The feature or component should be visible

Defined in ​

profectus/src/features/feature.ts:61

Type Aliases ​

CoercableComponent ​

Ƭ CoercableComponent: string | DefineComponent | JSXFunction

Any value that can be coerced into (or is) a vue component

Defined in ​

profectus/src/features/feature.ts:25


GenericComponent ​

Ƭ GenericComponent: DefineComponent<any, any, any>

A type that refers to any vue component

Defined in ​

profectus/src/features/feature.ts:35


JSXFunction ​

Ƭ JSXFunction: () => JSX.Element & { [DoNotCache]: true }

A type referring to a function that returns JSX and is marked that it shouldn't be wrapped in a ComputedRef

See

jsx

Defined in ​

profectus/src/features/feature.ts:21


OptionsFunc ​

Ƭ OptionsFunc<T, R, S>: () => T & Partial<R> & ThisType<T & S>

Type parameters ​

NameType
TT
RRecord<string, unknown>
SR

Type declaration ​

â–¸ (): T & Partial<R> & ThisType<T & S>

Utility function for a function that returns an object of a given type, with "this" bound to what the type will eventually be processed into. Intended for making lazily evaluated objects.

Returns ​

T & Partial<R> & ThisType<T & S>

Defined in ​

profectus/src/features/feature.ts:45


Replace ​

Ƭ Replace<T, S>: S & Omit<T, keyof S>

Utility type that is S, with any properties from T that aren't already present in S

Type parameters ​

Name
T
S

Defined in ​

profectus/src/features/feature.ts:38


StyleValue ​

Ƭ StyleValue: string | CSSProperties | (string | CSSProperties)[]

Any value that can be passed into an HTML element's style attribute. Note that Profectus uses its own StyleValue and CSSProperties that are extended, in order to have additional properties added to them, such as variable CSS variables.

Defined in ​

profectus/src/features/feature.ts:31

Variables ​

Component ​

• Const Component: typeof Component

A symbol to use as a key for a vue component a feature can be rendered with

See

VueFeature

Defined in ​

profectus/src/features/feature.ts:10


GatherProps ​

• Const GatherProps: typeof GatherProps

A symbol to use as a key for a prop gathering function that a feature can use to send to its component

See

VueFeature

Defined in ​

profectus/src/features/feature.ts:15

Functions ​

excludeFeatures ​

â–¸ excludeFeatures(obj, ...types): unknown[]

Traverses an object and returns all features that are not any of the given types. Features are any object with a "type" property that has a symbol value.

Parameters ​
NameTypeDescription
objRecord<string, unknown>The object to traverse
...typessymbol[]The feature types that will be skipped over
Returns ​

unknown[]

Defined in ​

profectus/src/features/feature.ts:130


findFeatures ​

â–¸ findFeatures(obj, ...types): unknown[]

Traverses an object and returns all features of the given type(s)

Parameters ​
NameTypeDescription
objRecord<string, unknown>The object to traverse
...typessymbol[]The feature types that will be searched for
Returns ​

unknown[]

Defined in ​

profectus/src/features/feature.ts:105


getUniqueID ​

â–¸ getUniqueID(prefix?): string

Gets a unique ID to give to each feature, used for any sort of system that needs to identify elements in the DOM rather than references to the feature itself. (For example, branches) IDs are guaranteed unique, but NOT persistent - they likely will change between updates.

Parameters ​
NameTypeDefault valueDescription
prefixstring"feature-"A string to prepend to the id to make it more readable in the inspector tools
Returns ​

string

Defined in ​

profectus/src/features/feature.ts:56


isHidden ​

â–¸ isHidden(visibility): boolean

NameType
visibilityProcessedComputable<boolean | Visibility>

Defined in ​

profectus/src/features/feature.ts:75


isVisible ​

â–¸ isVisible(visibility): boolean

NameType
visibilityProcessedComputable<boolean | Visibility>

Defined in ​

profectus/src/features/feature.ts:70


jsx ​

â–¸ jsx(func): JSXFunction

Takes a function and marks it as JSX so it won't get auto-wrapped into a ComputedRef. The function may also return empty string as empty JSX tags cause issues.

Parameters ​
NameType
func() => "" | Element
Returns ​

JSXFunction

Defined in ​

profectus/src/features/feature.ts:84


setDefault ​

â–¸ setDefault<T, K>(object, key, value): asserts object is Exclude<T, K> & Required<Pick<T, K>>

Utility function to set a property on an object if and only if it doesn't already exist

Type parameters ​
NameType
TT
Kextends string | number | symbol
Parameters ​
NameType
objectT
keyK
valueT[K]
Returns ​

asserts object is Exclude<T, K> & Required<Pick<T, K>>

Defined in ​

profectus/src/features/feature.ts:90

',134),d=[n];function i(s,l,c,h,f,u){return a(),t("div",null,d)}const y=e(o,[["render",i]]);export{b as __pageData,y as default}; diff --git a/assets/api_modules_features_feature.md.fece3203.js b/assets/api_modules_features_feature.md.fece3203.js new file mode 100644 index 00000000..fb94d218 --- /dev/null +++ b/assets/api_modules_features_feature.md.fece3203.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/feature","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/feature.md","lastUpdated":null}'),o={name:"api/modules/features/feature.md"},n=r('

Module: features/feature ​

Enumerations ​

Visibility ​

• Visibility: Object

Enum for what the visibility of a feature or component should be

Defined in ​

profectus/src/features/feature.ts:61

Type Aliases ​

CoercableComponent ​

Ƭ CoercableComponent: string | DefineComponent | JSXFunction

Any value that can be coerced into (or is) a vue component

Defined in ​

profectus/src/features/feature.ts:25


GenericComponent ​

Ƭ GenericComponent: DefineComponent<any, any, any>

A type that refers to any vue component

Defined in ​

profectus/src/features/feature.ts:35


JSXFunction ​

Ƭ JSXFunction: () => JSX.Element & { [DoNotCache]: true }

A type referring to a function that returns JSX and is marked that it shouldn't be wrapped in a ComputedRef

See

jsx

Defined in ​

profectus/src/features/feature.ts:21


OptionsFunc ​

Ƭ OptionsFunc<T, R, S>: () => T & Partial<R> & ThisType<T & S>

Type parameters ​

NameType
TT
RRecord<string, unknown>
SR

Type declaration ​

â–¸ (): T & Partial<R> & ThisType<T & S>

Utility function for a function that returns an object of a given type, with "this" bound to what the type will eventually be processed into. Intended for making lazily evaluated objects.

Returns ​

T & Partial<R> & ThisType<T & S>

Defined in ​

profectus/src/features/feature.ts:45


Replace ​

Ƭ Replace<T, S>: S & Omit<T, keyof S>

Utility type that is S, with any properties from T that aren't already present in S

Type parameters ​

Name
T
S

Defined in ​

profectus/src/features/feature.ts:38


StyleValue ​

Ƭ StyleValue: string | CSSProperties | (string | CSSProperties)[]

Any value that can be passed into an HTML element's style attribute. Note that Profectus uses its own StyleValue and CSSProperties that are extended, in order to have additional properties added to them, such as variable CSS variables.

Defined in ​

profectus/src/features/feature.ts:31

Variables ​

Component ​

• Const Component: typeof Component

A symbol to use as a key for a vue component a feature can be rendered with

See

VueFeature

Defined in ​

profectus/src/features/feature.ts:10


GatherProps ​

• Const GatherProps: typeof GatherProps

A symbol to use as a key for a prop gathering function that a feature can use to send to its component

See

VueFeature

Defined in ​

profectus/src/features/feature.ts:15

Functions ​

excludeFeatures ​

â–¸ excludeFeatures(obj, ...types): unknown[]

Traverses an object and returns all features that are not any of the given types. Features are any object with a "type" property that has a symbol value.

Parameters ​

NameTypeDescription
objRecord<string, unknown>The object to traverse
...typessymbol[]The feature types that will be skipped over

Returns ​

unknown[]

Defined in ​

profectus/src/features/feature.ts:130


findFeatures ​

â–¸ findFeatures(obj, ...types): unknown[]

Traverses an object and returns all features of the given type(s)

Parameters ​

NameTypeDescription
objRecord<string, unknown>The object to traverse
...typessymbol[]The feature types that will be searched for

Returns ​

unknown[]

Defined in ​

profectus/src/features/feature.ts:105


getUniqueID ​

â–¸ getUniqueID(prefix?): string

Gets a unique ID to give to each feature, used for any sort of system that needs to identify elements in the DOM rather than references to the feature itself. (For example, branches) IDs are guaranteed unique, but NOT persistent - they likely will change between updates.

Parameters ​

NameTypeDefault valueDescription
prefixstring"feature-"A string to prepend to the id to make it more readable in the inspector tools

Returns ​

string

Defined in ​

profectus/src/features/feature.ts:56


isHidden ​

â–¸ isHidden(visibility): boolean

Parameters ​

NameType
visibilityProcessedComputable<boolean | Visibility>

Returns ​

boolean

Defined in ​

profectus/src/features/feature.ts:75


isVisible ​

â–¸ isVisible(visibility): boolean

Parameters ​

NameType
visibilityProcessedComputable<boolean | Visibility>

Returns ​

boolean

Defined in ​

profectus/src/features/feature.ts:70


jsx ​

â–¸ jsx(func): JSXFunction

Takes a function and marks it as JSX so it won't get auto-wrapped into a ComputedRef. The function may also return empty string as empty JSX tags cause issues.

Parameters ​

NameType
func() => "" | Element

Returns ​

JSXFunction

Defined in ​

profectus/src/features/feature.ts:84


setDefault ​

â–¸ setDefault<T, K>(object, key, value): asserts object is Exclude<T, K> & Required<Pick<T, K>>

Utility function to set a property on an object if and only if it doesn't already exist

Type parameters ​

NameType
TT
Kextends string | number | symbol

Parameters ​

NameType
objectT
keyK
valueT[K]

Returns ​

asserts object is Exclude<T, K> & Required<Pick<T, K>>

Defined in ​

profectus/src/features/feature.ts:90

',139),d=[n];function i(s,l,c,h,f,u){return a(),t("div",null,d)}const g=e(o,[["render",i]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_features_feature.md.6c0b6f85.lean.js b/assets/api_modules_features_feature.md.fece3203.lean.js similarity index 58% rename from assets/api_modules_features_feature.md.6c0b6f85.lean.js rename to assets/api_modules_features_feature.md.fece3203.lean.js index 7d07e244..cb56a8ce 100644 --- a/assets/api_modules_features_feature.md.6c0b6f85.lean.js +++ b/assets/api_modules_features_feature.md.fece3203.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/feature","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/feature.md","lastUpdated":null}'),o={name:"api/modules/features/feature.md"},n=r("",134),d=[n];function i(s,l,c,h,f,u){return a(),t("div",null,d)}const y=e(o,[["render",i]]);export{b as __pageData,y as default}; +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/feature","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/feature.md","lastUpdated":null}'),o={name:"api/modules/features/feature.md"},n=r("",139),d=[n];function i(s,l,c,h,f,u){return a(),t("div",null,d)}const g=e(o,[["render",i]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_features_grid.md.44a0d8eb.js b/assets/api_modules_features_grid.md.44a0d8eb.js deleted file mode 100644 index b236efed..00000000 --- a/assets/api_modules_features_grid.md.44a0d8eb.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as d,N as o}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/grids/grid","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/grid.md","lastUpdated":null}'),a={name:"api/modules/features/grid.md"},l=o('

Module: features/grids/grid ​

Interfaces ​

BaseGrid ​

• BaseGrid: Object

The properties that are added onto a processed BoardOptions to create a Board.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
cellStatePersistent<Record<string | number, State>>The persistent state of this grid, which is a dictionary of cell states.
cellsRecord<string | number, GridCell>A dictionary of cells within this grid.
getID(id: string | number, state: State) => stringGet the auto-generated ID for identifying a specific cell of this grid that appears in the DOM. Will not persist between refreshes or updates.
getState(id: string | number) => StateGet the persistent state of the given cell.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
setState(id: string | number, state: State) => voidSet the persistent state of the given cell.
typetypeof GridTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/grids/grid.ts:254


GridCell ​

• GridCell: Object

Represents a cell within a grid. These properties will typically be accessed via a cell proxy that calls functions on the grid to get the properties for a specific cell.

See

createGridProxy

NameTypeDescription
canClickbooleanWhether this cell can be clicked.
classes?Record<string, boolean>Dictionary of CSS classes to apply to this feature.
displayCoercableComponentThe main text that appears in the display.
idstringA unique identifier for the grid cell.
onClick?(e?: MouseEvent | TouchEvent) => voidA function that is called when the cell is clicked.
onHold?VoidFunctionA function that is called when the cell is held down.
startStateStateThe initial persistent state of this cell.
stateStateThe persistent state of this cell.
style?StyleValueCSS to apply to this feature.
title?CoercableComponentA header to appear at the top of the display.
visibilityboolean | VisibilityWhether this cell should be visible.

Defined in ​

profectus/src/features/grids/grid.ts:196


GridOptions ​

• GridOptions: Object

An object that configures a Grid.

NameTypeDescription
colsComputable<number>The number of columns in the grid.
getCanClick?CellComputable<boolean>A computable to determine if a cell can be clicked.
getClasses?CellComputable<Record<string, boolean>>A computable to get the CSS classes for a cell.
getDisplayCellComputable<CoercableComponent>A computable to get the display component for a cell.
getStartStateComputable<State> | (id: string | number) => StateA computable to get the initial persistent state of a cell.
getStyle?CellComputable<StyleValue>A computable to get the CSS styles for a cell.
getTitle?CellComputable<CoercableComponent>A computable to get the title component for a cell.
getVisibility?CellComputable<boolean | Visibility>A computable to determine the visibility of a cell.
onClick?(id: string | number, state: State, e?: MouseEvent | TouchEvent) => voidA function that is called when a cell is clicked.
onHold?(id: string | number, state: State) => voidA function that is called when a cell is held down.
rowsComputable<number>The number of rows in the grid.
visibility?Computable<boolean | Visibility>Whether this grid should be visible.

Defined in ​

profectus/src/features/grids/grid.ts:224

Type Aliases ​

CellComputable ​

Ƭ CellComputable<T>: Computable<T> | (id: string | number, state: State) => T

A type representing a computable value for a cell in the grid.

Type parameters ​

Name
T

Defined in ​

profectus/src/features/grids/grid.ts:28


GenericGrid ​

Ƭ GenericGrid: Replace<Grid<GridOptions>, { getCanClick: ProcessedComputable<boolean> ; getVisibility: ProcessedComputable<Visibility | boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Grid object.

Defined in ​

profectus/src/features/grids/grid.ts:293


Grid ​

Ƭ Grid<T>: Replace<T & BaseGrid, { cols: GetComputableType<T["cols"]> ; getCanClick: GetComputableTypeWithDefault<T["getCanClick"], true> ; getClasses: GetComputableType<T["getClasses"]> ; getDisplay: GetComputableType<T["getDisplay"]> ; getStartState: GetComputableType<T["getStartState"]> ; getStyle: GetComputableType<T["getStyle"]> ; getTitle: GetComputableType<T["getTitle"]> ; getVisibility: GetComputableTypeWithDefault<T["getVisibility"], Visible> ; rows: GetComputableType<T["rows"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that is a grid of cells that all behave according to the same rules.

Type parameters ​

NameType
Textends GridOptions

Defined in ​

profectus/src/features/grids/grid.ts:276

Variables ​

GridType ​

• Const GridType: typeof GridType

A symbol used to identify Grid features.

Defined in ​

profectus/src/features/grids/grid.ts:25

Functions ​

createGrid ​

â–¸ createGrid<T>(optionsFunc): Grid<T>

Lazily creates a grid with the given options.

Type parameters ​
NameType
Textends GridOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseGrid, GenericGrid>Grid options.
Returns ​

Grid<T>

Defined in ​

profectus/src/features/grids/grid.ts:306

Components ​

GridCell Component ​

Props ​

NameType
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
onClick(e?: MouseEvent | TouchEvent) => void
onHoldVoidFunction
display*processedPropType<CoercableComponent>(Object, String, Function)
titleprocessedPropType<CoercableComponent>(Object, String, Function)
styleprocessedPropType<StyleValue>(String, Object, Array)
canClick*processedPropType<boolean>(Boolean)
id*string

Grid Component ​

Props ​

NameType
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
rows*processedPropType<number>(Number)
cols*processedPropType<number>(Number)
cells*processedPropType<Record<string, GridCell>>(Object)
',71),r=[l];function c(i,s,n,g,f,h){return d(),t("div",null,r)}const y=e(a,[["render",c]]);export{u as __pageData,y as default}; diff --git a/assets/api_modules_features_grid.md.44a0d8eb.lean.js b/assets/api_modules_features_grid.md.44a0d8eb.lean.js deleted file mode 100644 index 50478221..00000000 --- a/assets/api_modules_features_grid.md.44a0d8eb.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as d,N as o}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/grids/grid","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/grid.md","lastUpdated":null}'),a={name:"api/modules/features/grid.md"},l=o("",71),r=[l];function c(i,s,n,g,f,h){return d(),t("div",null,r)}const y=e(a,[["render",c]]);export{u as __pageData,y as default}; diff --git a/assets/api_modules_features_grid.md.9df2e2cb.js b/assets/api_modules_features_grid.md.9df2e2cb.js new file mode 100644 index 00000000..8ef370c7 --- /dev/null +++ b/assets/api_modules_features_grid.md.9df2e2cb.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Module: features/grids/grid","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/grid.md","lastUpdated":null}'),r={name:"api/modules/features/grid.md"},d=o('

Module: features/grids/grid ​

Interfaces ​

BaseGrid ​

• BaseGrid: Object

The properties that are added onto a processed BoardOptions to create a Board.

Defined in ​

profectus/src/features/grids/grid.ts:254


GridCell ​

• GridCell: Object

Represents a cell within a grid. These properties will typically be accessed via a cell proxy that calls functions on the grid to get the properties for a specific cell.

See

createGridProxy

Defined in ​

profectus/src/features/grids/grid.ts:196


GridOptions ​

• GridOptions: Object

An object that configures a Grid.

Defined in ​

profectus/src/features/grids/grid.ts:224

Type Aliases ​

CellComputable ​

Ƭ CellComputable<T>: Computable<T> | (id: string | number, state: State) => T

A type representing a computable value for a cell in the grid.

Type parameters ​

Name
T

Defined in ​

profectus/src/features/grids/grid.ts:28


GenericGrid ​

Ƭ GenericGrid: Replace<Grid<GridOptions>, { getCanClick: ProcessedComputable<boolean> ; getVisibility: ProcessedComputable<Visibility | boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Grid object.

Defined in ​

profectus/src/features/grids/grid.ts:293


Grid ​

Ƭ Grid<T>: Replace<T & BaseGrid, { cols: GetComputableType<T["cols"]> ; getCanClick: GetComputableTypeWithDefault<T["getCanClick"], true> ; getClasses: GetComputableType<T["getClasses"]> ; getDisplay: GetComputableType<T["getDisplay"]> ; getStartState: GetComputableType<T["getStartState"]> ; getStyle: GetComputableType<T["getStyle"]> ; getTitle: GetComputableType<T["getTitle"]> ; getVisibility: GetComputableTypeWithDefault<T["getVisibility"], Visible> ; rows: GetComputableType<T["rows"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that is a grid of cells that all behave according to the same rules.

Type parameters ​

NameType
Textends GridOptions

Defined in ​

profectus/src/features/grids/grid.ts:276

Variables ​

GridType ​

• Const GridType: typeof GridType

A symbol used to identify Grid features.

Defined in ​

profectus/src/features/grids/grid.ts:25

Functions ​

createGrid ​

â–¸ createGrid<T>(optionsFunc): Grid<T>

Lazily creates a grid with the given options.

Type parameters ​

NameType
Textends GridOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseGrid, GenericGrid>Grid options.

Returns ​

Grid<T>

Defined in ​

profectus/src/features/grids/grid.ts:306

Components ​

GridCell Component ​

Props ​

NameType
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
onClick(e?: MouseEvent | TouchEvent) => void
onHoldVoidFunction
display*processedPropType<CoercableComponent>(Object, String, Function)
titleprocessedPropType<CoercableComponent>(Object, String, Function)
styleprocessedPropType<StyleValue>(String, Object, Array)
canClick*processedPropType<boolean>(Boolean)
id*string

Grid Component ​

Props ​

NameType
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
rows*processedPropType<number>(Number)
cols*processedPropType<number>(Number)
cells*processedPropType<Record<string, GridCell>>(Object)
',68),i=[d];function l(c,s,n,p,h,f){return a(),t("div",null,i)}const b=e(r,[["render",l]]);export{g as __pageData,b as default}; diff --git a/assets/api_modules_features_grid.md.9df2e2cb.lean.js b/assets/api_modules_features_grid.md.9df2e2cb.lean.js new file mode 100644 index 00000000..2556f07a --- /dev/null +++ b/assets/api_modules_features_grid.md.9df2e2cb.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Module: features/grids/grid","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/grid.md","lastUpdated":null}'),r={name:"api/modules/features/grid.md"},d=o("",68),i=[d];function l(c,s,n,p,h,f){return a(),t("div",null,i)}const b=e(r,[["render",l]]);export{g as __pageData,b as default}; diff --git a/assets/api_modules_features_hotkey.md.1b3345c1.js b/assets/api_modules_features_hotkey.md.1b3345c1.js new file mode 100644 index 00000000..efc9e67a --- /dev/null +++ b/assets/api_modules_features_hotkey.md.1b3345c1.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/hotkey","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/hotkey.md","lastUpdated":null}'),r={name:"api/modules/features/hotkey.md"},n=o('

Module: features/hotkey ​

Interfaces ​

BaseHotkey ​

• BaseHotkey: Object

The properties that are added onto a processed HotkeyOptions to create an Hotkey.

Defined in ​

profectus/src/features/hotkey.tsx:40


HotkeyOptions ​

• HotkeyOptions: Object

An object that configures a Hotkey.

Defined in ​

profectus/src/features/hotkey.tsx:26

Type Aliases ​

GenericHotkey ​

Ƭ GenericHotkey: Replace<Hotkey<HotkeyOptions>, { enabled: ProcessedComputable<boolean> }>

A type that matches any valid Hotkey object.

Defined in ​

profectus/src/features/hotkey.tsx:55


Hotkey ​

Ƭ Hotkey<T>: Replace<T & BaseHotkey, { description: GetComputableType<T["description"]> ; enabled: GetComputableTypeWithDefault<T["enabled"], true> }>

An object that represents a hotkey shortcut that performs an action upon a key sequence being pressed.

Type parameters ​

NameType
Textends HotkeyOptions

Defined in ​

profectus/src/features/hotkey.tsx:46

Variables ​

HotkeyType ​

• Const HotkeyType: typeof HotkeyType

A symbol used to identify Hotkey features.

Defined in ​

profectus/src/features/hotkey.tsx:21


hotkeys ​

• Const hotkeys: Record<string, GenericHotkey | undefined>

A dictionary of all hotkeys.

Defined in ​

profectus/src/features/hotkey.tsx:19

Functions ​

createHotkey ​

â–¸ createHotkey<T>(optionsFunc): Hotkey<T>

Lazily creates a hotkey with the given options.

Type parameters ​

NameType
Textends HotkeyOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseHotkey, GenericHotkey>Hotkey options.

Returns ​

Hotkey<T>

Defined in ​

profectus/src/features/hotkey.tsx:68

',51),s=[n];function d(h,i,c,l,f,p){return a(),t("div",null,s)}const k=e(r,[["render",d]]);export{u as __pageData,k as default}; diff --git a/assets/api_modules_features_hotkey.md.9bdca378.lean.js b/assets/api_modules_features_hotkey.md.1b3345c1.lean.js similarity index 58% rename from assets/api_modules_features_hotkey.md.9bdca378.lean.js rename to assets/api_modules_features_hotkey.md.1b3345c1.lean.js index c5fde9a5..fb00831a 100644 --- a/assets/api_modules_features_hotkey.md.9bdca378.lean.js +++ b/assets/api_modules_features_hotkey.md.1b3345c1.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/hotkey","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/hotkey.md","lastUpdated":null}'),r={name:"api/modules/features/hotkey.md"},d=o("",53),n=[d];function s(l,i,h,c,y,f){return a(),t("div",null,n)}const k=e(r,[["render",s]]);export{u as __pageData,k as default}; +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/hotkey","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/hotkey.md","lastUpdated":null}'),r={name:"api/modules/features/hotkey.md"},n=o("",51),s=[n];function d(h,i,c,l,f,p){return a(),t("div",null,s)}const k=e(r,[["render",d]]);export{u as __pageData,k as default}; diff --git a/assets/api_modules_features_hotkey.md.9bdca378.js b/assets/api_modules_features_hotkey.md.9bdca378.js deleted file mode 100644 index 6e1f2598..00000000 --- a/assets/api_modules_features_hotkey.md.9bdca378.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/hotkey","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/hotkey.md","lastUpdated":null}'),r={name:"api/modules/features/hotkey.md"},d=o('

Module: features/hotkey ​

Interfaces ​

BaseHotkey ​

• BaseHotkey: Object

The properties that are added onto a processed HotkeyOptions to create an Hotkey.

NameTypeDescription
typetypeof HotkeyTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/hotkey.tsx:40


HotkeyOptions ​

• HotkeyOptions: Object

An object that configures a Hotkey.

NameTypeDescription
descriptionComputable<string>The description of this hotkey, to display in the settings.
enabled?Computable<boolean>Whether or not this hotkey is currently enabled.
keystringThe key tied to this hotkey
onPressVoidFunctionWhat to do upon pressing the key.

Defined in ​

profectus/src/features/hotkey.tsx:26

Type Aliases ​

GenericHotkey ​

Ƭ GenericHotkey: Replace<Hotkey<HotkeyOptions>, { enabled: ProcessedComputable<boolean> }>

A type that matches any valid Hotkey object.

Defined in ​

profectus/src/features/hotkey.tsx:55


Hotkey ​

Ƭ Hotkey<T>: Replace<T & BaseHotkey, { description: GetComputableType<T["description"]> ; enabled: GetComputableTypeWithDefault<T["enabled"], true> }>

An object that represents a hotkey shortcut that performs an action upon a key sequence being pressed.

Type parameters ​

NameType
Textends HotkeyOptions

Defined in ​

profectus/src/features/hotkey.tsx:46

Variables ​

HotkeyType ​

• Const HotkeyType: typeof HotkeyType

A symbol used to identify Hotkey features.

Defined in ​

profectus/src/features/hotkey.tsx:21


hotkeys ​

• Const hotkeys: Record<string, GenericHotkey | undefined>

A dictionary of all hotkeys.

Defined in ​

profectus/src/features/hotkey.tsx:19

Functions ​

createHotkey ​

â–¸ createHotkey<T>(optionsFunc): Hotkey<T>

Lazily creates a hotkey with the given options.

Type parameters ​
NameType
Textends HotkeyOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseHotkey, GenericHotkey>Hotkey options.
Returns ​

Hotkey<T>

Defined in ​

profectus/src/features/hotkey.tsx:68

',53),n=[d];function s(l,i,h,c,y,f){return a(),t("div",null,n)}const k=e(r,[["render",s]]);export{u as __pageData,k as default}; diff --git a/assets/api_modules_features_infobox.md.8a44c689.js b/assets/api_modules_features_infobox.md.8a44c689.js deleted file mode 100644 index 24dea38e..00000000 --- a/assets/api_modules_features_infobox.md.8a44c689.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/infoboxes/infobox","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/infobox.md","lastUpdated":null}'),l={name:"api/modules/features/infobox.md"},d=a('

Module: features/infoboxes/infobox ​

Interfaces ​

BaseInfobox ​

• BaseInfobox: Object

The properties that are added onto a processed InfoboxOptions to create an Infobox.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
collapsedPersistent<boolean>Whether or not this infobox is collapsed.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
typetypeof InfoboxTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/infoboxes/infobox.ts:50


InfoboxOptions ​

• InfoboxOptions: Object

An object that configures an Infobox.

NameTypeDescription
bodyStyle?Computable<StyleValue>CSS to apply to the body of the infobox.
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
color?Computable<string>The background color of the Infobox.
displayComputable<CoercableComponent>The main text that appears in the display.
style?Computable<StyleValue>CSS to apply to this feature.
titleComputable<CoercableComponent>A header to appear at the top of the display.
titleStyle?Computable<StyleValue>CSS to apply to the title of the infobox.
visibility?Computable<boolean | Visibility>Whether this clickable should be visible.

Defined in ​

profectus/src/features/infoboxes/infobox.ts:28

Type Aliases ​

GenericInfobox ​

Ƭ GenericInfobox: Replace<Infobox<InfoboxOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Infobox object.

Defined in ​

profectus/src/features/infoboxes/infobox.ts:79


Infobox ​

Ƭ Infobox<T>: Replace<T & BaseInfobox, { bodyStyle: GetComputableType<T["bodyStyle"]> ; classes: GetComputableType<T["classes"]> ; color: GetComputableType<T["color"]> ; display: GetComputableType<T["display"]> ; style: GetComputableType<T["style"]> ; title: GetComputableType<T["title"]> ; titleStyle: GetComputableType<T["titleStyle"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that displays information in a collapsible way.

Type parameters ​

NameType
Textends InfoboxOptions

Defined in ​

profectus/src/features/infoboxes/infobox.ts:64

Variables ​

InfoboxType ​

• Const InfoboxType: typeof InfoboxType

A symbol used to identify Infobox features.

Defined in ​

profectus/src/features/infoboxes/infobox.ts:23

Functions ​

createInfobox ​

â–¸ createInfobox<T>(optionsFunc): Infobox<T>

Lazily creates an infobox with the given options.

Type parameters ​
NameType
Textends InfoboxOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseInfobox, GenericInfobox>Infobox options.
Returns ​

Infobox<T>

Defined in ​

profectus/src/features/infoboxes/infobox.ts:90

Components ​

Infobox Component ​

Props ​

NameType
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
display*processedPropType<CoercableComponent>(Object, String, Function)
title*processedPropType<CoercableComponent>(Object, String, Function)
colorprocessedPropType<string>(String)
collapsed*Ref<boolean>
styleprocessedPropType<StyleValue>(Object, String, Array)
titleStyleprocessedPropType<StyleValue>(Object, String, Array)
bodyStyleprocessedPropType<StyleValue>(Object, String, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
id*string
',51),r=[d];function n(i,c,s,f,b,p){return o(),t("div",null,r)}const x=e(l,[["render",n]]);export{u as __pageData,x as default}; diff --git a/assets/api_modules_features_infobox.md.e1f3a0d5.js b/assets/api_modules_features_infobox.md.e1f3a0d5.js new file mode 100644 index 00000000..3eb0f88a --- /dev/null +++ b/assets/api_modules_features_infobox.md.e1f3a0d5.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/infoboxes/infobox","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/infobox.md","lastUpdated":null}'),n={name:"api/modules/features/infobox.md"},r=a('

Module: features/infoboxes/infobox ​

Interfaces ​

BaseInfobox ​

• BaseInfobox: Object

The properties that are added onto a processed InfoboxOptions to create an Infobox.

Defined in ​

profectus/src/features/infoboxes/infobox.ts:50


InfoboxOptions ​

• InfoboxOptions: Object

An object that configures an Infobox.

Defined in ​

profectus/src/features/infoboxes/infobox.ts:28

Type Aliases ​

GenericInfobox ​

Ƭ GenericInfobox: Replace<Infobox<InfoboxOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Infobox object.

Defined in ​

profectus/src/features/infoboxes/infobox.ts:79


Infobox ​

Ƭ Infobox<T>: Replace<T & BaseInfobox, { bodyStyle: GetComputableType<T["bodyStyle"]> ; classes: GetComputableType<T["classes"]> ; color: GetComputableType<T["color"]> ; display: GetComputableType<T["display"]> ; style: GetComputableType<T["style"]> ; title: GetComputableType<T["title"]> ; titleStyle: GetComputableType<T["titleStyle"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that displays information in a collapsible way.

Type parameters ​

NameType
Textends InfoboxOptions

Defined in ​

profectus/src/features/infoboxes/infobox.ts:64

Variables ​

InfoboxType ​

• Const InfoboxType: typeof InfoboxType

A symbol used to identify Infobox features.

Defined in ​

profectus/src/features/infoboxes/infobox.ts:23

Functions ​

createInfobox ​

â–¸ createInfobox<T>(optionsFunc): Infobox<T>

Lazily creates an infobox with the given options.

Type parameters ​

NameType
Textends InfoboxOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseInfobox, GenericInfobox>Infobox options.

Returns ​

Infobox<T>

Defined in ​

profectus/src/features/infoboxes/infobox.ts:90

Components ​

Infobox Component ​

Props ​

NameType
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
display*processedPropType<CoercableComponent>(Object, String, Function)
title*processedPropType<CoercableComponent>(Object, String, Function)
colorprocessedPropType<string>(String)
collapsed*Ref<boolean>
styleprocessedPropType<StyleValue>(Object, String, Array)
titleStyleprocessedPropType<StyleValue>(Object, String, Array)
bodyStyleprocessedPropType<StyleValue>(Object, String, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
id*string
',49),i=[r];function d(l,c,s,f,b,p){return o(),t("div",null,i)}const x=e(n,[["render",d]]);export{u as __pageData,x as default}; diff --git a/assets/api_modules_features_infobox.md.8a44c689.lean.js b/assets/api_modules_features_infobox.md.e1f3a0d5.lean.js similarity index 57% rename from assets/api_modules_features_infobox.md.8a44c689.lean.js rename to assets/api_modules_features_infobox.md.e1f3a0d5.lean.js index 376c5e27..5c7cb95f 100644 --- a/assets/api_modules_features_infobox.md.8a44c689.lean.js +++ b/assets/api_modules_features_infobox.md.e1f3a0d5.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/infoboxes/infobox","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/infobox.md","lastUpdated":null}'),l={name:"api/modules/features/infobox.md"},d=a("",51),r=[d];function n(i,c,s,f,b,p){return o(),t("div",null,r)}const x=e(l,[["render",n]]);export{u as __pageData,x as default}; +import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/infoboxes/infobox","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/infobox.md","lastUpdated":null}'),n={name:"api/modules/features/infobox.md"},r=a("",49),i=[r];function d(l,c,s,f,b,p){return o(),t("div",null,i)}const x=e(n,[["render",d]]);export{u as __pageData,x as default}; diff --git a/assets/api_modules_features_links.md.232f4909.js b/assets/api_modules_features_links.md.232f4909.js deleted file mode 100644 index cb139ec0..00000000 --- a/assets/api_modules_features_links.md.232f4909.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as e,o as d,N as l}from"./chunks/framework.0799945b.js";const h=JSON.parse('{"title":"Module: features/links/links","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/links.md","lastUpdated":null}'),o={name:"api/modules/features/links.md"},a=l('

Module: features/links/links ​

Interfaces ​

• BaseLinks: Object

The properties that are added onto a processed LinksOptions to create an Links.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
typetypeof LinksTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/links/links.ts:30


• Link: Object

Represents a link between two nodes. It will be displayed as an SVG line, and can take any appropriate properties for an SVG line element.

NameTypeDescription
accent-height?Numberish-
accumulate?"none" | "sum"-
additive?"sum" | "replace"-
alignment-baseline?"alphabetic" | "hanging" | "ideographic" | "mathematical" | "auto" | "baseline" | "before-edge" | "text-before-edge" | "middle" | "central" | "after-edge" | "text-after-edge" | "inherit"-
allowReorder?"no" | "yes"-
alphabetic?Numberish-
amplitude?Numberish-
arabic-form?"initial" | "medial" | "terminal" | "isolated"-
aria-activedescendant?stringIdentifies the currently active element when DOM focus is on a composite widget, textbox, group, or application.
aria-atomic?BooleanishIndicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute.
aria-autocomplete?"none" | "inline" | "list" | "both"Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be presented if they are made.
aria-busy?BooleanishIndicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user.
aria-checked?Booleanish | "mixed"Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. See - aria-pressed - aria-selected.
aria-colcount?NumberishDefines the total number of columns in a table, grid, or treegrid. See aria-colindex.
aria-colindex?NumberishDefines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid. See - aria-colcount - aria-colspan.
aria-colspan?NumberishDefines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid. See - aria-colindex - aria-rowspan.
aria-controls?stringIdentifies the element (or elements) whose contents or presence are controlled by the current element. See aria-owns.
aria-current?"time" | Booleanish | "page" | "step" | "location" | "date"Indicates the element that represents the current item within a container or set of related elements.
aria-describedby?stringIdentifies the element (or elements) that describes the object. See aria-labelledby
aria-details?stringIdentifies the element that provides a detailed, extended description for the object. See aria-describedby.
aria-disabled?BooleanishIndicates that the element is perceivable but disabled, so it is not editable or otherwise operable. See - aria-hidden - aria-readonly.
aria-dropeffect?"none" | "copy" | "execute" | "link" | "move" | "popup"Indicates what functions can be performed when a dragged object is released on the drop target. Deprecated in ARIA 1.1
aria-errormessage?stringIdentifies the element that provides an error message for the object. See - aria-invalid - aria-describedby.
aria-expanded?BooleanishIndicates whether the element, or another grouping element it controls, is currently expanded or collapsed.
aria-flowto?stringIdentifies the next element (or elements) in an alternate reading order of content which, at the user's discretion, allows assistive technology to override the general default of reading in document source order.
aria-grabbed?BooleanishIndicates an element's "grabbed" state in a drag-and-drop operation. Deprecated in ARIA 1.1
aria-haspopup?"tree" | Booleanish | "menu" | "listbox" | "grid" | "dialog"Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element.
aria-hidden?BooleanishIndicates whether the element is exposed to an accessibility API. See aria-disabled.
aria-invalid?Booleanish | "grammar" | "spelling"Indicates the entered value does not conform to the format expected by the application. See aria-errormessage.
aria-keyshortcuts?stringIndicates keyboard shortcuts that an author has implemented to activate or give focus to an element.
aria-label?stringDefines a string value that labels the current element. See aria-labelledby.
aria-labelledby?stringIdentifies the element (or elements) that labels the current element. See aria-describedby.
aria-level?NumberishDefines the hierarchical level of an element within a structure.
aria-live?"off" | "assertive" | "polite"Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region.
aria-modal?BooleanishIndicates whether an element is modal when displayed.
aria-multiline?BooleanishIndicates whether a text box accepts multiple lines of input or only a single line.
aria-multiselectable?BooleanishIndicates that the user may select more than one item from the current selectable descendants.
aria-orientation?"horizontal" | "vertical"Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous.
aria-owns?stringIdentifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship between DOM elements where the DOM hierarchy cannot be used to represent the relationship. See aria-controls.
aria-placeholder?stringDefines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. A hint could be a sample value or a brief description of the expected format.
aria-posinset?NumberishDefines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. See aria-setsize.
aria-pressed?Booleanish | "mixed"Indicates the current "pressed" state of toggle buttons. See - aria-checked - aria-selected.
aria-readonly?BooleanishIndicates that the element is not editable, but is otherwise operable. See aria-disabled.
aria-relevant?"additions" | "additions text" | "all" | "removals" | "text"Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. See aria-atomic.
aria-required?BooleanishIndicates that user input is required on the element before a form may be submitted.
aria-roledescription?stringDefines a human-readable, author-localized description for the role of an element.
aria-rowcount?NumberishDefines the total number of rows in a table, grid, or treegrid. See aria-rowindex.
aria-rowindex?NumberishDefines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid. See - aria-rowcount - aria-rowspan.
aria-rowspan?NumberishDefines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid. See - aria-rowindex - aria-colspan.
aria-selected?BooleanishIndicates the current "selected" state of various widgets. See - aria-checked - aria-pressed.
aria-setsize?NumberishDefines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. See aria-posinset.
aria-sort?"none" | "ascending" | "descending" | "other"Indicates if items in a table or grid are sorted in ascending or descending order.
aria-valuemax?NumberishDefines the maximum allowed value for a range widget.
aria-valuemin?NumberishDefines the minimum allowed value for a range widget.
aria-valuenow?NumberishDefines the current value for a range widget. See aria-valuetext.
aria-valuetext?stringDefines the human readable text alternative of aria-valuenow for a range widget.
ascent?Numberish-
attributeName?string-
attributeType?string-
autoReverse?Numberish-
azimuth?Numberish-
baseFrequency?Numberish-
baseProfile?Numberish-
baseline-shift?Numberish-
bbox?Numberish-
begin?Numberish-
bias?Numberish-
by?Numberish-
calcMode?Numberish-
cap-height?Numberish-
class?anySVG Styling Attributes See https://www.w3.org/TR/SVG/styling.html#ElementSpecificStyling
clip?Numberish-
clip-path?string-
clip-rule?Numberish-
clipPathUnits?Numberish-
color?string-
color-interpolation?Numberish-
color-interpolation-filters?"auto" | "inherit" | "sRGB" | "linearRGB"-
color-profile?Numberish-
color-rendering?Numberish-
contentScriptType?Numberish-
contentStyleType?Numberish-
cursor?Numberish-
cx?Numberish-
cy?Numberish-
d?string-
decelerate?Numberish-
descent?Numberish-
diffuseConstant?Numberish-
direction?Numberish-
display?Numberish-
divisor?Numberish-
dominant-baseline?Numberish-
dur?Numberish-
dx?Numberish-
dy?Numberish-
edgeMode?Numberish-
elevation?Numberish-
enable-background?Numberish-
end?Numberish-
endNode{ id: string }-
endNode.idstring-
exponent?Numberish-
externalResourcesRequired?Numberish-
fill?string-
fill-opacity?Numberish-
fill-rule?"inherit" | "nonzero" | "evenodd"-
filter?string-
filterRes?Numberish-
filterUnits?Numberish-
flood-color?Numberish-
flood-opacity?Numberish-
focusable?Numberish-
font-family?string-
font-size?Numberish-
font-size-adjust?Numberish-
font-stretch?Numberish-
font-style?Numberish-
font-variant?Numberish-
font-weight?Numberish-
format?Numberish-
from?Numberish-
fx?Numberish-
fy?Numberish-
g1?Numberish-
g2?Numberish-
glyph-name?Numberish-
glyph-orientation-horizontal?Numberish-
glyph-orientation-vertical?Numberish-
glyphRef?Numberish-
gradientTransform?string-
gradientUnits?string-
hanging?Numberish-
height?Numberish-
horiz-adv-x?Numberish-
horiz-origin-x?Numberish-
href?string-
id?string-
ideographic?Numberish-
image-rendering?Numberish-
in?string-
in2?Numberish-
innerHTML?string-
intercept?Numberish-
k?Numberish-
k1?Numberish-
k2?Numberish-
k3?Numberish-
k4?Numberish-
kernelMatrix?Numberish-
kernelUnitLength?Numberish-
kerning?Numberish-
keyPoints?Numberish-
keySplines?Numberish-
keyTimes?Numberish-
lang?string-
lengthAdjust?Numberish-
letter-spacing?Numberish-
lighting-color?Numberish-
limitingConeAngle?Numberish-
local?Numberish-
marker-end?string-
marker-mid?string-
marker-start?string-
markerHeight?Numberish-
markerUnits?Numberish-
markerWidth?Numberish-
mask?string-
maskContentUnits?Numberish-
maskUnits?Numberish-
mathematical?Numberish-
max?Numberish-
media?string-
method?string-
min?Numberish-
mode?Numberish-
name?string-
numOctaves?Numberish-
offset?Numberish-
offsetEnd?Position-
offsetStart?Position-
onAbort?(payload: Event) => void-
onAnimationend?(payload: AnimationEvent) => void-
onAnimationiteration?(payload: AnimationEvent) => void-
onAnimationstart?(payload: AnimationEvent) => void-
onAuxclick?(payload: MouseEvent) => void-
onBeforeinput?(payload: Event) => void-
onBlur?(payload: FocusEvent) => void-
onCanplay?(payload: Event) => void-
onCanplaythrough?(payload: Event) => void-
onChange?(payload: Event) => void-
onClick?(payload: MouseEvent) => void-
onCompositionend?(payload: CompositionEvent) => void-
onCompositionstart?(payload: CompositionEvent) => void-
onCompositionupdate?(payload: CompositionEvent) => void-
onContextmenu?(payload: MouseEvent) => void-
onCopy?(payload: ClipboardEvent) => void-
onCut?(payload: ClipboardEvent) => void-
onDblclick?(payload: MouseEvent) => void-
onDrag?(payload: DragEvent) => void-
onDragend?(payload: DragEvent) => void-
onDragenter?(payload: DragEvent) => void-
onDragexit?(payload: DragEvent) => void-
onDragleave?(payload: DragEvent) => void-
onDragover?(payload: DragEvent) => void-
onDragstart?(payload: DragEvent) => void-
onDrop?(payload: DragEvent) => void-
onDurationchange?(payload: Event) => void-
onEmptied?(payload: Event) => void-
onEncrypted?(payload: Event) => void-
onEnded?(payload: Event) => void-
onError?(payload: Event) => void-
onFocus?(payload: FocusEvent) => void-
onFocusin?(payload: FocusEvent) => void-
onFocusout?(payload: FocusEvent) => void-
onInput?(payload: Event) => void-
onInvalid?(payload: Event) => void-
onKeydown?(payload: KeyboardEvent) => void-
onKeypress?(payload: KeyboardEvent) => void-
onKeyup?(payload: KeyboardEvent) => void-
onLoad?(payload: Event) => void-
onLoadeddata?(payload: Event) => void-
onLoadedmetadata?(payload: Event) => void-
onLoadstart?(payload: Event) => void-
onMousedown?(payload: MouseEvent) => void-
onMouseenter?(payload: MouseEvent) => void-
onMouseleave?(payload: MouseEvent) => void-
onMousemove?(payload: MouseEvent) => void-
onMouseout?(payload: MouseEvent) => void-
onMouseover?(payload: MouseEvent) => void-
onMouseup?(payload: MouseEvent) => void-
onPaste?(payload: ClipboardEvent) => void-
onPause?(payload: Event) => void-
onPlay?(payload: Event) => void-
onPlaying?(payload: Event) => void-
onPointercancel?(payload: PointerEvent) => void-
onPointerdown?(payload: PointerEvent) => void-
onPointerenter?(payload: PointerEvent) => void-
onPointerleave?(payload: PointerEvent) => void-
onPointermove?(payload: PointerEvent) => void-
onPointerout?(payload: PointerEvent) => void-
onPointerover?(payload: PointerEvent) => void-
onPointerup?(payload: PointerEvent) => void-
onProgress?(payload: Event) => void-
onRatechange?(payload: Event) => void-
onReset?(payload: Event) => void-
onScroll?(payload: UIEvent) => void-
onSeeked?(payload: Event) => void-
onSeeking?(payload: Event) => void-
onSelect?(payload: Event) => void-
onStalled?(payload: Event) => void-
onSubmit?(payload: Event) => void-
onSuspend?(payload: Event) => void-
onTimeupdate?(payload: Event) => void-
onTouchcancel?(payload: TouchEvent) => void-
onTouchend?(payload: TouchEvent) => void-
onTouchmove?(payload: TouchEvent) => void-
onTouchstart?(payload: TouchEvent) => void-
onTransitionend?(payload: TransitionEvent) => void-
onTransitionstart?(payload: TransitionEvent) => void-
onVolumechange?(payload: Event) => void-
onWaiting?(payload: Event) => void-
onWheel?(payload: WheelEvent) => void-
opacity?Numberish-
operator?Numberish-
order?Numberish-
orient?Numberish-
orientation?Numberish-
origin?Numberish-
overflow?Numberish-
overline-position?Numberish-
overline-thickness?Numberish-
paint-order?Numberish-
panose-1?Numberish-
pathLength?Numberish-
patternContentUnits?string-
patternTransform?Numberish-
patternUnits?string-
pointer-events?Numberish-
points?string-
pointsAtX?Numberish-
pointsAtY?Numberish-
pointsAtZ?Numberish-
preserveAlpha?Numberish-
preserveAspectRatio?string-
primitiveUnits?Numberish-
r?Numberish-
radius?Numberish-
refX?Numberish-
refY?Numberish-
renderingIntent?Numberish-
repeatCount?Numberish-
repeatDur?Numberish-
requiredExtensions?Numberish-
requiredFeatures?Numberish-
restart?Numberish-
result?string-
role?string-
rotate?Numberish-
rx?Numberish-
ry?Numberish-
scale?Numberish-
seed?Numberish-
shape-rendering?Numberish-
slope?Numberish-
spacing?Numberish-
specularConstant?Numberish-
specularExponent?Numberish-
speed?Numberish-
spreadMethod?string-
startNode{ id: string }-
startNode.idstring-
startOffset?Numberish-
stdDeviation?Numberish-
stemh?Numberish-
stemv?Numberish-
stitchTiles?Numberish-
stop-color?string-
stop-opacity?Numberish-
strikethrough-position?Numberish-
strikethrough-thickness?Numberish-
string?Numberish-
stroke?string-
stroke-dasharray?Numberish-
stroke-dashoffset?Numberish-
stroke-linecap?"inherit" | "butt" | "round" | "square"-
stroke-linejoin?"inherit" | "round" | "miter" | "bevel"-
stroke-miterlimit?Numberish-
stroke-opacity?Numberish-
stroke-width?Numberish-
style?string | CSSProperties-
surfaceScale?Numberish-
systemLanguage?Numberish-
tabindex?Numberish-
tableValues?Numberish-
target?string-
targetX?Numberish-
targetY?Numberish-
text-anchor?string-
text-decoration?Numberish-
text-rendering?Numberish-
textLength?Numberish-
to?Numberish-
transform?string-
type?string-
u1?Numberish-
u2?Numberish-
underline-position?Numberish-
underline-thickness?Numberish-
unicode?Numberish-
unicode-bidi?Numberish-
unicode-range?Numberish-
unitsPer-em?Numberish-
v-alphabetic?Numberish-
v-hanging?Numberish-
v-ideographic?Numberish-
v-mathematical?Numberish-
values?string-
vector-effect?Numberish-
version?string-
vert-adv-y?Numberish-
vert-origin-x?Numberish-
vert-origin-y?Numberish-
viewBox?string-
viewTarget?Numberish-
visibility?Numberish-
width?Numberish-
widths?Numberish-
word-spacing?Numberish-
writing-mode?Numberish-
x?Numberish-
x-height?Numberish-
x1?Numberish-
x2?Numberish-
xChannelSelector?string-
xlinkActuate?string-
xlinkArcrole?string-
xlinkHref?string-
xlinkRole?string-
xlinkShow?string-
xlinkTitle?string-
xlinkType?string-
xmlns?string-
y?Numberish-
y1?Numberish-
y2?Numberish-
yChannelSelector?string-
z?Numberish-
zoomAndPan?string-

Defined in ​

profectus/src/features/links/links.ts:14


LinksOptions ​

• LinksOptions: Object

An object that configures a Links.

NameTypeDescription
linksComputable<Link[]>The list of links to display.

Defined in ​

profectus/src/features/links/links.ts:22

Type Aliases ​

Ƭ GenericLinks: Replace<Links<LinksOptions>, { links: ProcessedComputable<Link[]> }>

A type that matches any valid Links object.

Defined in ​

profectus/src/features/links/links.ts:48


Ƭ Links<T>: Replace<T & BaseLinks, { links: GetComputableType<T["links"]> }>

An object that represents a list of links between nodes, which are the elements in the DOM for any renderable feature.

Type parameters ​

NameType
Textends LinksOptions

Defined in ​

profectus/src/features/links/links.ts:40

Variables ​

LinksType ​

• Const LinksType: typeof LinksType

A symbol used to identify Links features.

Defined in ​

profectus/src/features/links/links.ts:11

Functions ​

â–¸ createLinks<T>(optionsFunc): Links<T>

Lazily creates links with the given options.

Type parameters ​
NameType
Textends LinksOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseLinks, GenericLinks>Links options.
Returns ​

Links<T>

Defined in ​

profectus/src/features/links/links.ts:59

Components ​

Props ​

NameType
link*Link
startNode*FeatureNode
endNode*FeatureNode
boundingRect*DOMRect | undefined

Props ​

NameType
linksLink[]
',61),r=[a];function n(i,c,s,g,f,y){return d(),e("div",null,r)}const u=t(o,[["render",n]]);export{h as __pageData,u as default}; diff --git a/assets/api_modules_features_links.md.232f4909.lean.js b/assets/api_modules_features_links.md.232f4909.lean.js deleted file mode 100644 index 68abaec0..00000000 --- a/assets/api_modules_features_links.md.232f4909.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as e,o as d,N as l}from"./chunks/framework.0799945b.js";const h=JSON.parse('{"title":"Module: features/links/links","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/links.md","lastUpdated":null}'),o={name:"api/modules/features/links.md"},a=l("",61),r=[a];function n(i,c,s,g,f,y){return d(),e("div",null,r)}const u=t(o,[["render",n]]);export{h as __pageData,u as default}; diff --git a/assets/api_modules_features_links.md.c0f648c4.js b/assets/api_modules_features_links.md.c0f648c4.js new file mode 100644 index 00000000..eceafeb9 --- /dev/null +++ b/assets/api_modules_features_links.md.c0f648c4.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as n}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/links/links","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/links.md","lastUpdated":null}'),s={name:"api/modules/features/links.md"},i=n('

Module: features/links/links ​

Interfaces ​

• BaseLinks: Object

The properties that are added onto a processed LinksOptions to create an Links.

Defined in ​

profectus/src/features/links/links.ts:30


• Link: Object

Represents a link between two nodes. It will be displayed as an SVG line, and can take any appropriate properties for an SVG line element.

Defined in ​

profectus/src/features/links/links.ts:14


LinksOptions ​

• LinksOptions: Object

An object that configures a Links.

Defined in ​

profectus/src/features/links/links.ts:22

Type Aliases ​

Ƭ GenericLinks: Replace<Links<LinksOptions>, { links: ProcessedComputable<Link[]> }>

A type that matches any valid Links object.

Defined in ​

profectus/src/features/links/links.ts:48


Ƭ Links<T>: Replace<T & BaseLinks, { links: GetComputableType<T["links"]> }>

An object that represents a list of links between nodes, which are the elements in the DOM for any renderable feature.

Type parameters ​

NameType
Textends LinksOptions

Defined in ​

profectus/src/features/links/links.ts:40

Variables ​

LinksType ​

• Const LinksType: typeof LinksType

A symbol used to identify Links features.

Defined in ​

profectus/src/features/links/links.ts:11

Functions ​

â–¸ createLinks<T>(optionsFunc): Links<T>

Lazily creates links with the given options.

Type parameters ​

NameType
Textends LinksOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseLinks, GenericLinks>Links options.

Returns ​

Links<T>

Defined in ​

profectus/src/features/links/links.ts:59

Components ​

Props ​

NameType
link*Link
startNode*FeatureNode
endNode*FeatureNode
boundingRect*DOMRect | undefined

Props ​

NameType
linksLink[]
',58),r=[i];function o(l,d,c,h,f,p){return a(),t("div",null,r)}const b=e(s,[["render",o]]);export{u as __pageData,b as default}; diff --git a/assets/api_modules_features_links.md.c0f648c4.lean.js b/assets/api_modules_features_links.md.c0f648c4.lean.js new file mode 100644 index 00000000..742120c6 --- /dev/null +++ b/assets/api_modules_features_links.md.c0f648c4.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as n}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/links/links","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/links.md","lastUpdated":null}'),s={name:"api/modules/features/links.md"},i=n("",58),r=[i];function o(l,d,c,h,f,p){return a(),t("div",null,r)}const b=e(s,[["render",o]]);export{u as __pageData,b as default}; diff --git a/assets/api_modules_features_particles.md.5c9477d1.js b/assets/api_modules_features_particles.md.5c9477d1.js new file mode 100644 index 00000000..ebb11d6e --- /dev/null +++ b/assets/api_modules_features_particles.md.5c9477d1.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/particles/particles","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/particles.md","lastUpdated":null}'),s={name:"api/modules/features/particles.md"},i=r('

Module: features/particles/particles ​

Interfaces ​

BaseParticles ​

• BaseParticles: Object

The properties that are added onto a processed ParticlesOptions to create an Particles.

Defined in ​

profectus/src/features/particles/particles.tsx:31


ParticlesOptions ​

• ParticlesOptions: Object

An object that configures Particles.

Defined in ​

profectus/src/features/particles/particles.tsx:17

Type Aliases ​

GenericParticles ​

Ƭ GenericParticles: Particles<ParticlesOptions>

A type that matches any valid Particles object.

Defined in ​

profectus/src/features/particles/particles.tsx:63


Particles ​

Ƭ Particles<T>: Replace<T & BaseParticles, { classes: GetComputableType<T["classes"]> ; style: GetComputableType<T["style"]> }>

An object that represents a feature that display particle effects on the screen. The config should typically be gotten by designing the effect using the online particle effect editor and passing it into the upgradeConfig from @pixi/particle-emitter.

Type parameters ​

NameType
Textends ParticlesOptions

Defined in ​

profectus/src/features/particles/particles.tsx:54

Variables ​

ParticlesType ​

• Const ParticlesType: typeof ParticlesType

A symbol used to identify Particles features.

Defined in ​

profectus/src/features/particles/particles.tsx:12

Functions ​

createParticles ​

â–¸ createParticles<T>(optionsFunc?): Particles<T>

Lazily creates particles with the given options.

Type parameters ​

NameType
Textends ParticlesOptions

Parameters ​

NameTypeDescription
optionsFunc?OptionsFunc<T, BaseParticles, GenericParticles>Particles options.

Returns ​

Particles<T>

Defined in ​

profectus/src/features/particles/particles.tsx:69

Components ​

Particles Component ​

Props ​

NameType
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
onInit*(app: Application) => void
id*string
onContainerResized(rect: DOMRect) => void
onHotReloadVoidFunction
',49),l=[i];function o(c,n,d,p,h,f){return a(),t("div",null,l)}const g=e(s,[["render",o]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_features_particles.md.5c9477d1.lean.js b/assets/api_modules_features_particles.md.5c9477d1.lean.js new file mode 100644 index 00000000..510008e6 --- /dev/null +++ b/assets/api_modules_features_particles.md.5c9477d1.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/particles/particles","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/particles.md","lastUpdated":null}'),s={name:"api/modules/features/particles.md"},i=r("",49),l=[i];function o(c,n,d,p,h,f){return a(),t("div",null,l)}const g=e(s,[["render",o]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_features_particles.md.acdac247.js b/assets/api_modules_features_particles.md.acdac247.js deleted file mode 100644 index e712cbb3..00000000 --- a/assets/api_modules_features_particles.md.acdac247.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Module: features/particles/particles","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/particles.md","lastUpdated":null}'),l={name:"api/modules/features/particles.md"},o=r('

Module: features/particles/particles ​

Interfaces ​

BaseParticles ​

• BaseParticles: Object

The properties that are added onto a processed ParticlesOptions to create an Particles.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
addEmitter(config: EmitterConfigV3) => Promise<Emitter>A function to asynchronously add an emitter to the canvas. The returned emitter can then be positioned as appropriate and started. See Particles
appRef<null | Application>The Pixi.JS Application powering this particles canvas.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
typetypeof ParticlesTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/particles/particles.tsx:31


ParticlesOptions ​

• ParticlesOptions: Object

An object that configures Particles.

NameTypeDescription
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
onContainerResized?(boundingRect: DOMRect) => voidA function that is called when the particles canvas is resized.
onHotReload?VoidFunctionA function that is called whenever the particles element is reloaded during development. For restarting particle effects.
style?Computable<StyleValue>CSS to apply to this feature.

Defined in ​

profectus/src/features/particles/particles.tsx:17

Type Aliases ​

GenericParticles ​

Ƭ GenericParticles: Particles<ParticlesOptions>

A type that matches any valid Particles object.

Defined in ​

profectus/src/features/particles/particles.tsx:63


Particles ​

Ƭ Particles<T>: Replace<T & BaseParticles, { classes: GetComputableType<T["classes"]> ; style: GetComputableType<T["style"]> }>

An object that represents a feature that display particle effects on the screen. The config should typically be gotten by designing the effect using the online particle effect editor and passing it into the upgradeConfig from @pixi/particle-emitter.

Type parameters ​

NameType
Textends ParticlesOptions

Defined in ​

profectus/src/features/particles/particles.tsx:54

Variables ​

ParticlesType ​

• Const ParticlesType: typeof ParticlesType

A symbol used to identify Particles features.

Defined in ​

profectus/src/features/particles/particles.tsx:12

Functions ​

createParticles ​

â–¸ createParticles<T>(optionsFunc?): Particles<T>

Lazily creates particles with the given options.

Type parameters ​
NameType
Textends ParticlesOptions
Parameters ​
NameTypeDescription
optionsFunc?OptionsFunc<T, BaseParticles, GenericParticles>Particles options.
Returns ​

Particles<T>

Defined in ​

profectus/src/features/particles/particles.tsx:69

Components ​

Particles Component ​

Props ​

NameType
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
onInit*(app: Application) => void
id*string
onContainerResized(rect: DOMRect) => void
onHotReloadVoidFunction
',51),i=[o];function s(c,d,n,p,h,f){return a(),t("div",null,i)}const y=e(l,[["render",s]]);export{g as __pageData,y as default}; diff --git a/assets/api_modules_features_particles.md.acdac247.lean.js b/assets/api_modules_features_particles.md.acdac247.lean.js deleted file mode 100644 index 4a336010..00000000 --- a/assets/api_modules_features_particles.md.acdac247.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Module: features/particles/particles","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/particles.md","lastUpdated":null}'),l={name:"api/modules/features/particles.md"},o=r("",51),i=[o];function s(c,d,n,p,h,f){return a(),t("div",null,i)}const y=e(l,[["render",s]]);export{g as __pageData,y as default}; diff --git a/assets/api_modules_features_repeatable.md.2078abb7.js b/assets/api_modules_features_repeatable.md.2078abb7.js deleted file mode 100644 index 6aa0f5c3..00000000 --- a/assets/api_modules_features_repeatable.md.2078abb7.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/repeatable","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/repeatable.md","lastUpdated":null}'),l={name:"api/modules/features/repeatable.md"},r=o('

Module: features/repeatable ​

Interfaces ​

BaseRepeatable ​

• BaseRepeatable: Object

The properties that are added onto a processed RepeatableOptions to create a Repeatable.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
amountPersistent<DecimalSource>The current amount this repeatable has.
amountToIncreaseRef<DecimalSource>How much amount can be increased by, or 1 if unclickable. Capped at 1 if maximize is false.
canClickProcessedComputable<boolean>Whether or not this repeatable can be clicked.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
maxedRef<boolean>Whether or not this repeatable's amount is at it's limit.
onClick(event?: MouseEvent | TouchEvent) => voidA function that gets called when this repeatable is clicked.
typetypeof RepeatableTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/repeatable.tsx:78


RepeatableOptions ​

• RepeatableOptions: Object

An object that configures a Repeatable.

NameTypeDescription
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
display?Computable<RepeatableDisplay>The display to use for this repeatable.
initialAmount?DecimalSourceThe initial amount this repeatable has on a new save / after reset.
limit?Computable<DecimalSource>The maximum amount obtainable for this repeatable.
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
maximize?Computable<boolean>Whether or not clicking this repeatable should attempt to maximize amount based on the requirements met. Requires requirements to be a requirement or array of requirements with Requirement.canMaximize true.
requirementsRequirementsThe requirement(s) to increase this repeatable.
small?Computable<boolean>Toggles a smaller design for the feature.
style?Computable<StyleValue>CSS to apply to this feature.
visibility?Computable<boolean | Visibility>Whether this repeatable should be visible.

Defined in ​

profectus/src/features/repeatable.tsx:52

Type Aliases ​

GenericRepeatable ​

Ƭ GenericRepeatable: Replace<Repeatable<RepeatableOptions>, { limit: ProcessedComputable<DecimalSource> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Repeatable object.

Defined in ​

profectus/src/features/repeatable.tsx:119


Repeatable ​

Ƭ Repeatable<T>: Replace<T & BaseRepeatable, { classes: GetComputableType<T["classes"]> ; display: Ref<CoercableComponent> ; limit: GetComputableTypeWithDefault<T["limit"], default> ; mark: GetComputableType<T["mark"]> ; maximize: GetComputableType<T["maximize"]> ; requirements: GetComputableType<T["requirements"]> ; small: GetComputableType<T["small"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature with multiple "levels" with scaling requirements.

Type parameters ​

NameType
Textends RepeatableOptions

Defined in ​

profectus/src/features/repeatable.tsx:103


RepeatableDisplay ​

Ƭ RepeatableDisplay: CoercableComponent | { description?: CoercableComponent ; effectDisplay?: CoercableComponent ; showAmount?: boolean ; title?: CoercableComponent }

A type that can be used to customize the Repeatable display.

Defined in ​

profectus/src/features/repeatable.tsx:38

Variables ​

RepeatableType ​

• Const RepeatableType: typeof RepeatableType

A symbol used to identify Repeatable features.

Defined in ​

profectus/src/features/repeatable.tsx:35

Functions ​

createRepeatable ​

â–¸ createRepeatable<T>(optionsFunc): Repeatable<T>

Lazily creates a repeatable with the given options.

Type parameters ​
NameType
Textends RepeatableOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseRepeatable, GenericRepeatable>Repeatable options.
Returns ​

Repeatable<T>

Defined in ​

profectus/src/features/repeatable.tsx:131

',53),d=[r];function c(i,s,n,p,b,f){return a(),t("div",null,d)}const m=e(l,[["render",c]]);export{u as __pageData,m as default}; diff --git a/assets/api_modules_features_repeatable.md.2078abb7.lean.js b/assets/api_modules_features_repeatable.md.2078abb7.lean.js deleted file mode 100644 index fedb1b3e..00000000 --- a/assets/api_modules_features_repeatable.md.2078abb7.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/repeatable","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/repeatable.md","lastUpdated":null}'),l={name:"api/modules/features/repeatable.md"},r=o("",53),d=[r];function c(i,s,n,p,b,f){return a(),t("div",null,d)}const m=e(l,[["render",c]]);export{u as __pageData,m as default}; diff --git a/assets/api_modules_features_repeatable.md.a16afba7.js b/assets/api_modules_features_repeatable.md.a16afba7.js new file mode 100644 index 00000000..72423665 --- /dev/null +++ b/assets/api_modules_features_repeatable.md.a16afba7.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,N as o}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/repeatable","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/repeatable.md","lastUpdated":null}'),r={name:"api/modules/features/repeatable.md"},l=o('

Module: features/repeatable ​

Interfaces ​

BaseRepeatable ​

• BaseRepeatable: Object

The properties that are added onto a processed RepeatableOptions to create a Repeatable.

Defined in ​

profectus/src/features/repeatable.tsx:78


RepeatableOptions ​

• RepeatableOptions: Object

An object that configures a Repeatable.

Defined in ​

profectus/src/features/repeatable.tsx:52

Type Aliases ​

GenericRepeatable ​

Ƭ GenericRepeatable: Replace<Repeatable<RepeatableOptions>, { limit: ProcessedComputable<DecimalSource> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Repeatable object.

Defined in ​

profectus/src/features/repeatable.tsx:119


Repeatable ​

Ƭ Repeatable<T>: Replace<T & BaseRepeatable, { classes: GetComputableType<T["classes"]> ; display: Ref<CoercableComponent> ; limit: GetComputableTypeWithDefault<T["limit"], default> ; mark: GetComputableType<T["mark"]> ; maximize: GetComputableType<T["maximize"]> ; requirements: GetComputableType<T["requirements"]> ; small: GetComputableType<T["small"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature with multiple "levels" with scaling requirements.

Type parameters ​

NameType
Textends RepeatableOptions

Defined in ​

profectus/src/features/repeatable.tsx:103


RepeatableDisplay ​

Ƭ RepeatableDisplay: CoercableComponent | { description?: CoercableComponent ; effectDisplay?: CoercableComponent ; showAmount?: boolean ; title?: CoercableComponent }

A type that can be used to customize the Repeatable display.

Defined in ​

profectus/src/features/repeatable.tsx:38

Variables ​

RepeatableType ​

• Const RepeatableType: typeof RepeatableType

A symbol used to identify Repeatable features.

Defined in ​

profectus/src/features/repeatable.tsx:35

Functions ​

createRepeatable ​

â–¸ createRepeatable<T>(optionsFunc): Repeatable<T>

Lazily creates a repeatable with the given options.

Type parameters ​

NameType
Textends RepeatableOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseRepeatable, GenericRepeatable>Repeatable options.

Returns ​

Repeatable<T>

Defined in ​

profectus/src/features/repeatable.tsx:131

',51),c=[l];function d(p,i,s,n,b,h){return t(),a("div",null,c)}const m=e(r,[["render",d]]);export{u as __pageData,m as default}; diff --git a/assets/api_modules_features_repeatable.md.a16afba7.lean.js b/assets/api_modules_features_repeatable.md.a16afba7.lean.js new file mode 100644 index 00000000..8607042f --- /dev/null +++ b/assets/api_modules_features_repeatable.md.a16afba7.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,N as o}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/repeatable","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/repeatable.md","lastUpdated":null}'),r={name:"api/modules/features/repeatable.md"},l=o("",51),c=[l];function d(p,i,s,n,b,h){return t(),a("div",null,c)}const m=e(r,[["render",d]]);export{u as __pageData,m as default}; diff --git a/assets/api_modules_features_reset.md.295fd3d8.js b/assets/api_modules_features_reset.md.295fd3d8.js deleted file mode 100644 index e540c2fa..00000000 --- a/assets/api_modules_features_reset.md.295fd3d8.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/reset","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/reset.md","lastUpdated":null}'),s={name:"api/modules/features/reset.md"},o=r('

Module: features/reset ​

Interfaces ​

BaseReset ​

• BaseReset: Object

The properties that are added onto a processed ResetOptions to create an Reset.

NameTypeDescription
idstringAn auto-generated ID for identifying which reset is being performed. Will not persist between refreshes or updates.
resetVoidFunctionTrigger the reset.
typetypeof ResetTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/reset.ts:30


ResetOptions ​

• ResetOptions: Object

An object that configures a Clickable.

NameTypeDescription
onReset?VoidFunctionA function that is called when the reset is performed.
thingsToResetComputable<Record<string, unknown>[]>List of things to reset. Can include objects which will be recursed over for persistent values.

Defined in ​

profectus/src/features/reset.ts:20

Type Aliases ​

GenericReset ​

Ƭ GenericReset: Reset<ResetOptions>

A type that matches any valid Reset object.

Defined in ​

profectus/src/features/reset.ts:48


Reset ​

Ƭ Reset<T>: Replace<T & BaseReset, { thingsToReset: GetComputableType<T["thingsToReset"]> }>

An object that represents a reset mechanic, which resets progress back to its initial state.

Type parameters ​

NameType
Textends ResetOptions

Defined in ​

profectus/src/features/reset.ts:40

Variables ​

ResetType ​

• Const ResetType: typeof ResetType

A symbol used to identify Reset features.

Defined in ​

profectus/src/features/reset.ts:15

Functions ​

createReset ​

â–¸ createReset<T>(optionsFunc): Reset<T>

Lazily creates a reset with the given options.

Type parameters ​
NameType
Textends ResetOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseReset, GenericReset>Reset options.
Returns ​

Reset<T>

Defined in ​

profectus/src/features/reset.ts:54


trackResetTime ​

â–¸ trackResetTime(layer, reset): Persistent<default>

Track the time since the specified reset last occured.

Parameters ​
NameTypeDescription
layerBaseLayerThe layer the reset is attached to
resetGenericResetThe reset mechanic to track the time since
Returns ​

Persistent<default>

Defined in ​

profectus/src/features/reset.ts:92

',57),d=[o];function i(n,l,c,h,f,p){return a(),t("div",null,d)}const g=e(s,[["render",i]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_features_reset.md.c413767d.js b/assets/api_modules_features_reset.md.c413767d.js new file mode 100644 index 00000000..fe5e964f --- /dev/null +++ b/assets/api_modules_features_reset.md.c413767d.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/reset","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/reset.md","lastUpdated":null}'),s={name:"api/modules/features/reset.md"},o=r('

Module: features/reset ​

Interfaces ​

BaseReset ​

• BaseReset: Object

The properties that are added onto a processed ResetOptions to create an Reset.

Defined in ​

profectus/src/features/reset.ts:30


ResetOptions ​

• ResetOptions: Object

An object that configures a Clickable.

Defined in ​

profectus/src/features/reset.ts:20

Type Aliases ​

GenericReset ​

Ƭ GenericReset: Reset<ResetOptions>

A type that matches any valid Reset object.

Defined in ​

profectus/src/features/reset.ts:48


Reset ​

Ƭ Reset<T>: Replace<T & BaseReset, { thingsToReset: GetComputableType<T["thingsToReset"]> }>

An object that represents a reset mechanic, which resets progress back to its initial state.

Type parameters ​

NameType
Textends ResetOptions

Defined in ​

profectus/src/features/reset.ts:40

Variables ​

ResetType ​

• Const ResetType: typeof ResetType

A symbol used to identify Reset features.

Defined in ​

profectus/src/features/reset.ts:15

Functions ​

createReset ​

â–¸ createReset<T>(optionsFunc): Reset<T>

Lazily creates a reset with the given options.

Type parameters ​

NameType
Textends ResetOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseReset, GenericReset>Reset options.

Returns ​

Reset<T>

Defined in ​

profectus/src/features/reset.ts:54


trackResetTime ​

â–¸ trackResetTime(layer, reset): Persistent<default>

Track the time since the specified reset last occured.

Parameters ​

NameTypeDescription
layerBaseLayerThe layer the reset is attached to
resetGenericResetThe reset mechanic to track the time since

Returns ​

Persistent<default>

Defined in ​

profectus/src/features/reset.ts:92

',55),n=[o];function i(d,l,c,h,f,p){return a(),t("div",null,n)}const g=e(s,[["render",i]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_features_reset.md.295fd3d8.lean.js b/assets/api_modules_features_reset.md.c413767d.lean.js similarity index 70% rename from assets/api_modules_features_reset.md.295fd3d8.lean.js rename to assets/api_modules_features_reset.md.c413767d.lean.js index 15891c19..cc9b639f 100644 --- a/assets/api_modules_features_reset.md.295fd3d8.lean.js +++ b/assets/api_modules_features_reset.md.c413767d.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/reset","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/reset.md","lastUpdated":null}'),s={name:"api/modules/features/reset.md"},o=r("",57),d=[o];function i(n,l,c,h,f,p){return a(),t("div",null,d)}const g=e(s,[["render",i]]);export{b as __pageData,g as default}; +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/reset","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/reset.md","lastUpdated":null}'),s={name:"api/modules/features/reset.md"},o=r("",55),n=[o];function i(d,l,c,h,f,p){return a(),t("div",null,n)}const g=e(s,[["render",i]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_features_resource.md.337b8880.js b/assets/api_modules_features_resource.md.337b8880.js deleted file mode 100644 index b907835b..00000000 --- a/assets/api_modules_features_resource.md.337b8880.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as r,N as a}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/resources/resource","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/resource.md","lastUpdated":null}'),o={name:"api/modules/features/resource.md"},s=a('

Module: features/resources/resource ​

Interfaces ​

Resource ​

• Resource<T>: Object

An object that represents a named and quantifiable resource in the game.

Type parameters ​

NameType
TDecimalSource
NameTypeDescription
[RefSymbol]trueType differentiator only. We need this to be in public d.ts but don't want it to show up in IDE autocomplete, so we use a private Symbol instead.
displayNamestringThe name of this resource.
precisionnumberWhen displaying the value of this resource, how many significant digits to display.
small?booleanWhether or not to display very small values using scientific notation, or rounding to 0.
valueT-

Defined in ​

profectus/src/features/resources/resource.ts:12

Functions ​

createResource ​

â–¸ createResource<T>(defaultValue, displayName?, precision?, small?): Resource<T> & Persistent<T> & { [NonPersistent]: Resource<T> }

Creates a resource.

Type parameters ​
NameType
Textends State
Parameters ​
NameTypeDescription
defaultValueTThe initial value of the resource
displayName?stringThe human readable name of this resource
precision?numberThe number of significant digits to display by default
small?booleanWhether or not to display very small values or round to 0, by default
Returns ​

Resource<T> & Persistent<T> & { [NonPersistent]: Resource<T> }

Other signatures ​

â–¸ createResource<T>(defaultValue, displayName?, precision?, small?): Resource<T>

NameType
defaultValueRef<T>
displayName?string
precision?number
small?boolean

Defined in ​

profectus/src/features/resources/resource.ts:28

profectus/src/features/resources/resource.ts:34

profectus/src/features/resources/resource.ts:40


displayResource ​

â–¸ displayResource(resource, overrideAmount?): string

Utility for displaying a resource with the correct precision.

Parameters ​
NameType
resourceResource<DecimalSource>
overrideAmount?DecimalSource
Returns ​

string

Defined in ​

profectus/src/features/resources/resource.ts:153


trackBest ​

â–¸ trackBest(resource): Ref<DecimalSource>

Returns a reference to the highest amount of the resource ever owned, which is updated automatically.

Parameters ​
NameType
resourceResource<DecimalSource>
Returns ​

Ref<DecimalSource>

Defined in ​

profectus/src/features/resources/resource.ts:64


trackOOMPS ​

â–¸ trackOOMPS(resource, pointGain?): Ref<string>

Returns a reference to the amount of resource being gained in terms of orders of magnitude per second, calcualted over the last tick. Useful for situations where the gain rate is increasing very rapidly.

Parameters ​
NameType
resourceResource<DecimalSource>
pointGain?ComputedRef<DecimalSource>
Returns ​

Ref<string>

Defined in ​

profectus/src/features/resources/resource.ts:94


trackTotal ​

â–¸ trackTotal(resource): Ref<DecimalSource>

Returns a reference to the total amount of the resource gained, updated automatically. "Refunds" count as gain.

Parameters ​
NameType
resourceResource<DecimalSource>
Returns ​

Ref<DecimalSource>

Defined in ​

profectus/src/features/resources/resource.ts:78


unwrapResource ​

â–¸ unwrapResource(resource): Resource

Utility for unwrapping a resource that may or may not be inside a ref.

Parameters ​
NameType
resourceProcessedComputable<Resource<DecimalSource>>
Returns ​

Resource

Defined in ​

profectus/src/features/resources/resource.ts:162

Components ​

MainDisplay Component ​

Props ​

NameType
resource*Resource
colorstring
classesRecord
styleStyleValue
effectDisplayCoercableComponent

Resource Component ​

Props ​

NameType
resource*Resource
color*string
',84),d=[s];function c(l,n,i,u,h,f){return r(),t("div",null,d)}const g=e(o,[["render",c]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_features_resource.md.b91e265b.js b/assets/api_modules_features_resource.md.b91e265b.js new file mode 100644 index 00000000..50c50594 --- /dev/null +++ b/assets/api_modules_features_resource.md.b91e265b.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as r,N as a}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/resources/resource","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/resource.md","lastUpdated":null}'),o={name:"api/modules/features/resource.md"},s=a('

Module: features/resources/resource ​

Interfaces ​

Resource ​

• Resource<T>: Object

An object that represents a named and quantifiable resource in the game.

Type parameters ​

NameType
TDecimalSource

Defined in ​

profectus/src/features/resources/resource.ts:12

Functions ​

createResource ​

â–¸ createResource<T>(defaultValue, displayName?, precision?, small?): Resource<T> & Persistent<T> & { [NonPersistent]: Resource<T> }

Creates a resource.

Type parameters ​

NameType
Textends State

Parameters ​

NameTypeDescription
defaultValueTThe initial value of the resource
displayName?stringThe human readable name of this resource
precision?numberThe number of significant digits to display by default
small?booleanWhether or not to display very small values or round to 0, by default

Returns ​

Resource<T> & Persistent<T> & { [NonPersistent]: Resource<T> }

Defined in ​

profectus/src/features/resources/resource.ts:28

â–¸ createResource<T>(defaultValue, displayName?, precision?, small?): Resource<T>

Type parameters ​

NameType
Textends State

Parameters ​

NameType
defaultValueRef<T>
displayName?string
precision?number
small?boolean

Returns ​

Resource<T>

Defined in ​

profectus/src/features/resources/resource.ts:34


displayResource ​

â–¸ displayResource(resource, overrideAmount?): string

Utility for displaying a resource with the correct precision.

Parameters ​

NameType
resourceResource<DecimalSource>
overrideAmount?DecimalSource

Returns ​

string

Defined in ​

profectus/src/features/resources/resource.ts:153


trackBest ​

â–¸ trackBest(resource): Ref<DecimalSource>

Returns a reference to the highest amount of the resource ever owned, which is updated automatically.

Parameters ​

NameType
resourceResource<DecimalSource>

Returns ​

Ref<DecimalSource>

Defined in ​

profectus/src/features/resources/resource.ts:64


trackOOMPS ​

â–¸ trackOOMPS(resource, pointGain?): Ref<string>

Returns a reference to the amount of resource being gained in terms of orders of magnitude per second, calcualted over the last tick. Useful for situations where the gain rate is increasing very rapidly.

Parameters ​

NameType
resourceResource<DecimalSource>
pointGain?ComputedRef<DecimalSource>

Returns ​

Ref<string>

Defined in ​

profectus/src/features/resources/resource.ts:94


trackTotal ​

â–¸ trackTotal(resource): Ref<DecimalSource>

Returns a reference to the total amount of the resource gained, updated automatically. "Refunds" count as gain.

Parameters ​

NameType
resourceResource<DecimalSource>

Returns ​

Ref<DecimalSource>

Defined in ​

profectus/src/features/resources/resource.ts:78


unwrapResource ​

â–¸ unwrapResource(resource): Resource

Utility for unwrapping a resource that may or may not be inside a ref.

Parameters ​

NameType
resourceProcessedComputable<Resource<DecimalSource>>

Returns ​

Resource

Defined in ​

profectus/src/features/resources/resource.ts:162

Components ​

MainDisplay Component ​

Props ​

NameType
resource*Resource
colorstring
classesRecord
styleStyleValue
effectDisplayCoercableComponent

Resource Component ​

Props ​

NameType
resource*Resource
color*string
',87),d=[s];function c(l,n,i,u,h,f){return r(),t("div",null,d)}const m=e(o,[["render",c]]);export{b as __pageData,m as default}; diff --git a/assets/api_modules_features_resource.md.337b8880.lean.js b/assets/api_modules_features_resource.md.b91e265b.lean.js similarity index 71% rename from assets/api_modules_features_resource.md.337b8880.lean.js rename to assets/api_modules_features_resource.md.b91e265b.lean.js index 2d0661a1..cb30b5e1 100644 --- a/assets/api_modules_features_resource.md.337b8880.lean.js +++ b/assets/api_modules_features_resource.md.b91e265b.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as r,N as a}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/resources/resource","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/resource.md","lastUpdated":null}'),o={name:"api/modules/features/resource.md"},s=a("",84),d=[s];function c(l,n,i,u,h,f){return r(),t("div",null,d)}const g=e(o,[["render",c]]);export{b as __pageData,g as default}; +import{_ as e,c as t,o as r,N as a}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/resources/resource","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/resource.md","lastUpdated":null}'),o={name:"api/modules/features/resource.md"},s=a("",87),d=[s];function c(l,n,i,u,h,f){return r(),t("div",null,d)}const m=e(o,[["render",c]]);export{b as __pageData,m as default}; diff --git a/assets/api_modules_features_tabs_tab.md.3b186dff.js b/assets/api_modules_features_tabs_tab.md.3b186dff.js new file mode 100644 index 00000000..480baddd --- /dev/null +++ b/assets/api_modules_features_tabs_tab.md.3b186dff.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/tabs/tab","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/tabs/tab.md","lastUpdated":null}'),o={name:"api/modules/features/tabs/tab.md"},s=r('

Module: features/tabs/tab ​

Interfaces ​

BaseTab ​

• BaseTab: Object

The properties that are added onto a processed TabOptions to create an Tab.

Defined in ​

profectus/src/features/tabs/tab.ts:31


TabOptions ​

• TabOptions: Object

An object that configures a Tab.

Defined in ​

profectus/src/features/tabs/tab.ts:19

Type Aliases ​

GenericTab ​

Ƭ GenericTab: Tab<TabOptions>

A type that matches any valid Tab object.

Defined in ​

profectus/src/features/tabs/tab.ts:56


Tab ​

Ƭ Tab<T>: Replace<T & BaseTab, { classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; style: GetComputableType<T["style"]> }>

An object representing a tab of content in a tabbed interface.

See

TabFamily

Type parameters ​

NameType
Textends TabOptions

Defined in ​

profectus/src/features/tabs/tab.ts:46

Variables ​

TabType ​

• Const TabType: typeof TabType

A symbol used to identify Tab features.

Defined in ​

profectus/src/features/tabs/tab.ts:14

Functions ​

createTab ​

â–¸ createTab<T>(optionsFunc): Tab<T>

Lazily creates a tab with the given options.

Type parameters ​

NameType
Textends TabOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseTab, GenericTab>Tab options.

Returns ​

Tab<T>

Defined in ​

profectus/src/features/tabs/tab.ts:62

',47),n=[s];function d(i,b,c,l,h,f){return t(),a("div",null,n)}const T=e(o,[["render",d]]);export{u as __pageData,T as default}; diff --git a/assets/api_modules_features_tabs_tab.md.3b186dff.lean.js b/assets/api_modules_features_tabs_tab.md.3b186dff.lean.js new file mode 100644 index 00000000..a42667f5 --- /dev/null +++ b/assets/api_modules_features_tabs_tab.md.3b186dff.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/tabs/tab","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/tabs/tab.md","lastUpdated":null}'),o={name:"api/modules/features/tabs/tab.md"},s=r("",47),n=[s];function d(i,b,c,l,h,f){return t(),a("div",null,n)}const T=e(o,[["render",d]]);export{u as __pageData,T as default}; diff --git a/assets/api_modules_features_tabs_tab.md.ac4b1c4b.js b/assets/api_modules_features_tabs_tab.md.ac4b1c4b.js deleted file mode 100644 index 72b8c63a..00000000 --- a/assets/api_modules_features_tabs_tab.md.ac4b1c4b.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/tabs/tab","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/tabs/tab.md","lastUpdated":null}'),r={name:"api/modules/features/tabs/tab.md"},d=o('

Module: features/tabs/tab ​

Interfaces ​

BaseTab ​

• BaseTab: Object

The properties that are added onto a processed TabOptions to create an Tab.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
typetypeof TabTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/tabs/tab.ts:31


TabOptions ​

• TabOptions: Object

An object that configures a Tab.

NameTypeDescription
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
displayComputable<CoercableComponent>The display to use for this tab.
style?Computable<StyleValue>CSS to apply to this feature.

Defined in ​

profectus/src/features/tabs/tab.ts:19

Type Aliases ​

GenericTab ​

Ƭ GenericTab: Tab<TabOptions>

A type that matches any valid Tab object.

Defined in ​

profectus/src/features/tabs/tab.ts:56


Tab ​

Ƭ Tab<T>: Replace<T & BaseTab, { classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; style: GetComputableType<T["style"]> }>

An object representing a tab of content in a tabbed interface.

See

TabFamily

Type parameters ​

NameType
Textends TabOptions

Defined in ​

profectus/src/features/tabs/tab.ts:46

Variables ​

TabType ​

• Const TabType: typeof TabType

A symbol used to identify Tab features.

Defined in ​

profectus/src/features/tabs/tab.ts:14

Functions ​

createTab ​

â–¸ createTab<T>(optionsFunc): Tab<T>

Lazily creates a tab with the given options.

Type parameters ​
NameType
Textends TabOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseTab, GenericTab>Tab options.
Returns ​

Tab<T>

Defined in ​

profectus/src/features/tabs/tab.ts:62

',49),s=[d];function l(n,c,i,b,h,f){return a(),t("div",null,s)}const y=e(r,[["render",l]]);export{u as __pageData,y as default}; diff --git a/assets/api_modules_features_tabs_tab.md.ac4b1c4b.lean.js b/assets/api_modules_features_tabs_tab.md.ac4b1c4b.lean.js deleted file mode 100644 index d19cb9a2..00000000 --- a/assets/api_modules_features_tabs_tab.md.ac4b1c4b.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: features/tabs/tab","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/tabs/tab.md","lastUpdated":null}'),r={name:"api/modules/features/tabs/tab.md"},d=o("",49),s=[d];function l(n,c,i,b,h,f){return a(),t("div",null,s)}const y=e(r,[["render",l]]);export{u as __pageData,y as default}; diff --git a/assets/api_modules_features_tabs_tabFamily.md.1a69473b.js b/assets/api_modules_features_tabs_tabFamily.md.1a69473b.js deleted file mode 100644 index 454487c2..00000000 --- a/assets/api_modules_features_tabs_tabFamily.md.1a69473b.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as e,o as a,N as o}from"./chunks/framework.0799945b.js";const y=JSON.parse('{"title":"Module: features/tabs/tabFamily","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/tabs/tabFamily.md","lastUpdated":null}'),l={name:"api/modules/features/tabs/tabFamily.md"},r=o('

Module: features/tabs/tabFamily ​

Interfaces ​

BaseTabButton ​

• BaseTabButton: Object

The properties that are added onto a processed TabButtonOptions to create an TabButton.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
typetypeof TabButtonTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:58


BaseTabFamily ​

• BaseTabFamily: Object

The properties that are added onto a processed TabFamilyOptions to create an TabFamily.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
activeTabRef<null | CoercableComponent | GenericTab>The currently active tab, if any.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
selectedPersistent<string>The name of the tab that is currently active.
tabsRecord<string, TabButtonOptions>All the tabs within this family.
typetypeof TabFamilyTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:108


TabButtonOptions ​

• TabButtonOptions: Object

An object that configures a TabButton.

NameTypeDescription
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
displayComputable<CoercableComponent>The label on this button.
glowColor?Computable<string>The color of the glow effect to display when this button is active.
style?Computable<StyleValue>CSS to apply to this feature.
tabComputable<CoercableComponent | GenericTab>The tab to display when this button is clicked.
visibility?Computable<boolean | Visibility>Whether this tab button should be visible.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:40


TabFamilyOptions ​

• TabFamilyOptions: Object

An object that configures a TabFamily.

NameTypeDescription
buttonContainerClasses?Computable<Record<string, boolean>>A dictionary of CSS classes to apply to the list of buttons for changing tabs.
buttonContainerStyle?Computable<StyleValue>CSS to apply to the list of buttons for changing tabs.
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
style?Computable<StyleValue>CSS to apply to this feature.
visibility?Computable<boolean | Visibility>Whether this tab button should be visible.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:92

Type Aliases ​

GenericTabButton ​

Ƭ GenericTabButton: Replace<TabButton<TabButtonOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid TabButton object.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:82


GenericTabFamily ​

Ƭ GenericTabFamily: Replace<TabFamily<TabFamilyOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid TabFamily object.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:138


TabButton ​

Ƭ TabButton<T>: Replace<T & BaseTabButton, { classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; glowColor: GetComputableType<T["glowColor"]> ; style: GetComputableType<T["style"]> ; tab: GetComputableType<T["tab"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a button that can be clicked to change tabs in a tabbed interface.

See

TabFamily

Type parameters ​

NameType
Textends TabButtonOptions

Defined in ​

profectus/src/features/tabs/tabFamily.ts:69


TabFamily ​

Ƭ TabFamily<T>: Replace<T & BaseTabFamily, { tabs: Record<string, GenericTabButton> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a tabbed interface.

See

TabFamily

Type parameters ​

NameType
Textends TabFamilyOptions

Defined in ​

profectus/src/features/tabs/tabFamily.ts:129

Variables ​

TabButtonType ​

• Const TabButtonType: typeof TabButtonType

A symbol used to identify TabButton features.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:33


TabFamilyType ​

• Const TabFamilyType: typeof TabFamilyType

A symbol used to identify TabFamily features.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:35

Functions ​

createTabFamily ​

â–¸ createTabFamily<T>(tabs, optionsFunc?): TabFamily<T>

Lazily creates a tab family with the given options.

Type parameters ​
NameType
Textends TabFamilyOptions
Parameters ​
NameTypeDescription
tabsRecord<string, () => TabButtonOptions>-
optionsFunc?OptionsFunc<T, BaseTabFamily, GenericTabFamily>Tab family options.
Returns ​

TabFamily<T>

Defined in ​

profectus/src/features/tabs/tabFamily.ts:149

',85),d=[r];function i(c,n,s,b,f,h){return a(),e("div",null,d)}const u=t(l,[["render",i]]);export{y as __pageData,u as default}; diff --git a/assets/api_modules_features_tabs_tabFamily.md.1a69473b.lean.js b/assets/api_modules_features_tabs_tabFamily.md.1a69473b.lean.js deleted file mode 100644 index 9e5873c6..00000000 --- a/assets/api_modules_features_tabs_tabFamily.md.1a69473b.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as e,o as a,N as o}from"./chunks/framework.0799945b.js";const y=JSON.parse('{"title":"Module: features/tabs/tabFamily","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/tabs/tabFamily.md","lastUpdated":null}'),l={name:"api/modules/features/tabs/tabFamily.md"},r=o("",85),d=[r];function i(c,n,s,b,f,h){return a(),e("div",null,d)}const u=t(l,[["render",i]]);export{y as __pageData,u as default}; diff --git a/assets/api_modules_features_tabs_tabFamily.md.ae450c2b.js b/assets/api_modules_features_tabs_tabFamily.md.ae450c2b.js new file mode 100644 index 00000000..b2547fad --- /dev/null +++ b/assets/api_modules_features_tabs_tabFamily.md.ae450c2b.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,N as o}from"./chunks/framework.0799945b.js";const p=JSON.parse('{"title":"Module: features/tabs/tabFamily","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/tabs/tabFamily.md","lastUpdated":null}'),r={name:"api/modules/features/tabs/tabFamily.md"},i=o('

Module: features/tabs/tabFamily ​

Interfaces ​

BaseTabButton ​

• BaseTabButton: Object

The properties that are added onto a processed TabButtonOptions to create an TabButton.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:58


BaseTabFamily ​

• BaseTabFamily: Object

The properties that are added onto a processed TabFamilyOptions to create an TabFamily.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:108


TabButtonOptions ​

• TabButtonOptions: Object

An object that configures a TabButton.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:40


TabFamilyOptions ​

• TabFamilyOptions: Object

An object that configures a TabFamily.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:92

Type Aliases ​

GenericTabButton ​

Ƭ GenericTabButton: Replace<TabButton<TabButtonOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid TabButton object.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:82


GenericTabFamily ​

Ƭ GenericTabFamily: Replace<TabFamily<TabFamilyOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid TabFamily object.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:138


TabButton ​

Ƭ TabButton<T>: Replace<T & BaseTabButton, { classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; glowColor: GetComputableType<T["glowColor"]> ; style: GetComputableType<T["style"]> ; tab: GetComputableType<T["tab"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a button that can be clicked to change tabs in a tabbed interface.

See

TabFamily

Type parameters ​

NameType
Textends TabButtonOptions

Defined in ​

profectus/src/features/tabs/tabFamily.ts:69


TabFamily ​

Ƭ TabFamily<T>: Replace<T & BaseTabFamily, { tabs: Record<string, GenericTabButton> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a tabbed interface.

See

TabFamily

Type parameters ​

NameType
Textends TabFamilyOptions

Defined in ​

profectus/src/features/tabs/tabFamily.ts:129

Variables ​

TabButtonType ​

• Const TabButtonType: typeof TabButtonType

A symbol used to identify TabButton features.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:33


TabFamilyType ​

• Const TabFamilyType: typeof TabFamilyType

A symbol used to identify TabFamily features.

Defined in ​

profectus/src/features/tabs/tabFamily.ts:35

Functions ​

createTabFamily ​

â–¸ createTabFamily<T>(tabs, optionsFunc?): TabFamily<T>

Lazily creates a tab family with the given options.

Type parameters ​

NameType
Textends TabFamilyOptions

Parameters ​

NameTypeDescription
tabsRecord<string, () => TabButtonOptions>-
optionsFunc?OptionsFunc<T, BaseTabFamily, GenericTabFamily>Tab family options.

Returns ​

TabFamily<T>

Defined in ​

profectus/src/features/tabs/tabFamily.ts:149

',81),l=[i];function n(d,s,b,c,f,h){return t(),a("div",null,l)}const y=e(r,[["render",n]]);export{p as __pageData,y as default}; diff --git a/assets/api_modules_features_tabs_tabFamily.md.ae450c2b.lean.js b/assets/api_modules_features_tabs_tabFamily.md.ae450c2b.lean.js new file mode 100644 index 00000000..ccf67c32 --- /dev/null +++ b/assets/api_modules_features_tabs_tabFamily.md.ae450c2b.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,N as o}from"./chunks/framework.0799945b.js";const p=JSON.parse('{"title":"Module: features/tabs/tabFamily","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/tabs/tabFamily.md","lastUpdated":null}'),r={name:"api/modules/features/tabs/tabFamily.md"},i=o("",81),l=[i];function n(d,s,b,c,f,h){return t(),a("div",null,l)}const y=e(r,[["render",n]]);export{p as __pageData,y as default}; diff --git a/assets/api_modules_features_tooltip.md.4f1ae01d.js b/assets/api_modules_features_tooltip.md.4f1ae01d.js deleted file mode 100644 index c67509c5..00000000 --- a/assets/api_modules_features_tooltip.md.4f1ae01d.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as e,o,N as a}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Module: features/tooltips/tooltip","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/tooltip.md","lastUpdated":null}'),l={name:"api/modules/features/tooltip.md"},d=a('

Module: features/tooltips/tooltip ​

Interfaces ​

BaseTooltip ​

• BaseTooltip: Object

The properties that are added onto a processed TooltipOptions to create an Tooltip.

NameType
pinned?Ref<boolean>

Defined in ​

profectus/src/features/tooltips/tooltip.ts:47


TooltipOptions ​

• TooltipOptions: Object

An object that configures a Tooltip.

NameTypeDescription
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
direction?Computable<Direction>The direction in which to display the tooltip
displayComputable<CoercableComponent>The text to display inside the tooltip.
pinnable?booleanWhether or not this tooltip can be pinned, meaning it'll stay visible even when not hovered.
style?Computable<StyleValue>CSS to apply to this feature.
xoffset?Computable<string>The x offset of the tooltip, in px.
yoffset?Computable<string>The y offset of the tooltip, in px.

Defined in ​

profectus/src/features/tooltips/tooltip.ts:27

Type Aliases ​

GenericTooltip ​

Ƭ GenericTooltip: Replace<Tooltip<TooltipOptions>, { direction: ProcessedComputable<Direction> ; pinnable: boolean ; pinned: Ref<boolean> | undefined }>

A type that matches any valid Tooltip object.

Defined in ​

profectus/src/features/tooltips/tooltip.ts:67


Tooltip ​

Ƭ Tooltip<T>: Replace<T & BaseTooltip, { classes: GetComputableType<T["classes"]> ; direction: GetComputableTypeWithDefault<T["direction"], Up> ; display: GetComputableType<T["display"]> ; pinnable: T["pinnable"] extends undefined ? false : T["pinnable"] ; pinned: T["pinnable"] extends true ? Ref<boolean> : undefined ; style: GetComputableType<T["style"]> ; xoffset: GetComputableType<T["xoffset"]> ; yoffset: GetComputableType<T["yoffset"]> }>

An object that represents a tooltip that appears when hovering over an element.

Type parameters ​

NameType
Textends TooltipOptions

Defined in ​

profectus/src/features/tooltips/tooltip.ts:52

Functions ​

addTooltip ​

â–¸ addTooltip<T>(element, options): Tooltip<T>

Creates a tooltip on the given element with the given options.

Type parameters ​
NameType
Textends TooltipOptions
Parameters ​
NameTypeDescription
elementVueFeatureThe renderable feature to display the tooltip on.
optionsT & ThisType<Tooltip<T>> & Partial<BaseTooltip>Tooltip options.
Returns ​

Tooltip<T>

Defined in ​

profectus/src/features/tooltips/tooltip.ts:81

Components ​

Tooltip Component ​

Props ​

NameType
elementVueFeature
display*processedPropType<CoercableComponent>(Object, String, Function)
styleprocessedPropType<StyleValue>(Object, String, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
directionprocessedPropType<Direction>(String)
xoffsetprocessedPropType<string>(String)
yoffsetprocessedPropType<string>(String)
pinnedPersistent<boolean>

Slots ​

Name
default
',47),i=[d];function r(c,n,s,p,h,f){return o(),e("div",null,i)}const b=t(l,[["render",r]]);export{g as __pageData,b as default}; diff --git a/assets/api_modules_features_tooltip.md.4f1ae01d.lean.js b/assets/api_modules_features_tooltip.md.4f1ae01d.lean.js deleted file mode 100644 index a926197f..00000000 --- a/assets/api_modules_features_tooltip.md.4f1ae01d.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as e,o,N as a}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Module: features/tooltips/tooltip","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/tooltip.md","lastUpdated":null}'),l={name:"api/modules/features/tooltip.md"},d=a("",47),i=[d];function r(c,n,s,p,h,f){return o(),e("div",null,i)}const b=t(l,[["render",r]]);export{g as __pageData,b as default}; diff --git a/assets/api_modules_features_tooltip.md.7e3b32e5.js b/assets/api_modules_features_tooltip.md.7e3b32e5.js new file mode 100644 index 00000000..f0c0776f --- /dev/null +++ b/assets/api_modules_features_tooltip.md.7e3b32e5.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/tooltips/tooltip","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/tooltip.md","lastUpdated":null}'),l={name:"api/modules/features/tooltip.md"},d=a('

Module: features/tooltips/tooltip ​

Interfaces ​

BaseTooltip ​

• BaseTooltip: Object

The properties that are added onto a processed TooltipOptions to create an Tooltip.

Defined in ​

profectus/src/features/tooltips/tooltip.ts:47


TooltipOptions ​

• TooltipOptions: Object

An object that configures a Tooltip.

Defined in ​

profectus/src/features/tooltips/tooltip.ts:27

Type Aliases ​

GenericTooltip ​

Ƭ GenericTooltip: Replace<Tooltip<TooltipOptions>, { direction: ProcessedComputable<Direction> ; pinnable: boolean ; pinned: Ref<boolean> | undefined }>

A type that matches any valid Tooltip object.

Defined in ​

profectus/src/features/tooltips/tooltip.ts:67


Tooltip ​

Ƭ Tooltip<T>: Replace<T & BaseTooltip, { classes: GetComputableType<T["classes"]> ; direction: GetComputableTypeWithDefault<T["direction"], Up> ; display: GetComputableType<T["display"]> ; pinnable: T["pinnable"] extends undefined ? false : T["pinnable"] ; pinned: T["pinnable"] extends true ? Ref<boolean> : undefined ; style: GetComputableType<T["style"]> ; xoffset: GetComputableType<T["xoffset"]> ; yoffset: GetComputableType<T["yoffset"]> }>

An object that represents a tooltip that appears when hovering over an element.

Type parameters ​

NameType
Textends TooltipOptions

Defined in ​

profectus/src/features/tooltips/tooltip.ts:52

Functions ​

addTooltip ​

â–¸ addTooltip<T>(element, options): Tooltip<T>

Creates a tooltip on the given element with the given options.

Type parameters ​

NameType
Textends TooltipOptions

Parameters ​

NameTypeDescription
elementVueFeatureThe renderable feature to display the tooltip on.
optionsT & ThisType<Tooltip<T>> & Partial<BaseTooltip>Tooltip options.

Returns ​

Tooltip<T>

Defined in ​

profectus/src/features/tooltips/tooltip.ts:81

Components ​

Tooltip Component ​

Props ​

NameType
elementVueFeature
display*processedPropType<CoercableComponent>(Object, String, Function)
styleprocessedPropType<StyleValue>(Object, String, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
directionprocessedPropType<Direction>(String)
xoffsetprocessedPropType<string>(String)
yoffsetprocessedPropType<string>(String)
pinnedPersistent<boolean>

Slots ​

Name
default
',45),r=[d];function i(c,n,s,p,h,f){return o(),t("div",null,r)}const g=e(l,[["render",i]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_features_tooltip.md.7e3b32e5.lean.js b/assets/api_modules_features_tooltip.md.7e3b32e5.lean.js new file mode 100644 index 00000000..93630184 --- /dev/null +++ b/assets/api_modules_features_tooltip.md.7e3b32e5.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/tooltips/tooltip","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/tooltip.md","lastUpdated":null}'),l={name:"api/modules/features/tooltip.md"},d=a("",45),r=[d];function i(c,n,s,p,h,f){return o(),t("div",null,r)}const g=e(l,[["render",i]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_features_tree.md.c82cfafa.js b/assets/api_modules_features_tree.md.c82cfafa.js new file mode 100644 index 00000000..63146ee3 --- /dev/null +++ b/assets/api_modules_features_tree.md.c82cfafa.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as r,N as a}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/trees/tree","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/tree.md","lastUpdated":null}'),o={name:"api/modules/features/tree.md"},d=a('

Module: features/trees/tree ​

Interfaces ​

BaseTree ​

• BaseTree: Object

Defined in ​

profectus/src/features/trees/tree.ts:199


BaseTreeNode ​

• BaseTreeNode: Object

The properties that are added onto a processed TreeNodeOptions to create an TreeNode.

Defined in ​

profectus/src/features/trees/tree.ts:64


TreeBranch ​

• TreeBranch: Object

Represents a branch between two nodes in a tree.

Defined in ​

profectus/src/features/trees/tree.ts:174


TreeNodeOptions ​

• TreeNodeOptions: Object

An object that configures a TreeNode.

Defined in ​

profectus/src/features/trees/tree.ts:36


TreeOptions ​

• TreeOptions: Object

An object that configures a Tree.

Defined in ​

profectus/src/features/trees/tree.ts:182

Type Aliases ​

GenericTree ​

Ƭ GenericTree: Replace<Tree<TreeOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Tree object.

Defined in ​

profectus/src/features/trees/tree.ts:231


GenericTreeNode ​

Ƭ GenericTreeNode: Replace<TreeNode<TreeNodeOptions>, { canClick: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid TreeNode object.

Defined in ​

profectus/src/features/trees/tree.ts:91


ResetPropagation ​

Ƭ ResetPropagation: (tree: GenericTree, resettingNode: GenericTreeNode) => void

Type declaration ​

â–¸ (tree, resettingNode): void

A function that is used to propagate resets through a tree.

Parameters ​
NameType
treeGenericTree
resettingNodeGenericTreeNode
Returns ​

void

Defined in ​

profectus/src/features/trees/tree.ts:285


Tree ​

Ƭ Tree<T>: Replace<T & BaseTree, { branches: GetComputableType<T["branches"]> ; leftSideNodes: GetComputableType<T["leftSideNodes"]> ; nodes: GetComputableType<T["nodes"]> ; rightSideNodes: GetComputableType<T["rightSideNodes"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that is a tree of nodes with branches between them. Contains support for reset mechanics that can propagate through the tree.

Type parameters ​

NameType
Textends TreeOptions

Defined in ​

profectus/src/features/trees/tree.ts:219


TreeNode ​

Ƭ TreeNode<T>: Replace<T & BaseTreeNode, { canClick: GetComputableTypeWithDefault<T["canClick"], true> ; classes: GetComputableType<T["classes"]> ; color: GetComputableType<T["color"]> ; display: GetComputableType<T["display"]> ; glowColor: GetComputableType<T["glowColor"]> ; mark: GetComputableType<T["mark"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a node on a tree.

Type parameters ​

NameType
Textends TreeNodeOptions

Defined in ​

profectus/src/features/trees/tree.ts:76

Variables ​

TreeNodeType ​

• Const TreeNodeType: typeof TreeNodeType

A symbol used to identify TreeNode features.

Defined in ​

profectus/src/features/trees/tree.ts:29


TreeType ​

• Const TreeType: typeof TreeType

A symbol used to identify Tree features.

Defined in ​

profectus/src/features/trees/tree.ts:31

Functions ​

branchedResetPropagation ​

â–¸ branchedResetPropagation(tree, resettingNode): void

Propagate resets down the branches of the tree.

Parameters ​

NameType
treeGenericTree
resettingNodeGenericTreeNode

Returns ​

void

Defined in ​

profectus/src/features/trees/tree.ts:314


createResourceTooltip ​

â–¸ createResourceTooltip(resource, requiredResource?, requirement?): Ref<string>

Utility for creating a tooltip for a tree node that displays a resource-based unlock requirement, and after unlock shows the amount of another resource. It sounds oddly specific, but comes up a lot.

Parameters ​

NameTypeDefault value
resourceResource<DecimalSource>undefined
requiredResourcenull | Resource<DecimalSource>null
requirementComputable<DecimalSource>0

Returns ​

Ref<string>

Defined in ​

profectus/src/features/trees/tree.ts:353


createTree ​

â–¸ createTree<T>(optionsFunc): Tree<T>

Lazily creates a tree with the given options.

Type parameters ​

NameType
Textends TreeOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseTree, GenericTree>Tree options.

Returns ​

Tree<T>

Defined in ​

profectus/src/features/trees/tree.ts:242


createTreeNode ​

â–¸ createTreeNode<T>(optionsFunc?): TreeNode<T>

Lazily creates a tree node with the given options.

Type parameters ​

NameType
Textends TreeNodeOptions

Parameters ​

NameTypeDescription
optionsFunc?OptionsFunc<T, BaseTreeNode, GenericTreeNode>Tree Node options.

Returns ​

TreeNode<T>

Defined in ​

profectus/src/features/trees/tree.ts:103


defaultResetPropagation ​

â–¸ defaultResetPropagation(tree, resettingNode): void

Propagate resets down the tree by resetting every node in a lower row.

Parameters ​

NameType
treeGenericTree
resettingNodeGenericTreeNode

Returns ​

void

Defined in ​

profectus/src/features/trees/tree.ts:290


invertedResetPropagation ​

â–¸ invertedResetPropagation(tree, resettingNode): void

Propagate resets down the tree by resetting every node in a lower row.

Parameters ​

NameType
treeGenericTree
resettingNodeGenericTreeNode

Returns ​

void

Defined in ​

profectus/src/features/trees/tree.ts:302

Components ​

Tree Component ​

Props ​

NameType
nodes*processedPropType<GenericTreeNode[][]>(Array)
leftSideNodesprocessedPropType<GenericTreeNode[]>(Array)
rightSideNodesprocessedPropType<GenericTreeNode[]>(Array)
branchesprocessedPropType<TreeBranch[]>(Array)

TreeNode Component ​

Props ​

NameType
displayprocessedPropType<CoercableComponent>(Object, String, Function)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
onClick(e?: MouseEvent | TouchEvent) => void
onHoldVoidFunction
colorprocessedPropType<string>(String)
glowColorprocessedPropType<string>(String)
canClick*processedPropType<boolean>(Boolean)
markprocessedPropType<boolean | string>(Boolean, String)
id*string
',153),c=[d];function n(l,s,i,h,f,p){return r(),t("div",null,c)}const g=e(o,[["render",n]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_features_tree.md.c82cfafa.lean.js b/assets/api_modules_features_tree.md.c82cfafa.lean.js new file mode 100644 index 00000000..a468fca8 --- /dev/null +++ b/assets/api_modules_features_tree.md.c82cfafa.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as r,N as a}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: features/trees/tree","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/tree.md","lastUpdated":null}'),o={name:"api/modules/features/tree.md"},d=a("",153),c=[d];function n(l,s,i,h,f,p){return r(),t("div",null,c)}const g=e(o,[["render",n]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_features_tree.md.ed4d7a45.js b/assets/api_modules_features_tree.md.ed4d7a45.js deleted file mode 100644 index 6ae5dcd2..00000000 --- a/assets/api_modules_features_tree.md.ed4d7a45.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as e,o as d,N as l}from"./chunks/framework.0799945b.js";const h=JSON.parse('{"title":"Module: features/trees/tree","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/tree.md","lastUpdated":null}'),o={name:"api/modules/features/tree.md"},r=l('

Module: features/trees/tree ​

Interfaces ​

BaseTree ​

• BaseTree: Object

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
isResettingRef<boolean>A flag that is true while the reset is still propagating through the tree.
linksRef<Link[]>The link objects for each of the branches of the tree.
reset(node: GenericTreeNode) => voidCause a reset on this node and propagate it through the tree according to resetPropagation.
resettingNodeRef<null | GenericTreeNode>A reference to the node that caused the currently propagating reset.
typetypeof TreeTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/trees/tree.ts:199


BaseTreeNode ​

• BaseTreeNode: Object

The properties that are added onto a processed TreeNodeOptions to create an TreeNode.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
typetypeof TreeNodeTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/trees/tree.ts:64


TreeBranch ​

• TreeBranch: Object

Represents a branch between two nodes in a tree.

NameTypeDescription
accent-height?Numberish-
accumulate?"none" | "sum"-
additive?"sum" | "replace"-
alignment-baseline?"alphabetic" | "hanging" | "ideographic" | "mathematical" | "auto" | "baseline" | "before-edge" | "text-before-edge" | "middle" | "central" | "after-edge" | "text-after-edge" | "inherit"-
allowReorder?"no" | "yes"-
alphabetic?Numberish-
amplitude?Numberish-
arabic-form?"initial" | "medial" | "terminal" | "isolated"-
aria-activedescendant?stringIdentifies the currently active element when DOM focus is on a composite widget, textbox, group, or application.
aria-atomic?BooleanishIndicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute.
aria-autocomplete?"none" | "inline" | "list" | "both"Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be presented if they are made.
aria-busy?BooleanishIndicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user.
aria-checked?Booleanish | "mixed"Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. See - aria-pressed - aria-selected.
aria-colcount?NumberishDefines the total number of columns in a table, grid, or treegrid. See aria-colindex.
aria-colindex?NumberishDefines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid. See - aria-colcount - aria-colspan.
aria-colspan?NumberishDefines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid. See - aria-colindex - aria-rowspan.
aria-controls?stringIdentifies the element (or elements) whose contents or presence are controlled by the current element. See aria-owns.
aria-current?"time" | Booleanish | "page" | "step" | "location" | "date"Indicates the element that represents the current item within a container or set of related elements.
aria-describedby?stringIdentifies the element (or elements) that describes the object. See aria-labelledby
aria-details?stringIdentifies the element that provides a detailed, extended description for the object. See aria-describedby.
aria-disabled?BooleanishIndicates that the element is perceivable but disabled, so it is not editable or otherwise operable. See - aria-hidden - aria-readonly.
aria-dropeffect?"none" | "copy" | "execute" | "link" | "move" | "popup"Indicates what functions can be performed when a dragged object is released on the drop target. Deprecated in ARIA 1.1
aria-errormessage?stringIdentifies the element that provides an error message for the object. See - aria-invalid - aria-describedby.
aria-expanded?BooleanishIndicates whether the element, or another grouping element it controls, is currently expanded or collapsed.
aria-flowto?stringIdentifies the next element (or elements) in an alternate reading order of content which, at the user's discretion, allows assistive technology to override the general default of reading in document source order.
aria-grabbed?BooleanishIndicates an element's "grabbed" state in a drag-and-drop operation. Deprecated in ARIA 1.1
aria-haspopup?"tree" | Booleanish | "menu" | "listbox" | "grid" | "dialog"Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element.
aria-hidden?BooleanishIndicates whether the element is exposed to an accessibility API. See aria-disabled.
aria-invalid?Booleanish | "grammar" | "spelling"Indicates the entered value does not conform to the format expected by the application. See aria-errormessage.
aria-keyshortcuts?stringIndicates keyboard shortcuts that an author has implemented to activate or give focus to an element.
aria-label?stringDefines a string value that labels the current element. See aria-labelledby.
aria-labelledby?stringIdentifies the element (or elements) that labels the current element. See aria-describedby.
aria-level?NumberishDefines the hierarchical level of an element within a structure.
aria-live?"off" | "assertive" | "polite"Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region.
aria-modal?BooleanishIndicates whether an element is modal when displayed.
aria-multiline?BooleanishIndicates whether a text box accepts multiple lines of input or only a single line.
aria-multiselectable?BooleanishIndicates that the user may select more than one item from the current selectable descendants.
aria-orientation?"horizontal" | "vertical"Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous.
aria-owns?stringIdentifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship between DOM elements where the DOM hierarchy cannot be used to represent the relationship. See aria-controls.
aria-placeholder?stringDefines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. A hint could be a sample value or a brief description of the expected format.
aria-posinset?NumberishDefines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. See aria-setsize.
aria-pressed?Booleanish | "mixed"Indicates the current "pressed" state of toggle buttons. See - aria-checked - aria-selected.
aria-readonly?BooleanishIndicates that the element is not editable, but is otherwise operable. See aria-disabled.
aria-relevant?"additions" | "additions text" | "all" | "removals" | "text"Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. See aria-atomic.
aria-required?BooleanishIndicates that user input is required on the element before a form may be submitted.
aria-roledescription?stringDefines a human-readable, author-localized description for the role of an element.
aria-rowcount?NumberishDefines the total number of rows in a table, grid, or treegrid. See aria-rowindex.
aria-rowindex?NumberishDefines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid. See - aria-rowcount - aria-rowspan.
aria-rowspan?NumberishDefines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid. See - aria-rowindex - aria-colspan.
aria-selected?BooleanishIndicates the current "selected" state of various widgets. See - aria-checked - aria-pressed.
aria-setsize?NumberishDefines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. See aria-posinset.
aria-sort?"none" | "ascending" | "descending" | "other"Indicates if items in a table or grid are sorted in ascending or descending order.
aria-valuemax?NumberishDefines the maximum allowed value for a range widget.
aria-valuemin?NumberishDefines the minimum allowed value for a range widget.
aria-valuenow?NumberishDefines the current value for a range widget. See aria-valuetext.
aria-valuetext?stringDefines the human readable text alternative of aria-valuenow for a range widget.
ascent?Numberish-
attributeName?string-
attributeType?string-
autoReverse?Numberish-
azimuth?Numberish-
baseFrequency?Numberish-
baseProfile?Numberish-
baseline-shift?Numberish-
bbox?Numberish-
begin?Numberish-
bias?Numberish-
by?Numberish-
calcMode?Numberish-
cap-height?Numberish-
class?anySVG Styling Attributes See https://www.w3.org/TR/SVG/styling.html#ElementSpecificStyling
clip?Numberish-
clip-path?string-
clip-rule?Numberish-
clipPathUnits?Numberish-
color?string-
color-interpolation?Numberish-
color-interpolation-filters?"auto" | "inherit" | "sRGB" | "linearRGB"-
color-profile?Numberish-
color-rendering?Numberish-
contentScriptType?Numberish-
contentStyleType?Numberish-
cursor?Numberish-
cx?Numberish-
cy?Numberish-
d?string-
decelerate?Numberish-
descent?Numberish-
diffuseConstant?Numberish-
direction?Numberish-
display?Numberish-
divisor?Numberish-
dominant-baseline?Numberish-
dur?Numberish-
dx?Numberish-
dy?Numberish-
edgeMode?Numberish-
elevation?Numberish-
enable-background?Numberish-
end?Numberish-
endNodeGenericTreeNode-
exponent?Numberish-
externalResourcesRequired?Numberish-
fill?string-
fill-opacity?Numberish-
fill-rule?"inherit" | "nonzero" | "evenodd"-
filter?string-
filterRes?Numberish-
filterUnits?Numberish-
flood-color?Numberish-
flood-opacity?Numberish-
focusable?Numberish-
font-family?string-
font-size?Numberish-
font-size-adjust?Numberish-
font-stretch?Numberish-
font-style?Numberish-
font-variant?Numberish-
font-weight?Numberish-
format?Numberish-
from?Numberish-
fx?Numberish-
fy?Numberish-
g1?Numberish-
g2?Numberish-
glyph-name?Numberish-
glyph-orientation-horizontal?Numberish-
glyph-orientation-vertical?Numberish-
glyphRef?Numberish-
gradientTransform?string-
gradientUnits?string-
hanging?Numberish-
height?Numberish-
horiz-adv-x?Numberish-
horiz-origin-x?Numberish-
href?string-
id?string-
ideographic?Numberish-
image-rendering?Numberish-
in?string-
in2?Numberish-
innerHTML?string-
intercept?Numberish-
k?Numberish-
k1?Numberish-
k2?Numberish-
k3?Numberish-
k4?Numberish-
kernelMatrix?Numberish-
kernelUnitLength?Numberish-
kerning?Numberish-
keyPoints?Numberish-
keySplines?Numberish-
keyTimes?Numberish-
lang?string-
lengthAdjust?Numberish-
letter-spacing?Numberish-
lighting-color?Numberish-
limitingConeAngle?Numberish-
local?Numberish-
marker-end?string-
marker-mid?string-
marker-start?string-
markerHeight?Numberish-
markerUnits?Numberish-
markerWidth?Numberish-
mask?string-
maskContentUnits?Numberish-
maskUnits?Numberish-
mathematical?Numberish-
max?Numberish-
media?string-
method?string-
min?Numberish-
mode?Numberish-
name?string-
numOctaves?Numberish-
offset?Numberish-
offsetEnd?Position-
offsetStart?Position-
onAbort?(payload: Event) => void-
onAnimationend?(payload: AnimationEvent) => void-
onAnimationiteration?(payload: AnimationEvent) => void-
onAnimationstart?(payload: AnimationEvent) => void-
onAuxclick?(payload: MouseEvent) => void-
onBeforeinput?(payload: Event) => void-
onBlur?(payload: FocusEvent) => void-
onCanplay?(payload: Event) => void-
onCanplaythrough?(payload: Event) => void-
onChange?(payload: Event) => void-
onClick?(payload: MouseEvent) => void-
onCompositionend?(payload: CompositionEvent) => void-
onCompositionstart?(payload: CompositionEvent) => void-
onCompositionupdate?(payload: CompositionEvent) => void-
onContextmenu?(payload: MouseEvent) => void-
onCopy?(payload: ClipboardEvent) => void-
onCut?(payload: ClipboardEvent) => void-
onDblclick?(payload: MouseEvent) => void-
onDrag?(payload: DragEvent) => void-
onDragend?(payload: DragEvent) => void-
onDragenter?(payload: DragEvent) => void-
onDragexit?(payload: DragEvent) => void-
onDragleave?(payload: DragEvent) => void-
onDragover?(payload: DragEvent) => void-
onDragstart?(payload: DragEvent) => void-
onDrop?(payload: DragEvent) => void-
onDurationchange?(payload: Event) => void-
onEmptied?(payload: Event) => void-
onEncrypted?(payload: Event) => void-
onEnded?(payload: Event) => void-
onError?(payload: Event) => void-
onFocus?(payload: FocusEvent) => void-
onFocusin?(payload: FocusEvent) => void-
onFocusout?(payload: FocusEvent) => void-
onInput?(payload: Event) => void-
onInvalid?(payload: Event) => void-
onKeydown?(payload: KeyboardEvent) => void-
onKeypress?(payload: KeyboardEvent) => void-
onKeyup?(payload: KeyboardEvent) => void-
onLoad?(payload: Event) => void-
onLoadeddata?(payload: Event) => void-
onLoadedmetadata?(payload: Event) => void-
onLoadstart?(payload: Event) => void-
onMousedown?(payload: MouseEvent) => void-
onMouseenter?(payload: MouseEvent) => void-
onMouseleave?(payload: MouseEvent) => void-
onMousemove?(payload: MouseEvent) => void-
onMouseout?(payload: MouseEvent) => void-
onMouseover?(payload: MouseEvent) => void-
onMouseup?(payload: MouseEvent) => void-
onPaste?(payload: ClipboardEvent) => void-
onPause?(payload: Event) => void-
onPlay?(payload: Event) => void-
onPlaying?(payload: Event) => void-
onPointercancel?(payload: PointerEvent) => void-
onPointerdown?(payload: PointerEvent) => void-
onPointerenter?(payload: PointerEvent) => void-
onPointerleave?(payload: PointerEvent) => void-
onPointermove?(payload: PointerEvent) => void-
onPointerout?(payload: PointerEvent) => void-
onPointerover?(payload: PointerEvent) => void-
onPointerup?(payload: PointerEvent) => void-
onProgress?(payload: Event) => void-
onRatechange?(payload: Event) => void-
onReset?(payload: Event) => void-
onScroll?(payload: UIEvent) => void-
onSeeked?(payload: Event) => void-
onSeeking?(payload: Event) => void-
onSelect?(payload: Event) => void-
onStalled?(payload: Event) => void-
onSubmit?(payload: Event) => void-
onSuspend?(payload: Event) => void-
onTimeupdate?(payload: Event) => void-
onTouchcancel?(payload: TouchEvent) => void-
onTouchend?(payload: TouchEvent) => void-
onTouchmove?(payload: TouchEvent) => void-
onTouchstart?(payload: TouchEvent) => void-
onTransitionend?(payload: TransitionEvent) => void-
onTransitionstart?(payload: TransitionEvent) => void-
onVolumechange?(payload: Event) => void-
onWaiting?(payload: Event) => void-
onWheel?(payload: WheelEvent) => void-
opacity?Numberish-
operator?Numberish-
order?Numberish-
orient?Numberish-
orientation?Numberish-
origin?Numberish-
overflow?Numberish-
overline-position?Numberish-
overline-thickness?Numberish-
paint-order?Numberish-
panose-1?Numberish-
pathLength?Numberish-
patternContentUnits?string-
patternTransform?Numberish-
patternUnits?string-
pointer-events?Numberish-
points?string-
pointsAtX?Numberish-
pointsAtY?Numberish-
pointsAtZ?Numberish-
preserveAlpha?Numberish-
preserveAspectRatio?string-
primitiveUnits?Numberish-
r?Numberish-
radius?Numberish-
refX?Numberish-
refY?Numberish-
renderingIntent?Numberish-
repeatCount?Numberish-
repeatDur?Numberish-
requiredExtensions?Numberish-
requiredFeatures?Numberish-
restart?Numberish-
result?string-
role?string-
rotate?Numberish-
rx?Numberish-
ry?Numberish-
scale?Numberish-
seed?Numberish-
shape-rendering?Numberish-
slope?Numberish-
spacing?Numberish-
specularConstant?Numberish-
specularExponent?Numberish-
speed?Numberish-
spreadMethod?string-
startNodeGenericTreeNode-
startOffset?Numberish-
stdDeviation?Numberish-
stemh?Numberish-
stemv?Numberish-
stitchTiles?Numberish-
stop-color?string-
stop-opacity?Numberish-
strikethrough-position?Numberish-
strikethrough-thickness?Numberish-
string?Numberish-
stroke?string-
stroke-dasharray?Numberish-
stroke-dashoffset?Numberish-
stroke-linecap?"inherit" | "butt" | "round" | "square"-
stroke-linejoin?"inherit" | "round" | "miter" | "bevel"-
stroke-miterlimit?Numberish-
stroke-opacity?Numberish-
stroke-width?Numberish-
style?string | CSSProperties-
surfaceScale?Numberish-
systemLanguage?Numberish-
tabindex?Numberish-
tableValues?Numberish-
target?string-
targetX?Numberish-
targetY?Numberish-
text-anchor?string-
text-decoration?Numberish-
text-rendering?Numberish-
textLength?Numberish-
to?Numberish-
transform?string-
type?string-
u1?Numberish-
u2?Numberish-
underline-position?Numberish-
underline-thickness?Numberish-
unicode?Numberish-
unicode-bidi?Numberish-
unicode-range?Numberish-
unitsPer-em?Numberish-
v-alphabetic?Numberish-
v-hanging?Numberish-
v-ideographic?Numberish-
v-mathematical?Numberish-
values?string-
vector-effect?Numberish-
version?string-
vert-adv-y?Numberish-
vert-origin-x?Numberish-
vert-origin-y?Numberish-
viewBox?string-
viewTarget?Numberish-
visibility?Numberish-
width?Numberish-
widths?Numberish-
word-spacing?Numberish-
writing-mode?Numberish-
x?Numberish-
x-height?Numberish-
x1?Numberish-
x2?Numberish-
xChannelSelector?string-
xlinkActuate?string-
xlinkArcrole?string-
xlinkHref?string-
xlinkRole?string-
xlinkShow?string-
xlinkTitle?string-
xlinkType?string-
xmlns?string-
y?Numberish-
y1?Numberish-
y2?Numberish-
yChannelSelector?string-
z?Numberish-
zoomAndPan?string-

Defined in ​

profectus/src/features/trees/tree.ts:174


TreeNodeOptions ​

• TreeNodeOptions: Object

An object that configures a TreeNode.

NameTypeDescription
canClick?Computable<boolean>Whether or not this tree node can be clicked.
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
color?Computable<string>The background color for this node.
display?Computable<CoercableComponent>The label to display on this tree node.
glowColor?Computable<string>The color of the glow effect shown to notify the user there's something to do with this node.
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
onClick?(e?: MouseEvent | TouchEvent) => voidA function that is called when the tree node is clicked.
onHold?VoidFunctionA function that is called when the tree node is held down.
reset?GenericResetA reset object attached to this node, used for propagating resets through the tree.
style?Computable<StyleValue>CSS to apply to this feature.
visibility?Computable<boolean | Visibility>Whether this tree node should be visible.

Defined in ​

profectus/src/features/trees/tree.ts:36


TreeOptions ​

• TreeOptions: Object

An object that configures a Tree.

NameTypeDescription
branches?Computable<TreeBranch[]>The branches between nodes within this tree.
leftSideNodes?Computable<GenericTreeNode[]>Nodes to show on the left side of the tree.
nodesComputable<GenericTreeNode[][]>The nodes within the tree, in a 2D array.
onReset?(node: GenericTreeNode) => voidA function that is called when a node within the tree is reset.
resetPropagation?ResetPropagationHow to propagate resets through the tree.
rightSideNodes?Computable<GenericTreeNode[]>Nodes to show on the right side of the tree.
visibility?Computable<boolean | Visibility>Whether this clickable should be visible.

Defined in ​

profectus/src/features/trees/tree.ts:182

Type Aliases ​

GenericTree ​

Ƭ GenericTree: Replace<Tree<TreeOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Tree object.

Defined in ​

profectus/src/features/trees/tree.ts:231


GenericTreeNode ​

Ƭ GenericTreeNode: Replace<TreeNode<TreeNodeOptions>, { canClick: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid TreeNode object.

Defined in ​

profectus/src/features/trees/tree.ts:91


ResetPropagation ​

Ƭ ResetPropagation: (tree: GenericTree, resettingNode: GenericTreeNode) => void

Type declaration ​

â–¸ (tree, resettingNode): void

A function that is used to propagate resets through a tree.

Parameters ​
NameType
treeGenericTree
resettingNodeGenericTreeNode
Returns ​

void

Defined in ​

profectus/src/features/trees/tree.ts:285


Tree ​

Ƭ Tree<T>: Replace<T & BaseTree, { branches: GetComputableType<T["branches"]> ; leftSideNodes: GetComputableType<T["leftSideNodes"]> ; nodes: GetComputableType<T["nodes"]> ; rightSideNodes: GetComputableType<T["rightSideNodes"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that is a tree of nodes with branches between them. Contains support for reset mechanics that can propagate through the tree.

Type parameters ​

NameType
Textends TreeOptions

Defined in ​

profectus/src/features/trees/tree.ts:219


TreeNode ​

Ƭ TreeNode<T>: Replace<T & BaseTreeNode, { canClick: GetComputableTypeWithDefault<T["canClick"], true> ; classes: GetComputableType<T["classes"]> ; color: GetComputableType<T["color"]> ; display: GetComputableType<T["display"]> ; glowColor: GetComputableType<T["glowColor"]> ; mark: GetComputableType<T["mark"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a node on a tree.

Type parameters ​

NameType
Textends TreeNodeOptions

Defined in ​

profectus/src/features/trees/tree.ts:76

Variables ​

TreeNodeType ​

• Const TreeNodeType: typeof TreeNodeType

A symbol used to identify TreeNode features.

Defined in ​

profectus/src/features/trees/tree.ts:29


TreeType ​

• Const TreeType: typeof TreeType

A symbol used to identify Tree features.

Defined in ​

profectus/src/features/trees/tree.ts:31

Functions ​

branchedResetPropagation ​

â–¸ branchedResetPropagation(tree, resettingNode): void

Propagate resets down the branches of the tree.

Parameters ​
NameType
treeGenericTree
resettingNodeGenericTreeNode
Returns ​

void

Defined in ​

profectus/src/features/trees/tree.ts:314


createResourceTooltip ​

â–¸ createResourceTooltip(resource, requiredResource?, requirement?): Ref<string>

Utility for creating a tooltip for a tree node that displays a resource-based unlock requirement, and after unlock shows the amount of another resource. It sounds oddly specific, but comes up a lot.

Parameters ​
NameTypeDefault value
resourceResource<DecimalSource>undefined
requiredResourcenull | Resource<DecimalSource>null
requirementComputable<DecimalSource>0
Returns ​

Ref<string>

Defined in ​

profectus/src/features/trees/tree.ts:353


createTree ​

â–¸ createTree<T>(optionsFunc): Tree<T>

Lazily creates a tree with the given options.

Type parameters ​
NameType
Textends TreeOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseTree, GenericTree>Tree options.
Returns ​

Tree<T>

Defined in ​

profectus/src/features/trees/tree.ts:242


createTreeNode ​

â–¸ createTreeNode<T>(optionsFunc?): TreeNode<T>

Lazily creates a tree node with the given options.

Type parameters ​
NameType
Textends TreeNodeOptions
Parameters ​
NameTypeDescription
optionsFunc?OptionsFunc<T, BaseTreeNode, GenericTreeNode>Tree Node options.
Returns ​

TreeNode<T>

Defined in ​

profectus/src/features/trees/tree.ts:103


defaultResetPropagation ​

â–¸ defaultResetPropagation(tree, resettingNode): void

Propagate resets down the tree by resetting every node in a lower row.

Parameters ​
NameType
treeGenericTree
resettingNodeGenericTreeNode
Returns ​

void

Defined in ​

profectus/src/features/trees/tree.ts:290


invertedResetPropagation ​

â–¸ invertedResetPropagation(tree, resettingNode): void

Propagate resets down the tree by resetting every node in a lower row.

Parameters ​
NameType
treeGenericTree
resettingNodeGenericTreeNode
Returns ​

void

Defined in ​

profectus/src/features/trees/tree.ts:302

Components ​

Tree Component ​

Props ​

NameType
nodes*processedPropType<GenericTreeNode[][]>(Array)
leftSideNodesprocessedPropType<GenericTreeNode[]>(Array)
rightSideNodesprocessedPropType<GenericTreeNode[]>(Array)
branchesprocessedPropType<TreeBranch[]>(Array)

TreeNode Component ​

Props ​

NameType
displayprocessedPropType<CoercableComponent>(Object, String, Function)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
onClick(e?: MouseEvent | TouchEvent) => void
onHoldVoidFunction
colorprocessedPropType<string>(String)
glowColorprocessedPropType<string>(String)
canClick*processedPropType<boolean>(Boolean)
markprocessedPropType<boolean | string>(Boolean, String)
id*string
',158),a=[r];function c(n,i,s,g,f,y){return d(),e("div",null,a)}const u=t(o,[["render",c]]);export{h as __pageData,u as default}; diff --git a/assets/api_modules_features_tree.md.ed4d7a45.lean.js b/assets/api_modules_features_tree.md.ed4d7a45.lean.js deleted file mode 100644 index e328cd47..00000000 --- a/assets/api_modules_features_tree.md.ed4d7a45.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as e,o as d,N as l}from"./chunks/framework.0799945b.js";const h=JSON.parse('{"title":"Module: features/trees/tree","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/tree.md","lastUpdated":null}'),o={name:"api/modules/features/tree.md"},r=l("",158),a=[r];function c(n,i,s,g,f,y){return d(),e("div",null,a)}const u=t(o,[["render",c]]);export{h as __pageData,u as default}; diff --git a/assets/api_modules_features_upgrade.md.0ba043c0.js b/assets/api_modules_features_upgrade.md.0ba043c0.js new file mode 100644 index 00000000..cf0eadaa --- /dev/null +++ b/assets/api_modules_features_upgrade.md.0ba043c0.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Module: features/upgrades/upgrade","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/upgrade.md","lastUpdated":null}'),d={name:"api/modules/features/upgrade.md"},o=r('

Module: features/upgrades/upgrade ​

Interfaces ​

BaseUpgrade ​

• BaseUpgrade: Object

The properties that are added onto a processed UpgradeOptions to create an Upgrade.

Defined in ​

profectus/src/features/upgrades/upgrade.ts:75


UpgradeOptions ​

• UpgradeOptions: Object

An object that configures a Upgrade.

Defined in ​

profectus/src/features/upgrades/upgrade.ts:45

Type Aliases ​

GenericUpgrade ​

Ƭ GenericUpgrade: Replace<Upgrade<UpgradeOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Upgrade object.

Defined in ​

profectus/src/features/upgrades/upgrade.ts:106


Upgrade ​

Ƭ Upgrade<T>: Replace<T & BaseUpgrade, { classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; mark: GetComputableType<T["mark"]> ; requirements: GetComputableType<T["requirements"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that can be purchased a single time.

Type parameters ​

NameType
Textends UpgradeOptions

Defined in ​

profectus/src/features/upgrades/upgrade.ts:93

Variables ​

UpgradeType ​

• Const UpgradeType: typeof UpgradeType

A symbol used to identify Upgrade features.

Defined in ​

profectus/src/features/upgrades/upgrade.ts:40

Functions ​

createUpgrade ​

â–¸ createUpgrade<T>(optionsFunc): Upgrade<T>

Lazily creates an upgrade with the given options.

Type parameters ​

NameType
Textends UpgradeOptions

Parameters ​

NameTypeDescription
optionsFuncOptionsFunc<T, BaseUpgrade, GenericUpgrade>Upgrade options.

Returns ​

Upgrade<T>

Defined in ​

profectus/src/features/upgrades/upgrade.ts:117


setupAutoPurchase ​

â–¸ setupAutoPurchase(layer, autoActive, upgrades?): void

Utility to auto purchase a list of upgrades whenever they're affordable.

Parameters ​

NameTypeDefault valueDescription
layerGenericLayerundefinedThe layer the upgrades are apart of
autoActiveComputable<boolean>undefinedWhether or not the upgrades should currently be auto-purchasing
upgradesGenericUpgrade[][]The specific upgrades to upgrade. If unspecified, uses all upgrades on the layer.

Returns ​

void

Defined in ​

profectus/src/features/upgrades/upgrade.ts:190

Components ​

Upgrade Component ​

Props ​

NameType
display*processedPropType<UnwrapRef<GenericUpgrade["display"]>>(String, Object, Function)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
requirements*Requirements
canPurchase*processedPropType<boolean>(Boolean)
bought*processedPropType<boolean>(Boolean)
markprocessedPropType<boolean | string>(Boolean, String)
id*string
purchase*VoidFunction
',59),l=[o];function s(c,i,n,p,u,g){return a(),t("div",null,l)}const b=e(d,[["render",s]]);export{f as __pageData,b as default}; diff --git a/assets/api_modules_features_upgrade.md.0ba043c0.lean.js b/assets/api_modules_features_upgrade.md.0ba043c0.lean.js new file mode 100644 index 00000000..a1843569 --- /dev/null +++ b/assets/api_modules_features_upgrade.md.0ba043c0.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Module: features/upgrades/upgrade","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/upgrade.md","lastUpdated":null}'),d={name:"api/modules/features/upgrade.md"},o=r("",59),l=[o];function s(c,i,n,p,u,g){return a(),t("div",null,l)}const b=e(d,[["render",s]]);export{f as __pageData,b as default}; diff --git a/assets/api_modules_features_upgrade.md.1354b683.js b/assets/api_modules_features_upgrade.md.1354b683.js deleted file mode 100644 index c8e975d9..00000000 --- a/assets/api_modules_features_upgrade.md.1354b683.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as d}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Module: features/upgrades/upgrade","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/upgrade.md","lastUpdated":null}'),r={name:"api/modules/features/upgrade.md"},o=d('

Module: features/upgrades/upgrade ​

Interfaces ​

BaseUpgrade ​

• BaseUpgrade: Object

The properties that are added onto a processed UpgradeOptions to create an Upgrade.

NameTypeDescription
[Component]GenericComponentThe Vue component used to render this feature.
[GatherProps]() => Record<string, unknown>A function to gather the props the vue component requires for this feature.
boughtPersistent<boolean>Whether or not this upgrade has been purchased.
canPurchaseRef<boolean>Whether or not the upgrade can currently be purchased.
idstringAn auto-generated ID for identifying features that appear in the DOM. Will not persist between refreshes or updates.
purchaseVoidFunctionPurchase the upgrade
typetypeof UpgradeTypeA symbol that helps identify features of the same type.

Defined in ​

profectus/src/features/upgrades/upgrade.ts:75


UpgradeOptions ​

• UpgradeOptions: Object

An object that configures a Upgrade.

NameTypeDescription
classes?Computable<Record<string, boolean>>Dictionary of CSS classes to apply to this feature.
display?Computable<CoercableComponent | { description: CoercableComponent ; effectDisplay?: CoercableComponent ; title?: CoercableComponent }>The display to use for this clickable.
mark?Computable<string | boolean>Shows a marker on the corner of the feature.
onPurchase?VoidFunctionA function that is called when the upgrade is purchased.
requirementsRequirementsThe requirements to purchase this upgrade.
style?Computable<StyleValue>CSS to apply to this feature.
visibility?Computable<boolean | Visibility>Whether this clickable should be visible.

Defined in ​

profectus/src/features/upgrades/upgrade.ts:45

Type Aliases ​

GenericUpgrade ​

Ƭ GenericUpgrade: Replace<Upgrade<UpgradeOptions>, { visibility: ProcessedComputable<Visibility | boolean> }>

A type that matches any valid Upgrade object.

Defined in ​

profectus/src/features/upgrades/upgrade.ts:106


Upgrade ​

Ƭ Upgrade<T>: Replace<T & BaseUpgrade, { classes: GetComputableType<T["classes"]> ; display: GetComputableType<T["display"]> ; mark: GetComputableType<T["mark"]> ; requirements: GetComputableType<T["requirements"]> ; style: GetComputableType<T["style"]> ; visibility: GetComputableTypeWithDefault<T["visibility"], Visible> }>

An object that represents a feature that can be purchased a single time.

Type parameters ​

NameType
Textends UpgradeOptions

Defined in ​

profectus/src/features/upgrades/upgrade.ts:93

Variables ​

UpgradeType ​

• Const UpgradeType: typeof UpgradeType

A symbol used to identify Upgrade features.

Defined in ​

profectus/src/features/upgrades/upgrade.ts:40

Functions ​

createUpgrade ​

â–¸ createUpgrade<T>(optionsFunc): Upgrade<T>

Lazily creates an upgrade with the given options.

Type parameters ​
NameType
Textends UpgradeOptions
Parameters ​
NameTypeDescription
optionsFuncOptionsFunc<T, BaseUpgrade, GenericUpgrade>Upgrade options.
Returns ​

Upgrade<T>

Defined in ​

profectus/src/features/upgrades/upgrade.ts:117


setupAutoPurchase ​

â–¸ setupAutoPurchase(layer, autoActive, upgrades?): void

Utility to auto purchase a list of upgrades whenever they're affordable.

Parameters ​
NameTypeDefault valueDescription
layerGenericLayerundefinedThe layer the upgrades are apart of
autoActiveComputable<boolean>undefinedWhether or not the upgrades should currently be auto-purchasing
upgradesGenericUpgrade[][]The specific upgrades to upgrade. If unspecified, uses all upgrades on the layer.
Returns ​

void

Defined in ​

profectus/src/features/upgrades/upgrade.ts:190

Components ​

Upgrade Component ​

Props ​

NameType
display*processedPropType<UnwrapRef<GenericUpgrade["display"]>>(String, Object, Function)
visibility*processedPropType<Visibility | boolean>(Number, Boolean)
styleprocessedPropType<StyleValue>(String, Object, Array)
classesprocessedPropType<Record<string, boolean>>(Object)
requirements*Requirements
canPurchase*processedPropType<boolean>(Boolean)
bought*processedPropType<boolean>(Boolean)
markprocessedPropType<boolean | string>(Boolean, String)
id*string
purchase*VoidFunction
',61),l=[o];function c(s,n,i,p,u,g){return a(),t("div",null,l)}const y=e(r,[["render",c]]);export{f as __pageData,y as default}; diff --git a/assets/api_modules_features_upgrade.md.1354b683.lean.js b/assets/api_modules_features_upgrade.md.1354b683.lean.js deleted file mode 100644 index 517e4ab1..00000000 --- a/assets/api_modules_features_upgrade.md.1354b683.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as d}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Module: features/upgrades/upgrade","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/features/upgrade.md","lastUpdated":null}'),r={name:"api/modules/features/upgrade.md"},o=d("",61),l=[o];function c(s,n,i,p,u,g){return a(),t("div",null,l)}const y=e(r,[["render",c]]);export{f as __pageData,y as default}; diff --git a/assets/api_modules_game_events.md.597f47e5.js b/assets/api_modules_game_events.md.597f47e5.js deleted file mode 100644 index b0d602a2..00000000 --- a/assets/api_modules_game_events.md.597f47e5.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const p=JSON.parse('{"title":"Module: game/events","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/events.md","lastUpdated":null}'),d={name:"api/modules/game/events.md"},l=o('

Module: game/events ​

Interfaces ​

GlobalEvents ​

• GlobalEvents: Object

All types of events able to be sent or emitted from the global event bus.

NameTypeDescription
addLayer(layer: GenericLayer, saveData: Record<string, unknown>) => voidSent whenever a layer is added.
fontsLoadedVoidFunctionUsing document.fonts.ready returns too early on firefox, so we use document.fonts.onloadingdone instead, which doesn't accept multiple listeners. This event fires when that callback is called.
gameWonVoidFunctionSent when the game has ended.
loadSettings(settings: Partial<Settings>) => voidSent when constructing the Settings object. Use it to add default values for custom properties to the object. See features/features.setDefault for setting default values.
onLoadVoidFunctionSent whenever a save has finished loading. Happens when the page is opened and upon switching saves in the saves manager.
removeLayer(layer: GenericLayer) => voidSent whenever a layer is removed.
reset(reset: GenericReset) => void-
setupVue(vue: App<any>) => voidSent when setting up the Vue Application instance. Use it to register global components or otherwise set up things that should affect Vue globally.
update(diff: number, trueDiff: number) => voidSent every game tick. Runs the life cycle of the project.

Defined in ​

profectus/src/game/events.ts:7

profectus/src/features/reset.ts:116

Variables ​

globalBus ​

• Const globalBus: Emitter<GlobalEvents>

A global event bus for hooking into GlobalEvents.

Defined in ​

profectus/src/game/events.ts:55

',15),n=[l];function s(r,c,i,g,f,h){return a(),t("div",null,n)}const b=e(d,[["render",s]]);export{p as __pageData,b as default}; diff --git a/assets/api_modules_game_events.md.597f47e5.lean.js b/assets/api_modules_game_events.md.597f47e5.lean.js deleted file mode 100644 index ccf03b4e..00000000 --- a/assets/api_modules_game_events.md.597f47e5.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const p=JSON.parse('{"title":"Module: game/events","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/events.md","lastUpdated":null}'),d={name:"api/modules/game/events.md"},l=o("",15),n=[l];function s(r,c,i,g,f,h){return a(),t("div",null,n)}const b=e(d,[["render",s]]);export{p as __pageData,b as default}; diff --git a/assets/api_modules_game_events.md.98906675.js b/assets/api_modules_game_events.md.98906675.js new file mode 100644 index 00000000..9a1cac5b --- /dev/null +++ b/assets/api_modules_game_events.md.98906675.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,N as s}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Module: game/events","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/events.md","lastUpdated":null}'),o={name:"api/modules/game/events.md"},r=s('

Module: game/events ​

Interfaces ​

GlobalEvents ​

• GlobalEvents: Object

All types of events able to be sent or emitted from the global event bus.

Defined in ​

profectus/src/game/events.ts:7

profectus/src/features/reset.ts:116

Variables ​

globalBus ​

• Const globalBus: Emitter<GlobalEvents>

A global event bus for hooking into GlobalEvents.

Defined in ​

profectus/src/game/events.ts:55

',14),n=[r];function l(i,c,d,b,f,h){return t(),a("div",null,n)}const p=e(o,[["render",l]]);export{g as __pageData,p as default}; diff --git a/assets/api_modules_game_events.md.98906675.lean.js b/assets/api_modules_game_events.md.98906675.lean.js new file mode 100644 index 00000000..04937380 --- /dev/null +++ b/assets/api_modules_game_events.md.98906675.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,N as s}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Module: game/events","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/events.md","lastUpdated":null}'),o={name:"api/modules/game/events.md"},r=s("",14),n=[r];function l(i,c,d,b,f,h){return t(),a("div",null,n)}const p=e(o,[["render",l]]);export{g as __pageData,p as default}; diff --git a/assets/api_modules_game_formulas_formulas.md.c3dafd78.js b/assets/api_modules_game_formulas_formulas.md.c3dafd78.js new file mode 100644 index 00000000..78675de7 --- /dev/null +++ b/assets/api_modules_game_formulas_formulas.md.c3dafd78.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: game/formulas/formulas","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/formulas/formulas.md","lastUpdated":null}'),o={name:"api/modules/game/formulas/formulas.md"},l=r('

Module: game/formulas/formulas ​

Classes ​

default ​

• default<T>: Object

A class that can be used for cost/goal functions. It can be evaluated similar to a cost function, but also provides extra features for supported formulas. For example, a lot of math functions can be inverted. Typically, the use of these extra features is to support cost/goal functions that have multiple levels purchased/completed at once efficiently.

See

Type parameters ​

NameType
Textends [FormulaSource] | FormulaSource[]

Defined in ​

profectus/src/game/formulas/formulas.ts:45

Functions ​

calculateCost ​

â–¸ calculateCost(formula, amountToBuy, spendResources?, summedPurchases?): DecimalSource

Utility for calculating the cost of a formula for a given amount of purchases. If spendResources is changed to false, the calculation will be much faster with higher numbers.

Parameters ​

NameTypeDescription
formulaInvertibleFormulaThe formula to use for calculating buy max from
amountToBuyDecimalSourceThe amount of purchases to calculate the cost for
spendResources?trueWhether or not to count spent resources on each purchase or not. If true, costs will be approximated for performance, skewing towards higher cost
summedPurchases?numberHow many purchases to manually sum for improved accuracy. If not specified, defaults to 10 when spending resources and 0 when not

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/formulas.ts:1433

â–¸ calculateCost(formula, amountToBuy, spendResources, summedPurchases?): DecimalSource

Parameters ​

NameType
formulaInvertibleIntegralFormula
amountToBuyDecimalSource
spendResourcesboolean
summedPurchases?number

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/formulas.ts:1439


calculateMaxAffordable ​

â–¸ calculateMaxAffordable(formula, resource, spendResources?, summedPurchases?): ComputedRef<DecimalSource>

Utility for calculating the maximum amount of purchases possible with a given formula and resource. If spendResources is changed to false, the calculation will be much faster with higher numbers.

Parameters ​

NameTypeDescription
formulaInvertibleFormulaThe formula to use for calculating buy max from
resourceResource<DecimalSource>The resource used when purchasing (is only read from)
spendResources?trueWhether or not to count spent resources on each purchase or not. If true, costs will be approximated for performance, skewing towards fewer purchases
summedPurchases?numberHow many of the most expensive purchases should be manually summed for better accuracy. If unspecified uses 10 when spending resources and 0 when not

Returns ​

ComputedRef<DecimalSource>

Defined in ​

profectus/src/game/formulas/formulas.ts:1365

â–¸ calculateMaxAffordable(formula, resource, spendResources, summedPurchases?): ComputedRef<DecimalSource>

Parameters ​

NameType
formulaInvertibleIntegralFormula
resourceResource<DecimalSource>
spendResourcesComputable<boolean>
summedPurchases?number

Returns ​

ComputedRef<DecimalSource>

Defined in ​

profectus/src/game/formulas/formulas.ts:1371


findNonInvertible ​

â–¸ findNonInvertible(formula): GenericFormula | null

Utility for recursively searching through a formula for the cause of non-invertibility.

Parameters ​

NameTypeDescription
formulaGenericFormulaThe formula to search for a non-invertible formula within

Returns ​

GenericFormula | null

Defined in ​

profectus/src/game/formulas/formulas.ts:1322


hasVariable ​

â–¸ hasVariable(value): value is InvertibleFormula

Parameters ​

NameType
valueFormulaSource

Returns ​

value is InvertibleFormula

Defined in ​

profectus/src/game/formulas/formulas.ts:23


printFormula ​

â–¸ printFormula(formula): string

Stringifies a formula so it's more easy to read in the console

Parameters ​

NameTypeDescription
formulaFormulaSourceThe formula to print

Returns ​

string

Defined in ​

profectus/src/game/formulas/formulas.ts:1340


unrefFormulaSource ​

â–¸ unrefFormulaSource(value, variable?): DecimalSource

Parameters ​

NameType
valueFormulaSource
variable?DecimalSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/formulas.ts:27

',83),s=[l];function d(c,n,i,u,f,h){return a(),t("div",null,s)}const p=e(o,[["render",d]]);export{b as __pageData,p as default}; diff --git a/assets/api_modules_game_formulas_formulas.md.c3dafd78.lean.js b/assets/api_modules_game_formulas_formulas.md.c3dafd78.lean.js new file mode 100644 index 00000000..98bf1a53 --- /dev/null +++ b/assets/api_modules_game_formulas_formulas.md.c3dafd78.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: game/formulas/formulas","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/formulas/formulas.md","lastUpdated":null}'),o={name:"api/modules/game/formulas/formulas.md"},l=r("",83),s=[l];function d(c,n,i,u,f,h){return a(),t("div",null,s)}const p=e(o,[["render",d]]);export{b as __pageData,p as default}; diff --git a/assets/api_modules_game_formulas_formulas.md.dda227f0.js b/assets/api_modules_game_formulas_formulas.md.dda227f0.js deleted file mode 100644 index 6d1ec2f8..00000000 --- a/assets/api_modules_game_formulas_formulas.md.dda227f0.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as o,o as t,N as c}from"./chunks/framework.0799945b.js";const h=JSON.parse('{"title":"Module: game/formulas/formulas","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/formulas/formulas.md","lastUpdated":null}'),d={name:"api/modules/game/formulas/formulas.md"},a=c('

Module: game/formulas/formulas ​

Classes ​

default ​

• default<T>: Object

A class that can be used for cost/goal functions. It can be evaluated similar to a cost function, but also provides extra features for supported formulas. For example, a lot of math functions can be inverted. Typically, the use of these extra features is to support cost/goal functions that have multiple levels purchased/completed at once efficiently.

See

Type parameters ​

NameType
Textends [FormulaSource] | FormulaSource[]
NameType
constructor<T>(options: FormulaOptions<T>) => default<T>
applySubstitutionundefined | SubstitutionFunction<T>
divide<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
divideBy<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
dividedBy<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
innermostVariableundefined | ProcessedComputable<DecimalSource>
inputsT
integralFormulaundefined | GenericFormula
internalEvaluateundefined | EvaluateFunction<T>
internalIntegrateundefined | IntegrateFunction<T>
internalIntegrateInnerundefined | IntegrateFunction<T>
internalInvertundefined | InvertFunction<T>
internalVariablesnumber
logarithm<T>(this: T, value: FormulaSource) => T<T>(this: FormulaSource, value: T) => T(this: FormulaSource, value: FormulaSource) => GenericFormula
minus<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
multiply<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
negate<T>(this: T) => T(this: GenericFormula) => GenericFormula
negated<T>(this: T) => T(this: GenericFormula) => GenericFormula
plus<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
reciprocal<T>(this: T) => T(this: FormulaSource) => GenericFormula
reciprocate<T>(this: T) => T(this: FormulaSource) => GenericFormula
sgn() => GenericFormula
subtract<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
times<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
clampMax(value: FormulaSource, other: FormulaSource) => default<[FormulaSource, FormulaSource]>
clampMin(value: FormulaSource, other: FormulaSource) => default<[FormulaSource, FormulaSource]>
divide<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
divideBy<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
dividedBy<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
logarithm<T>(value: T, base: FormulaSource) => T<T>(value: FormulaSource, base: T) => T(value: FormulaSource, base: FormulaSource) => GenericFormula
max(value: FormulaSource, other: FormulaSource) => default<[FormulaSource, FormulaSource]>
maxabs(value: FormulaSource, other: FormulaSource) => default<[FormulaSource, FormulaSource]>
min(value: FormulaSource, other: FormulaSource) => default<[FormulaSource, FormulaSource]>
minabs(value: FormulaSource, other: FormulaSource) => default<[FormulaSource, FormulaSource]>
minus<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
multiply<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
negate<T>(value: T) => T(value: FormulaSource) => GenericFormula
negated<T>(value: T) => T(value: FormulaSource) => GenericFormula
plus<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
reciprocal<T>(value: T) => T(value: FormulaSource) => GenericFormula
reciprocate<T>(value: T) => T(value: FormulaSource) => GenericFormula
sgn(value: FormulaSource) => GenericFormula
subtract<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
times<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
abs() => GenericFormula
absLog10() => GenericFormula
acos<T>(this: T) => T(this: FormulaSource) => GenericFormula
acosh<T>(this: T) => T(this: FormulaSource) => GenericFormula
add<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
asin<T>(this: T) => T(this: FormulaSource) => GenericFormula
asinh<T>(this: T) => T(this: FormulaSource) => GenericFormula
atan<T>(this: T) => T(this: FormulaSource) => GenericFormula
atanh<T>(this: T) => T(this: FormulaSource) => GenericFormula
calculateConstantOfIntegration() => default
cbrt<T>(this: T) => T(this: FormulaSource) => GenericFormula
ceil() => GenericFormula
clamp(min: FormulaSource, max: FormulaSource) => GenericFormula
clampMax(value: FormulaSource) => default<[FormulaSource, FormulaSource]>
clampMin(value: FormulaSource) => default<[FormulaSource, FormulaSource]>
conditional(condition: Computable<boolean>, formulaModifier: (value: GenericFormula & { invert: (value: DecimalSource) => DecimalSource } & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource } & { invertIntegral: (value: DecimalSource) => DecimalSource }) => GenericFormula) => GenericFormula
cos<T>(this: T) => T(this: FormulaSource) => GenericFormula
cosh<T>(this: T) => T(this: FormulaSource) => GenericFormula
cube<T>(this: T) => T(this: FormulaSource) => GenericFormula
div<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
equals(other: GenericFormula) => boolean
evaluate(variable?: DecimalSource) => DecimalSource
evaluateIntegral(variable?: DecimalSource) => DecimalSource
exp<T>(this: T) => T(this: FormulaSource) => GenericFormula
factorial() => default<[FormulaSource]>
floor() => GenericFormula
gamma() => default<[FormulaSource]>
getIntegralFormula(stack?: SubstitutionStack) => GenericFormula
hasVariable() => boolean
if(condition: Computable<boolean>, formulaModifier: (value: GenericFormula & { invert: (value: DecimalSource) => DecimalSource } & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource } & { invertIntegral: (value: DecimalSource) => DecimalSource }) => GenericFormula) => GenericFormula
invert(value: DecimalSource) => DecimalSource
invertIntegral(value: DecimalSource) => DecimalSource
isIntegrable() => this is IntegrableFormula
isIntegralInvertible() => this is InvertibleIntegralFormula
isInvertible() => this is InvertibleFormula
iteratedexp<T>(this: T, height?: FormulaSource, payload?: FormulaSource) => Omit<T, "integrate">(this: FormulaSource, height?: FormulaSource, payload?: FormulaSource) => GenericFormula
iteratedlog(base: FormulaSource, times: FormulaSource) => GenericFormula
lambertw<T>(this: T) => Omit<T, "integrate">(this: FormulaSource) => GenericFormula
layeradd<T>(this: T, diff: FormulaSource, base?: FormulaSource) => Omit<T, "integrate">(this: FormulaSource, diff: FormulaSource, base?: FormulaSource) => GenericFormula
layeradd10(diff: FormulaSource) => default<[FormulaSource, FormulaSource]>
ln<T>(this: T) => T(this: FormulaSource) => GenericFormula
lngamma() => default<[FormulaSource]>
log<T>(this: T, value: FormulaSource) => T<T>(this: FormulaSource, value: T) => T(this: FormulaSource, value: FormulaSource) => GenericFormula
log10<T>(this: T) => T(this: FormulaSource) => GenericFormula
log2<T>(this: T) => T(this: FormulaSource) => GenericFormula
max(value: FormulaSource) => default<[FormulaSource, FormulaSource]>
maxabs(value: FormulaSource) => default<[FormulaSource, FormulaSource]>
min(value: FormulaSource) => default<[FormulaSource, FormulaSource]>
minabs(value: FormulaSource) => default<[FormulaSource, FormulaSource]>
mul<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
neg<T>(this: T) => T(this: GenericFormula) => GenericFormula
pLog10() => GenericFormula
pentate(height: FormulaSource, payload: FormulaSource) => GenericFormula
pow<T>(this: T, value: FormulaSource) => T<T>(this: FormulaSource, value: T) => T(this: FormulaSource, value: FormulaSource) => GenericFormula
pow10<T>(this: T) => T(this: FormulaSource) => GenericFormula
pow_base<T>(this: T, value: FormulaSource) => T<T>(this: FormulaSource, value: T) => T(this: FormulaSource, value: FormulaSource) => GenericFormula
recip<T>(this: T) => T(this: FormulaSource) => GenericFormula
root<T>(this: T, value: FormulaSource) => T<T>(this: FormulaSource, value: T) => T(this: FormulaSource, value: FormulaSource) => GenericFormula
round() => GenericFormula
setupConstant(__namedParameters: { inputs: [FormulaSource] }) => InternalFormulaProperties<T>
setupFormula(options: GeneralFormulaOptions<T>) => InternalFormulaProperties<T>
setupVariable(__namedParameters: { variable: ProcessedComputable<DecimalSource> }) => InternalFormulaProperties<T>
sign() => GenericFormula
sin<T>(this: T) => T(this: FormulaSource) => GenericFormula
sinh<T>(this: T) => T(this: FormulaSource) => GenericFormula
slog<T>(this: T, base?: FormulaSource) => Omit<T, "integrate">(this: FormulaSource, base?: FormulaSource) => GenericFormula
sqr<T>(this: T) => T(this: FormulaSource) => GenericFormula
sqrt<T>(this: T) => T(this: FormulaSource) => GenericFormula
ssqrt<T>(this: T) => Omit<T, "integrate">(this: FormulaSource) => GenericFormula
step(start: Computable<DecimalSource>, formulaModifier: (value: GenericFormula & { invert: (value: DecimalSource) => DecimalSource } & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource } & { invertIntegral: (value: DecimalSource) => DecimalSource }) => GenericFormula) => GenericFormula
sub<T>(this: T, value: FormulaSource) => T<T>(this: GenericFormula, value: T) => T(this: GenericFormula, value: FormulaSource) => GenericFormula
tan<T>(this: T) => T(this: FormulaSource) => GenericFormula
tanh<T>(this: T) => T(this: FormulaSource) => GenericFormula
tetrate<T>(this: T, height?: FormulaSource, payload?: FormulaSource) => Omit<T, "integrate">(this: FormulaSource, height?: FormulaSource, payload?: FormulaSource) => GenericFormula
trunc() => GenericFormula
abs(value: FormulaSource) => GenericFormula
absLog10(value: FormulaSource) => GenericFormula
acos<T>(value: T) => T(value: FormulaSource) => GenericFormula
acosh<T>(value: T) => T(value: FormulaSource) => GenericFormula
add<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
asin<T>(value: T) => T(value: FormulaSource) => GenericFormula
asinh<T>(value: T) => T(value: FormulaSource) => GenericFormula
atan<T>(value: T) => T(value: FormulaSource) => GenericFormula
atanh<T>(value: T) => T(value: FormulaSource) => GenericFormula
cbrt<T>(value: T) => T(value: FormulaSource) => GenericFormula
ceil(value: FormulaSource) => GenericFormula
clamp(value: FormulaSource, min: FormulaSource, max: FormulaSource) => GenericFormula
conditional(value: FormulaSource, condition: Computable<boolean>, formulaModifier: (value: GenericFormula & { invert: (value: DecimalSource) => DecimalSource } & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource } & { invertIntegral: (value: DecimalSource) => DecimalSource }) => GenericFormula) => GenericFormula
constant(value: ProcessedComputable<DecimalSource>) => GenericFormula & { invert: (value: DecimalSource) => DecimalSource } & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource } & { invertIntegral: (value: DecimalSource) => DecimalSource }
cos<T>(value: T) => T(value: FormulaSource) => GenericFormula
cosh<T>(value: T) => T(value: FormulaSource) => GenericFormula
cube<T>(value: T) => T(value: FormulaSource) => GenericFormula
div<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
exp<T>(value: T) => T(value: FormulaSource) => GenericFormula
factorial(value: FormulaSource) => default<[FormulaSource]>
floor(value: FormulaSource) => GenericFormula
gamma(value: FormulaSource) => default<[FormulaSource]>
if(value: FormulaSource, condition: Computable<boolean>, formulaModifier: (value: GenericFormula & { invert: (value: DecimalSource) => DecimalSource } & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource } & { invertIntegral: (value: DecimalSource) => DecimalSource }) => GenericFormula) => GenericFormula
iteratedexp<T>(value: T, height?: FormulaSource, payload?: FormulaSource) => Omit<T, "integrate">(value: FormulaSource, height?: FormulaSource, payload?: FormulaSource) => GenericFormula
iteratedlog(value: FormulaSource, base: FormulaSource, times: FormulaSource) => GenericFormula
lambertw<T>(value: T) => Omit<T, "integrate">(value: FormulaSource) => GenericFormula
layeradd<T>(value: T, diff: FormulaSource, base?: FormulaSource) => Omit<T, "integrate">(value: FormulaSource, diff: FormulaSource, base?: FormulaSource) => GenericFormula
layeradd10(value: FormulaSource, diff: FormulaSource) => default<[FormulaSource, FormulaSource]>
ln<T>(value: T) => T(value: FormulaSource) => GenericFormula
lngamma(value: FormulaSource) => default<[FormulaSource]>
log<T>(value: T, base: FormulaSource) => T<T>(value: FormulaSource, base: T) => T(value: FormulaSource, base: FormulaSource) => GenericFormula
log10<T>(value: T) => T(value: FormulaSource) => GenericFormula
log2<T>(value: T) => T(value: FormulaSource) => GenericFormula
mul<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
neg<T>(value: T) => T(value: FormulaSource) => GenericFormula
pLog10(value: FormulaSource) => GenericFormula
pentate(value: FormulaSource, height: FormulaSource, payload: FormulaSource) => GenericFormula
pow<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
pow10<T>(value: T) => T(value: FormulaSource) => GenericFormula
pow_base<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
recip<T>(value: T) => T(value: FormulaSource) => GenericFormula
root<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
round(value: FormulaSource) => GenericFormula
sign(value: FormulaSource) => GenericFormula
sin<T>(value: T) => T(value: FormulaSource) => GenericFormula
sinh<T>(value: T) => T(value: FormulaSource) => GenericFormula
slog<T>(value: T, base?: FormulaSource) => Omit<T, "integrate">(value: FormulaSource, base?: FormulaSource) => GenericFormula
sqr<T>(value: T) => T(value: FormulaSource) => GenericFormula
sqrt<T>(value: T) => T(value: FormulaSource) => GenericFormula
ssqrt<T>(value: T) => Omit<T, "integrate">(value: FormulaSource) => GenericFormula
step(value: FormulaSource, start: Computable<DecimalSource>, formulaModifier: (value: GenericFormula & { invert: (value: DecimalSource) => DecimalSource } & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource } & { invertIntegral: (value: DecimalSource) => DecimalSource }) => GenericFormula) => GenericFormula
sub<T>(value: T, other: FormulaSource) => T<T>(value: FormulaSource, other: T) => T(value: FormulaSource, other: FormulaSource) => GenericFormula
tan<T>(value: T) => T(value: FormulaSource) => GenericFormula
tanh<T>(value: T) => T(value: FormulaSource) => GenericFormula
tetrate<T>(value: T, height?: FormulaSource, payload?: FormulaSource) => Omit<T, "integrate">(value: FormulaSource, height?: FormulaSource, payload?: FormulaSource) => GenericFormula
trunc(value: FormulaSource) => GenericFormula
variable(value: ProcessedComputable<DecimalSource>) => GenericFormula & { invert: (value: DecimalSource) => DecimalSource } & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource } & { invertIntegral: (value: DecimalSource) => DecimalSource }

Defined in ​

profectus/src/game/formulas/formulas.ts:45

Functions ​

calculateCost ​

â–¸ calculateCost(formula, amountToBuy, spendResources?, summedPurchases?): DecimalSource

Utility for calculating the cost of a formula for a given amount of purchases. If spendResources is changed to false, the calculation will be much faster with higher numbers.

Parameters ​
NameTypeDescription
formulaInvertibleFormulaThe formula to use for calculating buy max from
amountToBuyDecimalSourceThe amount of purchases to calculate the cost for
spendResources?trueWhether or not to count spent resources on each purchase or not. If true, costs will be approximated for performance, skewing towards higher cost
summedPurchases?numberHow many purchases to manually sum for improved accuracy. If not specified, defaults to 10 when spending resources and 0 when not
Returns ​

DecimalSource

Other signatures ​

â–¸ calculateCost(formula, amountToBuy, spendResources, summedPurchases?): DecimalSource

NameType
formulaInvertibleIntegralFormula
amountToBuyDecimalSource
spendResourcesboolean
summedPurchases?number

Defined in ​

profectus/src/game/formulas/formulas.ts:1433

profectus/src/game/formulas/formulas.ts:1439

profectus/src/game/formulas/formulas.ts:1445


calculateMaxAffordable ​

â–¸ calculateMaxAffordable(formula, resource, spendResources?, summedPurchases?): ComputedRef<DecimalSource>

Utility for calculating the maximum amount of purchases possible with a given formula and resource. If spendResources is changed to false, the calculation will be much faster with higher numbers.

Parameters ​
NameTypeDescription
formulaInvertibleFormulaThe formula to use for calculating buy max from
resourceResource<DecimalSource>The resource used when purchasing (is only read from)
spendResources?trueWhether or not to count spent resources on each purchase or not. If true, costs will be approximated for performance, skewing towards fewer purchases
summedPurchases?numberHow many of the most expensive purchases should be manually summed for better accuracy. If unspecified uses 10 when spending resources and 0 when not
Returns ​

ComputedRef<DecimalSource>

Other signatures ​

â–¸ calculateMaxAffordable(formula, resource, spendResources, summedPurchases?): ComputedRef<DecimalSource>

NameType
formulaInvertibleIntegralFormula
resourceResource<DecimalSource>
spendResourcesComputable<boolean>
summedPurchases?number

Defined in ​

profectus/src/game/formulas/formulas.ts:1365

profectus/src/game/formulas/formulas.ts:1371

profectus/src/game/formulas/formulas.ts:1377


findNonInvertible ​

â–¸ findNonInvertible(formula): GenericFormula | null

Utility for recursively searching through a formula for the cause of non-invertibility.

Parameters ​
NameTypeDescription
formulaGenericFormulaThe formula to search for a non-invertible formula within
Returns ​

GenericFormula | null

Defined in ​

profectus/src/game/formulas/formulas.ts:1322


hasVariable ​

â–¸ hasVariable(value): value is InvertibleFormula

NameType
valueFormulaSource

Defined in ​

profectus/src/game/formulas/formulas.ts:23


printFormula ​

â–¸ printFormula(formula): string

Stringifies a formula so it's more easy to read in the console

Parameters ​
NameTypeDescription
formulaFormulaSourceThe formula to print
Returns ​

string

Defined in ​

profectus/src/game/formulas/formulas.ts:1340


unrefFormulaSource ​

â–¸ unrefFormulaSource(value, variable?): DecimalSource

NameType
valueFormulaSource
variable?DecimalSource

Defined in ​

profectus/src/game/formulas/formulas.ts:27

',74),r=[a];function l(u,s,f,i,m,n){return t(),o("div",null,r)}const y=e(d,[["render",l]]);export{h as __pageData,y as default}; diff --git a/assets/api_modules_game_formulas_formulas.md.dda227f0.lean.js b/assets/api_modules_game_formulas_formulas.md.dda227f0.lean.js deleted file mode 100644 index 5d25b5b7..00000000 --- a/assets/api_modules_game_formulas_formulas.md.dda227f0.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as o,o as t,N as c}from"./chunks/framework.0799945b.js";const h=JSON.parse('{"title":"Module: game/formulas/formulas","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/formulas/formulas.md","lastUpdated":null}'),d={name:"api/modules/game/formulas/formulas.md"},a=c("",74),r=[a];function l(u,s,f,i,m,n){return t(),o("div",null,r)}const y=e(d,[["render",l]]);export{h as __pageData,y as default}; diff --git a/assets/api_modules_game_formulas_operations.md.19c5dc95.js b/assets/api_modules_game_formulas_operations.md.19c5dc95.js deleted file mode 100644 index 06888846..00000000 --- a/assets/api_modules_game_formulas_operations.md.19c5dc95.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: game/formulas/operations","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/formulas/operations.md","lastUpdated":null}'),o={name:"api/modules/game/formulas/operations.md"},l=r('

Module: game/formulas/operations ​

Functions ​

applySubstitutionDiv ​

â–¸ applySubstitutionDiv(value, lhs, rhs): GenericFormula

NameType
valueGenericFormula
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:152


applySubstitutionMul ​

â–¸ applySubstitutionMul(value, lhs, rhs): GenericFormula

NameType
valueGenericFormula
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:119


applySubstitutionNeg ​

â–¸ applySubstitutionNeg(value): GenericFormula

NameType
valueGenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:25


createPassthroughBinaryFormula ​

â–¸ createPassthroughBinaryFormula(operation): (value: FormulaSource, other: FormulaSource) => default<[FormulaSource, FormulaSource]>

NameType
operation(a: DecimalSource, b: DecimalSource) => DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:696


integrateAcos ​

â–¸ integrateAcos(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:575


integrateAcosh ​

â–¸ integrateAcosh(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:669


integrateAdd ​

â–¸ integrateAdd(stack, lhs, rhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:38


integrateAsin ​

â–¸ integrateAsin(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:558


integrateAsinh ​

â–¸ integrateAsinh(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:654


integrateAtan ​

â–¸ integrateAtan(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:592


integrateAtanh ​

â–¸ integrateAtanh(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:686


integrateCos ​

â–¸ integrateCos(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:528


integrateCosh ​

â–¸ integrateCosh(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:624


integrateDiv ​

â–¸ integrateDiv(stack, lhs, rhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:141


integrateExp ​

â–¸ integrateExp(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:382


integrateInnerAdd ​

â–¸ integrateInnerAdd(stack, lhs, rhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:49


integrateInnerSub ​

â–¸ integrateInnerSub(stack, lhs, rhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:84


integrateLn ​

â–¸ integrateLn(stack, lhs): default<[GenericFormula]>

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:290


integrateLog ​

â–¸ integrateLog(stack, lhs, rhs): default<[GenericFormula, FormulaSource]>

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:231


integrateLog10 ​

â–¸ integrateLog10(stack, lhs): default<[GenericFormula]>

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:199


integrateLog2 ​

â–¸ integrateLog2(stack, lhs): default<[GenericFormula]>

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:261


integrateMul ​

â–¸ integrateMul(stack, lhs, rhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:108


integrateNeg ​

â–¸ integrateNeg(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:18


integratePow ​

â–¸ integratePow(stack, lhs, rhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:310


integratePow10 ​

â–¸ integratePow10(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:329


integratePowBase ​

â–¸ integratePowBase(stack, lhs, rhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:346


integrateRecip ​

â–¸ integrateRecip(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:172


integrateRoot ​

â–¸ integrateRoot(stack, lhs, rhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:367


integrateSin ​

â–¸ integrateSin(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:513


integrateSinh ​

â–¸ integrateSinh(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:609


integrateSub ​

â–¸ integrateSub(stack, lhs, rhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:73


integrateTan ​

â–¸ integrateTan(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:543


integrateTanh ​

â–¸ integrateTanh(stack, lhs): GenericFormula

NameType
stackSubstitutionStack
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:639


invertAcos ​

â–¸ invertAcos(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:568


invertAcosh ​

â–¸ invertAcosh(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:662


invertAdd ​

â–¸ invertAdd(value, lhs, rhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:29


invertAsin ​

â–¸ invertAsin(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:551


invertAsinh ​

â–¸ invertAsinh(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:647


invertAtan ​

â–¸ invertAtan(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:585


invertAtanh ​

â–¸ invertAtanh(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:679


invertCos ​

â–¸ invertCos(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:521


invertCosh ​

â–¸ invertCosh(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:617


invertDiv ​

â–¸ invertDiv(value, lhs, rhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:132


invertExp ​

â–¸ invertExp(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:375


invertIteratedExp ​

â–¸ invertIteratedExp(value, lhs, height, payload): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
heightFormulaSource
payloadFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:421


invertLambertw ​

â–¸ invertLambertw(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:487


invertLayeradd ​

â–¸ invertLayeradd(value, lhs, diff, base): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
diffFormulaSource
baseFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:469


invertLn ​

â–¸ invertLn(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:272


invertLog ​

â–¸ invertLog(value, lhs, rhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:210


invertLog10 ​

â–¸ invertLog10(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:180


invertLog2 ​

â–¸ invertLog2(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:242


invertMul ​

â–¸ invertMul(value, lhs, rhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:99


invertNeg ​

â–¸ invertNeg(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:11


invertPow ​

â–¸ invertPow(value, lhs, rhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:301


invertPow10 ​

â–¸ invertPow10(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:322


invertPowBase ​

â–¸ invertPowBase(value, lhs, rhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:337


invertRecip ​

â–¸ invertRecip(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:165


invertRoot ​

â–¸ invertRoot(value, lhs, rhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:358


invertSin ​

â–¸ invertSin(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:506


invertSinh ​

â–¸ invertSinh(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:602


invertSlog ​

â–¸ invertSlog(value, lhs, rhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:454


invertSsqrt ​

â–¸ invertSsqrt(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:494


invertSub ​

â–¸ invertSub(value, lhs, rhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:64


invertTan ​

â–¸ invertTan(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:536


invertTanh ​

â–¸ invertTanh(value, lhs): DecimalSource

NameType
valueDecimalSource
lhsFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:632


invertTetrate ​

â–¸ invertTetrate(value, base, height, payload): DecimalSource

NameType
valueDecimalSource
baseFormulaSource
heightFormulaSource
payloadFormulaSource

Defined in ​

profectus/src/game/formulas/operations.ts:399


iteratedLog ​

â–¸ iteratedLog(value, lhs?, times?): default

NameTypeDefault value
valueDecimalSourceundefined
lhsDecimalSource10
timesDecimalSource2

Defined in ​

profectus/src/game/formulas/operations.ts:440


iteratedexp ​

â–¸ iteratedexp(value, height?, payload?): default

NameTypeDefault value
valueDecimalSourceundefined
heightDecimalSource2
payloadDecimalSourceundefined

Defined in ​

profectus/src/game/formulas/operations.ts:412


layeradd ​

â–¸ layeradd(value, diff, base): default

NameType
valueDecimalSource
diffDecimalSource
baseDecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:464


passthrough ​

â–¸ passthrough<T>(value): T

NameType
valueT

Defined in ​

profectus/src/game/formulas/operations.ts:7


pentate ​

â–¸ pentate(value, height, payload): default

NameType
valueDecimalSource
heightDecimalSource
payloadDecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:501


slog ​

â–¸ slog(value, lhs?): default

NameTypeDefault value
valueDecimalSourceundefined
lhsDecimalSource10

Defined in ​

profectus/src/game/formulas/operations.ts:449


tetrate ​

â–¸ tetrate(value, height?, payload?): default

NameTypeDefault value
valueDecimalSourceundefined
heightDecimalSource2
payloadDecimalSourceundefined

Defined in ​

profectus/src/game/formulas/operations.ts:390

',439),d=[l];function i(c,n,s,h,f,u){return a(),t("div",null,d)}const m=e(o,[["render",i]]);export{b as __pageData,m as default}; diff --git a/assets/api_modules_game_formulas_operations.md.7b749a35.js b/assets/api_modules_game_formulas_operations.md.7b749a35.js new file mode 100644 index 00000000..5a170bf9 --- /dev/null +++ b/assets/api_modules_game_formulas_operations.md.7b749a35.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: game/formulas/operations","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/formulas/operations.md","lastUpdated":null}'),o={name:"api/modules/game/formulas/operations.md"},l=r('

Module: game/formulas/operations ​

Functions ​

applySubstitutionDiv ​

â–¸ applySubstitutionDiv(value, lhs, rhs): GenericFormula

Parameters ​

NameType
valueGenericFormula
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:152


applySubstitutionMul ​

â–¸ applySubstitutionMul(value, lhs, rhs): GenericFormula

Parameters ​

NameType
valueGenericFormula
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:119


applySubstitutionNeg ​

â–¸ applySubstitutionNeg(value): GenericFormula

Parameters ​

NameType
valueGenericFormula

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:25


createPassthroughBinaryFormula ​

â–¸ createPassthroughBinaryFormula(operation): (value: FormulaSource, other: FormulaSource) => default<[FormulaSource, FormulaSource]>

Parameters ​

NameType
operation(a: DecimalSource, b: DecimalSource) => DecimalSource

Returns ​

fn

â–¸ (value, other): default<[FormulaSource, FormulaSource]>

Parameters ​
NameType
valueFormulaSource
otherFormulaSource
Returns ​

default<[FormulaSource, FormulaSource]>

Defined in ​

profectus/src/game/formulas/operations.ts:696


integrateAcos ​

â–¸ integrateAcos(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:575


integrateAcosh ​

â–¸ integrateAcosh(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:669


integrateAdd ​

â–¸ integrateAdd(stack, lhs, rhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:38


integrateAsin ​

â–¸ integrateAsin(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:558


integrateAsinh ​

â–¸ integrateAsinh(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:654


integrateAtan ​

â–¸ integrateAtan(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:592


integrateAtanh ​

â–¸ integrateAtanh(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:686


integrateCos ​

â–¸ integrateCos(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:528


integrateCosh ​

â–¸ integrateCosh(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:624


integrateDiv ​

â–¸ integrateDiv(stack, lhs, rhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:141


integrateExp ​

â–¸ integrateExp(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:382


integrateInnerAdd ​

â–¸ integrateInnerAdd(stack, lhs, rhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:49


integrateInnerSub ​

â–¸ integrateInnerSub(stack, lhs, rhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:84


integrateLn ​

â–¸ integrateLn(stack, lhs): default<[GenericFormula]>

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

default<[GenericFormula]>

Defined in ​

profectus/src/game/formulas/operations.ts:290


integrateLog ​

â–¸ integrateLog(stack, lhs, rhs): default<[GenericFormula, FormulaSource]>

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

default<[GenericFormula, FormulaSource]>

Defined in ​

profectus/src/game/formulas/operations.ts:231


integrateLog10 ​

â–¸ integrateLog10(stack, lhs): default<[GenericFormula]>

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

default<[GenericFormula]>

Defined in ​

profectus/src/game/formulas/operations.ts:199


integrateLog2 ​

â–¸ integrateLog2(stack, lhs): default<[GenericFormula]>

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

default<[GenericFormula]>

Defined in ​

profectus/src/game/formulas/operations.ts:261


integrateMul ​

â–¸ integrateMul(stack, lhs, rhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:108


integrateNeg ​

â–¸ integrateNeg(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:18


integratePow ​

â–¸ integratePow(stack, lhs, rhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:310


integratePow10 ​

â–¸ integratePow10(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:329


integratePowBase ​

â–¸ integratePowBase(stack, lhs, rhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:346


integrateRecip ​

â–¸ integrateRecip(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:172


integrateRoot ​

â–¸ integrateRoot(stack, lhs, rhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:367


integrateSin ​

â–¸ integrateSin(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:513


integrateSinh ​

â–¸ integrateSinh(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:609


integrateSub ​

â–¸ integrateSub(stack, lhs, rhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource
rhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:73


integrateTan ​

â–¸ integrateTan(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:543


integrateTanh ​

â–¸ integrateTanh(stack, lhs): GenericFormula

Parameters ​

NameType
stackSubstitutionStack
lhsFormulaSource

Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/operations.ts:639


invertAcos ​

â–¸ invertAcos(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:568


invertAcosh ​

â–¸ invertAcosh(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:662


invertAdd ​

â–¸ invertAdd(value, lhs, rhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:29


invertAsin ​

â–¸ invertAsin(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:551


invertAsinh ​

â–¸ invertAsinh(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:647


invertAtan ​

â–¸ invertAtan(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:585


invertAtanh ​

â–¸ invertAtanh(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:679


invertCos ​

â–¸ invertCos(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:521


invertCosh ​

â–¸ invertCosh(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:617


invertDiv ​

â–¸ invertDiv(value, lhs, rhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:132


invertExp ​

â–¸ invertExp(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:375


invertIteratedExp ​

â–¸ invertIteratedExp(value, lhs, height, payload): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
heightFormulaSource
payloadFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:421


invertLambertw ​

â–¸ invertLambertw(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:487


invertLayeradd ​

â–¸ invertLayeradd(value, lhs, diff, base): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
diffFormulaSource
baseFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:469


invertLn ​

â–¸ invertLn(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:272


invertLog ​

â–¸ invertLog(value, lhs, rhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:210


invertLog10 ​

â–¸ invertLog10(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:180


invertLog2 ​

â–¸ invertLog2(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:242


invertMul ​

â–¸ invertMul(value, lhs, rhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:99


invertNeg ​

â–¸ invertNeg(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:11


invertPow ​

â–¸ invertPow(value, lhs, rhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:301


invertPow10 ​

â–¸ invertPow10(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:322


invertPowBase ​

â–¸ invertPowBase(value, lhs, rhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:337


invertRecip ​

â–¸ invertRecip(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:165


invertRoot ​

â–¸ invertRoot(value, lhs, rhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:358


invertSin ​

â–¸ invertSin(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:506


invertSinh ​

â–¸ invertSinh(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:602


invertSlog ​

â–¸ invertSlog(value, lhs, rhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:454


invertSsqrt ​

â–¸ invertSsqrt(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:494


invertSub ​

â–¸ invertSub(value, lhs, rhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource
rhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:64


invertTan ​

â–¸ invertTan(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:536


invertTanh ​

â–¸ invertTanh(value, lhs): DecimalSource

Parameters ​

NameType
valueDecimalSource
lhsFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:632


invertTetrate ​

â–¸ invertTetrate(value, base, height, payload): DecimalSource

Parameters ​

NameType
valueDecimalSource
baseFormulaSource
heightFormulaSource
payloadFormulaSource

Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/operations.ts:399


iteratedLog ​

â–¸ iteratedLog(value, lhs?, times?): default

Parameters ​

NameTypeDefault value
valueDecimalSourceundefined
lhsDecimalSource10
timesDecimalSource2

Returns ​

default

Defined in ​

profectus/src/game/formulas/operations.ts:440


iteratedexp ​

â–¸ iteratedexp(value, height?, payload?): default

Parameters ​

NameTypeDefault value
valueDecimalSourceundefined
heightDecimalSource2
payloadDecimalSourceundefined

Returns ​

default

Defined in ​

profectus/src/game/formulas/operations.ts:412


layeradd ​

â–¸ layeradd(value, diff, base): default

Parameters ​

NameType
valueDecimalSource
diffDecimalSource
baseDecimalSource

Returns ​

default

Defined in ​

profectus/src/game/formulas/operations.ts:464


passthrough ​

â–¸ passthrough<T>(value): T

Type parameters ​

NameType
Textends DecimalSource | GenericFormula

Parameters ​

NameType
valueT

Returns ​

T

Defined in ​

profectus/src/game/formulas/operations.ts:7


pentate ​

â–¸ pentate(value, height, payload): default

Parameters ​

NameType
valueDecimalSource
heightDecimalSource
payloadDecimalSource

Returns ​

default

Defined in ​

profectus/src/game/formulas/operations.ts:501


slog ​

â–¸ slog(value, lhs?): default

Parameters ​

NameTypeDefault value
valueDecimalSourceundefined
lhsDecimalSource10

Returns ​

default

Defined in ​

profectus/src/game/formulas/operations.ts:449


tetrate ​

â–¸ tetrate(value, height?, payload?): default

Parameters ​

NameTypeDefault value
valueDecimalSourceundefined
heightDecimalSource2
payloadDecimalSourceundefined

Returns ​

default

Defined in ​

profectus/src/game/formulas/operations.ts:390

',665),d=[l];function i(n,s,c,h,u,f){return a(),t("div",null,d)}const p=e(o,[["render",i]]);export{b as __pageData,p as default}; diff --git a/assets/api_modules_game_formulas_operations.md.19c5dc95.lean.js b/assets/api_modules_game_formulas_operations.md.7b749a35.lean.js similarity index 68% rename from assets/api_modules_game_formulas_operations.md.19c5dc95.lean.js rename to assets/api_modules_game_formulas_operations.md.7b749a35.lean.js index 903e4474..9524866a 100644 --- a/assets/api_modules_game_formulas_operations.md.19c5dc95.lean.js +++ b/assets/api_modules_game_formulas_operations.md.7b749a35.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: game/formulas/operations","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/formulas/operations.md","lastUpdated":null}'),o={name:"api/modules/game/formulas/operations.md"},l=r("",439),d=[l];function i(c,n,s,h,f,u){return a(),t("div",null,d)}const m=e(o,[["render",i]]);export{b as __pageData,m as default}; +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: game/formulas/operations","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/formulas/operations.md","lastUpdated":null}'),o={name:"api/modules/game/formulas/operations.md"},l=r("",665),d=[l];function i(n,s,c,h,u,f){return a(),t("div",null,d)}const p=e(o,[["render",i]]);export{b as __pageData,p as default}; diff --git a/assets/api_modules_game_formulas_types.md.9c4cba15.js b/assets/api_modules_game_formulas_types.md.9c4cba15.js new file mode 100644 index 00000000..c2f11037 --- /dev/null +++ b/assets/api_modules_game_formulas_types.md.9c4cba15.js @@ -0,0 +1 @@ +import{_ as r,c as o,o as l,N as a,x as e,a as t}from"./chunks/framework.0799945b.js";const x=JSON.parse('{"title":"Module: game/formulas/types","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/formulas/types.md","lastUpdated":null}'),d={name:"api/modules/game/formulas/types.md"},n=a('

Module: game/formulas/types ​

Type Aliases ​

ConstantFormulaOptions ​

Ƭ ConstantFormulaOptions: Object

Type declaration ​

NameType
inputs[FormulaSource]

Defined in ​

profectus/src/game/formulas/types.d.ts:35


EvaluateFunction ​

Ƭ EvaluateFunction<T>: (this: default<T>, ...inputs: GuardedFormulasToDecimals<T>) => DecimalSource

Type parameters ​

Name
T

Type declaration ​

â–¸ (this, ...inputs): DecimalSource

Parameters ​
NameType
thisdefault<T>
...inputsGuardedFormulasToDecimals<T>
Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/types.d.ts:18


FormulaOptions ​

Ƭ FormulaOptions<T>: VariableFormulaOptions | ConstantFormulaOptions | GeneralFormulaOptions<T>

Type parameters ​

NameType
Textends [FormulaSource] | FormulaSource[]

Defined in ​

profectus/src/game/formulas/types.d.ts:46


FormulaSource ​

Ƭ FormulaSource: ProcessedComputable<DecimalSource> | GenericFormula

Defined in ​

profectus/src/game/formulas/types.d.ts:7


FormulasToDecimals ​

',35),i=e("p",{"[K":"",in:"",keyof:"","T]:":"",DecimalSource:""},[t("Ƭ "),e("strong",null,"FormulasToDecimals"),t("<"),e("code",null,"T"),t(">:")],-1),c=a('

Type parameters ​

NameType
Textends FormulaSource[]

Defined in ​

profectus/src/game/formulas/types.d.ts:65


GeneralFormulaOptions ​

Ƭ GeneralFormulaOptions<T>: Object

Type parameters ​

NameType
Textends [FormulaSource] | FormulaSource[]

Type declaration ​

NameType
applySubstitution?SubstitutionFunction<T>
evaluateEvaluateFunction<T>
inputsT
integrate?IntegrateFunction<T>
integrateInner?IntegrateFunction<T>
invert?InvertFunction<T>

Defined in ​

profectus/src/game/formulas/types.d.ts:38


GenericFormula ​

Ƭ GenericFormula: default<any>

Defined in ​

profectus/src/game/formulas/types.d.ts:6


GuardedFormulasToDecimals ​

Ƭ GuardedFormulasToDecimals<T>: TupleGuard<T>

Type parameters ​

NameType
Textends FormulaSource[]

Defined in ​

profectus/src/game/formulas/types.d.ts:70


IntegrableFormula ​

Ƭ IntegrableFormula: GenericFormula & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource }

Defined in ​

profectus/src/game/formulas/types.d.ts:11


IntegrateFunction ​

Ƭ IntegrateFunction<T>: (this: default<T>, stack: SubstitutionStack | undefined, ...inputs: T) => GenericFormula

Type parameters ​

Name
T

Type declaration ​

â–¸ (this, stack, ...inputs): GenericFormula

Parameters ​
NameType
thisdefault<T>
stackSubstitutionStack | undefined
...inputsT
Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/types.d.ts:23


InternalFormulaProperties ​

Ƭ InternalFormulaProperties<T>: Object

Type parameters ​

NameType
Textends [FormulaSource] | FormulaSource[]

Type declaration ​

NameType
applySubstitution?SubstitutionFunction<T>
innermostVariable?ProcessedComputable<DecimalSource>
inputsT
internalEvaluate?EvaluateFunction<T>
internalIntegrate?IntegrateFunction<T>
internalIntegrateInner?IntegrateFunction<T>
internalInvert?InvertFunction<T>
internalVariablesnumber

Defined in ​

profectus/src/game/formulas/types.d.ts:51


InvertFunction ​

Ƭ InvertFunction<T>: (this: default<T>, value: DecimalSource, ...inputs: T) => DecimalSource

Type parameters ​

Name
T

Type declaration ​

â–¸ (this, value, ...inputs): DecimalSource

Parameters ​
NameType
thisdefault<T>
valueDecimalSource
...inputsT
Returns ​

DecimalSource

Defined in ​

profectus/src/game/formulas/types.d.ts:22


InvertibleFormula ​

Ƭ InvertibleFormula: GenericFormula & { invert: (value: DecimalSource) => DecimalSource }

Defined in ​

profectus/src/game/formulas/types.d.ts:8


InvertibleIntegralFormula ​

Ƭ InvertibleIntegralFormula: GenericFormula & { invertIntegral: (value: DecimalSource) => DecimalSource }

Defined in ​

profectus/src/game/formulas/types.d.ts:14


SubstitutionFunction ​

Ƭ SubstitutionFunction<T>: (this: default<T>, variable: GenericFormula, ...inputs: T) => GenericFormula

Type parameters ​

Name
T

Type declaration ​

â–¸ (this, variable, ...inputs): GenericFormula

Parameters ​
NameType
thisdefault<T>
variableGenericFormula
...inputsT
Returns ​

GenericFormula

Defined in ​

profectus/src/game/formulas/types.d.ts:28


SubstitutionStack ​

Ƭ SubstitutionStack: (value: GenericFormula) => GenericFormula[] | undefined

Defined in ​

profectus/src/game/formulas/types.d.ts:62


TupleGuard ​

Ƭ TupleGuard<T>: T extends any[] ? FormulasToDecimals<T> : never

Type parameters ​

NameType
Textends any[]

Defined in ​

profectus/src/game/formulas/types.d.ts:69


VariableFormulaOptions ​

Ƭ VariableFormulaOptions: Object

Type declaration ​

NameType
variableProcessedComputable<DecimalSource>

Defined in ​

profectus/src/game/formulas/types.d.ts:34

',107),s=[n,i,c];function u(f,h,m,p,b,g){return l(),o("div",null,s)}const T=r(d,[["render",u]]);export{x as __pageData,T as default}; diff --git a/assets/api_modules_game_formulas_types.md.9c4cba15.lean.js b/assets/api_modules_game_formulas_types.md.9c4cba15.lean.js new file mode 100644 index 00000000..377db07a --- /dev/null +++ b/assets/api_modules_game_formulas_types.md.9c4cba15.lean.js @@ -0,0 +1 @@ +import{_ as r,c as o,o as l,N as a,x as e,a as t}from"./chunks/framework.0799945b.js";const x=JSON.parse('{"title":"Module: game/formulas/types","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/formulas/types.md","lastUpdated":null}'),d={name:"api/modules/game/formulas/types.md"},n=a("",35),i=e("p",{"[K":"",in:"",keyof:"","T]:":"",DecimalSource:""},[t("Ƭ "),e("strong",null,"FormulasToDecimals"),t("<"),e("code",null,"T"),t(">:")],-1),c=a("",107),s=[n,i,c];function u(f,h,m,p,b,g){return l(),o("div",null,s)}const T=r(d,[["render",u]]);export{x as __pageData,T as default}; diff --git a/assets/api_modules_game_formulas_types.md.bd193bf8.js b/assets/api_modules_game_formulas_types.md.bd193bf8.js deleted file mode 100644 index 790ce46a..00000000 --- a/assets/api_modules_game_formulas_types.md.bd193bf8.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Module: game/formulas/types","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/formulas/types.md","lastUpdated":null}'),o={name:"api/modules/game/formulas/types.md"},l=r('

Module: game/formulas/types ​

Type Aliases ​

ConstantFormulaOptions ​

Ƭ ConstantFormulaOptions: Object

Type declaration ​

NameType
inputs[FormulaSource]

Defined in ​

profectus/src/game/formulas/types.d.ts:35


EvaluateFunction ​

Ƭ EvaluateFunction<T>: (this: default<T>, ...inputs: GuardedFormulasToDecimals<T>) => DecimalSource

Type parameters ​

Name
T

Type declaration ​

â–¸ (this, ...inputs): DecimalSource

NameType
thisdefault<T>
...inputsGuardedFormulasToDecimals<T>

Defined in ​

profectus/src/game/formulas/types.d.ts:18


FormulaOptions ​

Ƭ FormulaOptions<T>: VariableFormulaOptions | ConstantFormulaOptions | GeneralFormulaOptions<T>

Type parameters ​

NameType
Textends [FormulaSource] | FormulaSource[]

Defined in ​

profectus/src/game/formulas/types.d.ts:46


FormulaSource ​

Ƭ FormulaSource: ProcessedComputable<DecimalSource> | GenericFormula

Defined in ​

profectus/src/game/formulas/types.d.ts:7


FormulasToDecimals ​

Ƭ FormulasToDecimals<T>: { [K in keyof T]: DecimalSource }

Type parameters ​

NameType
Textends FormulaSource[]

Defined in ​

profectus/src/game/formulas/types.d.ts:65


GeneralFormulaOptions ​

Ƭ GeneralFormulaOptions<T>: Object

Type parameters ​

NameType
Textends [FormulaSource] | FormulaSource[]

Type declaration ​

NameType
applySubstitution?SubstitutionFunction<T>
evaluateEvaluateFunction<T>
inputsT
integrate?IntegrateFunction<T>
integrateInner?IntegrateFunction<T>
invert?InvertFunction<T>

Defined in ​

profectus/src/game/formulas/types.d.ts:38


GenericFormula ​

Ƭ GenericFormula: default<any>

Defined in ​

profectus/src/game/formulas/types.d.ts:6


GuardedFormulasToDecimals ​

Ƭ GuardedFormulasToDecimals<T>: TupleGuard<T>

Type parameters ​

NameType
Textends FormulaSource[]

Defined in ​

profectus/src/game/formulas/types.d.ts:70


IntegrableFormula ​

Ƭ IntegrableFormula: GenericFormula & { evaluateIntegral: (variable?: DecimalSource) => DecimalSource }

Defined in ​

profectus/src/game/formulas/types.d.ts:11


IntegrateFunction ​

Ƭ IntegrateFunction<T>: (this: default<T>, stack: SubstitutionStack | undefined, ...inputs: T) => GenericFormula

Type parameters ​

Name
T

Type declaration ​

â–¸ (this, stack, ...inputs): GenericFormula

NameType
thisdefault<T>
stackSubstitutionStack | undefined
...inputsT

Defined in ​

profectus/src/game/formulas/types.d.ts:23


InternalFormulaProperties ​

Ƭ InternalFormulaProperties<T>: Object

Type parameters ​

NameType
Textends [FormulaSource] | FormulaSource[]

Type declaration ​

NameType
applySubstitution?SubstitutionFunction<T>
innermostVariable?ProcessedComputable<DecimalSource>
inputsT
internalEvaluate?EvaluateFunction<T>
internalIntegrate?IntegrateFunction<T>
internalIntegrateInner?IntegrateFunction<T>
internalInvert?InvertFunction<T>
internalVariablesnumber

Defined in ​

profectus/src/game/formulas/types.d.ts:51


InvertFunction ​

Ƭ InvertFunction<T>: (this: default<T>, value: DecimalSource, ...inputs: T) => DecimalSource

Type parameters ​

Name
T

Type declaration ​

â–¸ (this, value, ...inputs): DecimalSource

NameType
thisdefault<T>
valueDecimalSource
...inputsT

Defined in ​

profectus/src/game/formulas/types.d.ts:22


InvertibleFormula ​

Ƭ InvertibleFormula: GenericFormula & { invert: (value: DecimalSource) => DecimalSource }

Defined in ​

profectus/src/game/formulas/types.d.ts:8


InvertibleIntegralFormula ​

Ƭ InvertibleIntegralFormula: GenericFormula & { invertIntegral: (value: DecimalSource) => DecimalSource }

Defined in ​

profectus/src/game/formulas/types.d.ts:14


SubstitutionFunction ​

Ƭ SubstitutionFunction<T>: (this: default<T>, variable: GenericFormula, ...inputs: T) => GenericFormula

Type parameters ​

Name
T

Type declaration ​

â–¸ (this, variable, ...inputs): GenericFormula

NameType
thisdefault<T>
variableGenericFormula
...inputsT

Defined in ​

profectus/src/game/formulas/types.d.ts:28


SubstitutionStack ​

Ƭ SubstitutionStack: (value: GenericFormula) => GenericFormula[] | undefined

Defined in ​

profectus/src/game/formulas/types.d.ts:62


TupleGuard ​

Ƭ TupleGuard<T>: T extends any[] ? FormulasToDecimals<T> : never

Type parameters ​

NameType
Textends any[]

Defined in ​

profectus/src/game/formulas/types.d.ts:69


VariableFormulaOptions ​

Ƭ VariableFormulaOptions: Object

Type declaration ​

NameType
variableProcessedComputable<DecimalSource>

Defined in ​

profectus/src/game/formulas/types.d.ts:34

',131),d=[l];function c(n,i,s,u,f,h){return a(),t("div",null,d)}const g=e(o,[["render",c]]);export{m as __pageData,g as default}; diff --git a/assets/api_modules_game_formulas_types.md.bd193bf8.lean.js b/assets/api_modules_game_formulas_types.md.bd193bf8.lean.js deleted file mode 100644 index 74b4eb1d..00000000 --- a/assets/api_modules_game_formulas_types.md.bd193bf8.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Module: game/formulas/types","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/formulas/types.md","lastUpdated":null}'),o={name:"api/modules/game/formulas/types.md"},l=r("",131),d=[l];function c(n,i,s,u,f,h){return a(),t("div",null,d)}const g=e(o,[["render",c]]);export{m as __pageData,g as default}; diff --git a/assets/api_modules_game_gameLoop.md.4e2abfc0.js b/assets/api_modules_game_gameLoop.md.aa836b66.js similarity index 85% rename from assets/api_modules_game_gameLoop.md.4e2abfc0.js rename to assets/api_modules_game_gameLoop.md.aa836b66.js index 934e6caf..593fe164 100644 --- a/assets/api_modules_game_gameLoop.md.4e2abfc0.js +++ b/assets/api_modules_game_gameLoop.md.aa836b66.js @@ -1 +1 @@ -import{_ as e,c as a,o,N as t}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Module: game/gameLoop","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/gameLoop.md","lastUpdated":null}'),r={name:"api/modules/game/gameLoop.md"},s=t('

Module: game/gameLoop ​

Functions ​

startGameLoop ​

â–¸ startGameLoop(): Promise<void>

Starts the game loop for the project, which updates the game in ticks.

Returns ​

Promise<void>

Defined in ​

profectus/src/game/gameLoop.ts:97

',9),n=[s];function i(l,c,d,m,p,h){return o(),a("div",null,n)}const _=e(r,[["render",i]]);export{g as __pageData,_ as default}; +import{_ as e,c as a,o,N as t}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Module: game/gameLoop","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/gameLoop.md","lastUpdated":null}'),r={name:"api/modules/game/gameLoop.md"},s=t('

Module: game/gameLoop ​

Functions ​

startGameLoop ​

â–¸ startGameLoop(): Promise<void>

Starts the game loop for the project, which updates the game in ticks.

Returns ​

Promise<void>

Defined in ​

profectus/src/game/gameLoop.ts:97

',9),n=[s];function i(l,c,d,m,p,h){return o(),a("div",null,n)}const f=e(r,[["render",i]]);export{g as __pageData,f as default}; diff --git a/assets/api_modules_game_gameLoop.md.4e2abfc0.lean.js b/assets/api_modules_game_gameLoop.md.aa836b66.lean.js similarity index 75% rename from assets/api_modules_game_gameLoop.md.4e2abfc0.lean.js rename to assets/api_modules_game_gameLoop.md.aa836b66.lean.js index 7ccdb8a8..c4bdaf19 100644 --- a/assets/api_modules_game_gameLoop.md.4e2abfc0.lean.js +++ b/assets/api_modules_game_gameLoop.md.aa836b66.lean.js @@ -1 +1 @@ -import{_ as e,c as a,o,N as t}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Module: game/gameLoop","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/gameLoop.md","lastUpdated":null}'),r={name:"api/modules/game/gameLoop.md"},s=t("",9),n=[s];function i(l,c,d,m,p,h){return o(),a("div",null,n)}const _=e(r,[["render",i]]);export{g as __pageData,_ as default}; +import{_ as e,c as a,o,N as t}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Module: game/gameLoop","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/gameLoop.md","lastUpdated":null}'),r={name:"api/modules/game/gameLoop.md"},s=t("",9),n=[s];function i(l,c,d,m,p,h){return o(),a("div",null,n)}const f=e(r,[["render",i]]);export{g as __pageData,f as default}; diff --git a/assets/api_modules_game_layers.md.2eb36c5e.js b/assets/api_modules_game_layers.md.2eb36c5e.js new file mode 100644 index 00000000..fde6ec5a --- /dev/null +++ b/assets/api_modules_game_layers.md.2eb36c5e.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: game/layers","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/layers.md","lastUpdated":null}'),o={name:"api/modules/game/layers.md"},d=r('

Module: game/layers ​

Interfaces ​

BaseLayer ​

• BaseLayer: Object

The properties that are added onto a processed LayerOptions to create a Layer

Defined in ​

profectus/src/game/layers.tsx:148


FeatureNode ​

• FeatureNode: Object

A feature's node in the DOM that has its size tracked.

Defined in ​

profectus/src/game/layers.tsx:28


LayerEvents ​

• LayerEvents: Object

All types of events able to be sent or emitted from a layer's emitter.

Defined in ​

profectus/src/game/layers.tsx:55


LayerOptions ​

• LayerOptions: Object

An object that configures a Layer. Even moreso than features, the developer is expected to include extra properties in this object. All Persistent refs must be included somewhere within the layer object.

Defined in ​

profectus/src/game/layers.tsx:107


Position ​

• Position: Object

An object representing the position of some entity.

Defined in ​

profectus/src/game/layers.tsx:95

Type Aliases ​

GenericLayer ​

Ƭ GenericLayer: Replace<Layer<LayerOptions>, { minWidth: ProcessedComputable<number> ; minimizable: ProcessedComputable<boolean> ; name: ProcessedComputable<string> }>

A type that matches any valid Layer object.

Defined in ​

profectus/src/game/layers.tsx:184


Layer ​

Ƭ Layer<T>: Replace<T & BaseLayer, { classes: GetComputableType<T["classes"]> ; color: GetComputableType<T["color"]> ; display: GetComputableType<T["display"]> ; forceHideGoBack: GetComputableType<T["forceHideGoBack"]> ; minWidth: GetComputableTypeWithDefault<T["minWidth"], 600> ; minimizable: GetComputableTypeWithDefault<T["minimizable"], true> ; minimizedDisplay: GetComputableType<T["minimizedDisplay"]> ; name: GetComputableTypeWithDefault<T["name"], string> ; style: GetComputableType<T["style"]> }>

An unit of game content. Displayed to the user as a tab or modal.

Type parameters ​

NameType
Textends LayerOptions

Defined in ​

profectus/src/game/layers.tsx:168

Variables ​

BoundsInjectionKey ​

• Const BoundsInjectionKey: InjectionKey<Ref<DOMRect | undefined>>

An injection key that a ContextComponent will use to provide a ref to a bounding rect of the Context.

Defined in ​

profectus/src/game/layers.tsx:52


NodesInjectionKey ​

• Const NodesInjectionKey: InjectionKey<Ref<Record<string, FeatureNode | undefined>>>

An injection key that a ContextComponent will use to provide a ref to a map of all currently registered FeatureNodes.

Defined in ​

profectus/src/game/layers.tsx:47


RegisterNodeInjectionKey ​

• Const RegisterNodeInjectionKey: InjectionKey<(id: string, element: HTMLElement) => void>

An injection key that a ContextComponent will use to provide a function that registers a FeatureNode with the given id and HTML element.

Defined in ​

profectus/src/game/layers.tsx:37


UnregisterNodeInjectionKey ​

• Const UnregisterNodeInjectionKey: InjectionKey<(id: string) => void>

An injection key that a ContextComponent will use to provide a function that unregisters a FeatureNode with the given id.

Defined in ​

profectus/src/game/layers.tsx:42


addingLayers ​

• Const addingLayers: string[] = []

When creating layers, this array stores the layers currently being created, as a stack.

Defined in ​

profectus/src/game/layers.tsx:200


layers ​

• Const layers: Record<string, Readonly<GenericLayer> | undefined>

A reference to all the current layers. It is shallow reactive so it will update when layers are added or removed, but not interfere with the existing refs within each layer.

Defined in ​

profectus/src/game/layers.tsx:77


persistentRefs ​

• Const persistentRefs: Record<string, Set<Persistent>> = {}

When creating layers, this object a map of layer ID to a set of any created persistent refs in order to check they're all included in the final layer object.

Defined in ​

profectus/src/game/layers.tsx:196

Functions ​

addLayer ​

â–¸ addLayer(layer, player): void

Enables a layer object, so it will be updated every tick. Note that accessing a layer/its properties does NOT require it to be enabled. For dynamic layers you can call this function and removeLayer as necessary. Just make sure getInitialLayers will provide an accurate list of layers based on the player data object. For static layers just make getInitialLayers return all the layers.

Parameters ​

NameTypeDescription
layerGenericLayerThe layer to add.
playerObjectThe player data object, which will have a data object for this layer.
player.layers?Record<string, Record<string, unknown>>-

Returns ​

void

Defined in ​

profectus/src/game/layers.tsx:284


createLayer ​

â–¸ createLayer<T>(id, optionsFunc): Layer<T>

Lazily creates a layer with the given options.

Type parameters ​

NameType
Textends LayerOptions

Parameters ​

NameTypeDescription
idstringThe ID this layer will have. See id.
optionsFuncOptionsFunc<T, BaseLayer>Layer options.

Returns ​

Layer<T>

Defined in ​

profectus/src/game/layers.tsx:206


getLayer ​

â–¸ getLayer<T>(layerID): T

Convenience method for getting a layer by its ID with correct typing.

Type parameters ​

NameType
Textends GenericLayer

Parameters ​

NameTypeDescription
layerIDstringThe ID of the layer to get.

Returns ​

T

Defined in ​

profectus/src/game/layers.tsx:311


reloadLayer ​

â–¸ reloadLayer(layer): void

Convenience method for removing and immediately re-adding a layer. This is useful for layers with dynamic content, to ensure persistent refs are correctly configured.

Parameters ​

NameTypeDescription
layerGenericLayerLayer to remove and then re-add

Returns ​

void

Defined in ​

profectus/src/game/layers.tsx:332


removeLayer ​

â–¸ removeLayer(layer): void

Disables a layer, so it will no longer be updated every tick. Note that accessing a layer/its properties does NOT require it to be enabled.

Parameters ​

NameTypeDescription
layerGenericLayerThe layer to remove.

Returns ​

void

Defined in ​

profectus/src/game/layers.tsx:320


setupLayerModal ​

â–¸ setupLayerModal(layer): Object

Utility function for creating a modal that display's a display. Returns the modal itself, which can be rendered anywhere you need, as well as a function to open the modal.

Parameters ​

NameTypeDescription
layerGenericLayerThe layer to display in the modal.

Returns ​

Object

NameType
modalJSXFunction
openModalVoidFunction

Defined in ​

profectus/src/game/layers.tsx:344

',152),n=[d];function l(i,s,c,h,f,y){return a(),t("div",null,n)}const b=e(o,[["render",l]]);export{u as __pageData,b as default}; diff --git a/assets/api_modules_game_layers.md.ba0180ea.lean.js b/assets/api_modules_game_layers.md.2eb36c5e.lean.js similarity index 60% rename from assets/api_modules_game_layers.md.ba0180ea.lean.js rename to assets/api_modules_game_layers.md.2eb36c5e.lean.js index e7de58ba..93e4e056 100644 --- a/assets/api_modules_game_layers.md.ba0180ea.lean.js +++ b/assets/api_modules_game_layers.md.2eb36c5e.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: game/layers","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/layers.md","lastUpdated":null}'),o={name:"api/modules/game/layers.md"},d=r("",157),l=[d];function n(i,s,c,h,y,f){return a(),t("div",null,l)}const g=e(o,[["render",n]]);export{u as __pageData,g as default}; +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: game/layers","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/layers.md","lastUpdated":null}'),o={name:"api/modules/game/layers.md"},d=r("",152),n=[d];function l(i,s,c,h,f,y){return a(),t("div",null,n)}const b=e(o,[["render",l]]);export{u as __pageData,b as default}; diff --git a/assets/api_modules_game_layers.md.ba0180ea.js b/assets/api_modules_game_layers.md.ba0180ea.js deleted file mode 100644 index 740959c9..00000000 --- a/assets/api_modules_game_layers.md.ba0180ea.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: game/layers","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/layers.md","lastUpdated":null}'),o={name:"api/modules/game/layers.md"},d=r('

Module: game/layers ​

Interfaces ​

BaseLayer ​

• BaseLayer: Object

The properties that are added onto a processed LayerOptions to create a Layer

NameTypeDescription
emit<K>(...args: [K, ...Parameters<LayerEvents[K]>[]]) => voidA function to emit a LayerEvents event to this layer.
emitterEmitter<LayerEvents>An emitter for sending LayerEvents events for this layer.
idstringThe ID of the layer. Populated from the createLayer parameters. Used for saving and tracking open tabs.
minimizedPersistent<boolean>A persistent ref tracking if the tab is minimized or not.
nodesRef<Record<string, undefined | FeatureNode>>A map of FeatureNodes present in this layer's ContextComponent component.
on(...args: [event: keyof LayerEvents, cb: Function | Function | Function]) => UnsubscribeA function to register an event listener on emitter.

Defined in ​

profectus/src/game/layers.tsx:148


FeatureNode ​

• FeatureNode: Object

A feature's node in the DOM that has its size tracked.

NameType
elementHTMLElement
observerMutationObserver
rectDOMRect

Defined in ​

profectus/src/game/layers.tsx:28


LayerEvents ​

• LayerEvents: Object

All types of events able to be sent or emitted from a layer's emitter.

NameType
postUpdate(diff: number) => void
preUpdate(diff: number) => void
update(diff: number) => void

Defined in ​

profectus/src/game/layers.tsx:55


LayerOptions ​

• LayerOptions: Object

An object that configures a Layer. Even moreso than features, the developer is expected to include extra properties in this object. All Persistent refs must be included somewhere within the layer object.

NameTypeDescription
classes?Computable<Record<string, boolean>>An object of classes that should be applied to the display.
color?Computable<string>The color of the layer, used to theme the entire layer's display.
displayComputable<CoercableComponent>The layout of this layer's features. When the layer is open in game/player.PlayerData.tabs, this is the content that is displayed.
forceHideGoBack?Computable<boolean>Whether or not to force the go back button to be hidden. If true, go back will be hidden regardless of data/projInfo.allowGoBack.
minWidth?Computable<string | number>A CSS min-width value that is applied to the layer. Can be a number, in which case the unit is assumed to be px. Defaults to 600px.
minimizable?Computable<boolean>Whether or not the layer can be minimized. Defaults to true.
minimizedDisplay?Computable<CoercableComponent>The layout of this layer's features. When the layer is open in game/player.PlayerData.tabs, but the tab is Layer.minimized this is the content that is displayed.
name?Computable<string>The name of the layer, used on minimized tabs. Defaults to id.
style?Computable<StyleValue>Styles that should be applied to the display.

Defined in ​

profectus/src/game/layers.tsx:107


Position ​

• Position: Object

An object representing the position of some entity.

NameTypeDescription
xnumberThe X component of the entity's position.
ynumberThe Y component of the entity's position.

Defined in ​

profectus/src/game/layers.tsx:95

Type Aliases ​

GenericLayer ​

Ƭ GenericLayer: Replace<Layer<LayerOptions>, { minWidth: ProcessedComputable<number> ; minimizable: ProcessedComputable<boolean> ; name: ProcessedComputable<string> }>

A type that matches any valid Layer object.

Defined in ​

profectus/src/game/layers.tsx:184


Layer ​

Ƭ Layer<T>: Replace<T & BaseLayer, { classes: GetComputableType<T["classes"]> ; color: GetComputableType<T["color"]> ; display: GetComputableType<T["display"]> ; forceHideGoBack: GetComputableType<T["forceHideGoBack"]> ; minWidth: GetComputableTypeWithDefault<T["minWidth"], 600> ; minimizable: GetComputableTypeWithDefault<T["minimizable"], true> ; minimizedDisplay: GetComputableType<T["minimizedDisplay"]> ; name: GetComputableTypeWithDefault<T["name"], string> ; style: GetComputableType<T["style"]> }>

An unit of game content. Displayed to the user as a tab or modal.

Type parameters ​

NameType
Textends LayerOptions

Defined in ​

profectus/src/game/layers.tsx:168

Variables ​

BoundsInjectionKey ​

• Const BoundsInjectionKey: InjectionKey<Ref<DOMRect | undefined>>

An injection key that a ContextComponent will use to provide a ref to a bounding rect of the Context.

Defined in ​

profectus/src/game/layers.tsx:52


NodesInjectionKey ​

• Const NodesInjectionKey: InjectionKey<Ref<Record<string, FeatureNode | undefined>>>

An injection key that a ContextComponent will use to provide a ref to a map of all currently registered FeatureNodes.

Defined in ​

profectus/src/game/layers.tsx:47


RegisterNodeInjectionKey ​

• Const RegisterNodeInjectionKey: InjectionKey<(id: string, element: HTMLElement) => void>

An injection key that a ContextComponent will use to provide a function that registers a FeatureNode with the given id and HTML element.

Defined in ​

profectus/src/game/layers.tsx:37


UnregisterNodeInjectionKey ​

• Const UnregisterNodeInjectionKey: InjectionKey<(id: string) => void>

An injection key that a ContextComponent will use to provide a function that unregisters a FeatureNode with the given id.

Defined in ​

profectus/src/game/layers.tsx:42


addingLayers ​

• Const addingLayers: string[] = []

When creating layers, this array stores the layers currently being created, as a stack.

Defined in ​

profectus/src/game/layers.tsx:200


layers ​

• Const layers: Record<string, Readonly<GenericLayer> | undefined>

A reference to all the current layers. It is shallow reactive so it will update when layers are added or removed, but not interfere with the existing refs within each layer.

Defined in ​

profectus/src/game/layers.tsx:77


persistentRefs ​

• Const persistentRefs: Record<string, Set<Persistent>> = {}

When creating layers, this object a map of layer ID to a set of any created persistent refs in order to check they're all included in the final layer object.

Defined in ​

profectus/src/game/layers.tsx:196

Functions ​

addLayer ​

â–¸ addLayer(layer, player): void

Enables a layer object, so it will be updated every tick. Note that accessing a layer/its properties does NOT require it to be enabled. For dynamic layers you can call this function and removeLayer as necessary. Just make sure getInitialLayers will provide an accurate list of layers based on the player data object. For static layers just make getInitialLayers return all the layers.

Parameters ​
NameTypeDescription
layerGenericLayerThe layer to add.
playerObjectThe player data object, which will have a data object for this layer.
player.layers?Record<string, Record<string, unknown>>-
Returns ​

void

Defined in ​

profectus/src/game/layers.tsx:284


createLayer ​

â–¸ createLayer<T>(id, optionsFunc): Layer<T>

Lazily creates a layer with the given options.

Type parameters ​
NameType
Textends LayerOptions
Parameters ​
NameTypeDescription
idstringThe ID this layer will have. See id.
optionsFuncOptionsFunc<T, BaseLayer, BaseLayer>Layer options.
Returns ​

Layer<T>

Defined in ​

profectus/src/game/layers.tsx:206


getLayer ​

â–¸ getLayer<T>(layerID): T

Convenience method for getting a layer by its ID with correct typing.

Type parameters ​
NameType
Textends GenericLayer
Parameters ​
NameTypeDescription
layerIDstringThe ID of the layer to get.
Returns ​

T

Defined in ​

profectus/src/game/layers.tsx:311


reloadLayer ​

â–¸ reloadLayer(layer): void

Convenience method for removing and immediately re-adding a layer. This is useful for layers with dynamic content, to ensure persistent refs are correctly configured.

Parameters ​
NameTypeDescription
layerGenericLayerLayer to remove and then re-add
Returns ​

void

Defined in ​

profectus/src/game/layers.tsx:332


removeLayer ​

â–¸ removeLayer(layer): void

Disables a layer, so it will no longer be updated every tick. Note that accessing a layer/its properties does NOT require it to be enabled.

Parameters ​
NameTypeDescription
layerGenericLayerThe layer to remove.
Returns ​

void

Defined in ​

profectus/src/game/layers.tsx:320


setupLayerModal ​

â–¸ setupLayerModal(layer): Object

Utility function for creating a modal that display's a display. Returns the modal itself, which can be rendered anywhere you need, as well as a function to open the modal.

Parameters ​
NameTypeDescription
layerGenericLayerThe layer to display in the modal.
Returns ​

Object

NameType
modalJSXFunction
openModalVoidFunction

Defined in ​

profectus/src/game/layers.tsx:344

',157),l=[d];function n(i,s,c,h,y,f){return a(),t("div",null,l)}const g=e(o,[["render",n]]);export{u as __pageData,g as default}; diff --git a/assets/api_modules_game_modifiers.md.6263854d.js b/assets/api_modules_game_modifiers.md.6263854d.js new file mode 100644 index 00000000..cb284b48 --- /dev/null +++ b/assets/api_modules_game_modifiers.md.6263854d.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,N as i}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: game/modifiers","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/modifiers.md","lastUpdated":null}'),a={name:"api/modules/game/modifiers.md"},r=i('

Module: game/modifiers ​

Interfaces ​

AdditiveModifierOptions ​

• AdditiveModifierOptions: Object

An object that configures an additive modifier via createAdditiveModifier.

Defined in ​

profectus/src/game/modifiers.tsx:53


ExponentialModifierOptions ​

• ExponentialModifierOptions: Object

An object that configures an exponential modifier via createExponentialModifier.

Defined in ​

profectus/src/game/modifiers.tsx:176


Modifier ​

• Modifier: Object

An object that can be used to apply or unapply some modification to a number. Being reversible requires the operation being invertible, but some features may rely on that. Descriptions can be optionally included for displaying them to the player. The built-in modifier creators are designed to display the modifiers using createModifierSection.

Defined in ​

profectus/src/game/modifiers.tsx:22


ModifierSectionOptions ​

• ModifierSectionOptions: Object

An object that configures a modifier section via createModifierSection.

Defined in ​

profectus/src/game/modifiers.tsx:318


MultiplicativeModifierOptions ​

• MultiplicativeModifierOptions: Object

An object that configures an multiplicative modifier via createMultiplicativeModifier.

Defined in ​

profectus/src/game/modifiers.tsx:115

Type Aliases ​

ModifierFromOptionalParams ​

Ƭ ModifierFromOptionalParams<T, S>: T extends undefined ? S extends undefined ? Omit<WithRequired<Modifier, "invert" | "getFormula">, "description" | "enabled"> : Omit<WithRequired<Modifier, "invert" | "enabled" | "getFormula">, "description"> : S extends undefined ? Omit<WithRequired<Modifier, "invert" | "description" | "getFormula">, "enabled"> : WithRequired<Modifier, "invert" | "enabled" | "description" | "getFormula">

Utility type used to narrow down a modifier type that will have a description and/or enabled property based on optional parameters, T and S (respectively).

Type parameters ​

Name
T
S

Defined in ​

profectus/src/game/modifiers.tsx:44

Functions ​

createAdditiveModifier ​

â–¸ createAdditiveModifier<T>(optionsFunc): ModifierFromOptionalParams<T["description"], T["enabled"]>

Create a modifier that adds some value to the input value.

Type parameters ​

NameType
Textends AdditiveModifierOptions

Parameters ​

NameTypeDescription
optionsFunc() => TAdditive modifier options.

Returns ​

ModifierFromOptionalParams<T["description"], T["enabled"]>

Defined in ​

profectus/src/game/modifiers.tsx:68


createExponentialModifier ​

â–¸ createExponentialModifier<T>(optionsFunc): ModifierFromOptionalParams<T["description"], T["enabled"]>

Create a modifier that raises the input value to the power of some value.

Type parameters ​

NameType
Textends ExponentialModifierOptions

Parameters ​

NameTypeDescription
optionsFunc() => TExponential modifier options.

Returns ​

ModifierFromOptionalParams<T["description"], T["enabled"]>

Defined in ​

profectus/src/game/modifiers.tsx:193


createModifierSection ​

â–¸ createModifierSection(options): Element

Create a JSX element that displays a modifier. Intended to be used with the output from createSequentialModifier.

Parameters ​

NameTypeDescription
optionsModifierSectionOptionsModifier section options.

Returns ​

Element

Defined in ​

profectus/src/game/modifiers.tsx:340


createMultiplicativeModifier ​

â–¸ createMultiplicativeModifier<T>(optionsFunc): ModifierFromOptionalParams<T["description"], T["enabled"]>

Create a modifier that multiplies the input value by some value.

Type parameters ​

NameType
Textends MultiplicativeModifierOptions

Parameters ​

NameTypeDescription
optionsFunc() => TMultiplicative modifier options.

Returns ​

ModifierFromOptionalParams<T["description"], T["enabled"]>

Defined in ​

profectus/src/game/modifiers.tsx:130


createSequentialModifier ​

â–¸ createSequentialModifier<T, S>(modifiersFunc): S

Takes an array of modifiers and applies and reverses them in order. Modifiers that are not enabled will not be applied nor reversed. Also joins their descriptions together.

See

createModifierSection.

Type parameters ​

NameType
Textends Modifier[]
ST extends WithRequired<Modifier, "invert">[] ? WithRequired<Modifier, "description" | "invert"> : Omit<WithRequired<Modifier, "description">, "invert">

Parameters ​

NameTypeDescription
modifiersFunc() => TThe modifiers to perform sequentially.

Returns ​

S

Defined in ​

profectus/src/game/modifiers.tsx:270

',99),d=[r];function n(l,s,c,f,h,p){return o(),t("div",null,d)}const b=e(a,[["render",n]]);export{u as __pageData,b as default}; diff --git a/assets/api_modules_game_modifiers.md.6263854d.lean.js b/assets/api_modules_game_modifiers.md.6263854d.lean.js new file mode 100644 index 00000000..cd65807b --- /dev/null +++ b/assets/api_modules_game_modifiers.md.6263854d.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,N as i}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: game/modifiers","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/modifiers.md","lastUpdated":null}'),a={name:"api/modules/game/modifiers.md"},r=i("",99),d=[r];function n(l,s,c,f,h,p){return o(),t("div",null,d)}const b=e(a,[["render",n]]);export{u as __pageData,b as default}; diff --git a/assets/api_modules_game_modifiers.md.e9a04d07.js b/assets/api_modules_game_modifiers.md.e9a04d07.js deleted file mode 100644 index f7136aa6..00000000 --- a/assets/api_modules_game_modifiers.md.e9a04d07.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: game/modifiers","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/modifiers.md","lastUpdated":null}'),i={name:"api/modules/game/modifiers.md"},r=a('

Module: game/modifiers ​

Interfaces ​

AdditiveModifierOptions ​

• AdditiveModifierOptions: Object

An object that configures an additive modifier via createAdditiveModifier.

NameTypeDescription
addendComputable<DecimalSource>The amount to add to the input value.
description?Computable<CoercableComponent>Description of what this modifier is doing.
enabled?Computable<boolean>A computable that will be processed and passed directly into the returned modifier.
smallerIsBetter?booleanDetermines if numbers larger or smaller than 0 should be displayed as red.

Defined in ​

profectus/src/game/modifiers.tsx:49


ExponentialModifierOptions ​

• ExponentialModifierOptions: Object

An object that configures an exponential modifier via createExponentialModifier.

NameTypeDescription
description?Computable<CoercableComponent>Description of what this modifier is doing.
enabled?Computable<boolean>A computable that will be processed and passed directly into the returned modifier.
exponentComputable<DecimalSource>The amount to raise the input value to the power of.
smallerIsBetter?booleanDetermines if numbers larger or smaller than 1 should be displayed as red.
supportLowNumbers?booleanAdd 1 before calculating, then remove it afterwards. This prevents low numbers from becoming lower.

Defined in ​

profectus/src/game/modifiers.tsx:170


Modifier ​

• Modifier: Object

An object that can be used to apply or unapply some modification to a number. Being reversible requires the operation being invertible, but some features may rely on that. Descriptions can be optionally included for displaying them to the player. The built-in modifier creators are designed to display the modifiers using createModifierSection.

NameTypeDescription
apply(gain: DecimalSource) => DecimalSourceApplies some operation on the input and returns the result.
description?ProcessedComputable<CoercableComponent>A description of this modifier. See createModifierSection.
enabled?ProcessedComputable<boolean>Whether or not this modifier should be considered enabled. Typically for use with modifiers passed into createSequentialModifier.
revert?(gain: DecimalSource) => DecimalSourceReverses the operation applied by the apply property. Required by some features.

Defined in ​

profectus/src/game/modifiers.tsx:20


ModifierSectionOptions ​

• ModifierSectionOptions: Object

An object that configures a modifier section via createModifierSection.

NameTypeDescription
base?DecimalSourceThe base value that'll be passed into the modifier. Defaults to 1.
baseText?CoercableComponentThe label to use for the base value. Defaults to "Base".
modifierWithRequired<Modifier, "description">The modifier to render.
smallerIsBetter?booleanDetermines if numbers larger or smaller than the base should be displayed as red.
subtitle?stringSmaller text that appears in the header after the title.
titlestringThe header for the section.
unit?stringThe unit of the value being modified, if any.

Defined in ​

profectus/src/game/modifiers.tsx:297


MultiplicativeModifierOptions ​

• MultiplicativeModifierOptions: Object

An object that configures an multiplicative modifier via createMultiplicativeModifier.

NameTypeDescription
description?Computable<CoercableComponent>Description of what this modifier is doing.
enabled?Computable<boolean>A computable that will be processed and passed directly into the returned modifier.
multiplierComputable<DecimalSource>The amount to multiply the input value by.
smallerIsBetter?booleanDetermines if numbers larger or smaller than 1 should be displayed as red.

Defined in ​

profectus/src/game/modifiers.tsx:110

Type Aliases ​

ModifierFromOptionalParams ​

Ƭ ModifierFromOptionalParams<T, S>: T extends undefined ? S extends undefined ? Omit<WithRequired<Modifier, "revert">, "description" | "enabled"> : Omit<WithRequired<Modifier, "revert" | "enabled">, "description"> : S extends undefined ? Omit<WithRequired<Modifier, "revert" | "description">, "enabled"> : WithRequired<Modifier, "revert" | "enabled" | "description">

Utility type used to narrow down a modifier type that will have a description and/or enabled property based on optional parameters, T and S (respectively).

Type parameters ​

Name
T
S

Defined in ​

profectus/src/game/modifiers.tsx:40

Functions ​

createAdditiveModifier ​

â–¸ createAdditiveModifier<T>(optionsFunc): ModifierFromOptionalParams<T["description"], T["enabled"]>

Create a modifier that adds some value to the input value.

Type parameters ​
NameType
Textends AdditiveModifierOptions
Parameters ​
NameTypeDescription
optionsFunc() => TAdditive modifier options.
Returns ​

ModifierFromOptionalParams<T["description"], T["enabled"]>

Defined in ​

profectus/src/game/modifiers.tsx:64


createExponentialModifier ​

â–¸ createExponentialModifier<T>(optionsFunc): ModifierFromOptionalParams<T["description"], T["enabled"]>

Create a modifier that raises the input value to the power of some value.

Type parameters ​
NameType
Textends ExponentialModifierOptions
Parameters ​
NameTypeDescription
optionsFunc() => TExponential modifier options.
Returns ​

ModifierFromOptionalParams<T["description"], T["enabled"]>

Defined in ​

profectus/src/game/modifiers.tsx:187


createModifierSection ​

â–¸ createModifierSection(options): Element

Create a JSX element that displays a modifier. Intended to be used with the output from createSequentialModifier.

Parameters ​
NameTypeDescription
optionsModifierSectionOptionsModifier section options.
Returns ​

Element

Defined in ​

profectus/src/game/modifiers.tsx:319


createMultiplicativeModifier ​

â–¸ createMultiplicativeModifier<T>(optionsFunc): ModifierFromOptionalParams<T["description"], T["enabled"]>

Create a modifier that multiplies the input value by some value.

Type parameters ​
NameType
Textends MultiplicativeModifierOptions
Parameters ​
NameTypeDescription
optionsFunc() => TMultiplicative modifier options.
Returns ​

ModifierFromOptionalParams<T["description"], T["enabled"]>

Defined in ​

profectus/src/game/modifiers.tsx:125


createSequentialModifier ​

â–¸ createSequentialModifier<T, S>(modifiersFunc): S

Takes an array of modifiers and applies and reverses them in order. Modifiers that are not enabled will not be applied nor reversed. Also joins their descriptions together.

See

createModifierSection.

Type parameters ​
NameType
Textends Modifier[]
ST extends WithRequired<Modifier, "revert">[] ? WithRequired<Modifier, "revert" | "description"> : Omit<WithRequired<Modifier, "description">, "revert">
Parameters ​
NameTypeDescription
modifiersFunc() => TThe modifiers to perform sequentially.
Returns ​

S

Defined in ​

profectus/src/game/modifiers.tsx:260

',104),d=[r];function l(n,c,s,f,h,m){return o(),t("div",null,d)}const b=e(i,[["render",l]]);export{u as __pageData,b as default}; diff --git a/assets/api_modules_game_modifiers.md.e9a04d07.lean.js b/assets/api_modules_game_modifiers.md.e9a04d07.lean.js deleted file mode 100644 index 9aaf0094..00000000 --- a/assets/api_modules_game_modifiers.md.e9a04d07.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: game/modifiers","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/modifiers.md","lastUpdated":null}'),i={name:"api/modules/game/modifiers.md"},r=a("",104),d=[r];function l(n,c,s,f,h,m){return o(),t("div",null,d)}const b=e(i,[["render",l]]);export{u as __pageData,b as default}; diff --git a/assets/api_modules_game_notifications.md.4007ad77.js b/assets/api_modules_game_notifications.md.afaa7863.js similarity index 87% rename from assets/api_modules_game_notifications.md.4007ad77.js rename to assets/api_modules_game_notifications.md.afaa7863.js index c9e065e9..5942a6ff 100644 --- a/assets/api_modules_game_notifications.md.4007ad77.js +++ b/assets/api_modules_game_notifications.md.afaa7863.js @@ -1 +1 @@ -import{_ as t,c as e,o as a,N as o}from"./chunks/framework.0799945b.js";const y=JSON.parse('{"title":"Module: game/notifications","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/notifications.md","lastUpdated":null}'),i={name:"api/modules/game/notifications.md"},l=o('

Module: game/notifications ​

Functions ​

createDismissableNotify ​

â–¸ createDismissableNotify(element, shouldNotify): Ref<boolean>

Create a boolean ref that will automatically be set based on the given condition, but also dismissed when hovering over a given element, typically the element where acting upon the notification would take place.

Parameters ​
NameTypeDescription
elementVueFeatureThe element that will dismiss the notification on hover.
shouldNotifyRef<boolean> | () => booleanA function or ref that determines if the notif should be active currently or not.
Returns ​

Ref<boolean>

Defined in ​

profectus/src/game/notifications.ts:36


getHighNotifyStyle ​

â–¸ getHighNotifyStyle(): Object

Utility function to call getNotifyStyle with "high importance" parameters.

Returns ​

Object

NameType
borderColorstring
boxShadowstring
transformstring
zIndexnumber

Defined in ​

profectus/src/game/notifications.ts:27


getNotifyStyle ​

â–¸ getNotifyStyle(color?, strength?): Object

Gives a CSSProperties object that makes an object glow, to bring focus to it. Default values are for a "soft" white notif effect.

Parameters ​
NameTypeDefault valueDescription
colorstring"white"The color of the glow effect.
strengthstring"8px"The strength of the glow effect - affects its spread.
Returns ​

Object

NameType
borderColorstring
boxShadowstring
transformstring
zIndexnumber

Defined in ​

profectus/src/game/notifications.ts:17

',31),d=[l];function n(r,s,c,f,h,g){return a(),e("div",null,d)}const b=t(i,[["render",n]]);export{y as __pageData,b as default}; +import{_ as t,c as e,o as a,N as o}from"./chunks/framework.0799945b.js";const y=JSON.parse('{"title":"Module: game/notifications","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/notifications.md","lastUpdated":null}'),i={name:"api/modules/game/notifications.md"},l=o('

Module: game/notifications ​

Functions ​

createDismissableNotify ​

â–¸ createDismissableNotify(element, shouldNotify): Ref<boolean>

Create a boolean ref that will automatically be set based on the given condition, but also dismissed when hovering over a given element, typically the element where acting upon the notification would take place.

Parameters ​

NameTypeDescription
elementVueFeatureThe element that will dismiss the notification on hover.
shouldNotifyRef<boolean> | () => booleanA function or ref that determines if the notif should be active currently or not.

Returns ​

Ref<boolean>

Defined in ​

profectus/src/game/notifications.ts:36


getHighNotifyStyle ​

â–¸ getHighNotifyStyle(): Object

Utility function to call getNotifyStyle with "high importance" parameters.

Returns ​

Object

NameType
borderColorstring
boxShadowstring
transformstring
zIndexnumber

Defined in ​

profectus/src/game/notifications.ts:27


getNotifyStyle ​

â–¸ getNotifyStyle(color?, strength?): Object

Gives a CSSProperties object that makes an object glow, to bring focus to it. Default values are for a "soft" white notif effect.

Parameters ​

NameTypeDefault valueDescription
colorstring"white"The color of the glow effect.
strengthstring"8px"The strength of the glow effect - affects its spread.

Returns ​

Object

NameType
borderColorstring
boxShadowstring
transformstring
zIndexnumber

Defined in ​

profectus/src/game/notifications.ts:17

',31),d=[l];function n(r,s,c,f,h,g){return a(),e("div",null,d)}const b=t(i,[["render",n]]);export{y as __pageData,b as default}; diff --git a/assets/api_modules_game_notifications.md.4007ad77.lean.js b/assets/api_modules_game_notifications.md.afaa7863.lean.js similarity index 100% rename from assets/api_modules_game_notifications.md.4007ad77.lean.js rename to assets/api_modules_game_notifications.md.afaa7863.lean.js diff --git a/assets/api_modules_game_persistence.md.647a4d58.js b/assets/api_modules_game_persistence.md.647a4d58.js new file mode 100644 index 00000000..5752f080 --- /dev/null +++ b/assets/api_modules_game_persistence.md.647a4d58.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: game/persistence","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/persistence.md","lastUpdated":null}'),s={name:"api/modules/game/persistence.md"},n=r('

Module: game/persistence ​

Type Aliases ​

NonPersistent ​

Ƭ NonPersistent<T>: WritableComputedRef<T> & { [DefaultValue]: T }

Type parameters ​

NameType
Textends State = State

Defined in ​

profectus/src/game/persistence.ts:37

profectus/src/game/persistence.ts:97


Persistent ​

Ƭ Persistent<T>: Ref<T> & { [CheckNaN]: boolean ; [DefaultValue]: T ; [Deleted]: boolean ; [NonPersistent]: NonPersistent<T> ; [PersistentState]: Ref<T> ; [SaveDataPath]: string[] | undefined ; [StackTrace]: string ; value: T }

A Ref that has been augmented with properties to allow it to be saved and loaded within the player save data object.

Type parameters ​

NameType
Textends State = State

Defined in ​

profectus/src/game/persistence.ts:70


State ​

Ƭ State: string | number | boolean | DecimalSource | { [key: string]: State; } | { [key: number]: State; }

This is a union of things that should be safely stringifiable without needing special processes or knowing what to load them in as.

Defined in ​

profectus/src/game/persistence.ts:59

Variables ​

CheckNaN ​

• Const CheckNaN: typeof CheckNaN

A symbol used in Persistent objects.

See

[CheckNaN]

Defined in ​

profectus/src/game/persistence.ts:47


DefaultValue ​

• Const DefaultValue: typeof DefaultValue

A symbol used in Persistent objects.

See

[DefaultValue]

Defined in ​

profectus/src/game/persistence.ts:22


Deleted ​

• Const Deleted: typeof Deleted

A symbol used in Persistent objects.

See

[Deleted]

Defined in ​

profectus/src/game/persistence.ts:32


NonPersistent ​

• Const NonPersistent: typeof NonPersistent

A symbol used in Persistent objects.

See

[NonPersistent]

Defined in ​

profectus/src/game/persistence.ts:37

profectus/src/game/persistence.ts:97


PersistentState ​

• Const PersistentState: typeof PersistentState

A symbol used in Persistent objects.

See

[PersistentState]

Defined in ​

profectus/src/game/persistence.ts:17


SaveDataPath ​

• Const SaveDataPath: typeof SaveDataPath

A symbol used in Persistent objects.

See

[SaveDataPath]

Defined in ​

profectus/src/game/persistence.ts:42


SkipPersistence ​

• Const SkipPersistence: typeof SkipPersistence

A symbol used to flag objects that should not be checked for persistent values.

Defined in ​

profectus/src/game/persistence.ts:52


StackTrace ​

• Const StackTrace: typeof StackTrace

A symbol used in Persistent objects.

See

[StackTrace]

Defined in ​

profectus/src/game/persistence.ts:27

Functions ​

deletePersistent ​

â–¸ deletePersistent(persistent): void

Mark a Persistent as deleted, so it won't be saved and loaded. Since persistent refs must be created during a layer's options func, features can not create persistent refs after evaluating their own options funcs. As a result, it must create any persistent refs it might need. This function can then be called after the options func is evaluated to mark the persistent ref to not be saved or loaded.

Parameters ​

NameType
persistentPersistent<State>

Returns ​

void

Defined in ​

profectus/src/game/persistence.ts:248


isPersistent ​

â–¸ isPersistent(value): value is Persistent<State>

Type guard for whether an arbitrary value is a persistent ref

Parameters ​

NameTypeDescription
valueunknownThe value that may or may not be a persistent ref

Returns ​

value is Persistent<State>

Defined in ​

profectus/src/game/persistence.ts:198


noPersist ​

â–¸ noPersist<T, S>(persistent): T[typeof NonPersistent]

Unwraps the non-persistent ref inside of persistent refs, to be passed to other features without duplicating values in the save data object.

Type parameters ​

NameType
Textends Ref<S, T> & { [CheckNaN]: boolean ; [DefaultValue]: S ; [Deleted]: boolean ; [NonPersistent]: NonPersistent<S> ; [PersistentState]: Ref<S> ; [SaveDataPath]: undefined | string[] ; [StackTrace]: string ; value: S }
Sextends State

Parameters ​

NameTypeDescription
persistentTThe persistent ref to unwrap, or an object to ignore all persistent refs within

Returns ​

T[typeof NonPersistent]

Defined in ​

profectus/src/game/persistence.ts:206

â–¸ noPersist<T>(persistent): T

Type parameters ​

NameType
Textends object

Parameters ​

NameType
persistentT

Returns ​

T

Defined in ​

profectus/src/game/persistence.ts:209


persistent ​

â–¸ persistent<T>(defaultValue, checkNaN?): Persistent<T>

Create a persistent ref, which can be saved and loaded. All (non-deleted) persistent refs must be included somewhere within the layer object returned by that layer's options func.

Type parameters ​

NameType
Textends State

Parameters ​

NameTypeDefault valueDescription
defaultValueT | Ref<T>undefinedThe value the persistent ref should start at on fresh saves or when reset.
checkNaNbooleantrueWhether or not to check this ref for being NaN on set. Only use on refs that should always be DecimalSources.

Returns ​

Persistent<T>

Defined in ​

profectus/src/game/persistence.ts:134

',140),o=[n];function i(d,c,l,h,p,f){return a(),t("div",null,o)}const g=e(s,[["render",i]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_game_persistence.md.e61c1fc6.lean.js b/assets/api_modules_game_persistence.md.647a4d58.lean.js similarity index 85% rename from assets/api_modules_game_persistence.md.e61c1fc6.lean.js rename to assets/api_modules_game_persistence.md.647a4d58.lean.js index b68ceed2..650c089b 100644 --- a/assets/api_modules_game_persistence.md.e61c1fc6.lean.js +++ b/assets/api_modules_game_persistence.md.647a4d58.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: game/persistence","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/persistence.md","lastUpdated":null}'),s={name:"api/modules/game/persistence.md"},n=r("",125),o=[n];function i(d,c,l,h,p,f){return a(),t("div",null,o)}const g=e(s,[["render",i]]);export{b as __pageData,g as default}; +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: game/persistence","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/persistence.md","lastUpdated":null}'),s={name:"api/modules/game/persistence.md"},n=r("",140),o=[n];function i(d,c,l,h,p,f){return a(),t("div",null,o)}const g=e(s,[["render",i]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_game_persistence.md.e61c1fc6.js b/assets/api_modules_game_persistence.md.e61c1fc6.js deleted file mode 100644 index 9bfb5619..00000000 --- a/assets/api_modules_game_persistence.md.e61c1fc6.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: game/persistence","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/persistence.md","lastUpdated":null}'),s={name:"api/modules/game/persistence.md"},n=r('

Module: game/persistence ​

Type Aliases ​

NonPersistent ​

Ƭ NonPersistent<T>: WritableComputedRef<T> & { [DefaultValue]: T }

Type parameters ​

NameType
Textends State = State

Defined in ​

profectus/src/game/persistence.ts:37

profectus/src/game/persistence.ts:92


Persistent ​

Ƭ Persistent<T>: Ref<T> & { [CheckNaN]: boolean ; [DefaultValue]: T ; [Deleted]: boolean ; [NonPersistent]: NonPersistent<T> ; [PersistentState]: Ref<T> ; [SaveDataPath]: string[] | undefined ; [StackTrace]: string ; value: T }

A Ref that has been augmented with properties to allow it to be saved and loaded within the player save data object.

Type parameters ​

NameType
Textends State = State

Defined in ​

profectus/src/game/persistence.ts:65


State ​

Ƭ State: string | number | boolean | DecimalSource | { [key: string]: State; } | { [key: number]: State; }

This is a union of things that should be safely stringifiable without needing special processes or knowing what to load them in as.

Defined in ​

profectus/src/game/persistence.ts:54

Variables ​

CheckNaN ​

• Const CheckNaN: typeof CheckNaN

A symbol used in Persistent objects.

See

[CheckNaN]

Defined in ​

profectus/src/game/persistence.ts:47


DefaultValue ​

• Const DefaultValue: typeof DefaultValue

A symbol used in Persistent objects.

See

[DefaultValue]

Defined in ​

profectus/src/game/persistence.ts:22


Deleted ​

• Const Deleted: typeof Deleted

A symbol used in Persistent objects.

See

[Deleted]

Defined in ​

profectus/src/game/persistence.ts:32


NonPersistent ​

• Const NonPersistent: typeof NonPersistent

A symbol used in Persistent objects.

See

[NonPersistent]

Defined in ​

profectus/src/game/persistence.ts:37

profectus/src/game/persistence.ts:92


PersistentState ​

• Const PersistentState: typeof PersistentState

A symbol used in Persistent objects.

See

[PersistentState]

Defined in ​

profectus/src/game/persistence.ts:17


SaveDataPath ​

• Const SaveDataPath: typeof SaveDataPath

A symbol used in Persistent objects.

See

[SaveDataPath]

Defined in ​

profectus/src/game/persistence.ts:42


StackTrace ​

• Const StackTrace: typeof StackTrace

A symbol used in Persistent objects.

See

[StackTrace]

Defined in ​

profectus/src/game/persistence.ts:27

Functions ​

deletePersistent ​

â–¸ deletePersistent(persistent): void

Mark a Persistent as deleted, so it won't be saved and loaded. Since persistent refs must be created during a layer's options func, features can not create persistent refs after evaluating their own options funcs. As a result, it must create any persistent refs it might need. This function can then be called after the options func is evaluated to mark the persistent ref to not be saved or loaded.

Parameters ​
NameType
persistentPersistent<State>
Returns ​

void

Defined in ​

profectus/src/game/persistence.ts:213


isPersistent ​

â–¸ isPersistent(value): value is Persistent<State>

Type guard for whether an arbitrary value is a persistent ref

Parameters ​
NameTypeDescription
valueunknownThe value that may or may not be a persistent ref
Returns ​

value is Persistent<State>

Defined in ​

profectus/src/game/persistence.ts:193


noPersist ​

â–¸ noPersist<T, S>(persistent): T[typeof NonPersistent]

Unwraps the non-persistent ref inside of persistent refs, to be passed to other features without duplicating values in the save data object.

Type parameters ​
NameType
Textends Ref<S, T> & { [CheckNaN]: boolean ; [DefaultValue]: S ; [Deleted]: boolean ; [NonPersistent]: NonPersistent<S> ; [PersistentState]: Ref<S> ; [SaveDataPath]: undefined | string[] ; [StackTrace]: string ; value: S }
Sextends State
Parameters ​
NameTypeDescription
persistentTThe persistent ref to unwrap
Returns ​

T[typeof NonPersistent]

Defined in ​

profectus/src/game/persistence.ts:201


persistent ​

â–¸ persistent<T>(defaultValue, checkNaN?): Persistent<T>

Create a persistent ref, which can be saved and loaded. All (non-deleted) persistent refs must be included somewhere within the layer object returned by that layer's options func.

Type parameters ​
NameType
Textends State
Parameters ​
NameTypeDefault valueDescription
defaultValueT | Ref<T>undefinedThe value the persistent ref should start at on fresh saves or when reset.
checkNaNbooleantrueWhether or not to check this ref for being NaN on set. Only use on refs that should always be DecimalSources.
Returns ​

Persistent<T>

Defined in ​

profectus/src/game/persistence.ts:129

',125),o=[n];function i(d,c,l,h,p,f){return a(),t("div",null,o)}const g=e(s,[["render",i]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_game_player.md.1ceb97cb.js b/assets/api_modules_game_player.md.1ceb97cb.js new file mode 100644 index 00000000..24438bfb --- /dev/null +++ b/assets/api_modules_game_player.md.1ceb97cb.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Module: game/player","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/player.md","lastUpdated":null}'),l={name:"api/modules/game/player.md"},d=r('

Module: game/player ​

Interfaces ​

Player ​

• Player: Object

The player save data object.

Defined in ​

profectus/src/game/player.ts:5

Type Aliases ​

LayerData ​

Ƭ LayerData<T>: { [P in keyof T]?: T[P] extends (infer U)[] ? Record<string, LayerData<U>> : T[P] extends Record<string, never> ? never : T[P] extends Ref<infer S> ? S : T[P] extends object ? LayerData<T[P]> : T[P] }

A layer's save data. Automatically unwraps refs.

Type parameters ​

Name
T

Defined in ​

profectus/src/game/player.ts:35

Variables ​

default ​

• default: Object

Type declaration ​

NameTypeDescription
autosavebooleanWhether or not to automatically save every couple of seconds and on tab close.
devSpeednull | numberA multiplier for time passing. Set to 0 when the game is paused.
idstringThe ID of this save.
keepGoingbooleanWhether or not to continue playing after hasWon is true.
layersRecord<string, LayerData<unknown>>A dictionary of layer save data.
modIDstringThe ID of this project, to make sure saves aren't imported into the wrong project.
modVersionstringThe version of the project this save was created by. Used for upgrading saves for new versions.
namestringThe display name of this save.
offlineProdbooleanWhether or not to apply offline time when loading this save.
offlineTimenull | numberHow much offline time has been accumulated and not yet processed.
tabsstring[]The open tabs.
timenumberThe current time this save was last opened at, in ms since the unix epoch.
timePlayednumberHow long, in ms, this game has been played.

Defined in ​

profectus/src/game/player.ts:63

Functions ​

stringifySave ​

â–¸ stringifySave(player): string

Convert a player save data object into a JSON string. Unwraps refs.

Parameters ​

NameType
playerPlayer

Returns ​

string

Defined in ​

profectus/src/game/player.ts:66

',32),o=[d];function n(s,i,c,f,h,y){return a(),t("div",null,o)}const u=e(l,[["render",n]]);export{g as __pageData,u as default}; diff --git a/assets/api_modules_game_player.md.1ceb97cb.lean.js b/assets/api_modules_game_player.md.1ceb97cb.lean.js new file mode 100644 index 00000000..56ee9989 --- /dev/null +++ b/assets/api_modules_game_player.md.1ceb97cb.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Module: game/player","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/player.md","lastUpdated":null}'),l={name:"api/modules/game/player.md"},d=r("",32),o=[d];function n(s,i,c,f,h,y){return a(),t("div",null,o)}const u=e(l,[["render",n]]);export{g as __pageData,u as default}; diff --git a/assets/api_modules_game_player.md.f23bb598.js b/assets/api_modules_game_player.md.f23bb598.js deleted file mode 100644 index 6514696c..00000000 --- a/assets/api_modules_game_player.md.f23bb598.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as l}from"./chunks/framework.0799945b.js";const p=JSON.parse('{"title":"Module: game/player","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/player.md","lastUpdated":null}'),d={name:"api/modules/game/player.md"},o=l('

Module: game/player ​

Interfaces ​

Player ​

• Player: Object

The player save data object.

NameTypeDescription
autosavebooleanWhether or not to automatically save every couple of seconds and on tab close.
devSpeednull | numberA multiplier for time passing. Set to 0 when the game is paused.
idstringThe ID of this save.
keepGoingbooleanWhether or not to continue playing after hasWon is true.
layersRecord<string, LayerData<unknown>>A dictionary of layer save data.
modIDstringThe ID of this project, to make sure saves aren't imported into the wrong project.
modVersionstringThe version of the project this save was created by. Used for upgrading saves for new versions.
namestringThe display name of this save.
offlineProdbooleanWhether or not to apply offline time when loading this save.
offlineTimenull | numberHow much offline time has been accumulated and not yet processed.
tabsstring[]The open tabs.
timenumberThe current time this save was last opened at, in ms since the unix epoch.
timePlayednumberHow long, in ms, this game has been played.

Defined in ​

profectus/src/game/player.ts:5

Type Aliases ​

LayerData ​

Ƭ LayerData<T>: { [P in keyof T]?: T[P] extends (infer U)[] ? Record<string, LayerData<U>> : T[P] extends Record<string, never> ? never : T[P] extends Ref<infer S> ? S : T[P] extends object ? LayerData<T[P]> : T[P] }

A layer's save data. Automatically unwraps refs.

Type parameters ​

Name
T

Defined in ​

profectus/src/game/player.ts:35

Variables ​

default ​

• default: Object

Type declaration ​

NameTypeDescription
autosavebooleanWhether or not to automatically save every couple of seconds and on tab close.
devSpeednull | numberA multiplier for time passing. Set to 0 when the game is paused.
idstringThe ID of this save.
keepGoingbooleanWhether or not to continue playing after hasWon is true.
layersRecord<string, LayerData<unknown>>A dictionary of layer save data.
modIDstringThe ID of this project, to make sure saves aren't imported into the wrong project.
modVersionstringThe version of the project this save was created by. Used for upgrading saves for new versions.
namestringThe display name of this save.
offlineProdbooleanWhether or not to apply offline time when loading this save.
offlineTimenull | numberHow much offline time has been accumulated and not yet processed.
tabsstring[]The open tabs.
timenumberThe current time this save was last opened at, in ms since the unix epoch.
timePlayednumberHow long, in ms, this game has been played.

Defined in ​

profectus/src/game/player.ts:63

Functions ​

stringifySave ​

â–¸ stringifySave(player): string

Convert a player save data object into a JSON string. Unwraps refs.

Parameters ​
NameType
playerPlayer
Returns ​

string

Defined in ​

profectus/src/game/player.ts:66

',33),r=[o];function n(s,i,c,f,h,y){return a(),t("div",null,r)}const u=e(d,[["render",n]]);export{p as __pageData,u as default}; diff --git a/assets/api_modules_game_player.md.f23bb598.lean.js b/assets/api_modules_game_player.md.f23bb598.lean.js deleted file mode 100644 index bd733e2f..00000000 --- a/assets/api_modules_game_player.md.f23bb598.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as l}from"./chunks/framework.0799945b.js";const p=JSON.parse('{"title":"Module: game/player","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/player.md","lastUpdated":null}'),d={name:"api/modules/game/player.md"},o=l("",33),r=[o];function n(s,i,c,f,h,y){return a(),t("div",null,r)}const u=e(d,[["render",n]]);export{p as __pageData,u as default}; diff --git a/assets/api_modules_game_requirements.md.1f80f527.js b/assets/api_modules_game_requirements.md.1f80f527.js new file mode 100644 index 00000000..1589bf24 --- /dev/null +++ b/assets/api_modules_game_requirements.md.1f80f527.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as r,N as a}from"./chunks/framework.0799945b.js";const q=JSON.parse('{"title":"Module: game/requirements","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/requirements.md","lastUpdated":null}'),i={name:"api/modules/game/requirements.md"},o=a('

Module: game/requirements ​

Interfaces ​

CostRequirementOptions ​

• CostRequirementOptions: Object

An object that configures a Requirement based on a resource cost.

Defined in ​

profectus/src/game/requirements.tsx:67


Requirement ​

• Requirement: Object

An object that can be used to describe a requirement to perform some purchase or other action.

See

createCostRequirement

Defined in ​

profectus/src/game/requirements.tsx:29

Type Aliases ​

CostRequirement ​

Ƭ CostRequirement: Replace<Requirement & CostRequirementOptions, { cost: ProcessedComputable<DecimalSource> | GenericFormula ; requiresPay: ProcessedComputable<boolean> ; spendResources: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visible | None | boolean> }>

Defined in ​

profectus/src/game/requirements.tsx:96


Requirements ​

Ƭ Requirements: Requirement | Requirement[]

Utility type for accepting 1 or more Requirements.

Defined in ​

profectus/src/game/requirements.tsx:64

Functions ​

createBooleanRequirement ​

â–¸ createBooleanRequirement(requirement, display?): Requirement

Creates a requirement based on a true/false value

Parameters ​

NameTypeDescription
requirementComputable<boolean>The boolean requirement to use
display?CoercableComponentHow to display this requirement to the user

Returns ​

Requirement

Defined in ​

profectus/src/game/requirements.tsx:205


createCostRequirement ​

â–¸ createCostRequirement<T>(optionsFunc): CostRequirement

Lazily creates a requirement with the given options, that is based on meeting an amount of a resource.

Type parameters ​

NameType
Textends CostRequirementOptions

Parameters ​

NameTypeDescription
optionsFunc() => TCost requirement options.

Returns ​

CostRequirement

Defined in ​

profectus/src/game/requirements.tsx:110


createVisibilityRequirement ​

â–¸ createVisibilityRequirement(feature): Requirement

Utility function for creating a requirement that a specified vue feature is visible

Parameters ​

NameTypeDescription
featureObjectThe feature to check the visibility of
feature.visibilityProcessedComputable<boolean | Visibility>-

Returns ​

Requirement

Defined in ​

profectus/src/game/requirements.tsx:190


displayRequirements ​

â–¸ displayRequirements(requirements, amount?): Element

Utility function for display 1+ requirements compactly.

Parameters ​

NameTypeDefault valueDescription
requirementsRequirementsundefinedThe 1+ requirements to display
amountDecimalSource1The amount of levels earned to be displayed

Returns ​

Element

Defined in ​

profectus/src/game/requirements.tsx:252


maxRequirementsMet ​

â–¸ maxRequirementsMet(requirements): DecimalSource

Calculates the maximum number of levels that could be acquired with the current requirement states. True/false requirements will be counted as Infinity or 0.

Parameters ​

NameTypeDescription
requirementsRequirementsThe 1+ requirements to check

Returns ​

DecimalSource

Defined in ​

profectus/src/game/requirements.tsx:234


payByDivision ​

â–¸ payByDivision(this, amount?): void

Parameters ​

NameType
thisCostRequirement
amount?DecimalSource

Returns ​

void

Defined in ​

profectus/src/game/requirements.tsx:302


payByReset ​

â–¸ payByReset(overrideDefaultValue?): (this: CostRequirement) => void

Parameters ​

NameType
overrideDefaultValue?DecimalSource

Returns ​

fn

â–¸ (this): void

Parameters ​
NameType
thisCostRequirement
Returns ​

void

Defined in ​

profectus/src/game/requirements.tsx:314


payRequirements ​

â–¸ payRequirements(requirements, amount?): void

Utility function for paying the costs for 1+ requirements

Parameters ​

NameTypeDefault valueDescription
requirementsRequirementsundefinedThe 1+ requirements to pay
amountDecimalSource1How many levels to pay for

Returns ​

void

Defined in ​

profectus/src/game/requirements.tsx:294


requirementsMet ​

â–¸ requirementsMet(requirements): boolean

Utility for checking if 1+ requirements are all met

Parameters ​

NameTypeDescription
requirementsRequirementsThe 1+ requirements to check

Returns ​

boolean

Defined in ​

profectus/src/game/requirements.tsx:222

',121),n=[o];function s(d,l,c,u,h,m){return r(),t("div",null,n)}const b=e(i,[["render",s]]);export{q as __pageData,b as default}; diff --git a/assets/api_modules_game_requirements.md.1f80f527.lean.js b/assets/api_modules_game_requirements.md.1f80f527.lean.js new file mode 100644 index 00000000..4078cefc --- /dev/null +++ b/assets/api_modules_game_requirements.md.1f80f527.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as r,N as a}from"./chunks/framework.0799945b.js";const q=JSON.parse('{"title":"Module: game/requirements","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/requirements.md","lastUpdated":null}'),i={name:"api/modules/game/requirements.md"},o=a("",121),n=[o];function s(d,l,c,u,h,m){return r(),t("div",null,n)}const b=e(i,[["render",s]]);export{q as __pageData,b as default}; diff --git a/assets/api_modules_game_requirements.md.403fc39c.js b/assets/api_modules_game_requirements.md.403fc39c.js deleted file mode 100644 index bf2bce5d..00000000 --- a/assets/api_modules_game_requirements.md.403fc39c.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as r,N as a}from"./chunks/framework.0799945b.js";const p=JSON.parse('{"title":"Module: game/requirements","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/requirements.md","lastUpdated":null}'),i={name:"api/modules/game/requirements.md"},o=a('

Module: game/requirements ​

Interfaces ​

CostRequirementOptions ​

• CostRequirementOptions: Object

An object that configures a Requirement based on a resource cost.

NameTypeDescription
costComputable<DecimalSource> | GenericFormulaThe amount of resource that must be met for this requirement. You can pass a formula, in which case maximizing will work out of the box (assuming its invertible and, for more accurate calculations, its integral is invertible). If you don't pass a formula then you can still support maximizing by passing a custom pay function.
pay?(amount?: DecimalSource) => voidPass-through to pay. May be required for maximizing support. See cost for restrictions on maximizing support.
requiresPay?Computable<boolean>Pass-through to requiresPay. If not set to false, the default pay function will remove cost from resource.
resourceResource<DecimalSource>The resource that will be checked for meeting the cost.
spendResources?Computable<boolean>When calculating multiple levels to be handled at once, whether it should consider resources used for each level as spent. Setting this to false causes calculations to be faster with larger numbers and supports more math functions. See
visibility?Computable<boolean | Visible | None>Pass-through to visibility.

Defined in ​

profectus/src/game/requirements.tsx:67


Requirement ​

• Requirement: Object

An object that can be used to describe a requirement to perform some purchase or other action.

See

createCostRequirement

NameTypeDescription
canMaximize?ProcessedComputable<boolean>Whether or not this requirement can have multiple levels of requirements that can be met at once. Requirement is assumed to not have multiple levels if this property not present.
display?(amount?: DecimalSource) => ElementThe display for this specific requirement. Required if visibility can be Visibility.Visible.
partialDisplay?(amount?: DecimalSource) => ElementThe display for this specific requirement. This is used for displays multiple requirements condensed. Required if visibility can be Visibility.Visible.
pay?(amount?: DecimalSource) => voidPerform any effects to the game state that should happen when the requirement gets triggered.
requirementMetProcessedComputable<boolean | DecimalSource>Whether or not this requirement has been met.
requiresPayProcessedComputable<boolean>Whether or not this requirement will need to affect the game state when whatever is using this requirement gets triggered.
visibilityProcessedComputable<boolean | Visible | None>Whether or not this requirement should be displayed in Vue Features. displayRequirements will respect this property.

Defined in ​

profectus/src/game/requirements.tsx:29

Type Aliases ​

CostRequirement ​

Ƭ CostRequirement: Replace<Requirement & CostRequirementOptions, { cost: ProcessedComputable<DecimalSource> | GenericFormula ; requiresPay: ProcessedComputable<boolean> ; spendResources: ProcessedComputable<boolean> ; visibility: ProcessedComputable<Visible | None | boolean> }>

Defined in ​

profectus/src/game/requirements.tsx:96


Requirements ​

Ƭ Requirements: Requirement | Requirement[]

Utility type for accepting 1 or more Requirements.

Defined in ​

profectus/src/game/requirements.tsx:64

Functions ​

createBooleanRequirement ​

â–¸ createBooleanRequirement(requirement, display?): Requirement

Creates a requirement based on a true/false value

Parameters ​
NameTypeDescription
requirementComputable<boolean>The boolean requirement to use
display?CoercableComponentHow to display this requirement to the user
Returns ​

Requirement

Defined in ​

profectus/src/game/requirements.tsx:205


createCostRequirement ​

â–¸ createCostRequirement<T>(optionsFunc): CostRequirement

Lazily creates a requirement with the given options, that is based on meeting an amount of a resource.

Type parameters ​
NameType
Textends CostRequirementOptions
Parameters ​
NameTypeDescription
optionsFunc() => TCost requirement options.
Returns ​

CostRequirement

Defined in ​

profectus/src/game/requirements.tsx:110


createVisibilityRequirement ​

â–¸ createVisibilityRequirement(feature): Requirement

Utility function for creating a requirement that a specified vue feature is visible

Parameters ​
NameTypeDescription
featureObjectThe feature to check the visibility of
feature.visibilityProcessedComputable<boolean | Visibility>-
Returns ​

Requirement

Defined in ​

profectus/src/game/requirements.tsx:190


displayRequirements ​

â–¸ displayRequirements(requirements, amount?): Element

Utility function for display 1+ requirements compactly.

Parameters ​
NameTypeDefault valueDescription
requirementsRequirementsundefinedThe 1+ requirements to display
amountDecimalSource1The amount of levels earned to be displayed
Returns ​

Element

Defined in ​

profectus/src/game/requirements.tsx:252


maxRequirementsMet ​

â–¸ maxRequirementsMet(requirements): DecimalSource

Calculates the maximum number of levels that could be acquired with the current requirement states. True/false requirements will be counted as Infinity or 0.

Parameters ​
NameTypeDescription
requirementsRequirementsThe 1+ requirements to check
Returns ​

DecimalSource

Defined in ​

profectus/src/game/requirements.tsx:234


payByDivision ​

â–¸ payByDivision(this, amount?): void

NameType
thisCostRequirement
amount?DecimalSource

Defined in ​

profectus/src/game/requirements.tsx:302


payByReset ​

â–¸ payByReset(overrideDefaultValue?): (this: CostRequirement) => void

NameType
overrideDefaultValue?DecimalSource

Defined in ​

profectus/src/game/requirements.tsx:314


payRequirements ​

â–¸ payRequirements(requirements, amount?): void

Utility function for paying the costs for 1+ requirements

Parameters ​
NameTypeDefault valueDescription
requirementsRequirementsundefinedThe 1+ requirements to pay
amountDecimalSource1How many levels to pay for
Returns ​

void

Defined in ​

profectus/src/game/requirements.tsx:294


requirementsMet ​

â–¸ requirementsMet(requirements): boolean

Utility for checking if 1+ requirements are all met

Parameters ​
NameTypeDescription
requirementsRequirementsThe 1+ requirements to check
Returns ​

boolean

Defined in ​

profectus/src/game/requirements.tsx:222

',112),n=[o];function l(s,d,c,u,h,m){return r(),t("div",null,n)}const b=e(i,[["render",l]]);export{p as __pageData,b as default}; diff --git a/assets/api_modules_game_requirements.md.403fc39c.lean.js b/assets/api_modules_game_requirements.md.403fc39c.lean.js deleted file mode 100644 index 19550255..00000000 --- a/assets/api_modules_game_requirements.md.403fc39c.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as r,N as a}from"./chunks/framework.0799945b.js";const p=JSON.parse('{"title":"Module: game/requirements","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/requirements.md","lastUpdated":null}'),i={name:"api/modules/game/requirements.md"},o=a("",112),n=[o];function l(s,d,c,u,h,m){return r(),t("div",null,n)}const b=e(i,[["render",l]]);export{p as __pageData,b as default}; diff --git a/assets/api_modules_game_settings.md.1958e7ca.js b/assets/api_modules_game_settings.md.1958e7ca.js deleted file mode 100644 index 00a4caf1..00000000 --- a/assets/api_modules_game_settings.md.1958e7ca.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: game/settings","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/settings.md","lastUpdated":null}'),o={name:"api/modules/game/settings.md"},n=r('

Module: game/settings ​

Interfaces ​

Settings ​

• Settings: Object

The player's settings object.

NameTypeDescription
activestringThe ID of the active save.
alignUnitsbooleanWhether to align modifiers to the unit.
hideChallengesboolean-
msDisplayAchievementDisplay-
savesstring[]The IDs of all created saves.
showTPSbooleanWhether or not to show the current ticks per second in the lower left corner of the page.
themeThemesThe current theme to display the game in.
unthrottledbooleanWhether or not to cap the project at 20 ticks per second.

Defined in ​

profectus/src/game/settings.ts:10

profectus/src/features/achievements/achievement.tsx:269

profectus/src/features/challenges/challenge.tsx:344

Variables ​

default ​

• default: Settings

The player settings object. Stores data that persists across all saves. Automatically saved to localStorage whenever changed.

Defined in ​

profectus/src/game/settings.ts:56


gameComponents ​

• Const gameComponents: CoercableComponent[]

A list of components to add to the root of the page.

Defined in ​

profectus/src/game/settings.ts:119


infoComponents ​

• Const infoComponents: CoercableComponent[]

A list of components to show in the info modal.

Defined in ​

profectus/src/game/settings.ts:112


settingFields ​

• Const settingFields: CoercableComponent[]

A list of fields to append to the settings modal.

Defined in ​

profectus/src/game/settings.ts:105

Functions ​

hardResetSettings ​

â–¸ hardResetSettings(): void

A function that erases all player settings, including all saves.

Returns ​

void

Defined in ​

profectus/src/game/settings.ts:58


loadSettings ​

â–¸ loadSettings(): void

Loads the player settings from localStorage. Calls the GlobalEvents.loadSettings event for custom properties to be included. Custom properties should be added by the file they relate to, so they won't be included if the file is tree shaken away. Custom properties should also register the field to modify said setting using registerSettingField.

Returns ​

void

Defined in ​

profectus/src/game/settings.ts:77


registerGameComponent ​

â–¸ registerGameComponent(component): void

Register a component to be displayed at the root of the page.

Parameters ​
NameType
componentCoercableComponent
Returns ​

void

Defined in ​

profectus/src/game/settings.ts:121


registerInfoComponent ​

â–¸ registerInfoComponent(component): void

Register a component to be displayed in the info modal.

Parameters ​
NameType
componentCoercableComponent
Returns ​

void

Defined in ​

profectus/src/game/settings.ts:114


registerSettingField ​

â–¸ registerSettingField(component): void

Register a field to be displayed in the settings modal.

Parameters ​
NameType
componentCoercableComponent
Returns ​

void

Defined in ​

profectus/src/game/settings.ts:107

',80),s=[n];function i(d,l,c,h,f,g){return a(),t("div",null,s)}const m=e(o,[["render",i]]);export{u as __pageData,m as default}; diff --git a/assets/api_modules_game_settings.md.d73a8fbd.js b/assets/api_modules_game_settings.md.d73a8fbd.js new file mode 100644 index 00000000..c5d24f47 --- /dev/null +++ b/assets/api_modules_game_settings.md.d73a8fbd.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: game/settings","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/settings.md","lastUpdated":null}'),n={name:"api/modules/game/settings.md"},o=r('

Module: game/settings ​

Interfaces ​

Settings ​

• Settings: Object

The player's settings object.

Defined in ​

profectus/src/game/settings.ts:10

profectus/src/features/achievements/achievement.tsx:269

profectus/src/features/challenges/challenge.tsx:344

Variables ​

default ​

• default: Settings

The player settings object. Stores data that persists across all saves. Automatically saved to localStorage whenever changed.

Defined in ​

profectus/src/game/settings.ts:56


gameComponents ​

• Const gameComponents: CoercableComponent[]

A list of components to add to the root of the page.

Defined in ​

profectus/src/game/settings.ts:119


infoComponents ​

• Const infoComponents: CoercableComponent[]

A list of components to show in the info modal.

Defined in ​

profectus/src/game/settings.ts:112


settingFields ​

• Const settingFields: CoercableComponent[]

A list of fields to append to the settings modal.

Defined in ​

profectus/src/game/settings.ts:105

Functions ​

hardResetSettings ​

â–¸ hardResetSettings(): void

A function that erases all player settings, including all saves.

Returns ​

void

Defined in ​

profectus/src/game/settings.ts:58


loadSettings ​

â–¸ loadSettings(): void

Loads the player settings from localStorage. Calls the GlobalEvents.loadSettings event for custom properties to be included. Custom properties should be added by the file they relate to, so they won't be included if the file is tree shaken away. Custom properties should also register the field to modify said setting using registerSettingField.

Returns ​

void

Defined in ​

profectus/src/game/settings.ts:77


registerGameComponent ​

â–¸ registerGameComponent(component): void

Register a component to be displayed at the root of the page.

Parameters ​

NameType
componentCoercableComponent

Returns ​

void

Defined in ​

profectus/src/game/settings.ts:121


registerInfoComponent ​

â–¸ registerInfoComponent(component): void

Register a component to be displayed in the info modal.

Parameters ​

NameType
componentCoercableComponent

Returns ​

void

Defined in ​

profectus/src/game/settings.ts:114


registerSettingField ​

â–¸ registerSettingField(component): void

Register a field to be displayed in the settings modal.

Parameters ​

NameType
componentCoercableComponent

Returns ​

void

Defined in ​

profectus/src/game/settings.ts:107

',79),s=[o];function i(d,l,c,h,f,g){return a(),t("div",null,s)}const m=e(n,[["render",i]]);export{u as __pageData,m as default}; diff --git a/assets/api_modules_game_settings.md.1958e7ca.lean.js b/assets/api_modules_game_settings.md.d73a8fbd.lean.js similarity index 70% rename from assets/api_modules_game_settings.md.1958e7ca.lean.js rename to assets/api_modules_game_settings.md.d73a8fbd.lean.js index fc788d5b..a6168a44 100644 --- a/assets/api_modules_game_settings.md.1958e7ca.lean.js +++ b/assets/api_modules_game_settings.md.d73a8fbd.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: game/settings","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/settings.md","lastUpdated":null}'),o={name:"api/modules/game/settings.md"},n=r("",80),s=[n];function i(d,l,c,h,f,g){return a(),t("div",null,s)}const m=e(o,[["render",i]]);export{u as __pageData,m as default}; +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: game/settings","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/settings.md","lastUpdated":null}'),n={name:"api/modules/game/settings.md"},o=r("",79),s=[o];function i(d,l,c,h,f,g){return a(),t("div",null,s)}const m=e(n,[["render",i]]);export{u as __pageData,m as default}; diff --git a/assets/api_modules_game_state.md.d8713837.js b/assets/api_modules_game_state.md.d8713837.js new file mode 100644 index 00000000..7ff74ac5 --- /dev/null +++ b/assets/api_modules_game_state.md.d8713837.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const p=JSON.parse('{"title":"Module: game/state","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/state.md","lastUpdated":null}'),n={name:"api/modules/game/state.md"},s=r('

Module: game/state ​

Interfaces ​

Transient ​

• Transient: Object

An object of global data that is not persistent.

Defined in ​

profectus/src/game/state.ts:6

Variables ​

default ​

• default: ShallowReactive<Transient>

The global transient state object.

Defined in ​

profectus/src/game/state.ts:24

',13),o=[s];function i(l,d,c,h,f,u){return t(),a("div",null,o)}const m=e(n,[["render",i]]);export{p as __pageData,m as default}; diff --git a/assets/api_modules_game_state.md.d8713837.lean.js b/assets/api_modules_game_state.md.d8713837.lean.js new file mode 100644 index 00000000..18b07ade --- /dev/null +++ b/assets/api_modules_game_state.md.d8713837.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const p=JSON.parse('{"title":"Module: game/state","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/state.md","lastUpdated":null}'),n={name:"api/modules/game/state.md"},s=r("",13),o=[s];function i(l,d,c,h,f,u){return t(),a("div",null,o)}const m=e(n,[["render",i]]);export{p as __pageData,m as default}; diff --git a/assets/api_modules_game_state.md.f32881b2.js b/assets/api_modules_game_state.md.f32881b2.js deleted file mode 100644 index 4365cf89..00000000 --- a/assets/api_modules_game_state.md.f32881b2.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as l}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: game/state","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/state.md","lastUpdated":null}'),s={name:"api/modules/game/state.md"},r=l('

Module: game/state ​

Interfaces ​

Transient ​

• Transient: Object

An object of global data that is not persistent.

NameTypeDescription
NaNPath?string[]The location within the player save data object of the NaN value.
NaNPersistent?Persistent<DecimalSource>The ref that was being set to NaN.
hasNaNbooleanWhether or not a NaN value has been detected and undealt with.
lastTenTicksnumber[]A list of the duration, in ms, of the last 10 game ticks. Used for calculating TPS.

Defined in ​

profectus/src/game/state.ts:6

Variables ​

default ​

• default: ShallowReactive<Transient>

The global transient state object.

Defined in ​

profectus/src/game/state.ts:24

',14),n=[r];function o(d,i,c,h,f,u){return a(),t("div",null,n)}const m=e(s,[["render",o]]);export{b as __pageData,m as default}; diff --git a/assets/api_modules_game_state.md.f32881b2.lean.js b/assets/api_modules_game_state.md.f32881b2.lean.js deleted file mode 100644 index 1a03a16e..00000000 --- a/assets/api_modules_game_state.md.f32881b2.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as l}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: game/state","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/game/state.md","lastUpdated":null}'),s={name:"api/modules/game/state.md"},r=l("",14),n=[r];function o(d,i,c,h,f,u){return a(),t("div",null,n)}const m=e(s,[["render",o]]);export{b as __pageData,m as default}; diff --git a/assets/api_modules_lib_break_eternity.md.456df427.js b/assets/api_modules_lib_break_eternity.md.456df427.js new file mode 100644 index 00000000..d0a75d2e --- /dev/null +++ b/assets/api_modules_lib_break_eternity.md.456df427.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const p=JSON.parse('{"title":"Module: lib/break_eternity","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/lib/break_eternity.md","lastUpdated":null}'),i={name:"api/modules/lib/break_eternity.md"},o=r('

Module: lib/break_eternity ​

Classes ​

default ​

• default: Object

The Decimal's value is simply mantissa * 10^exponent.

Defined in ​

profectus/src/lib/break_eternity.ts:346

Type Aliases ​

CompareResult ​

Ƭ CompareResult: -1 | 0 | 1

Defined in ​

profectus/src/lib/break_eternity.ts:5


DecimalSource ​

Ƭ DecimalSource: default | number | string

Defined in ​

profectus/src/lib/break_eternity.ts:341

',17),n=[o];function s(l,d,c,b,h,u){return t(),a("div",null,n)}const _=e(i,[["render",s]]);export{p as __pageData,_ as default}; diff --git a/assets/api_modules_lib_break_eternity.md.456df427.lean.js b/assets/api_modules_lib_break_eternity.md.456df427.lean.js new file mode 100644 index 00000000..c53d5886 --- /dev/null +++ b/assets/api_modules_lib_break_eternity.md.456df427.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const p=JSON.parse('{"title":"Module: lib/break_eternity","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/lib/break_eternity.md","lastUpdated":null}'),i={name:"api/modules/lib/break_eternity.md"},o=r("",17),n=[o];function s(l,d,c,b,h,u){return t(),a("div",null,n)}const _=e(i,[["render",s]]);export{p as __pageData,_ as default}; diff --git a/assets/api_modules_lib_break_eternity.md.4905c813.js b/assets/api_modules_lib_break_eternity.md.4905c813.js deleted file mode 100644 index 5e09778e..00000000 --- a/assets/api_modules_lib_break_eternity.md.4905c813.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as d,N as c}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Module: lib/break_eternity","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/lib/break_eternity.md","lastUpdated":null}'),a={name:"api/modules/lib/break_eternity.md"},o=c('

Module: lib/break_eternity ​

Classes ​

default ​

• default: Object

The Decimal's value is simply mantissa * 10^exponent.

NameType
constructor(value?: DecimalSource) => default
layernumber
magnumber
signnumber
dInfdefault
dNaNdefault
dNegInfdefault
dNegOnedefault
dNumberMaxdefault
dNumberMindefault
dOnedefault
dTendefault
dTwodefault
dZerodefault
fromStringCacheLRUCache<string, default>
get e()number
get exponent()number
get m()number
get mantissa()number
get s()number
abs() => default
absLog10() => default
acos() => default
acosh() => default
add(value: DecimalSource) => default
ascensionPenalty(ascensions: DecimalSource) => default
asin() => default
asinh() => default
atan() => default
atanh() => default
cbrt() => default
ceil() => default
clamp(min: DecimalSource, max: DecimalSource) => default
clampMax(max: DecimalSource) => default
clampMin(min: DecimalSource) => default
cmp(value: DecimalSource) => CompareResult
cmp_tolerance(value: DecimalSource, tolerance: number) => CompareResult
cmpabs(value: DecimalSource) => CompareResult
compare(value: DecimalSource) => CompareResult
compare_tolerance(value: DecimalSource, tolerance: number) => CompareResult
cos() => default
cosh() => default
cube() => default
div(value: DecimalSource) => default
divide(value: DecimalSource) => default
divideBy(value: DecimalSource) => default
dividedBy(value: DecimalSource) => default
egg() => default
eq(value: DecimalSource) => boolean
eq_tolerance(value: DecimalSource, tolerance?: number) => boolean
equals(value: DecimalSource) => boolean
equals_tolerance(value: DecimalSource, tolerance: number) => boolean
exp() => default
factorial() => default
floor() => default
fromComponents(sign: number, layer: number, mag: number) => default
fromComponents_noNormalize(sign: number, layer: number, mag: number) => default
fromDecimal(value: default) => default
fromMantissaExponent(mantissa: number, exponent: number) => default
fromMantissaExponent_noNormalize(mantissa: number, exponent: number) => default
fromNumber(value: number) => default
fromString(value: string) => default
fromValue(value: DecimalSource) => default
gamma() => default
greaterThan(other: DecimalSource) => boolean
greaterThanOrEqualTo(other: DecimalSource) => boolean
gt(value: DecimalSource) => boolean
gt_tolerance(value: DecimalSource, tolerance: number) => boolean
gte(value: DecimalSource) => boolean
gte_tolerance(value: DecimalSource, tolerance: number) => boolean
isFinite() => boolean
isNan() => boolean
iteratedexp(height: number, payload: default) => default
iteratedlog(base: DecimalSource, times: number) => default
lambertw() => default
layeradd(diff: number, base: DecimalSource) => default
layeradd10(diff: DecimalSource) => default
lessThan(other: DecimalSource) => boolean
lessThanOrEqualTo(other: DecimalSource) => boolean
ln() => default
lngamma() => default
log(base: DecimalSource) => default
log10() => default
log2() => default
logarithm(base: DecimalSource) => default
lt(value: DecimalSource) => boolean
lt_tolerance(value: DecimalSource, tolerance: number) => boolean
lte(value: DecimalSource) => boolean
lte_tolerance(value: DecimalSource, tolerance: number) => boolean
magnitudeWithDecimalPlaces(places: number) => number
mantissaWithDecimalPlaces(places: number) => number
max(value: DecimalSource) => default
maxabs(value: DecimalSource) => default
min(value: DecimalSource) => default
minabs(value: DecimalSource) => default
minus(value: DecimalSource) => default
mul(value: DecimalSource) => default
multiply(value: DecimalSource) => default
neg() => default
negate() => default
negated() => default
neq(value: DecimalSource) => boolean
neq_tolerance(value: DecimalSource, tolerance: number) => boolean
normalize() => default
notEquals(value: DecimalSource) => boolean
notEquals_tolerance(value: DecimalSource, tolerance: number) => boolean
pLog10() => default
pentate(height: number, payload: DecimalSource) => default
plus(value: DecimalSource) => default
pow(value: DecimalSource) => default
pow10() => default
pow_base(value: DecimalSource) => default
recip() => default
reciprocal() => default
reciprocate() => default
root(value: DecimalSource) => default
round() => default
sgn() => number
sin() => default
sinh() => default
slog(base: DecimalSource, iterations: number) => default
slog_internal(base: DecimalSource) => default
sqr() => default
sqrt() => default
ssqrt() => default
sub(value: DecimalSource) => default
subtract(value: DecimalSource) => default
tan() => default
tanh() => default
tetrate(height: number, payload: DecimalSource) => default
times(value: DecimalSource) => default
toExponential(places: number) => string
toFixed(places: number) => string
toJSON() => string
toNumber() => number
toPrecision(places: number) => string
toString() => string
toStringWithDecimalPlaces(places: number) => string
trunc() => default
valueOf() => string
abs(value: DecimalSource) => default
absLog10(value: DecimalSource) => default
acos(value: DecimalSource) => default
acosh(value: DecimalSource) => default
add(value: DecimalSource, other: DecimalSource) => default
affordArithmeticSeries(resourcesAvailable: DecimalSource, priceStart: DecimalSource, priceAdd: DecimalSource, currentOwned: DecimalSource) => default
affordArithmeticSeries_core(resourcesAvailable: default, priceStart: default, priceAdd: default, currentOwned: default) => default
affordGeometricSeries(resourcesAvailable: DecimalSource, priceStart: DecimalSource, priceRatio: DecimalSource, currentOwned: DecimalSource) => default
affordGeometricSeries_core(resourcesAvailable: default, priceStart: default, priceRatio: default, currentOwned: DecimalSource) => default
asin(value: DecimalSource) => default
asinh(value: DecimalSource) => default
atan(value: DecimalSource) => default
atanh(value: DecimalSource) => default
cbrt(value: DecimalSource) => default
ceil(value: DecimalSource) => default
clamp(value: DecimalSource, min: DecimalSource, max: DecimalSource) => default
clampMax(value: DecimalSource, max: DecimalSource) => default
clampMin(value: DecimalSource, min: DecimalSource) => default
cmp(value: DecimalSource, other: DecimalSource) => CompareResult
cmp_tolerance(value: DecimalSource, other: DecimalSource, tolerance: number) => CompareResult
cmpabs(value: DecimalSource, other: DecimalSource) => CompareResult
compare(value: DecimalSource, other: DecimalSource) => CompareResult
compare_tolerance(value: DecimalSource, other: DecimalSource, tolerance: number) => CompareResult
cos(value: DecimalSource) => default
cosh(value: DecimalSource) => default
critical_section(base: number, height: number, grid: number[][]) => number
cube(value: DecimalSource) => default
div(value: DecimalSource, other: DecimalSource) => default
divide(value: DecimalSource, other: DecimalSource) => default
efficiencyOfPurchase(cost: DecimalSource, currentRpS: DecimalSource, deltaRpS: DecimalSource) => default
efficiencyOfPurchase_core(cost: default, currentRpS: default, deltaRpS: default) => default
eq(value: DecimalSource, other: DecimalSource) => boolean
eq_tolerance(value: DecimalSource, other: DecimalSource, tolerance?: number) => boolean
equals(value: DecimalSource, other: DecimalSource) => boolean
equals_tolerance(value: DecimalSource, other: DecimalSource, tolerance?: number) => boolean
exp(value: DecimalSource) => default
factorial(value: DecimalSource, _other?: undefined) => default
floor(value: DecimalSource) => default
fromComponents(sign: number, layer: number, mag: number) => default
fromComponents_noNormalize(sign: number, layer: number, mag: number) => default
fromDecimal(value: default) => default
fromMantissaExponent(mantissa: number, exponent: number) => default
fromMantissaExponent_noNormalize(mantissa: number, exponent: number) => default
fromNumber(value: number) => default
fromString(value: string) => default
fromValue(value: DecimalSource) => default
fromValue_noAlloc(value: DecimalSource) => Readonly<default>
gamma(value: DecimalSource, _other?: undefined) => default
gt(value: DecimalSource, other: DecimalSource) => boolean
gt_tolerance(value: DecimalSource, other: DecimalSource, tolerance: number) => boolean
gte(value: DecimalSource, other: DecimalSource) => boolean
gte_tolerance(value: DecimalSource, other: DecimalSource, tolerance: number) => boolean
isFinite(value: DecimalSource) => boolean
isNaN(value: DecimalSource) => boolean
iteratedexp(value: DecimalSource, height: number, payload: default) => default
iteratedlog(value: DecimalSource, base: DecimalSource, times: number) => default
lambertw(value: DecimalSource) => default
layeradd(value: DecimalSource, diff: number, base: DecimalSource) => default
layeradd10(value: DecimalSource, diff: DecimalSource) => default
ln(value: DecimalSource) => default
lngamma(value: DecimalSource, _other?: undefined) => default
log(value: DecimalSource, base: DecimalSource) => default
log10(value: DecimalSource) => default
log2(value: DecimalSource) => default
logarithm(value: DecimalSource, base: DecimalSource) => default
lt(value: DecimalSource, other: DecimalSource) => boolean
lt_tolerance(value: DecimalSource, other: DecimalSource, tolerance: number) => boolean
lte(value: DecimalSource, other: DecimalSource) => boolean
lte_tolerance(value: DecimalSource, other: DecimalSource, tolerance: number) => boolean
max(value: DecimalSource, other: DecimalSource) => default
maxabs(value: DecimalSource, other: DecimalSource) => default
min(value: DecimalSource, other: DecimalSource) => default
minabs(value: DecimalSource, other: DecimalSource) => default
minus(value: DecimalSource, other: DecimalSource) => default
mul(value: DecimalSource, other: DecimalSource) => default
multiply(value: DecimalSource, other: DecimalSource) => default
neg(value: DecimalSource) => default
negate(value: DecimalSource) => default
negated(value: DecimalSource) => default
neq(value: DecimalSource, other: DecimalSource) => boolean
neq_tolerance(value: DecimalSource, other: DecimalSource, tolerance: number) => boolean
notEquals(value: DecimalSource, other: DecimalSource) => boolean
notEquals_tolerance(value: DecimalSource, other: DecimalSource, tolerance: number) => boolean
pLog10(value: DecimalSource) => default
pentate(value: DecimalSource, height: number, payload: DecimalSource) => default
plus(value: DecimalSource, other: DecimalSource) => default
pow(value: DecimalSource, other: DecimalSource) => default
pow10(value: DecimalSource) => default
pow_base(value: DecimalSource, other: DecimalSource) => default
randomDecimalForTesting(maxLayers: number) => default
recip(value: DecimalSource) => default
reciprocal(value: DecimalSource) => default
reciprocate(value: DecimalSource) => default
root(value: DecimalSource, other: DecimalSource) => default
round(value: DecimalSource) => default
sgn(value: DecimalSource) => number
sign(value: DecimalSource) => number
sin(value: DecimalSource) => default
sinh(value: DecimalSource) => default
slog(value: DecimalSource, base: number) => default
slog_critical(base: number, height: number) => number
sqr(value: DecimalSource) => default
sqrt(value: DecimalSource) => default
ssqrt(value: DecimalSource) => default
sub(value: DecimalSource, other: DecimalSource) => default
subtract(value: DecimalSource, other: DecimalSource) => default
sumArithmeticSeries(numItems: DecimalSource, priceStart: DecimalSource, priceAdd: DecimalSource, currentOwned: DecimalSource) => default
sumArithmeticSeries_core(numItems: default, priceStart: default, priceAdd: default, currentOwned: default) => default
sumGeometricSeries(numItems: DecimalSource, priceStart: DecimalSource, priceRatio: DecimalSource, currentOwned: DecimalSource) => default
sumGeometricSeries_core(numItems: DecimalSource, priceStart: default, priceRatio: default, currentOwned: DecimalSource) => default
tan(value: DecimalSource) => default
tanh(value: DecimalSource) => default
tetrate(value: DecimalSource, height: number, payload: DecimalSource) => default
tetrate_critical(base: number, height: number) => number
times(value: DecimalSource, other: DecimalSource) => default
trunc(value: DecimalSource) => default

Defined in ​

profectus/src/lib/break_eternity.ts:346

Type Aliases ​

CompareResult ​

Ƭ CompareResult: -1 | 0 | 1

Defined in ​

profectus/src/lib/break_eternity.ts:5


DecimalSource ​

Ƭ DecimalSource: default | number | string

Defined in ​

profectus/src/lib/break_eternity.ts:341

',18),l=[o];function r(i,f,n,u,s,y){return d(),t("div",null,l)}const b=e(a,[["render",r]]);export{m as __pageData,b as default}; diff --git a/assets/api_modules_lib_break_eternity.md.4905c813.lean.js b/assets/api_modules_lib_break_eternity.md.4905c813.lean.js deleted file mode 100644 index a91cbb5c..00000000 --- a/assets/api_modules_lib_break_eternity.md.4905c813.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as d,N as c}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Module: lib/break_eternity","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/lib/break_eternity.md","lastUpdated":null}'),a={name:"api/modules/lib/break_eternity.md"},o=c("",18),l=[o];function r(i,f,n,u,s,y){return d(),t("div",null,l)}const b=e(a,[["render",r]]);export{m as __pageData,b as default}; diff --git a/assets/api_modules_lib_lru-cache.md.56fe8d58.js b/assets/api_modules_lib_lru-cache.md.56fe8d58.js deleted file mode 100644 index bf90755b..00000000 --- a/assets/api_modules_lib_lru-cache.md.56fe8d58.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as d,N as c}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: lib/lru-cache","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/lib/lru-cache.md","lastUpdated":null}'),a={name:"api/modules/lib/lru-cache.md"},o=c('

Module: lib/lru-cache ​

Classes ​

LRUCache ​

• LRUCache<K, V>: Object

A LRU cache intended for caching pure functions.

Type parameters ​

Name
K
V
NameType
constructor<K, V>(maxSize: number) => LRUCache<K, V>
firstundefined | ListNode<K, V>
lastundefined | ListNode<K, V>
mapMap<K, ListNode<K, V>>
maxSizenumber
get size()number
get(key: K) => undefined | V
set(key: K, value: V) => void

Defined in ​

profectus/src/lib/lru-cache.ts:4

',10),l=[o];function r(s,i,n,h,f,u){return d(),t("div",null,l)}const p=e(a,[["render",r]]);export{b as __pageData,p as default}; diff --git a/assets/api_modules_lib_lru-cache.md.56fe8d58.lean.js b/assets/api_modules_lib_lru-cache.md.56fe8d58.lean.js deleted file mode 100644 index b84453a2..00000000 --- a/assets/api_modules_lib_lru-cache.md.56fe8d58.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as d,N as c}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: lib/lru-cache","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/lib/lru-cache.md","lastUpdated":null}'),a={name:"api/modules/lib/lru-cache.md"},o=c("",10),l=[o];function r(s,i,n,h,f,u){return d(),t("div",null,l)}const p=e(a,[["render",r]]);export{b as __pageData,p as default}; diff --git a/assets/api_modules_lib_lru-cache.md.a386377a.js b/assets/api_modules_lib_lru-cache.md.a386377a.js new file mode 100644 index 00000000..6cbe26f1 --- /dev/null +++ b/assets/api_modules_lib_lru-cache.md.a386377a.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Module: lib/lru-cache","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/lib/lru-cache.md","lastUpdated":null}'),c={name:"api/modules/lib/lru-cache.md"},l=r('

Module: lib/lru-cache ​

Classes ​

LRUCache ​

• LRUCache<K, V>: Object

A LRU cache intended for caching pure functions.

Type parameters ​

Name
K
V

Defined in ​

profectus/src/lib/lru-cache.ts:4

',9),o=[l];function s(d,i,n,h,u,p){return t(),a("div",null,o)}const _=e(c,[["render",s]]);export{f as __pageData,_ as default}; diff --git a/assets/api_modules_lib_lru-cache.md.a386377a.lean.js b/assets/api_modules_lib_lru-cache.md.a386377a.lean.js new file mode 100644 index 00000000..a50f1402 --- /dev/null +++ b/assets/api_modules_lib_lru-cache.md.a386377a.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Module: lib/lru-cache","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/lib/lru-cache.md","lastUpdated":null}'),c={name:"api/modules/lib/lru-cache.md"},l=r("",9),o=[l];function s(d,i,n,h,u,p){return t(),a("div",null,o)}const _=e(c,[["render",s]]);export{f as __pageData,_ as default}; diff --git a/assets/api_modules_lib_pwa-register.md.0a1ca45c.js b/assets/api_modules_lib_pwa-register.md.0a1ca45c.js new file mode 100644 index 00000000..5762bf10 --- /dev/null +++ b/assets/api_modules_lib_pwa-register.md.0a1ca45c.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Module: lib/pwa-register","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/lib/pwa-register.md","lastUpdated":null}'),o={name:"api/modules/lib/pwa-register.md"},i=r('

Module: lib/pwa-register ​

Interfaces ​

RegisterSWOptions ​

• RegisterSWOptions: Object

Defined in ​

profectus/src/lib/pwa-register.d.ts:4

Functions ​

useRegisterSW ​

â–¸ useRegisterSW(options?): Object

Parameters ​

NameType
options?RegisterSWOptions

Returns ​

Object

NameType
needRefreshRef<boolean>
offlineReadyRef<boolean>
updateServiceWorker(reloadPage?: boolean) => Promise<void>

Defined in ​

profectus/src/lib/pwa-register.d.ts:12

',16),s=[i];function d(l,n,c,h,f,p){return a(),t("div",null,s)}const u=e(o,[["render",d]]);export{g as __pageData,u as default}; diff --git a/assets/api_modules_lib_pwa-register.md.0a1ca45c.lean.js b/assets/api_modules_lib_pwa-register.md.0a1ca45c.lean.js new file mode 100644 index 00000000..5e7ff4f4 --- /dev/null +++ b/assets/api_modules_lib_pwa-register.md.0a1ca45c.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Module: lib/pwa-register","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/lib/pwa-register.md","lastUpdated":null}'),o={name:"api/modules/lib/pwa-register.md"},i=r("",16),s=[i];function d(l,n,c,h,f,p){return a(),t("div",null,s)}const u=e(o,[["render",d]]);export{g as __pageData,u as default}; diff --git a/assets/api_modules_lib_pwa-register.md.8e6a42cb.js b/assets/api_modules_lib_pwa-register.md.8e6a42cb.js deleted file mode 100644 index c05f8f84..00000000 --- a/assets/api_modules_lib_pwa-register.md.8e6a42cb.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as r,N as a}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: lib/pwa-register","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/lib/pwa-register.md","lastUpdated":null}'),o={name:"api/modules/lib/pwa-register.md"},i=a('

Module: lib/pwa-register ​

Interfaces ​

RegisterSWOptions ​

• RegisterSWOptions: Object

NameType
immediate?boolean
onNeedRefresh?() => void
onOfflineReady?() => void
onRegisterError?(error: any) => void
onRegistered?(registration: undefined | ServiceWorkerRegistration) => void

Defined in ​

profectus/src/lib/pwa-register.d.ts:4

Functions ​

useRegisterSW ​

â–¸ useRegisterSW(options?): Object

NameType
options?RegisterSWOptions

Defined in ​

profectus/src/lib/pwa-register.d.ts:12

',13),d=[i];function s(l,n,c,g,f,h){return r(),t("div",null,d)}const u=e(o,[["render",s]]);export{b as __pageData,u as default}; diff --git a/assets/api_modules_lib_pwa-register.md.8e6a42cb.lean.js b/assets/api_modules_lib_pwa-register.md.8e6a42cb.lean.js deleted file mode 100644 index 6dd538ee..00000000 --- a/assets/api_modules_lib_pwa-register.md.8e6a42cb.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as r,N as a}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: lib/pwa-register","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/lib/pwa-register.md","lastUpdated":null}'),o={name:"api/modules/lib/pwa-register.md"},i=a("",13),d=[i];function s(l,n,c,g,f,h){return r(),t("div",null,d)}const u=e(o,[["render",s]]);export{b as __pageData,u as default}; diff --git a/assets/api_modules_util_bignum.md.03ad1117.js b/assets/api_modules_util_bignum.md.03ad1117.js deleted file mode 100644 index 4e4ecc49..00000000 --- a/assets/api_modules_util_bignum.md.03ad1117.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: util/bignum","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/bignum.md","lastUpdated":null}'),o={name:"api/modules/util/bignum.md"},l=r('

Module: util/bignum ​

References ​

default ​

Re-exports default

Type Aliases ​

DecimalSource ​

Ƭ DecimalSource: DecimalSource

Defined in ​

profectus/src/util/bignum.ts:18

Functions ​

commaFormat ​

â–¸ commaFormat(num, precision): string

NameType
numDecimalSource
precisionnumber

Defined in ​

profectus/src/util/bignum.ts:8


exponentialFormat ​

â–¸ exponentialFormat(num, precision, mantissa?): string

NameTypeDefault value
numDecimalSourceundefined
precisionnumberundefined
mantissabooleantrue

Defined in ​

profectus/src/util/bignum.ts:7


format ​

â–¸ format(num, precision?, small?): string

NameType
numDecimalSource
precision?number
small?boolean

Defined in ​

profectus/src/util/bignum.ts:10


formatSmall ​

â–¸ formatSmall(x, precision?): string

NameType
xDecimalSource
precision?number

Defined in ​

profectus/src/util/bignum.ts:14


formatTime ​

â–¸ formatTime(seconds): string

NameType
secondsDecimalSource

Defined in ​

profectus/src/util/bignum.ts:12


formatWhole ​

â–¸ formatWhole(num): string

NameType
numDecimalSource

Defined in ​

profectus/src/util/bignum.ts:11


invertOOM ​

â–¸ invertOOM(x): default

NameType
xDecimalSource

Defined in ​

profectus/src/util/bignum.ts:15


regularFormat ​

â–¸ regularFormat(num, precision): string

NameType
numDecimalSource
precisionnumber

Defined in ​

profectus/src/util/bignum.ts:9


toPlaces ​

â–¸ toPlaces(x, precision, maxAccepted): string

NameType
xDecimalSource
precisionnumber
maxAcceptedDecimalSource

Defined in ​

profectus/src/util/bignum.ts:13

',63),i=[l];function d(n,c,s,h,f,u){return a(),t("div",null,i)}const g=e(o,[["render",d]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_util_bignum.md.03ad1117.lean.js b/assets/api_modules_util_bignum.md.03ad1117.lean.js deleted file mode 100644 index b61c0833..00000000 --- a/assets/api_modules_util_bignum.md.03ad1117.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: util/bignum","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/bignum.md","lastUpdated":null}'),o={name:"api/modules/util/bignum.md"},l=r("",63),i=[l];function d(n,c,s,h,f,u){return a(),t("div",null,i)}const g=e(o,[["render",d]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_util_bignum.md.7557448e.js b/assets/api_modules_util_bignum.md.7557448e.js new file mode 100644 index 00000000..ede0617a --- /dev/null +++ b/assets/api_modules_util_bignum.md.7557448e.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Module: util/bignum","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/bignum.md","lastUpdated":null}'),o={name:"api/modules/util/bignum.md"},l=r('

Module: util/bignum ​

References ​

default ​

Re-exports default

Type Aliases ​

DecimalSource ​

Ƭ DecimalSource: DecimalSource

Defined in ​

profectus/src/util/bignum.ts:18

Functions ​

commaFormat ​

â–¸ commaFormat(num, precision): string

Parameters ​

NameType
numDecimalSource
precisionnumber

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:28


exponentialFormat ​

â–¸ exponentialFormat(num, precision, mantissa?): string

Parameters ​

NameTypeDefault value
numDecimalSourceundefined
precisionnumberundefined
mantissabooleantrue

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:9


format ​

â–¸ format(num, precision?, small?): string

Parameters ​

NameType
numDecimalSource
precision?number
small?boolean

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:69


formatSmall ​

â–¸ formatSmall(x, precision?): string

Parameters ​

NameType
xDecimalSource
precision?number

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:185


formatTime ​

â–¸ formatTime(seconds): string

Parameters ​

NameType
secondsDecimalSource

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:130


formatWhole ​

â–¸ formatWhole(num): string

Parameters ​

NameType
numDecimalSource

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:116


invertOOM ​

â–¸ invertOOM(x): default

Parameters ​

NameType
xDecimalSource

Returns ​

default

Defined in ​

profectus/src/util/break_eternity.ts:189


regularFormat ​

â–¸ regularFormat(num, precision): string

Parameters ​

NameType
numDecimalSource
precisionnumber

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:43


toPlaces ​

â–¸ toPlaces(x, precision, maxAccepted): string

Parameters ​

NameType
xDecimalSource
precisionnumber
maxAcceptedDecimalSource

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:173

',90),i=[l];function d(n,s,c,h,u,f){return a(),t("div",null,i)}const p=e(o,[["render",d]]);export{m as __pageData,p as default}; diff --git a/assets/api_modules_util_bignum.md.7557448e.lean.js b/assets/api_modules_util_bignum.md.7557448e.lean.js new file mode 100644 index 00000000..162ceaae --- /dev/null +++ b/assets/api_modules_util_bignum.md.7557448e.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Module: util/bignum","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/bignum.md","lastUpdated":null}'),o={name:"api/modules/util/bignum.md"},l=r("",90),i=[l];function d(n,s,c,h,u,f){return a(),t("div",null,i)}const p=e(o,[["render",d]]);export{m as __pageData,p as default}; diff --git a/assets/api_modules_util_break_eternity.md.3953e0b7.js b/assets/api_modules_util_break_eternity.md.3953e0b7.js new file mode 100644 index 00000000..28c5645d --- /dev/null +++ b/assets/api_modules_util_break_eternity.md.3953e0b7.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Module: util/break_eternity","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/break_eternity.md","lastUpdated":null}'),o={name:"api/modules/util/break_eternity.md"},l=r('

Module: util/break_eternity ​

References ​

default ​

Re-exports default

Functions ​

commaFormat ​

â–¸ commaFormat(num, precision): string

Parameters ​

NameType
numDecimalSource
precisionnumber

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:28


exponentialFormat ​

â–¸ exponentialFormat(num, precision, mantissa?): string

Parameters ​

NameTypeDefault value
numDecimalSourceundefined
precisionnumberundefined
mantissabooleantrue

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:9


format ​

â–¸ format(num, precision?, small?): string

Parameters ​

NameType
numDecimalSource
precision?number
small?boolean

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:69


formatSmall ​

â–¸ formatSmall(x, precision?): string

Parameters ​

NameType
xDecimalSource
precision?number

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:185


formatTime ​

â–¸ formatTime(seconds): string

Parameters ​

NameType
secondsDecimalSource

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:130


formatWhole ​

â–¸ formatWhole(num): string

Parameters ​

NameType
numDecimalSource

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:116


invertOOM ​

â–¸ invertOOM(x): default

Parameters ​

NameType
xDecimalSource

Returns ​

default

Defined in ​

profectus/src/util/break_eternity.ts:189


regularFormat ​

â–¸ regularFormat(num, precision): string

Parameters ​

NameType
numDecimalSource
precisionnumber

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:43


toPlaces ​

â–¸ toPlaces(x, precision, maxAccepted): string

Parameters ​

NameType
xDecimalSource
precisionnumber
maxAcceptedDecimalSource

Returns ​

string

Defined in ​

profectus/src/util/break_eternity.ts:173

',85),d=[l];function i(n,s,c,h,f,u){return a(),t("div",null,d)}const p=e(o,[["render",i]]);export{m as __pageData,p as default}; diff --git a/assets/api_modules_util_break_eternity.md.5233e941.lean.js b/assets/api_modules_util_break_eternity.md.3953e0b7.lean.js similarity index 71% rename from assets/api_modules_util_break_eternity.md.5233e941.lean.js rename to assets/api_modules_util_break_eternity.md.3953e0b7.lean.js index 40093198..7ad79d36 100644 --- a/assets/api_modules_util_break_eternity.md.5233e941.lean.js +++ b/assets/api_modules_util_break_eternity.md.3953e0b7.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Module: util/break_eternity","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/break_eternity.md","lastUpdated":null}'),o={name:"api/modules/util/break_eternity.md"},l=r("",58),d=[l];function i(n,c,s,f,h,u){return a(),t("div",null,d)}const y=e(o,[["render",i]]);export{m as __pageData,y as default}; +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Module: util/break_eternity","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/break_eternity.md","lastUpdated":null}'),o={name:"api/modules/util/break_eternity.md"},l=r("",85),d=[l];function i(n,s,c,h,f,u){return a(),t("div",null,d)}const p=e(o,[["render",i]]);export{m as __pageData,p as default}; diff --git a/assets/api_modules_util_break_eternity.md.5233e941.js b/assets/api_modules_util_break_eternity.md.5233e941.js deleted file mode 100644 index d4ddedcd..00000000 --- a/assets/api_modules_util_break_eternity.md.5233e941.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Module: util/break_eternity","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/break_eternity.md","lastUpdated":null}'),o={name:"api/modules/util/break_eternity.md"},l=r('

Module: util/break_eternity ​

References ​

default ​

Re-exports default

Functions ​

commaFormat ​

â–¸ commaFormat(num, precision): string

NameType
numDecimalSource
precisionnumber

Defined in ​

profectus/src/util/break_eternity.ts:28


exponentialFormat ​

â–¸ exponentialFormat(num, precision, mantissa?): string

NameTypeDefault value
numDecimalSourceundefined
precisionnumberundefined
mantissabooleantrue

Defined in ​

profectus/src/util/break_eternity.ts:9


format ​

â–¸ format(num, precision?, small?): string

NameType
numDecimalSource
precision?number
small?boolean

Defined in ​

profectus/src/util/break_eternity.ts:69


formatSmall ​

â–¸ formatSmall(x, precision?): string

NameType
xDecimalSource
precision?number

Defined in ​

profectus/src/util/break_eternity.ts:185


formatTime ​

â–¸ formatTime(seconds): string

NameType
secondsDecimalSource

Defined in ​

profectus/src/util/break_eternity.ts:130


formatWhole ​

â–¸ formatWhole(num): string

NameType
numDecimalSource

Defined in ​

profectus/src/util/break_eternity.ts:116


invertOOM ​

â–¸ invertOOM(x): default

NameType
xDecimalSource

Defined in ​

profectus/src/util/break_eternity.ts:189


regularFormat ​

â–¸ regularFormat(num, precision): string

NameType
numDecimalSource
precisionnumber

Defined in ​

profectus/src/util/break_eternity.ts:43


toPlaces ​

â–¸ toPlaces(x, precision, maxAccepted): string

NameType
xDecimalSource
precisionnumber
maxAcceptedDecimalSource

Defined in ​

profectus/src/util/break_eternity.ts:173

',58),d=[l];function i(n,c,s,f,h,u){return a(),t("div",null,d)}const y=e(o,[["render",i]]);export{m as __pageData,y as default}; diff --git a/assets/api_modules_util_common.md.501f49a5.js b/assets/api_modules_util_common.md.501f49a5.js new file mode 100644 index 00000000..f7342e81 --- /dev/null +++ b/assets/api_modules_util_common.md.501f49a5.js @@ -0,0 +1 @@ +import{_ as r,c as o,o as n,N as a,x as e,a as t}from"./chunks/framework.0799945b.js";const x=JSON.parse('{"title":"Module: util/common","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/common.md","lastUpdated":null}'),l={name:"api/modules/util/common.md"},i=a('

Module: util/common ​

Enumerations ​

Direction ​

• Direction: Object

Defined in ​

profectus/src/util/common.ts:21

Type Aliases ​

ArrayElements ​

Ƭ ArrayElements<T>: T extends ReadonlyArray<infer S> ? S : never

Type parameters ​

NameType
Textends ReadonlyArray<unknown>

Defined in ​

profectus/src/util/common.ts:3


WithRequired ​

',15),d=e("p",{"[P":"",in:"","K]-?:":"","T[P]":""},[t("Ƭ "),e("strong",null,"WithRequired"),t("<"),e("code",null,"T"),t(", "),e("code",null,"K"),t(">: "),e("code",null,"T"),t(" &")],-1),s=a('

Type parameters ​

NameType
TT
Kextends keyof T

Defined in ​

profectus/src/util/common.ts:1

Functions ​

camelToTitle ​

â–¸ camelToTitle(camel): string

Parameters ​

NameType
camelstring

Returns ​

string

Defined in ​

profectus/src/util/common.ts:9


isFunction ​

â–¸ isFunction<T, S, R>(functionOrValue): functionOrValue is Function

Type parameters ​

NameType
TT
Sextends readonly unknown[]
RR

Parameters ​

NameType
functionOrValueR | (...args: S) => T

Returns ​

functionOrValue is Function

Defined in ​

profectus/src/util/common.ts:15

',24),c=[i,d,s];function h(u,f,m,p,b,y){return n(),o("div",null,c)}const _=r(l,[["render",h]]);export{x as __pageData,_ as default}; diff --git a/assets/api_modules_util_common.md.fa59245c.lean.js b/assets/api_modules_util_common.md.501f49a5.lean.js similarity index 50% rename from assets/api_modules_util_common.md.fa59245c.lean.js rename to assets/api_modules_util_common.md.501f49a5.lean.js index 49b94c7a..a130c6fa 100644 --- a/assets/api_modules_util_common.md.fa59245c.lean.js +++ b/assets/api_modules_util_common.md.501f49a5.lean.js @@ -1 +1 @@ -import{_ as o,c as r,o as l,N as a,x as e,a as t}from"./chunks/framework.0799945b.js";const x=JSON.parse('{"title":"Module: util/common","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/common.md","lastUpdated":null}'),d={name:"api/modules/util/common.md"},n=a("",16),i=e("p",{"[P":"",in:"","K]-?:":"","T[P]":""},[t("Ƭ "),e("strong",null,"WithRequired"),t("<"),e("code",null,"T"),t(", "),e("code",null,"K"),t(">: "),e("code",null,"T"),t(" &")],-1),c=a("",16),s=[n,i,c];function h(u,f,m,p,b,y){return l(),r("div",null,s)}const _=o(d,[["render",h]]);export{x as __pageData,_ as default}; +import{_ as r,c as o,o as n,N as a,x as e,a as t}from"./chunks/framework.0799945b.js";const x=JSON.parse('{"title":"Module: util/common","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/common.md","lastUpdated":null}'),l={name:"api/modules/util/common.md"},i=a("",15),d=e("p",{"[P":"",in:"","K]-?:":"","T[P]":""},[t("Ƭ "),e("strong",null,"WithRequired"),t("<"),e("code",null,"T"),t(", "),e("code",null,"K"),t(">: "),e("code",null,"T"),t(" &")],-1),s=a("",24),c=[i,d,s];function h(u,f,m,p,b,y){return n(),o("div",null,c)}const _=r(l,[["render",h]]);export{x as __pageData,_ as default}; diff --git a/assets/api_modules_util_common.md.fa59245c.js b/assets/api_modules_util_common.md.fa59245c.js deleted file mode 100644 index 2e4d1c92..00000000 --- a/assets/api_modules_util_common.md.fa59245c.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o,c as r,o as l,N as a,x as e,a as t}from"./chunks/framework.0799945b.js";const x=JSON.parse('{"title":"Module: util/common","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/common.md","lastUpdated":null}'),d={name:"api/modules/util/common.md"},n=a('

Module: util/common ​

Enumerations ​

Direction ​

• Direction: Object

NameType
Default"Up"
Down"Down"
Left"Left"
Right"Right"
Up"Up"

Defined in ​

profectus/src/util/common.ts:21

Type Aliases ​

ArrayElements ​

Ƭ ArrayElements<T>: T extends ReadonlyArray<infer S> ? S : never

Type parameters ​

NameType
Textends ReadonlyArray<unknown>

Defined in ​

profectus/src/util/common.ts:3


WithRequired ​

',16),i=e("p",{"[P":"",in:"","K]-?:":"","T[P]":""},[t("Ƭ "),e("strong",null,"WithRequired"),t("<"),e("code",null,"T"),t(", "),e("code",null,"K"),t(">: "),e("code",null,"T"),t(" &")],-1),c=a('

Type parameters ​

NameType
TT
Kextends keyof T

Defined in ​

profectus/src/util/common.ts:1

Functions ​

camelToTitle ​

â–¸ camelToTitle(camel): string

NameType
camelstring

Defined in ​

profectus/src/util/common.ts:9


isFunction ​

â–¸ isFunction<T, S, R>(functionOrValue): functionOrValue is Function

NameType
functionOrValueR | (...args: S) => T

Defined in ​

profectus/src/util/common.ts:15

',16),s=[n,i,c];function h(u,f,m,p,b,y){return l(),r("div",null,s)}const _=o(d,[["render",h]]);export{x as __pageData,_ as default}; diff --git a/assets/api_modules_util_computed.md.f384f5a3.js b/assets/api_modules_util_computed.md.084c4cc2.js similarity index 66% rename from assets/api_modules_util_computed.md.f384f5a3.js rename to assets/api_modules_util_computed.md.084c4cc2.js index 7579821a..4b988128 100644 --- a/assets/api_modules_util_computed.md.f384f5a3.js +++ b/assets/api_modules_util_computed.md.084c4cc2.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Module: util/computed","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/computed.md","lastUpdated":null}'),r={name:"api/modules/util/computed.md"},d=o('

Module: util/computed ​

Type Aliases ​

Computable ​

Ƭ Computable<T>: T | Ref<T> | () => T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:8


ComputableKeysOf ​

Ƭ ComputableKeysOf<T>: Pick<T, { [K in keyof T]: T[K] extends Computable<unknown> ? K : never }[keyof T]>

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:22


GetComputableType ​

Ƭ GetComputableType<T>: T extends { [DoNotCache]: true } ? T : T extends () => infer S ? Ref<S> : undefined extends T ? undefined : T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:10


GetComputableTypeWithDefault ​

Ƭ GetComputableTypeWithDefault<T, S>: undefined extends T ? S : GetComputableType<NonNullable<T>>

Type parameters ​

Name
T
S

Defined in ​

profectus/src/util/computed.ts:17


ProcessedComputable ​

Ƭ ProcessedComputable<T>: T | Ref<T>

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:9


UnwrapComputableType ​

Ƭ UnwrapComputableType<T>: T extends Ref<infer S> ? S : T extends () => infer S ? S : T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:20

Variables ​

DoNotCache ​

• Const DoNotCache: typeof DoNotCache

Defined in ​

profectus/src/util/computed.ts:6

Functions ​

convertComputable ​

â–¸ convertComputable<T>(obj): ProcessedComputable<T>

NameType
objComputable<T>

Defined in ​

profectus/src/util/computed.ts:50


processComputable ​

â–¸ processComputable<T, S>(obj, key): asserts obj is T & { [K in string | number | symbol]: ProcessedComputable<UnwrapComputableType<T[S]>> }

NameType
objT
keyS

Defined in ​

profectus/src/util/computed.ts:31

',60),l=[d];function c(n,i,s,p,h,u){return a(),t("div",null,l)}const m=e(r,[["render",c]]);export{f as __pageData,m as default}; +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Module: util/computed","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/computed.md","lastUpdated":null}'),r={name:"api/modules/util/computed.md"},d=o('

Module: util/computed ​

Type Aliases ​

Computable ​

Ƭ Computable<T>: T | Ref<T> | () => T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:8


ComputableKeysOf ​

Ƭ ComputableKeysOf<T>: Pick<T, { [K in keyof T]: T[K] extends Computable<unknown> ? K : never }[keyof T]>

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:22


GetComputableType ​

Ƭ GetComputableType<T>: T extends { [DoNotCache]: true } ? T : T extends () => infer S ? Ref<S> : undefined extends T ? undefined : T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:10


GetComputableTypeWithDefault ​

Ƭ GetComputableTypeWithDefault<T, S>: undefined extends T ? S : GetComputableType<NonNullable<T>>

Type parameters ​

Name
T
S

Defined in ​

profectus/src/util/computed.ts:17


ProcessedComputable ​

Ƭ ProcessedComputable<T>: T | Ref<T>

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:9


UnwrapComputableType ​

Ƭ UnwrapComputableType<T>: T extends Ref<infer S> ? S : T extends () => infer S ? S : T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/computed.ts:20

Variables ​

DoNotCache ​

• Const DoNotCache: typeof DoNotCache

Defined in ​

profectus/src/util/computed.ts:6

Functions ​

convertComputable ​

â–¸ convertComputable<T>(obj): ProcessedComputable<T>

Type parameters ​

Name
T

Parameters ​

NameType
objComputable<T>

Returns ​

ProcessedComputable<T>

Defined in ​

profectus/src/util/computed.ts:50


processComputable ​

â–¸ processComputable<T, S>(obj, key): asserts obj is T & { [K in string | number | symbol]: ProcessedComputable<UnwrapComputableType<T[S]>> }

Type parameters ​

NameType
TT
Sextends string | number | symbol

Parameters ​

NameType
objT
keyS

Returns ​

asserts obj is T & { [K in string | number | symbol]: ProcessedComputable<UnwrapComputableType<T[S]>> }

Defined in ​

profectus/src/util/computed.ts:31

',70),l=[d];function c(n,s,i,p,h,u){return a(),t("div",null,l)}const m=e(r,[["render",c]]);export{f as __pageData,m as default}; diff --git a/assets/api_modules_util_computed.md.f384f5a3.lean.js b/assets/api_modules_util_computed.md.084c4cc2.lean.js similarity index 70% rename from assets/api_modules_util_computed.md.f384f5a3.lean.js rename to assets/api_modules_util_computed.md.084c4cc2.lean.js index c0c7a2c3..02b677b6 100644 --- a/assets/api_modules_util_computed.md.f384f5a3.lean.js +++ b/assets/api_modules_util_computed.md.084c4cc2.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Module: util/computed","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/computed.md","lastUpdated":null}'),r={name:"api/modules/util/computed.md"},d=o("",60),l=[d];function c(n,i,s,p,h,u){return a(),t("div",null,l)}const m=e(r,[["render",c]]);export{f as __pageData,m as default}; +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Module: util/computed","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/computed.md","lastUpdated":null}'),r={name:"api/modules/util/computed.md"},d=o("",70),l=[d];function c(n,s,i,p,h,u){return a(),t("div",null,l)}const m=e(r,[["render",c]]);export{f as __pageData,m as default}; diff --git a/assets/api_modules_util_proxies.md.272c9807.lean.js b/assets/api_modules_util_proxies.md.272c9807.lean.js deleted file mode 100644 index 8cfdebcc..00000000 --- a/assets/api_modules_util_proxies.md.272c9807.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: util/proxies","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/proxies.md","lastUpdated":null}'),r={name:"api/modules/util/proxies.md"},d=o("",31),l=[d];function i(n,c,s,h,p,u){return a(),t("div",null,l)}const y=e(r,[["render",i]]);export{b as __pageData,y as default}; diff --git a/assets/api_modules_util_proxies.md.272c9807.js b/assets/api_modules_util_proxies.md.5c302d9c.js similarity index 70% rename from assets/api_modules_util_proxies.md.272c9807.js rename to assets/api_modules_util_proxies.md.5c302d9c.js index dc5bc719..f27b8f92 100644 --- a/assets/api_modules_util_proxies.md.272c9807.js +++ b/assets/api_modules_util_proxies.md.5c302d9c.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: util/proxies","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/proxies.md","lastUpdated":null}'),r={name:"api/modules/util/proxies.md"},d=o('

Module: util/proxies ​

Type Aliases ​

Proxied ​

Ƭ Proxied<T>: NonNullable<T> extends Record<PropertyKey, unknown> ? NonNullable<T> extends Persistent<infer S> ? NonPersistent<S> : NonNullable<T> extends default ? T : { [K in keyof T]: Proxied<T[K]> } & { [ProxyState]: T } : T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/proxies.ts:19


ProxiedWithState ​

Ƭ ProxiedWithState<T>: NonNullable<T> extends Record<PropertyKey, unknown> ? NonNullable<T> extends default ? T : { [K in keyof T]: ProxiedWithState<T[K]> } & { [ProxyPath]: string[] ; [ProxyState]: T } : T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/proxies.ts:8

Variables ​

ProxyPath ​

• Const ProxyPath: typeof ProxyPath

Defined in ​

profectus/src/util/proxies.ts:6


ProxyState ​

• Const ProxyState: typeof ProxyState

Defined in ​

profectus/src/util/proxies.ts:5

Functions ​

createLazyProxy ​

â–¸ createLazyProxy<T, S>(objectFunc, baseObject?): T

NameType
objectFunc(baseObject: S) => T & S
baseObjectS

Defined in ​

profectus/src/util/proxies.ts:33

',31),l=[d];function i(n,c,s,h,p,u){return a(),t("div",null,l)}const y=e(r,[["render",i]]);export{b as __pageData,y as default}; +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: util/proxies","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/proxies.md","lastUpdated":null}'),o={name:"api/modules/util/proxies.md"},d=r('

Module: util/proxies ​

Type Aliases ​

Proxied ​

Ƭ Proxied<T>: NonNullable<T> extends Record<PropertyKey, unknown> ? NonNullable<T> extends Persistent<infer S> ? NonPersistent<S> : NonNullable<T> extends default ? T : { [K in keyof T]: Proxied<T[K]> } & { [ProxyState]: T } : T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/proxies.ts:19


ProxiedWithState ​

Ƭ ProxiedWithState<T>: NonNullable<T> extends Record<PropertyKey, unknown> ? NonNullable<T> extends default ? T : { [K in keyof T]: ProxiedWithState<T[K]> } & { [ProxyPath]: string[] ; [ProxyState]: T } : T

Type parameters ​

Name
T

Defined in ​

profectus/src/util/proxies.ts:8

Variables ​

ProxyPath ​

• Const ProxyPath: typeof ProxyPath

Defined in ​

profectus/src/util/proxies.ts:6


ProxyState ​

• Const ProxyState: typeof ProxyState

Defined in ​

profectus/src/util/proxies.ts:5

Functions ​

createLazyProxy ​

â–¸ createLazyProxy<T, S>(objectFunc, baseObject?): T

Type parameters ​

NameType
Textends object
Sextends object

Parameters ​

NameType
objectFunc(baseObject: S) => T & S
baseObjectS

Returns ​

T

Defined in ​

profectus/src/util/proxies.ts:33

',36),l=[d];function i(n,s,c,h,p,f){return a(),t("div",null,l)}const y=e(o,[["render",i]]);export{u as __pageData,y as default}; diff --git a/assets/api_modules_util_proxies.md.5c302d9c.lean.js b/assets/api_modules_util_proxies.md.5c302d9c.lean.js new file mode 100644 index 00000000..e9d12a97 --- /dev/null +++ b/assets/api_modules_util_proxies.md.5c302d9c.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const u=JSON.parse('{"title":"Module: util/proxies","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/proxies.md","lastUpdated":null}'),o={name:"api/modules/util/proxies.md"},d=r("",36),l=[d];function i(n,s,c,h,p,f){return a(),t("div",null,l)}const y=e(o,[["render",i]]);export{u as __pageData,y as default}; diff --git a/assets/api_modules_util_save.md.5477d06f.js b/assets/api_modules_util_save.md.5477d06f.js new file mode 100644 index 00000000..9808c065 --- /dev/null +++ b/assets/api_modules_util_save.md.5477d06f.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: util/save","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/save.md","lastUpdated":null}'),o={name:"api/modules/util/save.md"},l=r('

Module: util/save ​

Variables ​

loadingSave ​

• Const loadingSave: Ref<boolean>

Defined in ​

profectus/src/util/save.ts:89

Functions ​

deleteLowerSaves ​

â–¸ deleteLowerSaves(): void

Returns ​

void

Defined in ​

profectus/src/util/save.ts:155


getUniqueID ​

â–¸ getUniqueID(): string

Returns ​

string

Defined in ​

profectus/src/util/save.ts:80


hardReset ​

â–¸ hardReset(): Promise<void>

Returns ​

Promise<void>

Defined in ​

profectus/src/util/save.ts:152


load ​

â–¸ load(): Promise<void>

Returns ​

Promise<void>

Defined in ​

profectus/src/util/save.ts:35


loadSave ​

â–¸ loadSave(playerObj): Promise<void>

Parameters ​

NameType
playerObjPartial<Player>

Returns ​

Promise<void>

Defined in ​

profectus/src/util/save.ts:91


newSave ​

â–¸ newSave(): Player

Returns ​

Player

Defined in ​

profectus/src/util/save.ts:70


save ​

â–¸ save(playerData?): string

Parameters ​

NameType
playerData?Player

Returns ​

string

Defined in ​

profectus/src/util/save.ts:29


setupInitialStore ​

â–¸ setupInitialStore(player?): Player

Parameters ​

NameType
playerPartial<Player>

Returns ​

Player

Defined in ​

profectus/src/util/save.ts:9

',68),n=[l];function i(s,d,h,c,u,f){return t(),a("div",null,n)}const g=e(o,[["render",i]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_util_save.md.6130f3f6.lean.js b/assets/api_modules_util_save.md.5477d06f.lean.js similarity index 69% rename from assets/api_modules_util_save.md.6130f3f6.lean.js rename to assets/api_modules_util_save.md.5477d06f.lean.js index 60fe057d..70fe6689 100644 --- a/assets/api_modules_util_save.md.6130f3f6.lean.js +++ b/assets/api_modules_util_save.md.5477d06f.lean.js @@ -1 +1 @@ -import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: util/save","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/save.md","lastUpdated":null}'),o={name:"api/modules/util/save.md"},l=r("",49),i=[l];function n(s,d,c,h,f,u){return t(),a("div",null,i)}const g=e(o,[["render",n]]);export{b as __pageData,g as default}; +import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: util/save","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/save.md","lastUpdated":null}'),o={name:"api/modules/util/save.md"},l=r("",68),n=[l];function i(s,d,h,c,u,f){return t(),a("div",null,n)}const g=e(o,[["render",i]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_util_save.md.6130f3f6.js b/assets/api_modules_util_save.md.6130f3f6.js deleted file mode 100644 index e4b429e3..00000000 --- a/assets/api_modules_util_save.md.6130f3f6.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: util/save","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/save.md","lastUpdated":null}'),o={name:"api/modules/util/save.md"},l=r('

Module: util/save ​

Variables ​

loadingSave ​

• Const loadingSave: Ref<boolean>

Defined in ​

profectus/src/util/save.ts:89

Functions ​

deleteLowerSaves ​

â–¸ deleteLowerSaves(): void

Defined in ​

profectus/src/util/save.ts:155


getUniqueID ​

â–¸ getUniqueID(): string

Defined in ​

profectus/src/util/save.ts:80


hardReset ​

â–¸ hardReset(): Promise<void>

Defined in ​

profectus/src/util/save.ts:152


load ​

â–¸ load(): Promise<void>

Defined in ​

profectus/src/util/save.ts:35


loadSave ​

â–¸ loadSave(playerObj): Promise<void>

NameType
playerObjPartial<Player>

Defined in ​

profectus/src/util/save.ts:91


newSave ​

â–¸ newSave(): Player

Defined in ​

profectus/src/util/save.ts:70


save ​

â–¸ save(playerData?): string

NameType
playerData?Player

Defined in ​

profectus/src/util/save.ts:29


setupInitialStore ​

â–¸ setupInitialStore(player?): Player

NameType
playerPartial<Player>

Defined in ​

profectus/src/util/save.ts:9

',49),i=[l];function n(s,d,c,h,f,u){return t(),a("div",null,i)}const g=e(o,[["render",n]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_util_vue.md.37e5800d.js b/assets/api_modules_util_vue.md.37e5800d.js new file mode 100644 index 00000000..0b75e3a1 --- /dev/null +++ b/assets/api_modules_util_vue.md.37e5800d.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: util/vue","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/vue.md","lastUpdated":null}'),o={name:"api/modules/util/vue.md"},d=r('

Module: util/vue ​

Interfaces ​

VueFeature ​

• VueFeature: Object

Defined in ​

profectus/src/util/vue.tsx:46

Type Aliases ​

PropTypes ​

Ƭ PropTypes: typeof Boolean | typeof String | typeof Number | typeof Function | typeof Object | typeof Array

Defined in ​

profectus/src/util/vue.tsx:216

Functions ​

coerceComponent ​

â–¸ coerceComponent(component, defaultWrapper?): DefineComponent

Parameters ​

NameTypeDefault value
componentCoercableComponentundefined
defaultWrapperstring"span"

Returns ​

DefineComponent

Defined in ​

profectus/src/util/vue.tsx:25


computeComponent ​

â–¸ computeComponent(component, defaultWrapper?): ShallowRef<Component | "">

Parameters ​

NameTypeDefault value
componentRef<ProcessedComputable<CoercableComponent>>undefined
defaultWrapperstring"div"

Returns ​

ShallowRef<Component | "">

Defined in ​

profectus/src/util/vue.tsx:175


computeOptionalComponent ​

â–¸ computeOptionalComponent(component, defaultWrapper?): ShallowRef<Component | "" | null>

Parameters ​

NameTypeDefault value
componentRef<ProcessedComputable<undefined | CoercableComponent>>undefined
defaultWrapperstring"div"

Returns ​

ShallowRef<Component | "" | null>

Defined in ​

profectus/src/util/vue.tsx:185


getFirstFeature ​

â–¸ getFirstFeature<T>(features, filter): Object

Type parameters ​

NameType
Textends VueFeature & { visibility: ProcessedComputable<boolean | Visibility> }

Parameters ​

NameType
featuresT[]
filter(feature: T) => boolean

Returns ​

Object

NameType
collapsedContentJSXFunction
firstFeatureRef<T | undefined>
hasCollapsedContentRef<boolean>

Defined in ​

profectus/src/util/vue.tsx:155


isCoercableComponent ​

â–¸ isCoercableComponent(component): component is CoercableComponent

Parameters ​

NameType
componentunknown

Returns ​

component is CoercableComponent

Defined in ​

profectus/src/util/vue.tsx:104


joinJSX ​

â–¸ joinJSX(objects, joiner): JSX.Element

Parameters ​

NameType
objectsElement[]
joinerElement

Returns ​

JSX.Element

Defined in ​

profectus/src/util/vue.tsx:94


processedPropType ​

â–¸ processedPropType<T>(...types): PropType<ProcessedComputable<T>>

Type parameters ​

Name
T

Parameters ​

NameType
...typesPropTypes[]

Returns ​

PropType<ProcessedComputable<T>>

Defined in ​

profectus/src/util/vue.tsx:225


render ​

â–¸ render(object): JSX.Element | DefineComponent

Parameters ​

NameType
objectCoercableComponent | VueFeature

Returns ​

JSX.Element | DefineComponent

Defined in ​

profectus/src/util/vue.tsx:51


renderCol ​

â–¸ renderCol(...objects): JSX.Element

Parameters ​

NameType
...objects(CoercableComponent | VueFeature)[]

Returns ​

JSX.Element

Defined in ​

profectus/src/util/vue.tsx:66


renderColJSX ​

â–¸ renderColJSX(...objects): JSX.Element

Parameters ​

NameType
...objects(CoercableComponent | VueFeature)[]

Returns ​

JSX.Element

Defined in ​

profectus/src/util/vue.tsx:90


renderJSX ​

â–¸ renderJSX(object): JSX.Element

Parameters ​

NameType
objectCoercableComponent | VueFeature

Returns ​

JSX.Element

Defined in ​

profectus/src/util/vue.tsx:70


renderRow ​

â–¸ renderRow(...objects): JSX.Element

Parameters ​

NameType
...objects(CoercableComponent | VueFeature)[]

Returns ​

JSX.Element

Defined in ​

profectus/src/util/vue.tsx:62


renderRowJSX ​

â–¸ renderRowJSX(...objects): JSX.Element

Parameters ​

NameType
...objects(CoercableComponent | VueFeature)[]

Returns ​

JSX.Element

Defined in ​

profectus/src/util/vue.tsx:86


setRefValue ​

â–¸ setRefValue<T>(ref, value): void

Type parameters ​

Name
T

Parameters ​

NameType
refRef<T | Ref<T>>
valueT

Returns ​

void

Defined in ​

profectus/src/util/vue.tsx:208


setupHoldToClick ​

â–¸ setupHoldToClick(onClick?, onHold?): Object

Parameters ​

NameType
onClick?Ref<undefined | (e?: MouseEvent | TouchEvent) => void>
onHold?Ref<undefined | VoidFunction>

Returns ​

Object

NameType
handleHoldingVoidFunction
start(e: MouseEvent | TouchEvent) => void
stopVoidFunction

Defined in ​

profectus/src/util/vue.tsx:119


trackHover ​

â–¸ trackHover(element): Ref<boolean>

Parameters ​

NameType
elementVueFeature

Returns ​

Ref<boolean>

Defined in ​

profectus/src/util/vue.tsx:232


unwrapRef ​

â–¸ unwrapRef<T>(ref): T

Type parameters ​

Name
T

Parameters ​

NameType
refRef<ProcessedComputable<T>>

Returns ​

T

Defined in ​

profectus/src/util/vue.tsx:204


wrapRef ​

â–¸ wrapRef<T>(ref): ComputedRef<T>

Type parameters ​

Name
T

Parameters ​

NameType
refRef<ProcessedComputable<T>>

Returns ​

ComputedRef<T>

Defined in ​

profectus/src/util/vue.tsx:200

',185),l=[d];function n(c,s,i,h,u,f){return a(),t("div",null,l)}const m=e(o,[["render",n]]);export{b as __pageData,m as default}; diff --git a/assets/api_modules_util_vue.md.37e5800d.lean.js b/assets/api_modules_util_vue.md.37e5800d.lean.js new file mode 100644 index 00000000..c632420c --- /dev/null +++ b/assets/api_modules_util_vue.md.37e5800d.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,N as r}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: util/vue","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/vue.md","lastUpdated":null}'),o={name:"api/modules/util/vue.md"},d=r("",185),l=[d];function n(c,s,i,h,u,f){return a(),t("div",null,l)}const m=e(o,[["render",n]]);export{b as __pageData,m as default}; diff --git a/assets/api_modules_util_vue.md.65db83c2.js b/assets/api_modules_util_vue.md.65db83c2.js deleted file mode 100644 index 42c72bf8..00000000 --- a/assets/api_modules_util_vue.md.65db83c2.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: util/vue","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/vue.md","lastUpdated":null}'),r={name:"api/modules/util/vue.md"},d=a('

Module: util/vue ​

Interfaces ​

VueFeature ​

• VueFeature: Object

NameType
[Component]GenericComponent
[GatherProps]() => Record<string, unknown>

Defined in ​

profectus/src/util/vue.tsx:46

Type Aliases ​

PropTypes ​

Ƭ PropTypes: typeof Boolean | typeof String | typeof Number | typeof Function | typeof Object | typeof Array

Defined in ​

profectus/src/util/vue.tsx:216

Functions ​

coerceComponent ​

â–¸ coerceComponent(component, defaultWrapper?): DefineComponent

NameTypeDefault value
componentCoercableComponentundefined
defaultWrapperstring"span"

Defined in ​

profectus/src/util/vue.tsx:25


computeComponent ​

â–¸ computeComponent(component, defaultWrapper?): ShallowRef<Component | "">

NameTypeDefault value
componentRef<ProcessedComputable<CoercableComponent>>undefined
defaultWrapperstring"div"

Defined in ​

profectus/src/util/vue.tsx:175


computeOptionalComponent ​

â–¸ computeOptionalComponent(component, defaultWrapper?): ShallowRef<Component | "" | null>

NameTypeDefault value
componentRef<ProcessedComputable<undefined | CoercableComponent>>undefined
defaultWrapperstring"div"

Defined in ​

profectus/src/util/vue.tsx:185


getFirstFeature ​

â–¸ getFirstFeature<T>(features, filter): Object

NameType
featuresT[]
filter(feature: T) => boolean

Defined in ​

profectus/src/util/vue.tsx:155


isCoercableComponent ​

â–¸ isCoercableComponent(component): component is CoercableComponent

NameType
componentunknown

Defined in ​

profectus/src/util/vue.tsx:104


joinJSX ​

â–¸ joinJSX(objects, joiner): JSX.Element

NameType
objectsElement[]
joinerElement

Defined in ​

profectus/src/util/vue.tsx:94


processedPropType ​

â–¸ processedPropType<T>(...types): PropType<ProcessedComputable<T>>

NameType
...typesPropTypes[]

Defined in ​

profectus/src/util/vue.tsx:225


render ​

â–¸ render(object): JSX.Element | DefineComponent

NameType
objectCoercableComponent | VueFeature

Defined in ​

profectus/src/util/vue.tsx:51


renderCol ​

â–¸ renderCol(...objects): JSX.Element

NameType
...objects(CoercableComponent | VueFeature)[]

Defined in ​

profectus/src/util/vue.tsx:66


renderColJSX ​

â–¸ renderColJSX(...objects): JSX.Element

NameType
...objects(CoercableComponent | VueFeature)[]

Defined in ​

profectus/src/util/vue.tsx:90


renderJSX ​

â–¸ renderJSX(object): JSX.Element

NameType
objectCoercableComponent | VueFeature

Defined in ​

profectus/src/util/vue.tsx:70


renderRow ​

â–¸ renderRow(...objects): JSX.Element

NameType
...objects(CoercableComponent | VueFeature)[]

Defined in ​

profectus/src/util/vue.tsx:62


renderRowJSX ​

â–¸ renderRowJSX(...objects): JSX.Element

NameType
...objects(CoercableComponent | VueFeature)[]

Defined in ​

profectus/src/util/vue.tsx:86


setRefValue ​

â–¸ setRefValue<T>(ref, value): void

NameType
refRef<T | Ref<T>>
valueT

Defined in ​

profectus/src/util/vue.tsx:208


setupHoldToClick ​

â–¸ setupHoldToClick(onClick?, onHold?): Object

NameType
onClick?Ref<undefined | (e?: MouseEvent | TouchEvent) => void>
onHold?Ref<undefined | VoidFunction>

Defined in ​

profectus/src/util/vue.tsx:119


trackHover ​

â–¸ trackHover(element): Ref<boolean>

NameType
elementVueFeature

Defined in ​

profectus/src/util/vue.tsx:232


unwrapRef ​

â–¸ unwrapRef<T>(ref): T

NameType
refRef<ProcessedComputable<T>>

Defined in ​

profectus/src/util/vue.tsx:204


wrapRef ​

â–¸ wrapRef<T>(ref): ComputedRef<T>

NameType
refRef<ProcessedComputable<T>>

Defined in ​

profectus/src/util/vue.tsx:200

',120),l=[d];function n(c,i,s,f,h,u){return o(),t("div",null,l)}const g=e(r,[["render",n]]);export{b as __pageData,g as default}; diff --git a/assets/api_modules_util_vue.md.65db83c2.lean.js b/assets/api_modules_util_vue.md.65db83c2.lean.js deleted file mode 100644 index 5f90b681..00000000 --- a/assets/api_modules_util_vue.md.65db83c2.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Module: util/vue","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"api/modules/util/vue.md","lastUpdated":null}'),r={name:"api/modules/util/vue.md"},d=a("",120),l=[d];function n(c,i,s,f,h,u){return o(),t("div",null,l)}const g=e(r,[["render",n]]);export{b as __pageData,g as default}; diff --git a/assets/guide_advanced-concepts_creating-features.md.a18865d1.js b/assets/guide_advanced-concepts_creating-features.md.49125d9d.js similarity index 99% rename from assets/guide_advanced-concepts_creating-features.md.a18865d1.js rename to assets/guide_advanced-concepts_creating-features.md.49125d9d.js index 3b94bfa5..8cdf883a 100644 --- a/assets/guide_advanced-concepts_creating-features.md.a18865d1.js +++ b/assets/guide_advanced-concepts_creating-features.md.49125d9d.js @@ -1,4 +1,4 @@ -import{_ as s,c as e,o as a,N as n}from"./chunks/framework.0799945b.js";const d=JSON.parse('{"title":"Creating Features","description":"","frontmatter":{},"headers":[],"relativePath":"guide/advanced-concepts/creating-features.md","lastUpdated":1681454585000}'),o={name:"guide/advanced-concepts/creating-features.md"},t=n(`

Creating Features ​

Profectus is designed to encourage the developer to eventually start designing their own features for use in specific games. Features are designed to work where they require minimal (and typically zero) modifications around the code base - you simply write a single file for the feature, and any vue components it needs, and the act of importing that feature will set everything up. This also means you can share these features with others in entire collections, and any they don't use won't be present in the build output, won't be loaded, and won't affect the project in any way.

Creating the Feature ​

Every feature has a couple of types. They have the feature themselves, a generic version for convenience, and any constructor typically has an options type and a type that gets "added" to it to create the feature itself. These typically involve replacing some types to denote how various properties change from, for example, Computable<X> to ProcessedComputable<X>. You should be able to use any of the existing features as a reference for how these types look and work.

Most significantly, the base type should typically always have a type property pointing to a symbol unique to this feature, so they can be easily differentiated at runtime. If it's a feature that should be renderable, then it'll also need [Component] and [GatherProps] properties, which describe the vue component to use and how to get the props for it from this feature, as well as a unique ID for the feature's node. You cna use the getUniqueID utility to help.

The constructor itself should do several things. They should take their options within a function, so that they're not resolved when the object is constructed. It should return a lazy proxy of the feature, which allows features to reference each other and only resolve themselves once every feature is defined. The constructor should create any persistent refs it may require outside of the lazy proxy - it won't have access to the options at this point, so it should make any it potentially may require. Any that turn out not being needed can be deleted. Inside the lazy proxy the constructor should create the options object, assign onto it every property from the base type, call processComputable on every computable type, and setDefault on any property with a default value. Then you should be able to simply return the options object, likely with a type cast, and the constructor will be complete.

Because typescript does not emit JS, if a property is supposed to be a function it is impossible to differentiate between a function that is itself the intended value or a function that returns the actual value. For this reason it is not recommended for any feature types to include properties that are Computable<Function>s, and all functions will be wrapped in computed. The notable exception to this is JSX, which uses a utility function to mark that a function should not be wrapped.

Vue Components ​

Any vue components you write need to do a couple things. Typically they'll need to type any props that come from computed properties appropriately, for which you can use the processedPropType utility - using it will look something like style: processedPropType<StyleValue>(String, Object, Array). You'll also want to make sure to unref any of these props you use in the template. The template should make sure to include a Node component with the feature's ID. Also, if there are custom displays this feature may have, you'll want to convert the CoercableComponent into a Vue component inside the setup function, typically using the computeComponent or computeOptionalComponent utilities.

Custom Settings ​

To add a setting to the options menu specific to this feature, you'll need to do three things, all inside the feature's file. First, extend the settings type with the name of the new setting. For example, here's how the challenge feature adds a setting to hide completed challenges:

ts
declare module "game/settings" {
+import{_ as s,c as e,o as a,N as n}from"./chunks/framework.0799945b.js";const d=JSON.parse('{"title":"Creating Features","description":"","frontmatter":{},"headers":[],"relativePath":"guide/advanced-concepts/creating-features.md","lastUpdated":1681792078000}'),o={name:"guide/advanced-concepts/creating-features.md"},t=n(`

Creating Features ​

Profectus is designed to encourage the developer to eventually start designing their own features for use in specific games. Features are designed to work where they require minimal (and typically zero) modifications around the code base - you simply write a single file for the feature, and any vue components it needs, and the act of importing that feature will set everything up. This also means you can share these features with others in entire collections, and any they don't use won't be present in the build output, won't be loaded, and won't affect the project in any way.

Creating the Feature ​

Every feature has a couple of types. They have the feature themselves, a generic version for convenience, and any constructor typically has an options type and a type that gets "added" to it to create the feature itself. These typically involve replacing some types to denote how various properties change from, for example, Computable<X> to ProcessedComputable<X>. You should be able to use any of the existing features as a reference for how these types look and work.

Most significantly, the base type should typically always have a type property pointing to a symbol unique to this feature, so they can be easily differentiated at runtime. If it's a feature that should be renderable, then it'll also need [Component] and [GatherProps] properties, which describe the vue component to use and how to get the props for it from this feature, as well as a unique ID for the feature's node. You cna use the getUniqueID utility to help.

The constructor itself should do several things. They should take their options within a function, so that they're not resolved when the object is constructed. It should return a lazy proxy of the feature, which allows features to reference each other and only resolve themselves once every feature is defined. The constructor should create any persistent refs it may require outside of the lazy proxy - it won't have access to the options at this point, so it should make any it potentially may require. Any that turn out not being needed can be deleted. Inside the lazy proxy the constructor should create the options object, assign onto it every property from the base type, call processComputable on every computable type, and setDefault on any property with a default value. Then you should be able to simply return the options object, likely with a type cast, and the constructor will be complete.

Because typescript does not emit JS, if a property is supposed to be a function it is impossible to differentiate between a function that is itself the intended value or a function that returns the actual value. For this reason it is not recommended for any feature types to include properties that are Computable<Function>s, and all functions will be wrapped in computed. The notable exception to this is JSX, which uses a utility function to mark that a function should not be wrapped.

Vue Components ​

Any vue components you write need to do a couple things. Typically they'll need to type any props that come from computed properties appropriately, for which you can use the processedPropType utility - using it will look something like style: processedPropType<StyleValue>(String, Object, Array). You'll also want to make sure to unref any of these props you use in the template. The template should make sure to include a Node component with the feature's ID. Also, if there are custom displays this feature may have, you'll want to convert the CoercableComponent into a Vue component inside the setup function, typically using the computeComponent or computeOptionalComponent utilities.

Custom Settings ​

To add a setting to the options menu specific to this feature, you'll need to do three things, all inside the feature's file. First, extend the settings type with the name of the new setting. For example, here's how the challenge feature adds a setting to hide completed challenges:

ts
declare module "game/settings" {
     interface Settings {
         hideChallenges: boolean;
     }
diff --git a/assets/guide_advanced-concepts_creating-features.md.a18865d1.lean.js b/assets/guide_advanced-concepts_creating-features.md.49125d9d.lean.js
similarity index 85%
rename from assets/guide_advanced-concepts_creating-features.md.a18865d1.lean.js
rename to assets/guide_advanced-concepts_creating-features.md.49125d9d.lean.js
index 2e734407..3ca0bb72 100644
--- a/assets/guide_advanced-concepts_creating-features.md.a18865d1.lean.js
+++ b/assets/guide_advanced-concepts_creating-features.md.49125d9d.lean.js
@@ -1 +1 @@
-import{_ as s,c as e,o as a,N as n}from"./chunks/framework.0799945b.js";const d=JSON.parse('{"title":"Creating Features","description":"","frontmatter":{},"headers":[],"relativePath":"guide/advanced-concepts/creating-features.md","lastUpdated":1681454585000}'),o={name:"guide/advanced-concepts/creating-features.md"},t=n("",19),l=[t];function p(r,c,y,i,F,D){return a(),e("div",null,l)}const C=s(o,[["render",p]]);export{d as __pageData,C as default};
+import{_ as s,c as e,o as a,N as n}from"./chunks/framework.0799945b.js";const d=JSON.parse('{"title":"Creating Features","description":"","frontmatter":{},"headers":[],"relativePath":"guide/advanced-concepts/creating-features.md","lastUpdated":1681792078000}'),o={name:"guide/advanced-concepts/creating-features.md"},t=n("",19),l=[t];function p(r,c,y,i,F,D){return a(),e("div",null,l)}const C=s(o,[["render",p]]);export{d as __pageData,C as default};
diff --git a/assets/guide_advanced-concepts_dynamic-layers.md.69b0375d.js b/assets/guide_advanced-concepts_dynamic-layers.md.21faf359.js
similarity index 98%
rename from assets/guide_advanced-concepts_dynamic-layers.md.69b0375d.js
rename to assets/guide_advanced-concepts_dynamic-layers.md.21faf359.js
index c46437be..511518e9 100644
--- a/assets/guide_advanced-concepts_dynamic-layers.md.69b0375d.js
+++ b/assets/guide_advanced-concepts_dynamic-layers.md.21faf359.js
@@ -1,4 +1,4 @@
-import{_ as a,c as s,o as e,N as n}from"./chunks/framework.0799945b.js";const D=JSON.parse('{"title":"Dynamic Layers","description":"","frontmatter":{},"headers":[],"relativePath":"guide/advanced-concepts/dynamic-layers.md","lastUpdated":1681454585000}'),o={name:"guide/advanced-concepts/dynamic-layers.md"},l=n(`

Dynamic Layers ​

You can dynamically add and remove layers using the addLayer and removeLayer functions. It's important to note that removing a layer does not affect the player's save data. You can safely add and remove the same layer without losing any progress. For instances where the structure of a layer changes, such as when adding a new feature, use the reloadLayer function.

When procedurally generating layers with similar structures, consider using a utility function like the one below. This function allows you to access a correctly typed reference to a layer with a specified ID easily:

ts
function getDynLayer(id: string): DynamicLayer {
+import{_ as a,c as s,o as e,N as n}from"./chunks/framework.0799945b.js";const D=JSON.parse('{"title":"Dynamic Layers","description":"","frontmatter":{},"headers":[],"relativePath":"guide/advanced-concepts/dynamic-layers.md","lastUpdated":1681792078000}'),o={name:"guide/advanced-concepts/dynamic-layers.md"},l=n(`

Dynamic Layers ​

You can dynamically add and remove layers using the addLayer and removeLayer functions. It's important to note that removing a layer does not affect the player's save data. You can safely add and remove the same layer without losing any progress. For instances where the structure of a layer changes, such as when adding a new feature, use the reloadLayer function.

When procedurally generating layers with similar structures, consider using a utility function like the one below. This function allows you to access a correctly typed reference to a layer with a specified ID easily:

ts
function getDynLayer(id: string): DynamicLayer {
   const layer = layers[id];
   if (!layer) throw "Layer does not exist";
   return layer as DynamicLayer; // you might need an "as unknown" after layer
diff --git a/assets/guide_advanced-concepts_dynamic-layers.md.69b0375d.lean.js b/assets/guide_advanced-concepts_dynamic-layers.md.21faf359.lean.js
similarity index 85%
rename from assets/guide_advanced-concepts_dynamic-layers.md.69b0375d.lean.js
rename to assets/guide_advanced-concepts_dynamic-layers.md.21faf359.lean.js
index 0c118a04..fa94136e 100644
--- a/assets/guide_advanced-concepts_dynamic-layers.md.69b0375d.lean.js
+++ b/assets/guide_advanced-concepts_dynamic-layers.md.21faf359.lean.js
@@ -1 +1 @@
-import{_ as a,c as s,o as e,N as n}from"./chunks/framework.0799945b.js";const D=JSON.parse('{"title":"Dynamic Layers","description":"","frontmatter":{},"headers":[],"relativePath":"guide/advanced-concepts/dynamic-layers.md","lastUpdated":1681454585000}'),o={name:"guide/advanced-concepts/dynamic-layers.md"},l=n("",6),t=[l];function r(p,c,y,i,d,u){return e(),s("div",null,t)}const h=a(o,[["render",r]]);export{D as __pageData,h as default};
+import{_ as a,c as s,o as e,N as n}from"./chunks/framework.0799945b.js";const D=JSON.parse('{"title":"Dynamic Layers","description":"","frontmatter":{},"headers":[],"relativePath":"guide/advanced-concepts/dynamic-layers.md","lastUpdated":1681792078000}'),o={name:"guide/advanced-concepts/dynamic-layers.md"},l=n("",6),t=[l];function r(p,c,y,i,d,u){return e(),s("div",null,t)}const h=a(o,[["render",r]]);export{D as __pageData,h as default};
diff --git a/assets/guide_advanced-concepts_nodes.md.74909dae.js b/assets/guide_advanced-concepts_nodes.md.b6eda7dd.js
similarity index 99%
rename from assets/guide_advanced-concepts_nodes.md.74909dae.js
rename to assets/guide_advanced-concepts_nodes.md.b6eda7dd.js
index cd59ef67..c7c24042 100644
--- a/assets/guide_advanced-concepts_nodes.md.74909dae.js
+++ b/assets/guide_advanced-concepts_nodes.md.b6eda7dd.js
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,N as o}from"./chunks/framework.0799945b.js";const C=JSON.parse('{"title":"Nodes","description":"","frontmatter":{},"headers":[],"relativePath":"guide/advanced-concepts/nodes.md","lastUpdated":1681454585000}'),l={name:"guide/advanced-concepts/nodes.md"},e=o(`

Nodes ​

Features rendered in the DOM should include a Node component, which registers itself to the nearest Context component (usually within the Layer's component) and tracks the bounding rect (both size and position) of the DOM element. Access the DOM element for a feature via its unique id property within layer.nodes, provided it currently exists.

This is useful for features with complex displays, such as particle effects positioned relative to another feature or drawing links between different nodes. To illustrate this, let's look at a complete example of using layer.nodes to get a node's bounding rect and then placing a particle effect using it. Here's an example from Kronos:

ts
const particlesEmitter = ref(particles.addEmitter(element.particlesConfig));
+import{_ as s,c as n,o as a,N as o}from"./chunks/framework.0799945b.js";const C=JSON.parse('{"title":"Nodes","description":"","frontmatter":{},"headers":[],"relativePath":"guide/advanced-concepts/nodes.md","lastUpdated":1681792078000}'),l={name:"guide/advanced-concepts/nodes.md"},e=o(`

Nodes ​

Features rendered in the DOM should include a Node component, which registers itself to the nearest Context component (usually within the Layer's component) and tracks the bounding rect (both size and position) of the DOM element. Access the DOM element for a feature via its unique id property within layer.nodes, provided it currently exists.

This is useful for features with complex displays, such as particle effects positioned relative to another feature or drawing links between different nodes. To illustrate this, let's look at a complete example of using layer.nodes to get a node's bounding rect and then placing a particle effect using it. Here's an example from Kronos:

ts
const particlesEmitter = ref(particles.addEmitter(element.particlesConfig));
 const updateParticleEffect = async ([shouldEmit, rect, boundingRect]: [
     boolean,
     DOMRect | undefined,
diff --git a/assets/guide_advanced-concepts_nodes.md.74909dae.lean.js b/assets/guide_advanced-concepts_nodes.md.b6eda7dd.lean.js
similarity index 84%
rename from assets/guide_advanced-concepts_nodes.md.74909dae.lean.js
rename to assets/guide_advanced-concepts_nodes.md.b6eda7dd.lean.js
index e044ddd0..f326c89a 100644
--- a/assets/guide_advanced-concepts_nodes.md.74909dae.lean.js
+++ b/assets/guide_advanced-concepts_nodes.md.b6eda7dd.lean.js
@@ -1 +1 @@
-import{_ as s,c as n,o as a,N as o}from"./chunks/framework.0799945b.js";const C=JSON.parse('{"title":"Nodes","description":"","frontmatter":{},"headers":[],"relativePath":"guide/advanced-concepts/nodes.md","lastUpdated":1681454585000}'),l={name:"guide/advanced-concepts/nodes.md"},e=o("",6),p=[e];function t(c,r,y,D,F,i){return a(),n("div",null,p)}const d=s(l,[["render",t]]);export{C as __pageData,d as default};
+import{_ as s,c as n,o as a,N as o}from"./chunks/framework.0799945b.js";const C=JSON.parse('{"title":"Nodes","description":"","frontmatter":{},"headers":[],"relativePath":"guide/advanced-concepts/nodes.md","lastUpdated":1681792078000}'),l={name:"guide/advanced-concepts/nodes.md"},e=o("",6),p=[e];function t(c,r,y,D,F,i){return a(),n("div",null,p)}const d=s(l,[["render",t]]);export{C as __pageData,d as default};
diff --git a/assets/guide_creating-your-project_changelog.md.62153173.js b/assets/guide_creating-your-project_changelog.md.172bc03e.js
similarity index 98%
rename from assets/guide_creating-your-project_changelog.md.62153173.js
rename to assets/guide_creating-your-project_changelog.md.172bc03e.js
index 8177da4c..3eb71c34 100644
--- a/assets/guide_creating-your-project_changelog.md.62153173.js
+++ b/assets/guide_creating-your-project_changelog.md.172bc03e.js
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,N as e}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/changelog.md","lastUpdated":1681454585000}'),l={name:"guide/creating-your-project/changelog.md"},o=e(`

Changelog ​

This is a Vue component stored at /src/data/Changelog.vue used to display all the changes version to version. You can use any features you'd like within here, but it's recommended to simply add new <details> elements for each new major release, and mark the most recent one as open by default. It is strongly advised to not change any of the code relating to making the changelog appear in a modal.

There is a single version included by default that can serve as a reference of how it is recommended to add a version to the changelog:

html
<details open>
+import{_ as s,c as a,o as n,N as e}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/changelog.md","lastUpdated":1681792078000}'),l={name:"guide/creating-your-project/changelog.md"},o=e(`

Changelog ​

This is a Vue component stored at /src/data/Changelog.vue used to display all the changes version to version. You can use any features you'd like within here, but it's recommended to simply add new <details> elements for each new major release, and mark the most recent one as open by default. It is strongly advised to not change any of the code relating to making the changelog appear in a modal.

There is a single version included by default that can serve as a reference of how it is recommended to add a version to the changelog:

html
<details open>
 	<summary>v0.0 Initial Commit - <time>2021-09-04</time></summary>
 	This is the first release :D
 	<ul>
diff --git a/assets/guide_creating-your-project_changelog.md.62153173.lean.js b/assets/guide_creating-your-project_changelog.md.172bc03e.lean.js
similarity index 85%
rename from assets/guide_creating-your-project_changelog.md.62153173.lean.js
rename to assets/guide_creating-your-project_changelog.md.172bc03e.lean.js
index 142b3d13..4126d9e8 100644
--- a/assets/guide_creating-your-project_changelog.md.62153173.lean.js
+++ b/assets/guide_creating-your-project_changelog.md.172bc03e.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as n,N as e}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/changelog.md","lastUpdated":1681454585000}'),l={name:"guide/creating-your-project/changelog.md"},o=e("",6),t=[o];function p(c,r,D,i,F,y){return n(),a("div",null,t)}const h=s(l,[["render",p]]);export{g as __pageData,h as default};
+import{_ as s,c as a,o as n,N as e}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/changelog.md","lastUpdated":1681792078000}'),l={name:"guide/creating-your-project/changelog.md"},o=e("",6),t=[o];function p(c,r,D,i,F,y){return n(),a("div",null,t)}const h=s(l,[["render",p]]);export{g as __pageData,h as default};
diff --git a/assets/guide_creating-your-project_project-entry.md.c30550eb.js b/assets/guide_creating-your-project_project-entry.md.ddd3e9f7.js
similarity index 98%
rename from assets/guide_creating-your-project_project-entry.md.c30550eb.js
rename to assets/guide_creating-your-project_project-entry.md.ddd3e9f7.js
index 348e3ec4..fbb22d5d 100644
--- a/assets/guide_creating-your-project_project-entry.md.c30550eb.js
+++ b/assets/guide_creating-your-project_project-entry.md.ddd3e9f7.js
@@ -1 +1 @@
-import{_ as e,c as a,o as t,N as o}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Project Entry","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/project-entry.md","lastUpdated":1681454585000}'),s={name:"guide/creating-your-project/project-entry.md"},r=o('

Project Entry ​

This is a TypeScript file containing the non-static parts of your project, and acts as the entry point for it.

It is stored at /src/data/projEntry.jsx.

This file has 3 things it must export, but beyond that can export anything the creator wants it to. Typically in addition to the required 3, the initial/"main" layer will be exported. Typically utilites belong in common.tsx, which exists next to projEntry.tsx.

Required Exports ​

getInitialLayers ​

  • Type: (player: Partial<PlayerData>) => GenericLayer[]

A function that is given a player save data object currently being loaded, and returns a list of layers that should be active for that player. If a project does not have dynamic layers, this should always return a list of all layers.

hasWon ​

  • Type: ComputedRef<boolean>

A computed ref whose value is true whenever the game is over.

For example, in a game where the goal is to have a resource reach 10:

ts
export const hasWon = computed(() => Decimal.gte(resource.value, 10));

fixOldSave ​

  • Type: (oldVersion: string | undefined, player: Partial<PlayerData>) => void

This function will be run whenever a save is loaded that has a different version than the one in project info. It will be given the old version number, and the player save data object currently being loaded.

The purpose of this function is to perform any necessary migrations, such as capping a resource that accidentally inflated in a previous version of the project. By default it will do nothing.

',17),n=[r];function l(i,p,c,d,h,y){return t(),a("div",null,n)}const g=e(s,[["render",l]]);export{f as __pageData,g as default}; +import{_ as e,c as a,o as t,N as o}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Project Entry","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/project-entry.md","lastUpdated":1681792078000}'),s={name:"guide/creating-your-project/project-entry.md"},r=o('

Project Entry ​

This is a TypeScript file containing the non-static parts of your project, and acts as the entry point for it.

It is stored at /src/data/projEntry.jsx.

This file has 3 things it must export, but beyond that can export anything the creator wants it to. Typically in addition to the required 3, the initial/"main" layer will be exported. Typically utilites belong in common.tsx, which exists next to projEntry.tsx.

Required Exports ​

getInitialLayers ​

  • Type: (player: Partial<PlayerData>) => GenericLayer[]

A function that is given a player save data object currently being loaded, and returns a list of layers that should be active for that player. If a project does not have dynamic layers, this should always return a list of all layers.

hasWon ​

  • Type: ComputedRef<boolean>

A computed ref whose value is true whenever the game is over.

For example, in a game where the goal is to have a resource reach 10:

ts
export const hasWon = computed(() => Decimal.gte(resource.value, 10));

fixOldSave ​

  • Type: (oldVersion: string | undefined, player: Partial<PlayerData>) => void

This function will be run whenever a save is loaded that has a different version than the one in project info. It will be given the old version number, and the player save data object currently being loaded.

The purpose of this function is to perform any necessary migrations, such as capping a resource that accidentally inflated in a previous version of the project. By default it will do nothing.

',17),n=[r];function l(i,p,c,d,h,y){return t(),a("div",null,n)}const g=e(s,[["render",l]]);export{f as __pageData,g as default}; diff --git a/assets/guide_creating-your-project_project-entry.md.c30550eb.lean.js b/assets/guide_creating-your-project_project-entry.md.ddd3e9f7.lean.js similarity index 85% rename from assets/guide_creating-your-project_project-entry.md.c30550eb.lean.js rename to assets/guide_creating-your-project_project-entry.md.ddd3e9f7.lean.js index 72dfae0e..d184b202 100644 --- a/assets/guide_creating-your-project_project-entry.md.c30550eb.lean.js +++ b/assets/guide_creating-your-project_project-entry.md.ddd3e9f7.lean.js @@ -1 +1 @@ -import{_ as e,c as a,o as t,N as o}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Project Entry","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/project-entry.md","lastUpdated":1681454585000}'),s={name:"guide/creating-your-project/project-entry.md"},r=o("",17),n=[r];function l(i,p,c,d,h,y){return t(),a("div",null,n)}const g=e(s,[["render",l]]);export{f as __pageData,g as default}; +import{_ as e,c as a,o as t,N as o}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Project Entry","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/project-entry.md","lastUpdated":1681792078000}'),s={name:"guide/creating-your-project/project-entry.md"},r=o("",17),n=[r];function l(i,p,c,d,h,y){return t(),a("div",null,n)}const g=e(s,[["render",l]]);export{f as __pageData,g as default}; diff --git a/assets/guide_creating-your-project_project-info.md.f06a6a5d.js b/assets/guide_creating-your-project_project-info.md.64fc6c56.js similarity index 99% rename from assets/guide_creating-your-project_project-info.md.f06a6a5d.js rename to assets/guide_creating-your-project_project-info.md.64fc6c56.js index 4dd4199f..c75406dc 100644 --- a/assets/guide_creating-your-project_project-info.md.f06a6a5d.js +++ b/assets/guide_creating-your-project_project-info.md.64fc6c56.js @@ -1 +1 @@ -import{_ as e,c as a,o,N as t}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Project Info","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/project-info.md","lastUpdated":1681454585000}'),i={name:"guide/creating-your-project/project-info.md"},l=t('

Project Info ​

This is a JSON file containing information that describes your project and configures parts of how Profectus should represent it.

It is stored at /src/data/projInfo.json.

Basic Config ​

title ​

  • Type: string
  • Default: Profectus

The name of the project, which will appear in the info tab and the header, if enabled. The page title will also be set to this value.

description ​

  • Type: string
  • Default: A project made in Profectus

A description of the project, which will be used when the project is installed as a Progressive Web Application.

id ​

  • Type: string
  • Default: ""

This is a unique ID used when saving player data. Changing this will effectively erase all save data for all players.

WARNING

This ID MUST be unique to your project, and should not be left as the default value. Otherwise, your project may use the save data from another project and cause issues for both projects.

author ​

  • Type: string
  • Default: ""

The author of the project, which will appear in the info tab.

discordName ​

  • Type: string
  • Default: The Paper Pilot Community

The text to display for the discord server to point users to. This will appear when hovering over the discord icon, inside the info tab, the game over screen, as well as the NaN detected screen.

By default, this is The Paper Pilot Community, which can act as a catch-all for any Profectus projects without their own servers. If you change the discord server with your own, The Paper Pilot Community will still display underneath the custom server when hovering over the discord icon and within the info tab. Those places will also contain a link to the Modding Tree discord server.

  • Type: string
  • Default: https://discord.gg/WzejVAx

The link for the discord server to point users to. See discordName for more details.

Version Config ​

versionNumber ​

  • Type: string
  • Default: 0.0

The current version of the project loaded. If the player data was last saved in a different version of the project, fixOldSave will be run, so you can perform any save migrations necessary. This will also appear in the nav, the info tab, and the game over screen.

versionTitle ​

  • Type: string
  • Default: Initial Commit

The display name for the current version of the project loaded. This will also appear in the nav, the info tab, and the game over screen unless set to an empty string.

Display Config ​

allowGoBack ​

  • Type: boolean
  • Default: true

Whether or not to allow tabs (besides the first) to display a "back" button to close them (and any other tabs to the right of them).

defaultShowSmall ​

  • Type: boolean
  • Default: false

Whether or not to allow resources to display small values (<.001). If false they'll just display as 0. Individual resources can also be configured to override this value.

defaultDecimalsShown ​

  • Type: number
  • Default: 2

Default precision to display numbers at when passed into format. Individual format calls can override this value, and resources can be configured with a custom precision as well.

useHeader ​

  • Type: boolean
  • Default: true

Whether or not to display the nav as a header at the top of the screen. If disabled, the nav will appear on the left side of the screen laid over the first tab.

  • Type: string | null
  • Default: null

A path to an image file to display as the logo of the app. If null, the title will be shown instead. This will appear in the nav when useHeader is true.

  • Type: string
  • Default: ""

A path to an image file to display as the logo of the app within the info tab. If left blank no logo will be shown.

initialTabs ​

  • Type: string[]
  • Default: ["main"]

The list of initial tabs to display on new saves. This value must have at least one element. Each element should be the ID of the layer to display in that tab.

Advanced Config ​

maxTickLength ​

  • Type: number
  • Default: 3600

The longest duration a single tick can be, in seconds. When calculating things like offline time, a single tick will be forced to be this amount or lower. This will make calculating offline time spread out across many ticks as necessary. The default value is 1 hour.

offlineLimit ​

  • Type: number
  • Default: 1

The max amount of time that can be stored as offline time, in hours.

enablePausing ​

  • Type: boolean
  • Default: true

Whether or not to allow the player to pause the game. Turning this off disables the toggle from the options menu as well as the NaN screen. Developers can still manually pause by just running player.devSpeed = 0 in console (or = 1 to resume).

exportEncoding ​

  • Type: base64 | lz | plain
  • Default: base64

The encoding to use when exporting to the clipboard. Plain-text is fast to generate but is easiest for the player to manipulate and cheat with. Base 64 is slightly slower and the string will be longer but will offer a small barrier to people trying to cheat. LZ-String is the slowest method, but produces the smallest strings and still offers a small barrier to those trying to cheat. Some sharing platforms like pastebin may automatically delete base64 encoded text, and some sites might not support all the characters used in lz-string exports.

',66),r=[l];function n(s,d,c,h,u,p){return o(),a("div",null,r)}const m=e(i,[["render",n]]);export{b as __pageData,m as default}; +import{_ as e,c as a,o,N as t}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Project Info","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/project-info.md","lastUpdated":1681792078000}'),i={name:"guide/creating-your-project/project-info.md"},l=t('

Project Info ​

This is a JSON file containing information that describes your project and configures parts of how Profectus should represent it.

It is stored at /src/data/projInfo.json.

Basic Config ​

title ​

  • Type: string
  • Default: Profectus

The name of the project, which will appear in the info tab and the header, if enabled. The page title will also be set to this value.

description ​

  • Type: string
  • Default: A project made in Profectus

A description of the project, which will be used when the project is installed as a Progressive Web Application.

id ​

  • Type: string
  • Default: ""

This is a unique ID used when saving player data. Changing this will effectively erase all save data for all players.

WARNING

This ID MUST be unique to your project, and should not be left as the default value. Otherwise, your project may use the save data from another project and cause issues for both projects.

author ​

  • Type: string
  • Default: ""

The author of the project, which will appear in the info tab.

discordName ​

  • Type: string
  • Default: The Paper Pilot Community

The text to display for the discord server to point users to. This will appear when hovering over the discord icon, inside the info tab, the game over screen, as well as the NaN detected screen.

By default, this is The Paper Pilot Community, which can act as a catch-all for any Profectus projects without their own servers. If you change the discord server with your own, The Paper Pilot Community will still display underneath the custom server when hovering over the discord icon and within the info tab. Those places will also contain a link to the Modding Tree discord server.

  • Type: string
  • Default: https://discord.gg/WzejVAx

The link for the discord server to point users to. See discordName for more details.

Version Config ​

versionNumber ​

  • Type: string
  • Default: 0.0

The current version of the project loaded. If the player data was last saved in a different version of the project, fixOldSave will be run, so you can perform any save migrations necessary. This will also appear in the nav, the info tab, and the game over screen.

versionTitle ​

  • Type: string
  • Default: Initial Commit

The display name for the current version of the project loaded. This will also appear in the nav, the info tab, and the game over screen unless set to an empty string.

Display Config ​

allowGoBack ​

  • Type: boolean
  • Default: true

Whether or not to allow tabs (besides the first) to display a "back" button to close them (and any other tabs to the right of them).

defaultShowSmall ​

  • Type: boolean
  • Default: false

Whether or not to allow resources to display small values (<.001). If false they'll just display as 0. Individual resources can also be configured to override this value.

defaultDecimalsShown ​

  • Type: number
  • Default: 2

Default precision to display numbers at when passed into format. Individual format calls can override this value, and resources can be configured with a custom precision as well.

useHeader ​

  • Type: boolean
  • Default: true

Whether or not to display the nav as a header at the top of the screen. If disabled, the nav will appear on the left side of the screen laid over the first tab.

  • Type: string | null
  • Default: null

A path to an image file to display as the logo of the app. If null, the title will be shown instead. This will appear in the nav when useHeader is true.

  • Type: string
  • Default: ""

A path to an image file to display as the logo of the app within the info tab. If left blank no logo will be shown.

initialTabs ​

  • Type: string[]
  • Default: ["main"]

The list of initial tabs to display on new saves. This value must have at least one element. Each element should be the ID of the layer to display in that tab.

Advanced Config ​

maxTickLength ​

  • Type: number
  • Default: 3600

The longest duration a single tick can be, in seconds. When calculating things like offline time, a single tick will be forced to be this amount or lower. This will make calculating offline time spread out across many ticks as necessary. The default value is 1 hour.

offlineLimit ​

  • Type: number
  • Default: 1

The max amount of time that can be stored as offline time, in hours.

enablePausing ​

  • Type: boolean
  • Default: true

Whether or not to allow the player to pause the game. Turning this off disables the toggle from the options menu as well as the NaN screen. Developers can still manually pause by just running player.devSpeed = 0 in console (or = 1 to resume).

exportEncoding ​

  • Type: base64 | lz | plain
  • Default: base64

The encoding to use when exporting to the clipboard. Plain-text is fast to generate but is easiest for the player to manipulate and cheat with. Base 64 is slightly slower and the string will be longer but will offer a small barrier to people trying to cheat. LZ-String is the slowest method, but produces the smallest strings and still offers a small barrier to those trying to cheat. Some sharing platforms like pastebin may automatically delete base64 encoded text, and some sites might not support all the characters used in lz-string exports.

',66),r=[l];function n(s,d,c,h,u,p){return o(),a("div",null,r)}const m=e(i,[["render",n]]);export{b as __pageData,m as default}; diff --git a/assets/guide_creating-your-project_project-info.md.f06a6a5d.lean.js b/assets/guide_creating-your-project_project-info.md.64fc6c56.lean.js similarity index 85% rename from assets/guide_creating-your-project_project-info.md.f06a6a5d.lean.js rename to assets/guide_creating-your-project_project-info.md.64fc6c56.lean.js index 34f6ab9b..ff23564a 100644 --- a/assets/guide_creating-your-project_project-info.md.f06a6a5d.lean.js +++ b/assets/guide_creating-your-project_project-info.md.64fc6c56.lean.js @@ -1 +1 @@ -import{_ as e,c as a,o,N as t}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Project Info","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/project-info.md","lastUpdated":1681454585000}'),i={name:"guide/creating-your-project/project-info.md"},l=t("",66),r=[l];function n(s,d,c,h,u,p){return o(),a("div",null,r)}const m=e(i,[["render",n]]);export{b as __pageData,m as default}; +import{_ as e,c as a,o,N as t}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Project Info","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/project-info.md","lastUpdated":1681792078000}'),i={name:"guide/creating-your-project/project-info.md"},l=t("",66),r=[l];function n(s,d,c,h,u,p){return o(),a("div",null,r)}const m=e(i,[["render",n]]);export{b as __pageData,m as default}; diff --git a/assets/guide_creating-your-project_themes.md.2ceffe94.js b/assets/guide_creating-your-project_themes.md.63c537c1.js similarity index 97% rename from assets/guide_creating-your-project_themes.md.2ceffe94.js rename to assets/guide_creating-your-project_themes.md.63c537c1.js index 800ab018..253a5522 100644 --- a/assets/guide_creating-your-project_themes.md.2ceffe94.js +++ b/assets/guide_creating-your-project_themes.md.63c537c1.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Themes","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/themes.md","lastUpdated":1681454585000}'),i={name:"guide/creating-your-project/themes.md"},s=o('

Themes ​

Themes are objects that change how the project's interface should look. This is done mostly by changing the values of various CSS variables. You can look at the existing themes as a reference for the kind of values these CSS variables expect. They can also set various theme options that change how parts of the screen are laid out, which are described below.

They are stored in /src/data/themes.ts.

Modifying Themes ​

You can add a theme by adding a property to the Themes enum and then including the theme in the exported object. It's recommended to use the spread operator if you'd like to have a theme look like another, but override specific options / CSS variables.

Themes added in this way will be automatically included in the Themes dropdown in the Options tab. Removing themes from the enum and exported object will similarly hide them from the dropdown.

If you'd like to change which theme is the default, you may modify the initial player settings object in the /src/game/settings.ts file. Keep in mind you'll also want to change it in the hardResetSettings function in the same file.

Theme Options ​

floatingTabs ​

  • Type: boolean

Toggles whether to display tab buttons in a tab list, similar to how a browser displays tabs; or to display them as floating buttons, similar to how TMT displays buttons.

mergeAdjacent ​

  • Type: boolean

If true, elements in a row or column will have their margins removed and border radiuses set to 0 between elements. This will cause the elements to appear as segments in a single object.

Currently, this can only merge in a single dimension. Rows of columns or columns of rows will not merge into a single rectangular object.

',15),n=[s];function r(h,l,d,c,m,p){return a(),t("div",null,n)}const b=e(i,[["render",r]]);export{g as __pageData,b as default}; +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Themes","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/themes.md","lastUpdated":1681792078000}'),i={name:"guide/creating-your-project/themes.md"},s=o('

Themes ​

Themes are objects that change how the project's interface should look. This is done mostly by changing the values of various CSS variables. You can look at the existing themes as a reference for the kind of values these CSS variables expect. They can also set various theme options that change how parts of the screen are laid out, which are described below.

They are stored in /src/data/themes.ts.

Modifying Themes ​

You can add a theme by adding a property to the Themes enum and then including the theme in the exported object. It's recommended to use the spread operator if you'd like to have a theme look like another, but override specific options / CSS variables.

Themes added in this way will be automatically included in the Themes dropdown in the Options tab. Removing themes from the enum and exported object will similarly hide them from the dropdown.

If you'd like to change which theme is the default, you may modify the initial player settings object in the /src/game/settings.ts file. Keep in mind you'll also want to change it in the hardResetSettings function in the same file.

Theme Options ​

floatingTabs ​

  • Type: boolean

Toggles whether to display tab buttons in a tab list, similar to how a browser displays tabs; or to display them as floating buttons, similar to how TMT displays buttons.

mergeAdjacent ​

  • Type: boolean

If true, elements in a row or column will have their margins removed and border radiuses set to 0 between elements. This will cause the elements to appear as segments in a single object.

Currently, this can only merge in a single dimension. Rows of columns or columns of rows will not merge into a single rectangular object.

',15),n=[s];function r(h,l,d,c,m,p){return a(),t("div",null,n)}const b=e(i,[["render",r]]);export{g as __pageData,b as default}; diff --git a/assets/guide_creating-your-project_themes.md.2ceffe94.lean.js b/assets/guide_creating-your-project_themes.md.63c537c1.lean.js similarity index 84% rename from assets/guide_creating-your-project_themes.md.2ceffe94.lean.js rename to assets/guide_creating-your-project_themes.md.63c537c1.lean.js index ff85be4d..5cd484dd 100644 --- a/assets/guide_creating-your-project_themes.md.2ceffe94.lean.js +++ b/assets/guide_creating-your-project_themes.md.63c537c1.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Themes","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/themes.md","lastUpdated":1681454585000}'),i={name:"guide/creating-your-project/themes.md"},s=o("",15),n=[s];function r(h,l,d,c,m,p){return a(),t("div",null,n)}const b=e(i,[["render",r]]);export{g as __pageData,b as default}; +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Themes","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/themes.md","lastUpdated":1681792078000}'),i={name:"guide/creating-your-project/themes.md"},s=o("",15),n=[s];function r(h,l,d,c,m,p){return a(),t("div",null,n)}const b=e(i,[["render",r]]);export{g as __pageData,b as default}; diff --git a/assets/guide_creating-your-project_utils.md.0aa70f37.js b/assets/guide_creating-your-project_utils.md.f64b911e.js similarity index 95% rename from assets/guide_creating-your-project_utils.md.0aa70f37.js rename to assets/guide_creating-your-project_utils.md.f64b911e.js index 24526f1a..75877258 100644 --- a/assets/guide_creating-your-project_utils.md.0aa70f37.js +++ b/assets/guide_creating-your-project_utils.md.f64b911e.js @@ -1 +1 @@ -import{_ as a,c as o,o as s,x as e,a as t}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Utilities","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/utils.md","lastUpdated":1681454585000}'),i={name:"guide/creating-your-project/utils.md"},n=e("h1",{id:"utilities",tabindex:"-1"},[t("Utilities "),e("a",{class:"header-anchor",href:"#utilities","aria-label":'Permalink to "Utilities"'},"​")],-1),r=e("p",null,"There are often concepts that aren't inherent to a single feature, but rather work with joining different features together. For example, a reset clickable that activates a conversion and resets a tree, which happens to be a common use case but isn't inherent to clickables, conversions, or trees.",-1),c=e("p",null,[t("These are perfect situations for utilities, and so to encourage creators to learn to identify and take advantage of these situations, a file called "),e("code",null,"src/data/common.tsx"),t(" has been created to demo some of the more common utility functions a project might use. Adding new utilities to this file is encouraged, as is creating utils in general. It also works as a good stepping stone to creating your own features.")],-1),l=[n,r,c];function d(u,h,p,f,m,_){return s(),o("div",null,l)}const k=a(i,[["render",d]]);export{b as __pageData,k as default}; +import{_ as a,c as o,o as s,x as e,a as t}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Utilities","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/utils.md","lastUpdated":1681792078000}'),i={name:"guide/creating-your-project/utils.md"},n=e("h1",{id:"utilities",tabindex:"-1"},[t("Utilities "),e("a",{class:"header-anchor",href:"#utilities","aria-label":'Permalink to "Utilities"'},"​")],-1),r=e("p",null,"There are often concepts that aren't inherent to a single feature, but rather work with joining different features together. For example, a reset clickable that activates a conversion and resets a tree, which happens to be a common use case but isn't inherent to clickables, conversions, or trees.",-1),c=e("p",null,[t("These are perfect situations for utilities, and so to encourage creators to learn to identify and take advantage of these situations, a file called "),e("code",null,"src/data/common.tsx"),t(" has been created to demo some of the more common utility functions a project might use. Adding new utilities to this file is encouraged, as is creating utils in general. It also works as a good stepping stone to creating your own features.")],-1),l=[n,r,c];function d(u,h,p,f,m,_){return s(),o("div",null,l)}const k=a(i,[["render",d]]);export{b as __pageData,k as default}; diff --git a/assets/guide_creating-your-project_utils.md.0aa70f37.lean.js b/assets/guide_creating-your-project_utils.md.f64b911e.lean.js similarity index 95% rename from assets/guide_creating-your-project_utils.md.0aa70f37.lean.js rename to assets/guide_creating-your-project_utils.md.f64b911e.lean.js index 24526f1a..75877258 100644 --- a/assets/guide_creating-your-project_utils.md.0aa70f37.lean.js +++ b/assets/guide_creating-your-project_utils.md.f64b911e.lean.js @@ -1 +1 @@ -import{_ as a,c as o,o as s,x as e,a as t}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Utilities","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/utils.md","lastUpdated":1681454585000}'),i={name:"guide/creating-your-project/utils.md"},n=e("h1",{id:"utilities",tabindex:"-1"},[t("Utilities "),e("a",{class:"header-anchor",href:"#utilities","aria-label":'Permalink to "Utilities"'},"​")],-1),r=e("p",null,"There are often concepts that aren't inherent to a single feature, but rather work with joining different features together. For example, a reset clickable that activates a conversion and resets a tree, which happens to be a common use case but isn't inherent to clickables, conversions, or trees.",-1),c=e("p",null,[t("These are perfect situations for utilities, and so to encourage creators to learn to identify and take advantage of these situations, a file called "),e("code",null,"src/data/common.tsx"),t(" has been created to demo some of the more common utility functions a project might use. Adding new utilities to this file is encouraged, as is creating utils in general. It also works as a good stepping stone to creating your own features.")],-1),l=[n,r,c];function d(u,h,p,f,m,_){return s(),o("div",null,l)}const k=a(i,[["render",d]]);export{b as __pageData,k as default}; +import{_ as a,c as o,o as s,x as e,a as t}from"./chunks/framework.0799945b.js";const b=JSON.parse('{"title":"Utilities","description":"","frontmatter":{},"headers":[],"relativePath":"guide/creating-your-project/utils.md","lastUpdated":1681792078000}'),i={name:"guide/creating-your-project/utils.md"},n=e("h1",{id:"utilities",tabindex:"-1"},[t("Utilities "),e("a",{class:"header-anchor",href:"#utilities","aria-label":'Permalink to "Utilities"'},"​")],-1),r=e("p",null,"There are often concepts that aren't inherent to a single feature, but rather work with joining different features together. For example, a reset clickable that activates a conversion and resets a tree, which happens to be a common use case but isn't inherent to clickables, conversions, or trees.",-1),c=e("p",null,[t("These are perfect situations for utilities, and so to encourage creators to learn to identify and take advantage of these situations, a file called "),e("code",null,"src/data/common.tsx"),t(" has been created to demo some of the more common utility functions a project might use. Adding new utilities to this file is encouraged, as is creating utils in general. It also works as a good stepping stone to creating your own features.")],-1),l=[n,r,c];function d(u,h,p,f,m,_){return s(),o("div",null,l)}const k=a(i,[["render",d]]);export{b as __pageData,k as default}; diff --git a/assets/guide_getting-started_examples.md.8dc349eb.js b/assets/guide_getting-started_examples.md.be79c82f.js similarity index 97% rename from assets/guide_getting-started_examples.md.8dc349eb.js rename to assets/guide_getting-started_examples.md.be79c82f.js index 3ce53b98..152d97c1 100644 --- a/assets/guide_getting-started_examples.md.8dc349eb.js +++ b/assets/guide_getting-started_examples.md.be79c82f.js @@ -1 +1 @@ -import{_ as o,c as n,x as e,a as t,C as a,o as s,D as i}from"./chunks/framework.0799945b.js";const D=JSON.parse('{"title":"Example Projects","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started/examples.md","lastUpdated":1681454585000}'),l={name:"guide/getting-started/examples.md"},c=e("h1",{id:"example-projects",tabindex:"-1"},[t("Example Projects "),e("a",{class:"header-anchor",href:"#example-projects","aria-label":'Permalink to "Example Projects"'},"​")],-1),d={id:"advent-incremental",tabindex:"-1"},p=e("a",{class:"header-anchor",href:"#advent-incremental","aria-label":'Permalink to "Advent Incremental "'},"​",-1),h=e("p",null,[e("a",{href:"https://github.com/thepaperpilot/advent-Incremental/",target:"_blank",rel:"noreferrer"},"View Source"),t(" | "),e("a",{href:"https://www.thepaperpilot.org/advent/",target:"_blank",rel:"noreferrer"},"View Project")],-1),m=e("p",null,[t("An incremental game with 25 different layers of content. A good example of what a large project looks like. There's also a partial port to 0.6 available "),e("a",{href:"https://github.com/thepaperpilot/advent-Incremental/tree/next",target:"_blank",rel:"noreferrer"},"here"),t(".")],-1),f={id:"primordia",tabindex:"-1"},_=e("a",{class:"header-anchor",href:"#primordia","aria-label":'Permalink to "Primordia "'},"​",-1),g=e("p",null,[e("a",{href:"https://github.com/Jacorb90/Primordial-Tree",target:"_blank",rel:"noreferrer"},"View Source"),t(" | "),e("a",{href:"https://jacorb90.me/Primordial-Tree/",target:"_blank",rel:"noreferrer"},"View Project")],-1),u=e("p",null,'A "The Prestige Tree" style incremental game, developed by the original creator of TPT.',-1),b={id:"tmt-demo",tabindex:"-1"},x=e("a",{class:"header-anchor",href:"#tmt-demo","aria-label":'Permalink to "TMT-Demo "'},"​",-1),P=e("p",null,[e("a",{href:"https://github.com/profectus-engine/tmt-demo",target:"_blank",rel:"noreferrer"},"View Source"),t(" | "),e("a",{href:"https://profectus-engine.github.io/TMT-Demo/",target:"_blank",rel:"noreferrer"},"View Project")],-1),T=e("p",null,"A project loosely based off the Demo project for TMT. Uses most of the different features of Profectus, but doesn't have any real gameplay.",-1);function k(w,v,j,y,V,B){const r=i("Badge");return s(),n("div",null,[c,e("h2",d,[t("Advent Incremental "),a(r,{type:"warning",text:"Profectus 0.5"}),t(),p]),h,m,e("h2",f,[t("Primordia "),a(r,{type:"warning",text:"Profectus 0.5"}),t(),_]),g,u,e("h2",b,[t("TMT-Demo "),a(r,{type:"tip",text:"Profectus 0.6"}),t(),x]),P,T])}const E=o(l,[["render",k]]);export{D as __pageData,E as default}; +import{_ as o,c as n,x as e,a as t,C as a,o as s,D as i}from"./chunks/framework.0799945b.js";const D=JSON.parse('{"title":"Example Projects","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started/examples.md","lastUpdated":1681792078000}'),l={name:"guide/getting-started/examples.md"},c=e("h1",{id:"example-projects",tabindex:"-1"},[t("Example Projects "),e("a",{class:"header-anchor",href:"#example-projects","aria-label":'Permalink to "Example Projects"'},"​")],-1),d={id:"advent-incremental",tabindex:"-1"},p=e("a",{class:"header-anchor",href:"#advent-incremental","aria-label":'Permalink to "Advent Incremental "'},"​",-1),h=e("p",null,[e("a",{href:"https://github.com/thepaperpilot/advent-Incremental/",target:"_blank",rel:"noreferrer"},"View Source"),t(" | "),e("a",{href:"https://www.thepaperpilot.org/advent/",target:"_blank",rel:"noreferrer"},"View Project")],-1),m=e("p",null,[t("An incremental game with 25 different layers of content. A good example of what a large project looks like. There's also a partial port to 0.6 available "),e("a",{href:"https://github.com/thepaperpilot/advent-Incremental/tree/next",target:"_blank",rel:"noreferrer"},"here"),t(".")],-1),f={id:"primordia",tabindex:"-1"},_=e("a",{class:"header-anchor",href:"#primordia","aria-label":'Permalink to "Primordia "'},"​",-1),g=e("p",null,[e("a",{href:"https://github.com/Jacorb90/Primordial-Tree",target:"_blank",rel:"noreferrer"},"View Source"),t(" | "),e("a",{href:"https://jacorb90.me/Primordial-Tree/",target:"_blank",rel:"noreferrer"},"View Project")],-1),u=e("p",null,'A "The Prestige Tree" style incremental game, developed by the original creator of TPT.',-1),b={id:"tmt-demo",tabindex:"-1"},x=e("a",{class:"header-anchor",href:"#tmt-demo","aria-label":'Permalink to "TMT-Demo "'},"​",-1),P=e("p",null,[e("a",{href:"https://github.com/profectus-engine/tmt-demo",target:"_blank",rel:"noreferrer"},"View Source"),t(" | "),e("a",{href:"https://profectus-engine.github.io/TMT-Demo/",target:"_blank",rel:"noreferrer"},"View Project")],-1),T=e("p",null,"A project loosely based off the Demo project for TMT. Uses most of the different features of Profectus, but doesn't have any real gameplay.",-1);function k(w,v,j,y,V,B){const r=i("Badge");return s(),n("div",null,[c,e("h2",d,[t("Advent Incremental "),a(r,{type:"warning",text:"Profectus 0.5"}),t(),p]),h,m,e("h2",f,[t("Primordia "),a(r,{type:"warning",text:"Profectus 0.5"}),t(),_]),g,u,e("h2",b,[t("TMT-Demo "),a(r,{type:"tip",text:"Profectus 0.6"}),t(),x]),P,T])}const E=o(l,[["render",k]]);export{D as __pageData,E as default}; diff --git a/assets/guide_getting-started_examples.md.8dc349eb.lean.js b/assets/guide_getting-started_examples.md.be79c82f.lean.js similarity index 97% rename from assets/guide_getting-started_examples.md.8dc349eb.lean.js rename to assets/guide_getting-started_examples.md.be79c82f.lean.js index 3ce53b98..152d97c1 100644 --- a/assets/guide_getting-started_examples.md.8dc349eb.lean.js +++ b/assets/guide_getting-started_examples.md.be79c82f.lean.js @@ -1 +1 @@ -import{_ as o,c as n,x as e,a as t,C as a,o as s,D as i}from"./chunks/framework.0799945b.js";const D=JSON.parse('{"title":"Example Projects","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started/examples.md","lastUpdated":1681454585000}'),l={name:"guide/getting-started/examples.md"},c=e("h1",{id:"example-projects",tabindex:"-1"},[t("Example Projects "),e("a",{class:"header-anchor",href:"#example-projects","aria-label":'Permalink to "Example Projects"'},"​")],-1),d={id:"advent-incremental",tabindex:"-1"},p=e("a",{class:"header-anchor",href:"#advent-incremental","aria-label":'Permalink to "Advent Incremental "'},"​",-1),h=e("p",null,[e("a",{href:"https://github.com/thepaperpilot/advent-Incremental/",target:"_blank",rel:"noreferrer"},"View Source"),t(" | "),e("a",{href:"https://www.thepaperpilot.org/advent/",target:"_blank",rel:"noreferrer"},"View Project")],-1),m=e("p",null,[t("An incremental game with 25 different layers of content. A good example of what a large project looks like. There's also a partial port to 0.6 available "),e("a",{href:"https://github.com/thepaperpilot/advent-Incremental/tree/next",target:"_blank",rel:"noreferrer"},"here"),t(".")],-1),f={id:"primordia",tabindex:"-1"},_=e("a",{class:"header-anchor",href:"#primordia","aria-label":'Permalink to "Primordia "'},"​",-1),g=e("p",null,[e("a",{href:"https://github.com/Jacorb90/Primordial-Tree",target:"_blank",rel:"noreferrer"},"View Source"),t(" | "),e("a",{href:"https://jacorb90.me/Primordial-Tree/",target:"_blank",rel:"noreferrer"},"View Project")],-1),u=e("p",null,'A "The Prestige Tree" style incremental game, developed by the original creator of TPT.',-1),b={id:"tmt-demo",tabindex:"-1"},x=e("a",{class:"header-anchor",href:"#tmt-demo","aria-label":'Permalink to "TMT-Demo "'},"​",-1),P=e("p",null,[e("a",{href:"https://github.com/profectus-engine/tmt-demo",target:"_blank",rel:"noreferrer"},"View Source"),t(" | "),e("a",{href:"https://profectus-engine.github.io/TMT-Demo/",target:"_blank",rel:"noreferrer"},"View Project")],-1),T=e("p",null,"A project loosely based off the Demo project for TMT. Uses most of the different features of Profectus, but doesn't have any real gameplay.",-1);function k(w,v,j,y,V,B){const r=i("Badge");return s(),n("div",null,[c,e("h2",d,[t("Advent Incremental "),a(r,{type:"warning",text:"Profectus 0.5"}),t(),p]),h,m,e("h2",f,[t("Primordia "),a(r,{type:"warning",text:"Profectus 0.5"}),t(),_]),g,u,e("h2",b,[t("TMT-Demo "),a(r,{type:"tip",text:"Profectus 0.6"}),t(),x]),P,T])}const E=o(l,[["render",k]]);export{D as __pageData,E as default}; +import{_ as o,c as n,x as e,a as t,C as a,o as s,D as i}from"./chunks/framework.0799945b.js";const D=JSON.parse('{"title":"Example Projects","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started/examples.md","lastUpdated":1681792078000}'),l={name:"guide/getting-started/examples.md"},c=e("h1",{id:"example-projects",tabindex:"-1"},[t("Example Projects "),e("a",{class:"header-anchor",href:"#example-projects","aria-label":'Permalink to "Example Projects"'},"​")],-1),d={id:"advent-incremental",tabindex:"-1"},p=e("a",{class:"header-anchor",href:"#advent-incremental","aria-label":'Permalink to "Advent Incremental "'},"​",-1),h=e("p",null,[e("a",{href:"https://github.com/thepaperpilot/advent-Incremental/",target:"_blank",rel:"noreferrer"},"View Source"),t(" | "),e("a",{href:"https://www.thepaperpilot.org/advent/",target:"_blank",rel:"noreferrer"},"View Project")],-1),m=e("p",null,[t("An incremental game with 25 different layers of content. A good example of what a large project looks like. There's also a partial port to 0.6 available "),e("a",{href:"https://github.com/thepaperpilot/advent-Incremental/tree/next",target:"_blank",rel:"noreferrer"},"here"),t(".")],-1),f={id:"primordia",tabindex:"-1"},_=e("a",{class:"header-anchor",href:"#primordia","aria-label":'Permalink to "Primordia "'},"​",-1),g=e("p",null,[e("a",{href:"https://github.com/Jacorb90/Primordial-Tree",target:"_blank",rel:"noreferrer"},"View Source"),t(" | "),e("a",{href:"https://jacorb90.me/Primordial-Tree/",target:"_blank",rel:"noreferrer"},"View Project")],-1),u=e("p",null,'A "The Prestige Tree" style incremental game, developed by the original creator of TPT.',-1),b={id:"tmt-demo",tabindex:"-1"},x=e("a",{class:"header-anchor",href:"#tmt-demo","aria-label":'Permalink to "TMT-Demo "'},"​",-1),P=e("p",null,[e("a",{href:"https://github.com/profectus-engine/tmt-demo",target:"_blank",rel:"noreferrer"},"View Source"),t(" | "),e("a",{href:"https://profectus-engine.github.io/TMT-Demo/",target:"_blank",rel:"noreferrer"},"View Project")],-1),T=e("p",null,"A project loosely based off the Demo project for TMT. Uses most of the different features of Profectus, but doesn't have any real gameplay.",-1);function k(w,v,j,y,V,B){const r=i("Badge");return s(),n("div",null,[c,e("h2",d,[t("Advent Incremental "),a(r,{type:"warning",text:"Profectus 0.5"}),t(),p]),h,m,e("h2",f,[t("Primordia "),a(r,{type:"warning",text:"Profectus 0.5"}),t(),_]),g,u,e("h2",b,[t("TMT-Demo "),a(r,{type:"tip",text:"Profectus 0.6"}),t(),x]),P,T])}const E=o(l,[["render",k]]);export{D as __pageData,E as default}; diff --git a/assets/guide_getting-started_setup.md.283dd6fc.js b/assets/guide_getting-started_setup.md.283dd6fc.js deleted file mode 100644 index 90b60035..00000000 --- a/assets/guide_getting-started_setup.md.283dd6fc.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const r="/assets/workflow-perms.afbb596c.png",i="/assets/actionsbutton.f1ba9d8e.png",n="/assets/gh-pages.a24cefcf.png",y=JSON.parse('{"title":"Setting Up","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started/setup.md","lastUpdated":1681454585000}'),s={name:"guide/getting-started/setup.md"},l=a('

Setting Up ​

Profectus requires a Node.js development environment for working on a project. If you are comfortable with the command line, a local development environment is recommended.

Local Development ​

For local development, you will need the following tools:

Create a new project from the Profectus repository by clicking the "Use this template" button. Then, clone the repository locally using the provided link.

INFO

The template repository allows easy creation of multiple projects from one repository. However, updating an existing project to a newer version of Profectus can be challenging. Consider updating Profectus before starting development to avoid issues with unrelated histories.

It's recommended to create a new Git branch for development, allowing you to push changes without affecting the live build. The GitHub workflow will automatically rebuild the page when you push to the main branch.

Next, install Profectus' dependencies by running npm install. Run npm run serve to start a local server hosting your project. The site will automatically reload as you modify files.

Also, follow the steps to update Profectus before starting to make future updates easier without worrying about unrelated histories.

Deploying ​

Using Git, the repository's workflow action automates deployment. However, you need to grant write permissions for the action in the repository settings. Go to Actions, General, Workflow permissions, and select "Read and write permissions".

workflow permissions

To deploy, push changes to the main branch. The site will be updated automatically in a few minutes. Check progress or errors from the Actions tab on your repository.

actions button

Enable GitHub Pages in the repo settings to host the generated site. Select the gh-pages branch. Perform this step once. This will automatically start another GitHub action to deploy the website.

github pages

Upon action completion, your project should be available at https://<YOUR_GITHUB_USERNAME>.github.io/<YOUR_REPO_NAME>/. For example, the TMT Demo project hosted at https://github.com/profectus-engine/TMT-Demo is available at https://profectus-engine.github.io/TMT-Demo/.

Visual Studio Code Setup ​

If you don't have a preferred IDE, Profectus is developed in Visual Studio Code and is known to work well with it.

Recommendations:

  • Use Take Over Mode for proper type analysis
  • Turn off .value autocomplete by running the Preferences: Open Settings command and setting volar.autoCompleteRefs to false
  • Disable emmet expansions by setting emmet.showExpandedAbbreviation to "never", also in the preferences
  • Install the Vitest VS Code extension for running and debugging unit tests (if working on the engine itself)

Replit ​

As an alternative to local development, you may use Replit. Replit sets up your development and hosts your project.

On the free plan, you'll face limitations, and the program may need occasional startups.

To create a Profectus project on Replit, all you have to do is click this button:

Run on Repl.it

Click the "Run" button at the top of the screen to start development. This will also make the project publicly accessible, essentially auto-deploying it. However, this means you cannot separate your development and production environments.

Glitch ​

Glitch is a site similar to Replit, with many of the same pros and cons. To create a Profectus project on Glitch, select "New Project", "Import from GitHub", and enter profectus-engine/Profectus. The new project will be automatically configured and ready to go.

',30),p=[l];function c(u,d,h,m,g,f){return o(),t("div",null,p)}const v=e(s,[["render",c]]);export{y as __pageData,v as default}; diff --git a/assets/guide_getting-started_setup.md.af062367.js b/assets/guide_getting-started_setup.md.af062367.js new file mode 100644 index 00000000..1a104280 --- /dev/null +++ b/assets/guide_getting-started_setup.md.af062367.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const r="/assets/workflow-perms.afbb596c.png",i="/assets/actionsbutton.f1ba9d8e.png",n="/assets/gh-pages.a24cefcf.png",y=JSON.parse('{"title":"Setting Up","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started/setup.md","lastUpdated":1681792078000}'),s={name:"guide/getting-started/setup.md"},l=a('

Setting Up ​

Profectus requires a Node.js development environment for working on a project. If you are comfortable with the command line, a local development environment is recommended.

Local Development ​

For local development, you will need the following tools:

Create a new project from the Profectus repository by clicking the "Use this template" button. Then, clone the repository locally using the provided link.

INFO

The template repository allows easy creation of multiple projects from one repository. However, updating an existing project to a newer version of Profectus can be challenging. Consider updating Profectus before starting development to avoid issues with unrelated histories.

It's recommended to create a new Git branch for development, allowing you to push changes without affecting the live build. The GitHub workflow will automatically rebuild the page when you push to the main branch.

Next, install Profectus' dependencies by running npm install. Run npm run serve to start a local server hosting your project. The site will automatically reload as you modify files.

Also, follow the steps to update Profectus before starting to make future updates easier without worrying about unrelated histories.

Deploying ​

Using Git, the repository's workflow action automates deployment. However, you need to grant write permissions for the action in the repository settings. Go to Actions, General, Workflow permissions, and select "Read and write permissions".

workflow permissions

To deploy, push changes to the main branch. The site will be updated automatically in a few minutes. Check progress or errors from the Actions tab on your repository.

actions button

Enable GitHub Pages in the repo settings to host the generated site. Select the gh-pages branch. Perform this step once. This will automatically start another GitHub action to deploy the website.

github pages

Upon action completion, your project should be available at https://<YOUR_GITHUB_USERNAME>.github.io/<YOUR_REPO_NAME>/. For example, the TMT Demo project hosted at https://github.com/profectus-engine/TMT-Demo is available at https://profectus-engine.github.io/TMT-Demo/.

Visual Studio Code Setup ​

If you don't have a preferred IDE, Profectus is developed in Visual Studio Code and is known to work well with it.

Recommendations:

  • Use Take Over Mode for proper type analysis
  • Turn off .value autocomplete by running the Preferences: Open Settings command and setting volar.autoCompleteRefs to false
  • Disable emmet expansions by setting emmet.showExpandedAbbreviation to "never", also in the preferences
  • Install the Vitest VS Code extension for running and debugging unit tests (if working on the engine itself)

Replit ​

As an alternative to local development, you may use Replit. Replit sets up your development and hosts your project.

On the free plan, you'll face limitations, and the program may need occasional startups.

To create a Profectus project on Replit, all you have to do is click this button:

Run on Repl.it

Click the "Run" button at the top of the screen to start development. This will also make the project publicly accessible, essentially auto-deploying it. However, this means you cannot separate your development and production environments.

Glitch ​

Glitch is a site similar to Replit, with many of the same pros and cons. To create a Profectus project on Glitch, select "New Project", "Import from GitHub", and enter profectus-engine/Profectus. The new project will be automatically configured and ready to go.

',30),p=[l];function c(u,d,h,m,g,f){return o(),t("div",null,p)}const v=e(s,[["render",c]]);export{y as __pageData,v as default}; diff --git a/assets/guide_getting-started_setup.md.283dd6fc.lean.js b/assets/guide_getting-started_setup.md.af062367.lean.js similarity index 87% rename from assets/guide_getting-started_setup.md.283dd6fc.lean.js rename to assets/guide_getting-started_setup.md.af062367.lean.js index 0c171dcc..02fdca22 100644 --- a/assets/guide_getting-started_setup.md.283dd6fc.lean.js +++ b/assets/guide_getting-started_setup.md.af062367.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const r="/assets/workflow-perms.afbb596c.png",i="/assets/actionsbutton.f1ba9d8e.png",n="/assets/gh-pages.a24cefcf.png",y=JSON.parse('{"title":"Setting Up","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started/setup.md","lastUpdated":1681454585000}'),s={name:"guide/getting-started/setup.md"},l=a("",30),p=[l];function c(u,d,h,m,g,f){return o(),t("div",null,p)}const v=e(s,[["render",c]]);export{y as __pageData,v as default}; +import{_ as e,c as t,o,N as a}from"./chunks/framework.0799945b.js";const r="/assets/workflow-perms.afbb596c.png",i="/assets/actionsbutton.f1ba9d8e.png",n="/assets/gh-pages.a24cefcf.png",y=JSON.parse('{"title":"Setting Up","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started/setup.md","lastUpdated":1681792078000}'),s={name:"guide/getting-started/setup.md"},l=a("",30),p=[l];function c(u,d,h,m,g,f){return o(),t("div",null,p)}const v=e(s,[["render",c]]);export{y as __pageData,v as default}; diff --git a/assets/guide_getting-started_updating.md.9e46942a.js b/assets/guide_getting-started_updating.md.d0fb2ae0.js similarity index 62% rename from assets/guide_getting-started_updating.md.9e46942a.js rename to assets/guide_getting-started_updating.md.d0fb2ae0.js index 7ab598a9..af376324 100644 --- a/assets/guide_getting-started_updating.md.9e46942a.js +++ b/assets/guide_getting-started_updating.md.d0fb2ae0.js @@ -1,3 +1,3 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Updating Profectus","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started/updating.md","lastUpdated":1681454585000}'),s={name:"guide/getting-started/updating.md"},n=o(`

Updating Profectus ​

Github ​

Due to Profectus being a template repository, your projects do not share a git history with Profectus. In order to update changes, you will need to run the following:

bash
git remote add template https://github.com/profectus-engine/Profectus
+import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Updating Profectus","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started/updating.md","lastUpdated":1681792078000}'),s={name:"guide/getting-started/updating.md"},n=o(`

Updating Profectus ​

Github ​

Due to Profectus being a template repository, your projects do not share a git history with Profectus. To update changes, you will need to run the following:

bash
git remote add template https://github.com/profectus-engine/Profectus
 git fetch --all
-git merge template/main --allow-unrelated-histories

The first command only has to be performed once. The third command may require you to merge conflicts between code both you and Profectus have changed - however, due to the modularity of Profectus, this should be fairly rare. Unfortunately, due to the unrelated histories the first time you do this every change will be marked as a conflict, and you'll need to accept each one.

Replit ​

The sidebar has a tab labelled "Version Control", which you can use to merge all changes made to Profectus into your project. Unfortunately, replit does not have a merge tool so this process may irrecoverably erase changes you've made - I'd recommend making a backup first.

Glitch ​

Unfortunately glitch does not provide any method by which to update a project from a github repository. If you've only changed things in the data folder you may consider creating a new project, importing the current version of Profectus, and then placing your data folder in the new project.

`,9),r=[n];function l(i,c,p,d,h,u){return a(),t("div",null,r)}const m=e(s,[["render",l]]);export{g as __pageData,m as default}; +git merge template/main --allow-unrelated-histories

The first command only has to be performed once. The third command may require you to merge conflicts between code both you and Profectus have changed - however, due to the modularity of Profectus, this should be fairly rare. Unfortunately, due to the unrelated histories the first time you do this every change will be marked as a conflict, and you'll need to accept each one.

Replit ​

The sidebar has a tab labeled "Version Control", which you can use to merge all changes made to Profectus into your project. Unfortunately, Replit does not have a merge tool so this process may irrecoverably erase changes you've made - I'd recommend making a backup first.

Glitch ​

Unfortunately, Glitch does not provide any method by which to update a project from a Github repository. If you've only changed things in the data folder you may consider creating a new project, importing the current version of Profectus, and then placing your data folder in the new project.

`,9),r=[n];function l(i,c,p,d,h,u){return a(),t("div",null,r)}const m=e(s,[["render",l]]);export{g as __pageData,m as default}; diff --git a/assets/guide_getting-started_updating.md.9e46942a.lean.js b/assets/guide_getting-started_updating.md.d0fb2ae0.lean.js similarity index 85% rename from assets/guide_getting-started_updating.md.9e46942a.lean.js rename to assets/guide_getting-started_updating.md.d0fb2ae0.lean.js index 5b05af27..c9f8589e 100644 --- a/assets/guide_getting-started_updating.md.9e46942a.lean.js +++ b/assets/guide_getting-started_updating.md.d0fb2ae0.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Updating Profectus","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started/updating.md","lastUpdated":1681454585000}'),s={name:"guide/getting-started/updating.md"},n=o("",9),r=[n];function l(i,c,p,d,h,u){return a(),t("div",null,r)}const m=e(s,[["render",l]]);export{g as __pageData,m as default}; +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const g=JSON.parse('{"title":"Updating Profectus","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started/updating.md","lastUpdated":1681792078000}'),s={name:"guide/getting-started/updating.md"},n=o("",9),r=[n];function l(i,c,p,d,h,u){return a(),t("div",null,r)}const m=e(s,[["render",l]]);export{g as __pageData,m as default}; diff --git a/assets/guide_important-concepts_coercable.md.b1f1acdb.js b/assets/guide_important-concepts_coercable.md.c6ef7a86.js similarity index 99% rename from assets/guide_important-concepts_coercable.md.b1f1acdb.js rename to assets/guide_important-concepts_coercable.md.c6ef7a86.js index beb53de4..fada280d 100644 --- a/assets/guide_important-concepts_coercable.md.b1f1acdb.js +++ b/assets/guide_important-concepts_coercable.md.c6ef7a86.js @@ -1,4 +1,4 @@ -import{_ as e,c as a,o as s,N as n}from"./chunks/framework.0799945b.js";const h=JSON.parse('{"title":"Coercable Components","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/coercable.md","lastUpdated":1681454585000}'),o={name:"guide/important-concepts/coercable.md"},t=n(`

Coercable Components ​

Most times a feature has some sort of dynamic display, it'll allow you to pass a "Coercable Component", or rather, something that can be coerced into a Vue component. This page goes over the different types of values you can use

Template Strings ​

If you provide a string, it will be wrapped in a component using it as the template. This is the simplest method, although not suitable for complex displays, and realistically cannot use Vue components as none are registered globally (by default). Recommended for static or simple dynamic displays, such as displays on features.

Template strings need to be wrapped in some HTML element. By default, they'll be wrapped in a <span> element, although certain features may wrap things in div or header elements instead, as appropriate.

Render Functions (JSX) ​

You can provide a render function and it will be wrapped in a component as well. The intended use for this is to write JSX inside a function, which will get automatically converted into a render function. You can read more about that process on the Vue docs on Render Functions & JSX. Note that JSX must be returned in a function - it does not work "standalone". The CoercableComponent type will enforce this for you.

JSX can use imported components, making this suited for writing the display properties on things like Tabs or Layers. There are also built-in functions to render features (either as their own or in a layout via renderRow and renderCol), so you don't need to import the Vue component for every feature you plan on using.

Typically a feature will accept a Computable<CoercableComponent>, which means functions would (normally) be wrapped in a computed (see Computable for more details). This would break render functions, so when passing a render function as a CoercableComponent it must be specially marked that it shouldn't be cached. You can use the built-in jsx function to mark a function for you.

Example ​

ts
{
+import{_ as e,c as a,o as s,N as n}from"./chunks/framework.0799945b.js";const h=JSON.parse('{"title":"Coercable Components","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/coercable.md","lastUpdated":1681792078000}'),o={name:"guide/important-concepts/coercable.md"},t=n(`

Coercable Components ​

Most times a feature has some sort of dynamic display, it'll allow you to pass a "Coercable Component", or rather, something that can be coerced into a Vue component. This page goes over the different types of values you can use

Template Strings ​

If you provide a string, it will be wrapped in a component using it as the template. This is the simplest method, although not suitable for complex displays, and realistically cannot use Vue components as none are registered globally (by default). Recommended for static or simple dynamic displays, such as displays on features.

Template strings need to be wrapped in some HTML element. By default, they'll be wrapped in a <span> element, although certain features may wrap things in div or header elements instead, as appropriate.

Render Functions (JSX) ​

You can provide a render function and it will be wrapped in a component as well. The intended use for this is to write JSX inside a function, which will get automatically converted into a render function. You can read more about that process on the Vue docs on Render Functions & JSX. Note that JSX must be returned in a function - it does not work "standalone". The CoercableComponent type will enforce this for you.

JSX can use imported components, making this suited for writing the display properties on things like Tabs or Layers. There are also built-in functions to render features (either as their own or in a layout via renderRow and renderCol), so you don't need to import the Vue component for every feature you plan on using.

Typically a feature will accept a Computable<CoercableComponent>, which means functions would (normally) be wrapped in a computed (see Computable for more details). This would break render functions, so when passing a render function as a CoercableComponent it must be specially marked that it shouldn't be cached. You can use the built-in jsx function to mark a function for you.

Example ​

ts
{
 	display: jsx(() => (
         <>
             <MainDisplay resource={points} color={color} />
diff --git a/assets/guide_important-concepts_coercable.md.b1f1acdb.lean.js b/assets/guide_important-concepts_coercable.md.c6ef7a86.lean.js
similarity index 85%
rename from assets/guide_important-concepts_coercable.md.b1f1acdb.lean.js
rename to assets/guide_important-concepts_coercable.md.c6ef7a86.lean.js
index 23e50000..bda4ed1e 100644
--- a/assets/guide_important-concepts_coercable.md.b1f1acdb.lean.js
+++ b/assets/guide_important-concepts_coercable.md.c6ef7a86.lean.js
@@ -1 +1 @@
-import{_ as e,c as a,o as s,N as n}from"./chunks/framework.0799945b.js";const h=JSON.parse('{"title":"Coercable Components","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/coercable.md","lastUpdated":1681454585000}'),o={name:"guide/important-concepts/coercable.md"},t=n("",13),l=[t];function p(r,c,i,d,u,y){return s(),a("div",null,l)}const F=e(o,[["render",p]]);export{h as __pageData,F as default};
+import{_ as e,c as a,o as s,N as n}from"./chunks/framework.0799945b.js";const h=JSON.parse('{"title":"Coercable Components","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/coercable.md","lastUpdated":1681792078000}'),o={name:"guide/important-concepts/coercable.md"},t=n("",13),l=[t];function p(r,c,i,d,u,y){return s(),a("div",null,l)}const F=e(o,[["render",p]]);export{h as __pageData,F as default};
diff --git a/assets/guide_important-concepts_features.md.ce662e79.js b/assets/guide_important-concepts_features.md.f95c37df.js
similarity index 99%
rename from assets/guide_important-concepts_features.md.ce662e79.js
rename to assets/guide_important-concepts_features.md.f95c37df.js
index 7ef1894d..492cd257 100644
--- a/assets/guide_important-concepts_features.md.ce662e79.js
+++ b/assets/guide_important-concepts_features.md.f95c37df.js
@@ -1,4 +1,4 @@
-import{_ as e,c as s,o as a,N as n}from"./chunks/framework.0799945b.js";const D=JSON.parse('{"title":"Features","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/features.md","lastUpdated":1681454585000}'),t={name:"guide/important-concepts/features.md"},o=n(`

Features ​

A layer is made up of features. There are many types of features included in Profectus, and more can be created once you become familiar with the engine.

To create a feature, the feature type will have one or more functions to help you. They'll typically look something like this:

ts
const addGainUpgrade = createUpgrade(() => ({
+import{_ as e,c as s,o as a,N as n}from"./chunks/framework.0799945b.js";const D=JSON.parse('{"title":"Features","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/features.md","lastUpdated":1681792078000}'),t={name:"guide/important-concepts/features.md"},o=n(`

Features ​

A layer is made up of features. There are many types of features included in Profectus, and more can be created once you become familiar with the engine.

To create a feature, the feature type will have one or more functions to help you. They'll typically look something like this:

ts
const addGainUpgrade = createUpgrade(() => ({
     display: {
         title: "Generator of Genericness",
         description: "Gain 1 point every second"
diff --git a/assets/guide_important-concepts_features.md.ce662e79.lean.js b/assets/guide_important-concepts_features.md.f95c37df.lean.js
similarity index 84%
rename from assets/guide_important-concepts_features.md.ce662e79.lean.js
rename to assets/guide_important-concepts_features.md.f95c37df.lean.js
index 259f92c8..792d1ed6 100644
--- a/assets/guide_important-concepts_features.md.ce662e79.lean.js
+++ b/assets/guide_important-concepts_features.md.f95c37df.lean.js
@@ -1 +1 @@
-import{_ as e,c as s,o as a,N as n}from"./chunks/framework.0799945b.js";const D=JSON.parse('{"title":"Features","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/features.md","lastUpdated":1681454585000}'),t={name:"guide/important-concepts/features.md"},o=n("",12),l=[o];function p(r,c,i,y,d,u){return a(),s("div",null,l)}const C=e(t,[["render",p]]);export{D as __pageData,C as default};
+import{_ as e,c as s,o as a,N as n}from"./chunks/framework.0799945b.js";const D=JSON.parse('{"title":"Features","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/features.md","lastUpdated":1681792078000}'),t={name:"guide/important-concepts/features.md"},o=n("",12),l=[o];function p(r,c,i,y,d,u){return a(),s("div",null,l)}const C=e(t,[["render",p]]);export{D as __pageData,C as default};
diff --git a/assets/guide_important-concepts_formulas.md.0ba3b4c0.js b/assets/guide_important-concepts_formulas.md.c2a76b20.js
similarity index 99%
rename from assets/guide_important-concepts_formulas.md.0ba3b4c0.js
rename to assets/guide_important-concepts_formulas.md.c2a76b20.js
index b44b97cc..cdeb01a5 100644
--- a/assets/guide_important-concepts_formulas.md.0ba3b4c0.js
+++ b/assets/guide_important-concepts_formulas.md.c2a76b20.js
@@ -1,4 +1,4 @@
-import{_ as e,c as a,o as s,N as o}from"./chunks/framework.0799945b.js";const y=JSON.parse('{"title":"Formulas","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/formulas.md","lastUpdated":1681454585000}'),n={name:"guide/important-concepts/formulas.md"},t=o(`

Formulas ​

Profectus utilizes formulas for various features, such as increasing requirements for repeatables and challenges or determining resource gains in conversions. These formulas often need to be inverted or integrated to enable features like buying multiple levels of a repeatable at once or determining when a conversion will increase resource gains. The Formula class can handle these operations, supporting every function Decimal does, while tracking the operations internally.

For example, a cost function like Decimal.pow(this.amount, 1.05).times(100) can be represented using a Formula: Formula.variable(this.amount).pow(1.05).times(100).

ts
const myRepeatable = createRepeatable(function (this: GenericRepeatable) {
+import{_ as e,c as a,o as s,N as o}from"./chunks/framework.0799945b.js";const y=JSON.parse('{"title":"Formulas","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/formulas.md","lastUpdated":1681792078000}'),n={name:"guide/important-concepts/formulas.md"},t=o(`

Formulas ​

Profectus utilizes formulas for various features, such as increasing requirements for repeatables and challenges or determining resource gains in conversions. These formulas often need to be inverted or integrated to enable features like buying multiple levels of a repeatable at once or determining when a conversion will increase resource gains. The Formula class can handle these operations, supporting every function Decimal does, while tracking the operations internally.

For example, a cost function like Decimal.pow(this.amount, 1.05).times(100) can be represented using a Formula: Formula.variable(this.amount).pow(1.05).times(100).

ts
const myRepeatable = createRepeatable(function (this: GenericRepeatable) {
     return {
         requirements: createCostRequirement(() => ({
             resource: points,
diff --git a/assets/guide_important-concepts_formulas.md.0ba3b4c0.lean.js b/assets/guide_important-concepts_formulas.md.c2a76b20.lean.js
similarity index 84%
rename from assets/guide_important-concepts_formulas.md.0ba3b4c0.lean.js
rename to assets/guide_important-concepts_formulas.md.c2a76b20.lean.js
index 8cc08f4d..985546ec 100644
--- a/assets/guide_important-concepts_formulas.md.0ba3b4c0.lean.js
+++ b/assets/guide_important-concepts_formulas.md.c2a76b20.lean.js
@@ -1 +1 @@
-import{_ as e,c as a,o as s,N as o}from"./chunks/framework.0799945b.js";const y=JSON.parse('{"title":"Formulas","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/formulas.md","lastUpdated":1681454585000}'),n={name:"guide/important-concepts/formulas.md"},t=o("",18),r=[t];function l(i,p,c,u,h,m){return s(),a("div",null,r)}const F=e(n,[["render",l]]);export{y as __pageData,F as default};
+import{_ as e,c as a,o as s,N as o}from"./chunks/framework.0799945b.js";const y=JSON.parse('{"title":"Formulas","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/formulas.md","lastUpdated":1681792078000}'),n={name:"guide/important-concepts/formulas.md"},t=o("",18),r=[t];function l(i,p,c,u,h,m){return s(),a("div",null,r)}const F=e(n,[["render",l]]);export{y as __pageData,F as default};
diff --git a/assets/guide_important-concepts_layers.md.40e3beef.js b/assets/guide_important-concepts_layers.md.0f85a362.js
similarity index 96%
rename from assets/guide_important-concepts_layers.md.40e3beef.js
rename to assets/guide_important-concepts_layers.md.0f85a362.js
index fff3e1de..0775c55b 100644
--- a/assets/guide_important-concepts_layers.md.40e3beef.js
+++ b/assets/guide_important-concepts_layers.md.0f85a362.js
@@ -1 +1 @@
-import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Layers","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/layers.md","lastUpdated":1681454585000}'),o={name:"guide/important-concepts/layers.md"},s=r('

Layers ​

Profectus content is organized into units called "Layers". When displaying content to the user, the screen will be divided into several tabs that each display the content of a layer. These layers are stored in /src/data/layers.

Each layer is ultimately a collection of different features, and a display function. While there are a couple reserved properties for layers, most of its structure is fully up to the creator.

Layers can be dynamically added or removed at any time, which also allows for effectively disabling or enabling content based on arbitrary conditions. Just make sure getInitialLayers can process the player save data object and determine which layers should be currently active.

Lazy Proxies ​

Layers (and features) are not actually created immediately. Instead, their options are gotten through a function which is then run the first time something inside the layer is accessed. This is a concept called lazy evaluation, which is also used for things like computed, and allows for features to reference each other without worrying about cyclical dependencies.

',6),i=[s];function n(c,l,d,h,y,p){return t(),a("div",null,i)}const _=e(o,[["render",n]]);export{f as __pageData,_ as default}; +import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Layers","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/layers.md","lastUpdated":1681792078000}'),o={name:"guide/important-concepts/layers.md"},s=r('

Layers ​

Profectus content is organized into units called "Layers". When displaying content to the user, the screen will be divided into several tabs that each display the content of a layer. These layers are stored in /src/data/layers.

Each layer is ultimately a collection of different features, and a display function. While there are a couple reserved properties for layers, most of its structure is fully up to the creator.

Layers can be dynamically added or removed at any time, which also allows for effectively disabling or enabling content based on arbitrary conditions. Just make sure getInitialLayers can process the player save data object and determine which layers should be currently active.

Lazy Proxies ​

Layers (and features) are not actually created immediately. Instead, their options are gotten through a function which is then run the first time something inside the layer is accessed. This is a concept called lazy evaluation, which is also used for things like computed, and allows for features to reference each other without worrying about cyclical dependencies.

',6),i=[s];function n(c,l,d,h,y,p){return t(),a("div",null,i)}const _=e(o,[["render",n]]);export{f as __pageData,_ as default}; diff --git a/assets/guide_important-concepts_layers.md.40e3beef.lean.js b/assets/guide_important-concepts_layers.md.0f85a362.lean.js similarity index 84% rename from assets/guide_important-concepts_layers.md.40e3beef.lean.js rename to assets/guide_important-concepts_layers.md.0f85a362.lean.js index d23840f6..582acde8 100644 --- a/assets/guide_important-concepts_layers.md.40e3beef.lean.js +++ b/assets/guide_important-concepts_layers.md.0f85a362.lean.js @@ -1 +1 @@ -import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Layers","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/layers.md","lastUpdated":1681454585000}'),o={name:"guide/important-concepts/layers.md"},s=r("",6),i=[s];function n(c,l,d,h,y,p){return t(),a("div",null,i)}const _=e(o,[["render",n]]);export{f as __pageData,_ as default}; +import{_ as e,c as a,o as t,N as r}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Layers","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/layers.md","lastUpdated":1681792078000}'),o={name:"guide/important-concepts/layers.md"},s=r("",6),i=[s];function n(c,l,d,h,y,p){return t(),a("div",null,i)}const _=e(o,[["render",n]]);export{f as __pageData,_ as default}; diff --git a/assets/guide_important-concepts_persistence.md.d4602def.js b/assets/guide_important-concepts_persistence.md.8e5f6af6.js similarity index 97% rename from assets/guide_important-concepts_persistence.md.d4602def.js rename to assets/guide_important-concepts_persistence.md.8e5f6af6.js index 9748f0d8..3e96c5d1 100644 --- a/assets/guide_important-concepts_persistence.md.d4602def.js +++ b/assets/guide_important-concepts_persistence.md.8e5f6af6.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as s}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Persistence","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/persistence.md","lastUpdated":1681454585000}'),r={name:"guide/important-concepts/persistence.md"},n=s('

Persistence ​

Persistence refers to data that is saved, so that it persists when the user closes the tab and opens it again in the future.

In Profectus, this is handled by creating "persistent refs", which act like refs but whose value is stored in an object that gets saved to localStorage. Other than that you can treat them like any other ref - when adding the layer, any persistent refs will automatically have their values updated to the ones saved in localStorage. If there isn't a saved value, it'll use the default value passed to the persistent ref constructor.

Many features in Profectus, such as upgrades, milestones, and challenges, internally have persistent refs to save things like whether the upgrade has been purchased, the milestone achieved, or the challenge completed. Creators can also create their own custom persistent refs to store any arbitrary (but serializable) data they need - that means Numbers (including big numbers), strings, booleans, or objects containing only serializable values. Another notable function is the resource constructor. If you pass a default value into its contructor, it will automatically create a persistent ref for that resource. If you pass in a ref, it will NOT make the ref persistent.

It's important for saving and loading these properties for these refs to be in a well known location. This is implemented based on the location of the persistent ref within a layer. That means its important that all persistent refs are located within the object returned by the createLayer options function. If a persistent ref is not within that object, it will NOT be saved and loaded - regardless of whether its a persistent ref within a feature, one you manually created, or otherwise.

Additionally, this structure should typically remain consistent between project versions. If a value is in a new location, it will not load the value from localStorage correctly. This is exacerbated if two values swap places, such as when an array is re-ordered. In the event a creator changes this structure anyways, the fixOldSave function can be used to migrate the old player save data to the new structure expected by the current version of the project.

',6),i=[n];function o(c,l,h,d,u,p){return a(),t("div",null,i)}const y=e(r,[["render",o]]);export{m as __pageData,y as default}; +import{_ as e,c as t,o as a,N as s}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Persistence","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/persistence.md","lastUpdated":1681792078000}'),r={name:"guide/important-concepts/persistence.md"},n=s('

Persistence ​

Persistence refers to data that is saved, so that it persists when the user closes the tab and opens it again in the future.

In Profectus, this is handled by creating "persistent refs", which act like refs but whose value is stored in an object that gets saved to localStorage. Other than that you can treat them like any other ref - when adding the layer, any persistent refs will automatically have their values updated to the ones saved in localStorage. If there isn't a saved value, it'll use the default value passed to the persistent ref constructor.

Many features in Profectus, such as upgrades, milestones, and challenges, internally have persistent refs to save things like whether the upgrade has been purchased, the milestone achieved, or the challenge completed. Creators can also create their own custom persistent refs to store any arbitrary (but serializable) data they need - that means Numbers (including big numbers), strings, booleans, or objects containing only serializable values. Another notable function is the resource constructor. If you pass a default value into its contructor, it will automatically create a persistent ref for that resource. If you pass in a ref, it will NOT make the ref persistent.

It's important for saving and loading these properties for these refs to be in a well known location. This is implemented based on the location of the persistent ref within a layer. That means its important that all persistent refs are located within the object returned by the createLayer options function. If a persistent ref is not within that object, it will NOT be saved and loaded - regardless of whether its a persistent ref within a feature, one you manually created, or otherwise.

Additionally, this structure should typically remain consistent between project versions. If a value is in a new location, it will not load the value from localStorage correctly. This is exacerbated if two values swap places, such as when an array is re-ordered. In the event a creator changes this structure anyways, the fixOldSave function can be used to migrate the old player save data to the new structure expected by the current version of the project.

',6),i=[n];function o(c,l,h,d,u,p){return a(),t("div",null,i)}const y=e(r,[["render",o]]);export{m as __pageData,y as default}; diff --git a/assets/guide_important-concepts_persistence.md.d4602def.lean.js b/assets/guide_important-concepts_persistence.md.8e5f6af6.lean.js similarity index 85% rename from assets/guide_important-concepts_persistence.md.d4602def.lean.js rename to assets/guide_important-concepts_persistence.md.8e5f6af6.lean.js index fbfe1297..9df4d637 100644 --- a/assets/guide_important-concepts_persistence.md.d4602def.lean.js +++ b/assets/guide_important-concepts_persistence.md.8e5f6af6.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as s}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Persistence","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/persistence.md","lastUpdated":1681454585000}'),r={name:"guide/important-concepts/persistence.md"},n=s("",6),i=[n];function o(c,l,h,d,u,p){return a(),t("div",null,i)}const y=e(r,[["render",o]]);export{m as __pageData,y as default}; +import{_ as e,c as t,o as a,N as s}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Persistence","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/persistence.md","lastUpdated":1681792078000}'),r={name:"guide/important-concepts/persistence.md"},n=s("",6),i=[n];function o(c,l,h,d,u,p){return a(),t("div",null,i)}const y=e(r,[["render",o]]);export{m as __pageData,y as default}; diff --git a/assets/guide_important-concepts_reactivity.md.6d7d263f.js b/assets/guide_important-concepts_reactivity.md.ca2bbc88.js similarity index 97% rename from assets/guide_important-concepts_reactivity.md.6d7d263f.js rename to assets/guide_important-concepts_reactivity.md.ca2bbc88.js index e793efcd..0a1dbeb7 100644 --- a/assets/guide_important-concepts_reactivity.md.6d7d263f.js +++ b/assets/guide_important-concepts_reactivity.md.ca2bbc88.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Reactivity","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/reactivity.md","lastUpdated":1681454585000}'),r={name:"guide/important-concepts/reactivity.md"},s=o('

Reactivity ​

Profectus takes large advantage of Vue's reactivity system. It's recommended to read up on how refs and computed refs work. Ultimately this means that sometimes you'll need to type .value to get the actual value of something, but also you are able to pass things around by reference instead of by value. Indeed, it is recommended to only unwrap the actual value when you actually need it. .value is guaranteed to be correct and up to date only on the exact moment it is accessed.

With a proper IDE, such as Visual Studio Code, you should be able to see whether or not something is a ref or not from type hints. If in doubt, you can always wrap the property in an unref call.

Vue's reactivity is probably the "quirkiest" part of Profectus, and not even the documentation makes all of those quirks clear. It is recommend to read this thread of common misconceptions around Vue reactivity.

Computable ​

Most properties on features will accept Computable values. Computable values can either be a raw value, a ref to the value, or a function that returns the value. In the lattermost case it will be wrapped in computed, turning it into a ref. The feature type will handle it being a ref or a raw value by using unref when accessing those values. With type hints, your IDE should correctly identify these values as refs or raw values so you can treat them as the types they actually are.

Because functions are automatically wrapped in computed for many properties, it might be expected to happen to custom properties you add to a feature that isn't defined by the feature type. These functions will not be wrapped, and if you want it cached you should wrap it in a computed yourself. This does, however, allow you to include custom methods on a feature without worry.

',7),i=[s];function n(c,u,d,l,p,h){return a(),t("div",null,i)}const y=e(r,[["render",n]]);export{f as __pageData,y as default}; +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Reactivity","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/reactivity.md","lastUpdated":1681792078000}'),r={name:"guide/important-concepts/reactivity.md"},s=o('

Reactivity ​

Profectus takes large advantage of Vue's reactivity system. It's recommended to read up on how refs and computed refs work. Ultimately this means that sometimes you'll need to type .value to get the actual value of something, but also you are able to pass things around by reference instead of by value. Indeed, it is recommended to only unwrap the actual value when you actually need it. .value is guaranteed to be correct and up to date only on the exact moment it is accessed.

With a proper IDE, such as Visual Studio Code, you should be able to see whether or not something is a ref or not from type hints. If in doubt, you can always wrap the property in an unref call.

Vue's reactivity is probably the "quirkiest" part of Profectus, and not even the documentation makes all of those quirks clear. It is recommend to read this thread of common misconceptions around Vue reactivity.

Computable ​

Most properties on features will accept Computable values. Computable values can either be a raw value, a ref to the value, or a function that returns the value. In the lattermost case it will be wrapped in computed, turning it into a ref. The feature type will handle it being a ref or a raw value by using unref when accessing those values. With type hints, your IDE should correctly identify these values as refs or raw values so you can treat them as the types they actually are.

Because functions are automatically wrapped in computed for many properties, it might be expected to happen to custom properties you add to a feature that isn't defined by the feature type. These functions will not be wrapped, and if you want it cached you should wrap it in a computed yourself. This does, however, allow you to include custom methods on a feature without worry.

',7),i=[s];function n(c,u,d,l,p,h){return a(),t("div",null,i)}const y=e(r,[["render",n]]);export{f as __pageData,y as default}; diff --git a/assets/guide_important-concepts_reactivity.md.6d7d263f.lean.js b/assets/guide_important-concepts_reactivity.md.ca2bbc88.lean.js similarity index 85% rename from assets/guide_important-concepts_reactivity.md.6d7d263f.lean.js rename to assets/guide_important-concepts_reactivity.md.ca2bbc88.lean.js index 03b59c5e..845e22de 100644 --- a/assets/guide_important-concepts_reactivity.md.6d7d263f.lean.js +++ b/assets/guide_important-concepts_reactivity.md.ca2bbc88.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Reactivity","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/reactivity.md","lastUpdated":1681454585000}'),r={name:"guide/important-concepts/reactivity.md"},s=o("",7),i=[s];function n(c,u,d,l,p,h){return a(),t("div",null,i)}const y=e(r,[["render",n]]);export{f as __pageData,y as default}; +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const f=JSON.parse('{"title":"Reactivity","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/reactivity.md","lastUpdated":1681792078000}'),r={name:"guide/important-concepts/reactivity.md"},s=o("",7),i=[s];function n(c,u,d,l,p,h){return a(),t("div",null,i)}const y=e(r,[["render",n]]);export{f as __pageData,y as default}; diff --git a/assets/guide_important-concepts_requirements.md.315f99b3.js b/assets/guide_important-concepts_requirements.md.54bd91b9.js similarity index 98% rename from assets/guide_important-concepts_requirements.md.315f99b3.js rename to assets/guide_important-concepts_requirements.md.54bd91b9.js index fe05f96d..2cd43211 100644 --- a/assets/guide_important-concepts_requirements.md.315f99b3.js +++ b/assets/guide_important-concepts_requirements.md.54bd91b9.js @@ -1 +1 @@ -import{_ as e,c as t,o as i,N as r}from"./chunks/framework.0799945b.js";const q=JSON.parse('{"title":"Requirements","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/requirements.md","lastUpdated":1681454585000}'),a={name:"guide/important-concepts/requirements.md"},n=r('

Requirements ​

The requirements system in Profectus is designed to handle various conditions that must be met before certain actions or features can be accessed by the player. These conditions can include resource amounts, completed challenges, or other milestones within the game.

Creating Requirements ​

To create a requirement, you can use one of the provided utility functions like createCostRequirement, createVisibilityRequirement, or createBooleanRequirement. These functions return a Requirement object with specific properties that define the requirement conditions.

Using Requirements ​

Several features will have a requirements property that takes one or more requirements that must be fulfilled for a certain action to be performed with that feature.

When implementing requirements, you can use the displayRequirements utility. This utility is designed to give a human-readable string generated by the requirement(s) given, making it easier for players to understand the conditions needed to progress in the game. Typically features that support requirements will already use this utility internally.

You may need to "pay" requirements upon meeting their conditions and performing the associated action. This action typically involves spending resources or making other adjustments to the game state. The payRequirements function simplifies this process by handling the payment for one or more requirements, considering the number of levels to pay for. Additionally, custom pay functions like payByDivision and payByReset can be passed into createCostRequirement for more specialized cases.

Multi-Level Requirements ​

Requirements can have multiple "levels", which are typically used for things like multi-level challenges with scaling requirements. When checking if requirements are met, the requirementsMet function can be used. It accepts a single requirement or an array of requirements.

Requirements that are just on/off, such as boolean or visibility requirements, will count as infinite levels when in the same array. This allows you to combine different types of requirements in the same array and use the maxRequirementsMet function to calculate the maximum number of levels that could be acquired with the current requirement states.

',11),s=[n];function o(u,m,l,c,h,d){return i(),t("div",null,s)}const f=e(a,[["render",o]]);export{q as __pageData,f as default}; +import{_ as e,c as t,o as i,N as r}from"./chunks/framework.0799945b.js";const q=JSON.parse('{"title":"Requirements","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/requirements.md","lastUpdated":1681792078000}'),a={name:"guide/important-concepts/requirements.md"},n=r('

Requirements ​

The requirements system in Profectus is designed to handle various conditions that must be met before certain actions or features can be accessed by the player. These conditions can include resource amounts, completed challenges, or other milestones within the game.

Creating Requirements ​

To create a requirement, you can use one of the provided utility functions like createCostRequirement, createVisibilityRequirement, or createBooleanRequirement. These functions return a Requirement object with specific properties that define the requirement conditions.

Using Requirements ​

Several features will have a requirements property that takes one or more requirements that must be fulfilled for a certain action to be performed with that feature.

When implementing requirements, you can use the displayRequirements utility. This utility is designed to give a human-readable string generated by the requirement(s) given, making it easier for players to understand the conditions needed to progress in the game. Typically features that support requirements will already use this utility internally.

You may need to "pay" requirements upon meeting their conditions and performing the associated action. This action typically involves spending resources or making other adjustments to the game state. The payRequirements function simplifies this process by handling the payment for one or more requirements, considering the number of levels to pay for. Additionally, custom pay functions like payByDivision and payByReset can be passed into createCostRequirement for more specialized cases.

Multi-Level Requirements ​

Requirements can have multiple "levels", which are typically used for things like multi-level challenges with scaling requirements. When checking if requirements are met, the requirementsMet function can be used. It accepts a single requirement or an array of requirements.

Requirements that are just on/off, such as boolean or visibility requirements, will count as infinite levels when in the same array. This allows you to combine different types of requirements in the same array and use the maxRequirementsMet function to calculate the maximum number of levels that could be acquired with the current requirement states.

',11),s=[n];function o(u,m,l,c,h,d){return i(),t("div",null,s)}const f=e(a,[["render",o]]);export{q as __pageData,f as default}; diff --git a/assets/guide_important-concepts_requirements.md.315f99b3.lean.js b/assets/guide_important-concepts_requirements.md.54bd91b9.lean.js similarity index 85% rename from assets/guide_important-concepts_requirements.md.315f99b3.lean.js rename to assets/guide_important-concepts_requirements.md.54bd91b9.lean.js index 06297c5f..6f4695cd 100644 --- a/assets/guide_important-concepts_requirements.md.315f99b3.lean.js +++ b/assets/guide_important-concepts_requirements.md.54bd91b9.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as i,N as r}from"./chunks/framework.0799945b.js";const q=JSON.parse('{"title":"Requirements","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/requirements.md","lastUpdated":1681454585000}'),a={name:"guide/important-concepts/requirements.md"},n=r("",11),s=[n];function o(u,m,l,c,h,d){return i(),t("div",null,s)}const f=e(a,[["render",o]]);export{q as __pageData,f as default}; +import{_ as e,c as t,o as i,N as r}from"./chunks/framework.0799945b.js";const q=JSON.parse('{"title":"Requirements","description":"","frontmatter":{},"headers":[],"relativePath":"guide/important-concepts/requirements.md","lastUpdated":1681792078000}'),a={name:"guide/important-concepts/requirements.md"},n=r("",11),s=[n];function o(u,m,l,c,h,d){return i(),t("div",null,s)}const f=e(a,[["render",o]]);export{q as __pageData,f as default}; diff --git a/assets/guide_index.md.a6d0887c.js b/assets/guide_index.md.08f69a51.js similarity index 98% rename from assets/guide_index.md.a6d0887c.js rename to assets/guide_index.md.08f69a51.js index 27235f8c..d84ad9f3 100644 --- a/assets/guide_index.md.a6d0887c.js +++ b/assets/guide_index.md.08f69a51.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Introduction","description":"","frontmatter":{"title":"Introduction"},"headers":[],"relativePath":"guide/index.md","lastUpdated":1681454585000}'),n={name:"guide/index.md"},r=o('

Introduction ​

Profectus is a web-based game engine. You can write your content using many built in features, write your own features, and build up complex gameplay quickly and easily.

The purpose of creating profectus was to create an easy to use engine that does not create a ceiling for a programmer's personal growth. This engine will grow in complexity with you, empowering you to create increasingly complex designs and mechanics.

Should you use Profectus? ​

While this engine is intended to make game development (and web app development) easier, it still requires you to be comfortable with programming in general and javascript in particular. Fortunately, that is a solvable problem.

If you've never used Javascript before, learn-js.org is a good resource for learning the important concepts. If you'd like a more thorough lesson on all the ins and outs of web development, javascript.info and MDN's tutorials should have you covered. MDN is also a great resource to use as a reference - for example, if you want to know more about something and you google it, there'll typically be a MDN link that'll explain it thoroughly.

Beyond the basics, Profectus uses a modern web development pipeline, using tools like node, typescript, and JSX. While most of it should be relatively easy to pick up through context, if this becomes too complicated you may be interested in The Modding Tree, a predecessor of Profectus that uses plain old javascript.

Alternative Engines ​

There are many popular game engines out there, such as GameMaker Studio 2, Unity3D, Unreal Engine 4, and Godot, that are all general purpose and also more useful if you're planning on going into a career in game development. These are all more mature and robust game engines compared to Profectus, and are used by actual game development studios.

Profectus, on the other hand, is a very opinionated engine that is better at specific types of projects. Where the above engines will require you to design and create your own interfaces, menus, save management systems, etc. Profectus will include those out of the box. Profectus will also output games that run natively in the browser, and will typically be easier for players to play than traditional engines.

If you are not interested in programming but still want to get into game development, the above engines also all support "visual programming", which may be more amenable to you. Each engine will have varying levels of support, and of course with varying complexities, but ultimately any of these will help you learn the concepts of programming and game development, and all of them also offer traditional programming for when you think you're ready.

Design Philosophies ​

While absolute purity is impossible, design decisions have been and will continue to be made using these principles in mind.

  • An engine should be intuitive, and code readable without context
  • An engine should not constrain a creator
  • An engine should be consistent
  • An engine should be extensible, and those extensions sharable
  • An engine should be efficient
  • An engine should report issues early and thoroughly
  • Passing by reference is one honking great idea -- let's do more of that!
',14),i=[r];function s(l,u,h,d,p,c){return a(),t("div",null,i)}const f=e(n,[["render",s]]);export{m as __pageData,f as default}; +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Introduction","description":"","frontmatter":{"title":"Introduction"},"headers":[],"relativePath":"guide/index.md","lastUpdated":1681792078000}'),n={name:"guide/index.md"},r=o('

Introduction ​

Profectus is a web-based game engine. You can write your content using many built in features, write your own features, and build up complex gameplay quickly and easily.

The purpose of creating profectus was to create an easy to use engine that does not create a ceiling for a programmer's personal growth. This engine will grow in complexity with you, empowering you to create increasingly complex designs and mechanics.

Should you use Profectus? ​

While this engine is intended to make game development (and web app development) easier, it still requires you to be comfortable with programming in general and javascript in particular. Fortunately, that is a solvable problem.

If you've never used Javascript before, learn-js.org is a good resource for learning the important concepts. If you'd like a more thorough lesson on all the ins and outs of web development, javascript.info and MDN's tutorials should have you covered. MDN is also a great resource to use as a reference - for example, if you want to know more about something and you google it, there'll typically be a MDN link that'll explain it thoroughly.

Beyond the basics, Profectus uses a modern web development pipeline, using tools like node, typescript, and JSX. While most of it should be relatively easy to pick up through context, if this becomes too complicated you may be interested in The Modding Tree, a predecessor of Profectus that uses plain old javascript.

Alternative Engines ​

There are many popular game engines out there, such as GameMaker Studio 2, Unity3D, Unreal Engine 4, and Godot, that are all general purpose and also more useful if you're planning on going into a career in game development. These are all more mature and robust game engines compared to Profectus, and are used by actual game development studios.

Profectus, on the other hand, is a very opinionated engine that is better at specific types of projects. Where the above engines will require you to design and create your own interfaces, menus, save management systems, etc. Profectus will include those out of the box. Profectus will also output games that run natively in the browser, and will typically be easier for players to play than traditional engines.

If you are not interested in programming but still want to get into game development, the above engines also all support "visual programming", which may be more amenable to you. Each engine will have varying levels of support, and of course with varying complexities, but ultimately any of these will help you learn the concepts of programming and game development, and all of them also offer traditional programming for when you think you're ready.

Design Philosophies ​

While absolute purity is impossible, design decisions have been and will continue to be made using these principles in mind.

  • An engine should be intuitive, and code readable without context
  • An engine should not constrain a creator
  • An engine should be consistent
  • An engine should be extensible, and those extensions sharable
  • An engine should be efficient
  • An engine should report issues early and thoroughly
  • Passing by reference is one honking great idea -- let's do more of that!
',14),i=[r];function s(l,u,h,d,p,c){return a(),t("div",null,i)}const f=e(n,[["render",s]]);export{m as __pageData,f as default}; diff --git a/assets/guide_index.md.a6d0887c.lean.js b/assets/guide_index.md.08f69a51.lean.js similarity index 84% rename from assets/guide_index.md.a6d0887c.lean.js rename to assets/guide_index.md.08f69a51.lean.js index 6de4e045..e6d536bc 100644 --- a/assets/guide_index.md.a6d0887c.lean.js +++ b/assets/guide_index.md.08f69a51.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Introduction","description":"","frontmatter":{"title":"Introduction"},"headers":[],"relativePath":"guide/index.md","lastUpdated":1681454585000}'),n={name:"guide/index.md"},r=o("",14),i=[r];function s(l,u,h,d,p,c){return a(),t("div",null,i)}const f=e(n,[["render",s]]);export{m as __pageData,f as default}; +import{_ as e,c as t,o as a,N as o}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Introduction","description":"","frontmatter":{"title":"Introduction"},"headers":[],"relativePath":"guide/index.md","lastUpdated":1681792078000}'),n={name:"guide/index.md"},r=o("",14),i=[r];function s(l,u,h,d,p,c){return a(),t("div",null,i)}const f=e(n,[["render",s]]);export{m as __pageData,f as default}; diff --git a/assets/guide_migrations_0-6.md.caa4c6e3.js b/assets/guide_migrations_0-6.md.caa4c6e3.js new file mode 100644 index 00000000..cc4cc18c --- /dev/null +++ b/assets/guide_migrations_0-6.md.caa4c6e3.js @@ -0,0 +1,27 @@ +import{_ as s,c as e,o as a,N as n}from"./chunks/framework.0799945b.js";const o="/assets/persistence-error.537e237b.png",C=JSON.parse('{"title":"Migrating to Profectus 0.6","description":"","frontmatter":{},"headers":[],"relativePath":"guide/migrations/0-6.md","lastUpdated":1681792078000}'),t={name:"guide/migrations/0-6.md"},l=n(`

Migrating to Profectus 0.6 ​

Alongside the standard steps for Updating Profectus, this update contains numerous large or breaking changes. This guide will cover additional steps to follow after updating Profectus.

Fixing save data ​

This update introduces a major change in save data collection and storage. The change reduces save data size and fixes issues that can cause persistent values to reset to default values. Unfortunately, developers will need to mark which persistent value uses should be included in the save data and which are merely references. Let's go through an example:

ts
const flowers = createResource<DecimalSource>(0, "moly");
+const job = createJob(name, () => ({
+	/** snip **/
+    resource: flowers
+}));
+/** snip **/
+return {
+	/** snip **/
+	flowers,
+	job
+}

This example stores the same persistent data in two locations - flowers.flowers and flowers.job.resource. We can mark the latter usage as a reference by wrapping it in the noPersist utility, so it'd look like resource: noPersist(flowers). Otherwise, you will encounter an error in the console when the layer is loaded:

Persistence Error

Use these console errors to identify save data redundancy that needs correction. It is recommended to run the app and use the errors as a guide rather than trying to identify redundancies manually.

In addition to obtaining non-persistent refs from your persistent refs, you may need to wrap entire features containing persistent refs. For example, in Kronos, there are seven layers with "Job" features, which are combined into a dictionary in the main layer. This would cause the persistent state to appear in both layers, but you can wrap the dictionary in a noPersist call to bypass serialization, ensuring it only uses the jobs within their respective layers. Here's an example from Kronos:

ts
const jobs = noPersist({
+    flowers: flowers.job,
+    distill: distill.job,
+    study: study.job,
+    experiments: experiments.job,
+    generators: generators.job,
+    breeding: breeding.job,
+    rituals: rituals.job
+}) as Record<JobKeys, GenericJob>;

The time required for this step depends on your project structure. You can use this commit to see all the changes made for Kronos, which used a utility function for similar features that limited the number of required changes.

Breaking feature changes ​

This update includes several breaking feature changes. Here are a few minor fixes:

  • Buyables have been renamed to repeatables. Simply replace all instances of Buyable with Repeatable.
  • Achievements and Milestones have been merged. Add small: true to the options for existing achievements, and replace createMilestone calls with createAchievement.

Additionally, there are changes with more significant impact on your code: Requirements, Formulas, and Modifiers.

Requirements ​

Many features no longer use cost and resource properties but instead utilize a requirements property, which can consist of one or more Requirement objects. This makes it easier to support features requiring multiple currencies or other conditions. To update an existing cost requirement, wrap your current cost function and resource property as follows:

ts
requirements: createCostRequirement(() => ({
+    cost: () => Decimal.pow(priceRatio, unref(machines.amount)),
+    resource: generators.energeia,
+}))

Learn more about requirements and their capabilities in this guide page.

Formulas ​

Formulas are a new feature that allows for scaling cost or effect functions to be inverted or integrated without requiring the developer to code anything beyond the original formula. They can simplify support for "buy max" functionalities and make conversions easier to read and write.

Any cost requirements can now accept a formula instead of a cost function. The formula system can then handle determining how many purchases can be made at once. To continue the example above, here's how it would be rewritten:

ts
requirements: createCostRequirement(() => ({
+    cost: Formula.variable(machines.amount).pow_base(priceRatio),
+    resource: generators.energeia,
+}))

Conversions work a bit differently. Their scaling function system has been replaced with a formula property that takes a lambda - it provides the input formula variable, representing the base resource, as a parameter, and you return a formula representing the amount of the gain resource that could be converted. For example, if you previously had code like this:

ts
scaling: addSoftcap(createPolynomialScaling(10, 0.5), 1e100, 0.5)

you can now write this:

ts
formula: x => x.div(10).sqrt().step(1e100, f => f.sqrt())

Learn more about formulas and their capabilities in this guide page.

Modifiers ​

Modifiers now display negative effects in red. The current implementation assumes any value that reduces the result is negative, and the output being less than the base value is a negative outcome. However, for some modifiers, this may be the opposite of what you want - for example, a cooldown being reduced below its base value is a positive effect. For those modifiers, set the smallerIsBetter property to true. This property also exists when creating collapsible modifier sections.

Modifiers have renamed their revert property to invert to match the terms used by formulas. Update any custom modifiers you've created accordingly.

Fixing visibility changes ​

Visibility properties now work with booleans, which has several implications.

The showIf util is no longer necessary and has been removed - simply return the boolean value itself. In fact, if you were previously passing a computed boolean into showIf, you can now use the computed ref directly, reducing overhead. Here's an example:

ts
visibility() {
+    return showIf(spellExpMilestone.earned.value);
+}

This code can now be simplified to:

ts
visibility: spellExpMilestone.earned

Be aware that using the computed ref directly instead of a function can cause circular dependency issues. If you encounter one while simplifying a visibility property, resolve the issue or continue using a function, returning the computed ref value.

Custom Components ​

If you created any custom features with their own Vue components, you'll need to update them to support booleans for visibility values. This means replacing ALL equality checks for specific visibilities with calls to isVisible and isHidden.

While updating your component, you may need to cast the component to GenericComponent.

`,41),p=[l];function r(c,i,y,d,u,D){return a(),e("div",null,p)}const A=s(t,[["render",r]]);export{C as __pageData,A as default}; diff --git a/assets/guide_migrations_0-6.md.caa4c6e3.lean.js b/assets/guide_migrations_0-6.md.caa4c6e3.lean.js new file mode 100644 index 00000000..83be0086 --- /dev/null +++ b/assets/guide_migrations_0-6.md.caa4c6e3.lean.js @@ -0,0 +1 @@ +import{_ as s,c as e,o as a,N as n}from"./chunks/framework.0799945b.js";const o="/assets/persistence-error.537e237b.png",C=JSON.parse('{"title":"Migrating to Profectus 0.6","description":"","frontmatter":{},"headers":[],"relativePath":"guide/migrations/0-6.md","lastUpdated":1681792078000}'),t={name:"guide/migrations/0-6.md"},l=n("",41),p=[l];function r(c,i,y,d,u,D){return a(),e("div",null,p)}const A=s(t,[["render",r]]);export{C as __pageData,A as default}; diff --git a/assets/guide_recipes_particles.md.fc5fb015.js b/assets/guide_recipes_particles.md.fcacf72f.js similarity index 99% rename from assets/guide_recipes_particles.md.fc5fb015.js rename to assets/guide_recipes_particles.md.fcacf72f.js index cfafe8c7..a468fc0e 100644 --- a/assets/guide_recipes_particles.md.fc5fb015.js +++ b/assets/guide_recipes_particles.md.fcacf72f.js @@ -1,4 +1,4 @@ -import{_ as s,c as a,o as n,N as l}from"./chunks/framework.0799945b.js";const i=JSON.parse('{"title":"Particles","description":"","frontmatter":{},"headers":[],"relativePath":"guide/recipes/particles.md","lastUpdated":1681454585000}'),p={name:"guide/recipes/particles.md"},o=l(`

Particles ​

This is a more comprehensive example based on the Kronos example used in the nodes docs. You will design a particle effect, make it appear on another feature, and ensure it adapts to the game state.

Design the Effect ​

First, design the particle effect. Profectus uses pixi-particles, and you can use the online particle effect editor here. However, the editor returns an older format of the particle effect emitter config, so you'll need to convert it like this:

ts
import myParticleEffect from "myParticleEffect.json";
+import{_ as s,c as a,o as n,N as l}from"./chunks/framework.0799945b.js";const i=JSON.parse('{"title":"Particles","description":"","frontmatter":{},"headers":[],"relativePath":"guide/recipes/particles.md","lastUpdated":1681792078000}'),p={name:"guide/recipes/particles.md"},o=l(`

Particles ​

This is a more comprehensive example based on the Kronos example used in the nodes docs. You will design a particle effect, make it appear on another feature, and ensure it adapts to the game state.

Design the Effect ​

First, design the particle effect. Profectus uses pixi-particles, and you can use the online particle effect editor here. However, the editor returns an older format of the particle effect emitter config, so you'll need to convert it like this:

ts
import myParticleEffect from "myParticleEffect.json";
 import { upgradeConfig } from "@pixi/particle-emitter"
 
 const particleEffect = upgradeConfig(myParticleEffect);

Create the Particles ​

Next, create the particles feature and render it. You'll also want to track the bounding rect of the particle effects. Consider the following step:

ts
const particles = createParticles(() => ({
diff --git a/assets/guide_recipes_particles.md.fc5fb015.lean.js b/assets/guide_recipes_particles.md.fcacf72f.lean.js
similarity index 84%
rename from assets/guide_recipes_particles.md.fc5fb015.lean.js
rename to assets/guide_recipes_particles.md.fcacf72f.lean.js
index 3d8d698d..d62d090f 100644
--- a/assets/guide_recipes_particles.md.fc5fb015.lean.js
+++ b/assets/guide_recipes_particles.md.fcacf72f.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as n,N as l}from"./chunks/framework.0799945b.js";const i=JSON.parse('{"title":"Particles","description":"","frontmatter":{},"headers":[],"relativePath":"guide/recipes/particles.md","lastUpdated":1681454585000}'),p={name:"guide/recipes/particles.md"},o=l("",18),e=[o];function t(c,r,y,F,D,A){return n(),a("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as a,o as n,N as l}from"./chunks/framework.0799945b.js";const i=JSON.parse('{"title":"Particles","description":"","frontmatter":{},"headers":[],"relativePath":"guide/recipes/particles.md","lastUpdated":1681792078000}'),p={name:"guide/recipes/particles.md"},o=l("",18),e=[o];function t(c,r,y,F,D,A){return n(),a("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
diff --git a/assets/guide_recipes_save-progress.md.090d590c.js b/assets/guide_recipes_save-progress.md.e09db940.js
similarity index 99%
rename from assets/guide_recipes_save-progress.md.090d590c.js
rename to assets/guide_recipes_save-progress.md.e09db940.js
index 3d7b814a..a2fa2b47 100644
--- a/assets/guide_recipes_save-progress.md.090d590c.js
+++ b/assets/guide_recipes_save-progress.md.e09db940.js
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as e,N as n}from"./chunks/framework.0799945b.js";const o="/assets/save-progress.2c9d1bae.png",u=JSON.parse('{"title":"Display Save Progress","description":"","frontmatter":{},"headers":[],"relativePath":"guide/recipes/save-progress.md","lastUpdated":1681454585000}'),t={name:"guide/recipes/save-progress.md"},l=n('

Display Save Progress ​

This is a recipe to add a section to each save in the Saves Manager that will describe the amount of progress within that save. This can allow the player to more easily compare the saves to determine which is which. This would be in addition to the game version, last time played, and the name of the save itself, which can already be used for comparing saves without any configuration.

save progress display

This recipe will involve modifying the Save.vue file within your project to include an extra component in the saves details. It will go over creating the new component, how to work with the save data object, and then displaying the component.

Creating the component ​

Let's start with creating the coerced component. For this recipe we're going to make a couple assumptions about what this display should be. We'll assume the text will be more complex than displaying a single value. That is, at different stages of the game progress will be indicated by different metrics. We'll also assume it will be a single line of descriptive text - no images or anything else that would justify making a new .vue component. Breaking these assumptions is left as an exercise for the reader. But for now, with those assumptions in mind, we'll write our component (in the <script> tag in Save.vue) similar to this example:

ts
const progressDisplay = computeComponent(
+import{_ as s,c as a,o as e,N as n}from"./chunks/framework.0799945b.js";const o="/assets/save-progress.2c9d1bae.png",u=JSON.parse('{"title":"Display Save Progress","description":"","frontmatter":{},"headers":[],"relativePath":"guide/recipes/save-progress.md","lastUpdated":1681792078000}'),t={name:"guide/recipes/save-progress.md"},l=n('

Display Save Progress ​

This is a recipe to add a section to each save in the Saves Manager that will describe the amount of progress within that save. This can allow the player to more easily compare the saves to determine which is which. This would be in addition to the game version, last time played, and the name of the save itself, which can already be used for comparing saves without any configuration.

save progress display

This recipe will involve modifying the Save.vue file within your project to include an extra component in the saves details. It will go over creating the new component, how to work with the save data object, and then displaying the component.

Creating the component ​

Let's start with creating the coerced component. For this recipe we're going to make a couple assumptions about what this display should be. We'll assume the text will be more complex than displaying a single value. That is, at different stages of the game progress will be indicated by different metrics. We'll also assume it will be a single line of descriptive text - no images or anything else that would justify making a new .vue component. Breaking these assumptions is left as an exercise for the reader. But for now, with those assumptions in mind, we'll write our component (in the <script> tag in Save.vue) similar to this example:

ts
const progressDisplay = computeComponent(
     computed(() => {
     	if (someCondition) {
     		return "Just started";
diff --git a/assets/guide_recipes_save-progress.md.090d590c.lean.js b/assets/guide_recipes_save-progress.md.e09db940.lean.js
similarity index 86%
rename from assets/guide_recipes_save-progress.md.090d590c.lean.js
rename to assets/guide_recipes_save-progress.md.e09db940.lean.js
index 8540c74d..ec31945b 100644
--- a/assets/guide_recipes_save-progress.md.090d590c.lean.js
+++ b/assets/guide_recipes_save-progress.md.e09db940.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as e,N as n}from"./chunks/framework.0799945b.js";const o="/assets/save-progress.2c9d1bae.png",u=JSON.parse('{"title":"Display Save Progress","description":"","frontmatter":{},"headers":[],"relativePath":"guide/recipes/save-progress.md","lastUpdated":1681454585000}'),t={name:"guide/recipes/save-progress.md"},l=n("",16),p=[l];function r(c,i,y,D,F,d){return e(),a("div",null,p)}const m=s(t,[["render",r]]);export{u as __pageData,m as default};
+import{_ as s,c as a,o as e,N as n}from"./chunks/framework.0799945b.js";const o="/assets/save-progress.2c9d1bae.png",u=JSON.parse('{"title":"Display Save Progress","description":"","frontmatter":{},"headers":[],"relativePath":"guide/recipes/save-progress.md","lastUpdated":1681792078000}'),t={name:"guide/recipes/save-progress.md"},l=n("",16),p=[l];function r(c,i,y,D,F,d){return e(),a("div",null,p)}const m=s(t,[["render",r]]);export{u as __pageData,m as default};
diff --git a/assets/index.md.884f44e0.js b/assets/index.md.5c45fd2b.js
similarity index 94%
rename from assets/index.md.884f44e0.js
rename to assets/index.md.5c45fd2b.js
index b1d52809..1c16d4e3 100644
--- a/assets/index.md.884f44e0.js
+++ b/assets/index.md.5c45fd2b.js
@@ -1 +1 @@
-import{_ as e,c as t,o}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Home","description":"","frontmatter":{"layout":"home","title":"Home","hero":{"name":"Profectus","text":"A game engine that grows with you","tagline":"Starts at your skill level and encourages your ambition to make your projects bigger and better.","actions":[{"theme":"brand","text":"Get Started","link":"/guide/getting-started/setup"},{"theme":"alt","text":"Learn More","link":"/guide/"}]},"features":[{"title":"Easy to Use","details":"Everything is written to be as intuitive to use as possible, through consistent design."},{"title":"Helpful","details":"Built with TypeScript to guide you as you write. Seamlessly deploy your project with pre-configured github workflows, and more."},{"title":"Incremental","details":"Designed to actively encourage you to become better at programming. The engine will never limit you."}]},"headers":[],"relativePath":"index.md","lastUpdated":1681454585000}'),i={name:"index.md"};function a(r,n,s,l,d,u){return o(),t("div")}const g=e(i,[["render",a]]);export{m as __pageData,g as default};
+import{_ as e,c as t,o}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Home","description":"","frontmatter":{"layout":"home","title":"Home","hero":{"name":"Profectus","text":"A game engine that grows with you","tagline":"Starts at your skill level and encourages your ambition to make your projects bigger and better.","actions":[{"theme":"brand","text":"Get Started","link":"/guide/getting-started/setup"},{"theme":"alt","text":"Learn More","link":"/guide/"}]},"features":[{"title":"Easy to Use","details":"Everything is written to be as intuitive to use as possible, through consistent design."},{"title":"Helpful","details":"Built with TypeScript to guide you as you write. Seamlessly deploy your project with pre-configured github workflows, and more."},{"title":"Incremental","details":"Designed to actively encourage you to become better at programming. The engine will never limit you."}]},"headers":[],"relativePath":"index.md","lastUpdated":1681792078000}'),i={name:"index.md"};function a(r,n,s,l,d,u){return o(),t("div")}const g=e(i,[["render",a]]);export{m as __pageData,g as default};
diff --git a/assets/index.md.884f44e0.lean.js b/assets/index.md.5c45fd2b.lean.js
similarity index 94%
rename from assets/index.md.884f44e0.lean.js
rename to assets/index.md.5c45fd2b.lean.js
index b1d52809..1c16d4e3 100644
--- a/assets/index.md.884f44e0.lean.js
+++ b/assets/index.md.5c45fd2b.lean.js
@@ -1 +1 @@
-import{_ as e,c as t,o}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Home","description":"","frontmatter":{"layout":"home","title":"Home","hero":{"name":"Profectus","text":"A game engine that grows with you","tagline":"Starts at your skill level and encourages your ambition to make your projects bigger and better.","actions":[{"theme":"brand","text":"Get Started","link":"/guide/getting-started/setup"},{"theme":"alt","text":"Learn More","link":"/guide/"}]},"features":[{"title":"Easy to Use","details":"Everything is written to be as intuitive to use as possible, through consistent design."},{"title":"Helpful","details":"Built with TypeScript to guide you as you write. Seamlessly deploy your project with pre-configured github workflows, and more."},{"title":"Incremental","details":"Designed to actively encourage you to become better at programming. The engine will never limit you."}]},"headers":[],"relativePath":"index.md","lastUpdated":1681454585000}'),i={name:"index.md"};function a(r,n,s,l,d,u){return o(),t("div")}const g=e(i,[["render",a]]);export{m as __pageData,g as default};
+import{_ as e,c as t,o}from"./chunks/framework.0799945b.js";const m=JSON.parse('{"title":"Home","description":"","frontmatter":{"layout":"home","title":"Home","hero":{"name":"Profectus","text":"A game engine that grows with you","tagline":"Starts at your skill level and encourages your ambition to make your projects bigger and better.","actions":[{"theme":"brand","text":"Get Started","link":"/guide/getting-started/setup"},{"theme":"alt","text":"Learn More","link":"/guide/"}]},"features":[{"title":"Easy to Use","details":"Everything is written to be as intuitive to use as possible, through consistent design."},{"title":"Helpful","details":"Built with TypeScript to guide you as you write. Seamlessly deploy your project with pre-configured github workflows, and more."},{"title":"Incremental","details":"Designed to actively encourage you to become better at programming. The engine will never limit you."}]},"headers":[],"relativePath":"index.md","lastUpdated":1681792078000}'),i={name:"index.md"};function a(r,n,s,l,d,u){return o(),t("div")}const g=e(i,[["render",a]]);export{m as __pageData,g as default};
diff --git a/assets/persistence-error.537e237b.png b/assets/persistence-error.537e237b.png
new file mode 100644
index 0000000000000000000000000000000000000000..e001e6412b4e84d1baf1753437f297b6904ef90d
GIT binary patch
literal 13060
zcmY+rWmua**S1?qvEpqhPD_E}7Cd-y3+@m~u>wVc2Q9_j-HN-rOCUHwiv@Qn?)vq8
z_Vexi?jQHuvyNkCj`=mSuJc+Gq5_h^eNFcI#fulXaP*q4e7onZ9@dNRg8i
z*Kh;>&A@fi>~}tXez^#FBldD{2vgBS4o-sg`j<|PRJMy-wAd?r@-JFSm>(+NvrMtr
zQ=Ea*zWEnVHU4@lVWJcG`DYfkS9kOcwH03u9=PCVfVF=ZorHfhc|YcbF|BP_g-`k{{|%RV
z$m0LoO^mNX&;NhMgwfIUQVjK^-DNw>afCPBn)~0cgd2gI{e7Coe-*6wP0
z2+kUZ+ic#ydenOV-gs3hORBRid!K+ZZ-wu&lQ03zgyW2huQaz9fHGrUoV@`D{iykL
zpkR-d213>7pJm2L3zhh9EQ(rYrn7mS|`T8!v
zRv`W^C5UpG--u|b`Sr>9hvXuc3KN&MIxMM~42E(8|Nfckqc{*HC}7S3lcq)HprlkY
z@utJ8Qt5A4xNa@^Iny-ADAx@w(N@nFSw}+M*JL+k3uxNfhMIRE@UD@QL*JZV4wNI;
zDSS*vDV(`E?{J&M$-+~VpI`7LhQD2m_G-;noj*or>0mWVkLus)yr8>eem^=VgH|5g
zfLkv%|B%Tt$Ewp({o0JZ-hlX6%H4C{@Ox#&mulG+i)v}gs6leXO;l|wWA!?)CO7@b4D95uBYdm8LU19l5>xPHsOOKWH1$KqmcNl-xi~Fok
z6TNPYX^GBbjGkZRBmCT~>}aG%^n*CpUy-KbCv2Q`pq(Mtg_}GPo_ky6MLoaP-4EaN
zf9Mq-Q69P(``)@E5<~PutVVS{>&dm;?bU}r?Tl&t4P@
z_1HUzOidZ3ISGOH^s~i7VPp*pLj+bDW^k}ybAac|Cbd=~*HU=2NBrq)lx7`P3-#SElFZb1&or7I
zZ0|H<7>>0Vi&@h;MSoniNPf+2npEN_kA5|$>gjhA?bkxwM@*F1T7=vGcp4I?YD#c&
zg77pwoH&ES!iU>1Hrnx1uX1;r-&)bXerP-QZ4{KXjR~sW%9L_&OtmfCaK#wtx&%RBNOHy+nB?}_Fy$vc%)X$aPwT#8*%(J<#2KtH(|b+Gz}AGN@r|k
zXBWC7`t2j4*zRhdIqQ+-2BCX3tnI`kpLymOC6%H4;Q?T;SBs>>Ex;SHSTp(L69L#|
zubmjG)wONkVkcYn#GRxm^yWCC+591Tw5$DPk7=?Tw_eKPLpV01%srZh&$D1R30#0>Hz_Z3~Zl24s
z(2;IT1^6`0`B8LGYvkA2lF{$^8;8|tzua+{vR*+1WzgXsl@+6sc~xA3-R4Vu7qft*_CJzvirE$Vu&tp%!$
z1tQwN^`O()W#Cu7=K7FfN7#9JS|FN2#`dXwyHBvXK`D(_V6lhYi*Yp-YpvFrIN-YE
z@px2+6puZ9^`S$EM%gflSfrtZ3CT^k-m%`o#D`oCIHTyFHKo8`aB8b~fUeDImE&~s
zj(B7&f2vGM^H5&C>0pX9=7J@a8t7&jHT`+Jd~bmD<1KN3s4C>ZVs#2wPx#SO8zp*5LKKUTF1iUu(GsQkaC0o7-8Z&~mj5eOhv@2oDk-d5=^BWH)gF05d
z4(T88T95Nc=gEXLvvKHAjPkDEJqy-~b}wP^aJq}Fn_V+UrNVc0=;jR3voOup$v$_|
z2S!xUv;l2z^B4@DThov!&*wgTRdRoBKJKhw0~w+o#t-k5%_H}52!w=g50x|TAThv~_F
zG~QIZkg@|am~gqu#MMnnDsb+3YG`!L#(Fz=#Yh*{e_8L?W9?##C2COSbBt$K#FDtf
zAF0ILCzW?R^DCH`KSxzWGzRJgak07)^+rfqAo
zadLFJegaE-c|=-wyJ_DL>dcuXH*lbg;ka=^Q3+8Doc|j#>uJmCT6TZOce?O#Ed%)w
zf1>E}*vH4YTKQbaRd_b-^CbPC9Ed<9`_8Z21TJt57J|#tjcVLAXn2D&O{faO$-;fj
zhNs)!=JFLZspLUl%~?ayGly1*u7qbp@tBCi2sdd7ng
zO#Bw{Tb=%m+
zqLvh=ADtvek)o0#04H}-x0z_)XLeHJbt5KR;HkBIZeKi}UyXdVUViC8c3czmfECg5
zLrZ=BVn@A(WpK0y!(zWm{ckIfQNUHl0}A?GVaf3&gqAr$=`X}_XuG$XVZi=?=MS~^
z)putNsxP{uMe3J<(Q5`;jb_onTRf{?JNB|TRFh4qNmB@T>QR>c_rz^p|L-l1b
zHpf&q06!G+^m3s$W?5<$zb%>-GKX4xmcGDZAxY0R`YG#`#^+)GMot&u!CZ#3rW6;X
zt(x<>!?-N!!ITXH;T8jaoQyO2zH}7i78CqP4{iKIgS$IK8i@=SXo{n<>J<{UvlEdH
zX6BCIf4UxG*6Ji()RsT~n7TNw$?+lTr0oloSHwK|6>}_7PHJEz-5<>gy!OkXGSY=|
ziAKnS#X=_OM*M^;!+FbvK^mg^9x&XQn>lmB;*zwj-ExAB5gy!vihkL~k)mIVXhF&dZ
z2UPg!EYaZ0)MR7J0oDe7iCN(?D>LXg-
z+H!$S&XE{;%Z_eF3u{y4z70P+#k|`&&h=+h@&Vl@=XI6U5#ze8_*Do1xv0NE556gA6I_@p8vF)1RSTk;Y()49D^l)o7MqLsip0PGg
zI!iruuo<+;QT>|`V+JYIEF3OTE$vIn%Qmb%``KHkG@p(rzsY+RIG6QOeFH8Xdep@z&l%#mR}`k~S1
z$-@~wY-63H
zeu1?Z*~m+&+ac>1+ves*R$Q_9pY)dLXD|J2`XK@y4DU-N7E0leOtc-9vkn*h!o*h$r-vnlyt&LlYWxX6^iVK+~IoV*cT&#vqHdk
zMoBCdguuZ}m!YtWGTuZWDbve^Wg%Z96WW5P(8`Uy1Zu(uGe+^bs=T}I3)B9d(-Ba5
zrhgD1nE%qW@Th1ID7IeyA#o)6IAP6`lB~$n_5<;kR<54$`*23mkcvC)0edJ)Az~>~
z&4dS{hUsU8zdSmkgj8q5QFzV802ujg3>KJ+d)>}KXFR7bhq#D-PT5yoA%NdtJhd+1
ziBWtVX7Z`mLI^uT(e9US5
zTp1U4bNLMubtUh+V@-|gr#4BD_Z6sv_n3y0*fTlorRUm3yAHZZtb1OWIsXdn<;R!w
z;nq0=A6?wmT>xPY4|`%oH>(P*lJrF$@2R1mdt~AS9Uu{msD-(0><8#{0Acb%L(^rr
zvi7s7mupXJGegjN@n1>Z$mXw7gJV<-%9%H&u9<`5CcuVc9G)ie7V@7v&FL5C%R%Qk
z7VoztXEA(4n(scs{Ch=6aUYPBwjKB9a_l1GX0&RB4*eJouv>e}GPavs6VA1WnbmBYk;HQoKcqmP#
zU>F$%NVKK18MBYxnw#{GDwWcAox%cPd#Zcl8p-vju!*}qw=tO+;-ueq;{8NKT+gYI
zxx5~ECAsSf`QL4Rv!}m>8^lj3-ic8P8G7T8R!kqsz={Sz!h^w1tHow|JMO5w@f|!^
zDJ>js@1st72uzC7h&xWk8^9cIs(wqd@j}iQ4D;5*!c?&>-HhezNdnFmmVj?b&T&P;m$e9wlQ0l)dICvT3$`A7d^dIy}y5Y0V;vS+o2Kv(oN4y`t
z48CeAFq5Rw#qo3KzA`j5CULIcO5NHKbw|g2zAIS>i{xQo{Vz6Pqz03l{tsCA9~|IB
zY^|dAUoxQf|3?dEc3oi@C9$`_s4c6m%K0We_N=R(N`k#|Vh?>5FD&m%Eg~zA^NiM6
zw1+?({X!l0#DkvSrV`W{L>iN)#l+iz=2CoGZkIJrZSVUtvcq3P$^?x{oA*i1tZ9@;
z{~U2$vEHb={EtX4HHbe`NY00pWEt53mYoiAx9~~XWQuo9zOA+9$32u3Sl8Hwf{qiE
zELTI^voR)BM1y#!4Bak0T+@LK9UzK>>_gVxB#WH3pJ`0nd-IhhsG4jKP*(54ZzS|8
z-S-b$=+5)?y|JWmeF~MMh~Pctbh^9Ss?uN4oL6B9Z^cOp9}Z_mG0zo3rGT_#l_U2z
zSs&_kp2nk%i0)uMm4{d(db4Slt!-K5>MX)?WMFbh;Z;qEi9f2LfKx4(4KMo#x_}&B
z3Pge9zS8s2EPI<#f5=@v>IyN}NF|wD#{wZOs`+~IEgG?}5b?n<)7dcB-N7sWCoA7u
z=T|}8ZO@=Q^?3Hp6XA%;Q`xzLRd3Di=NYVXsfKhg9WKD;(Xwzw6~5O_5%HawIRQdu
zbP=3DT+MNOAhV2kMoSs6C~Zzi4$^4i%3xrQJ7#psnoVlN@|2^Y
z>AYKU@aVd?R>sa
zESO%2xEW&cXt}(nkGPi%a%R3^W@CXF422PF1w8DBoPyPr$)H;<9q%RX*KeC7WF6kI
z7=-9Aw!80;$f&Nrb<5Pw^iu^>Dtht2+$OvA8$ahT1K58#14@ui=|-QQ8*-W90$fp;
zhP(phHxjQv^V*PL;z@F2p*{GkyeLnq+iJh74c+){+h(j1S6cJOZ0CiUcI|$t0>5JX
zBjWD1JrzNs@0dS!*1L@N{w&`urTN${5w){md0JM$Sb2x?3qc`_jg^_EBXyXxHMY(b
z*PB^sGDwi3-E|`2IV#%rxw})(d0EJeYL1eX=uy10k0+toVB88Bw9-g9;cuF*Xl+@`
z<5mN|imlNy@V5Ipr_HTZ5ICLm)elf_^QEb{gvk>sor%n9VxR!?a6JfL-p7?Btjz{e
z8%W--q*YHg+aC9n*iT7v;Xx^%MOs}{-75KymPSr;V~D+N5+Y#<;w$uR_P=f@N!e~k
zKZwlSq}$AmoS4N59?p9r#%6af-lg3l+aT_PbtcU>ZZU5IE1eN&`5AFwxYttKniK9=
z*!Q&X;cLZs;wNh-@Sq8F&7{L(@~+A?dlLH(b4+1{_n~3aA1FFkxVOl42i&m=MAkB~
zLB4{B^8rTGl@%b53eLL{xZInA>xGpqH4kIuYhRKBQr=gc+iRi?B>^ZdvCBcd7b
z4$Eu2(`(IZOMG~z`SUlfvn;+WoQk7Xv%zUD`tak9FD|i#!~A1=f58^pHa~IhfRQv-
z0_Oo!X~!MrB6~tnq|1%asqXR*zcyVibO-+KhhBGVoA(laY{aXqbe+`tkjs&jJ17Rp
zGPJG}^(-g!8NX^PQ4i&(iZQS71W=9$g;n621MP(?4%pdRyY~pH&<09j!`zSqcyLV@
zFwc1t4t(0Xnc2fXeh-q#e
z;kbv+4hC#(j(1^uveMe*W7T*>rkIo^#E8v%Z?vC$xFri-U$;Kn8^5Vt%0dG-)b_6Q`NOX65W*Fn~e7lEi~9>
z37SP$teM#N@6kxpm%AN~-7N9Rq*b9M6d{e*ZNVA)
z{II=`*SNylHv|+PMAZXTpWgVwa9%57@FC**6oa%825+3@qLJp_ReU?7`OKq#13%SX
zD+F;4Z{GsBztR>2w+R1JY$&*P@E9I;e_y3S{YuBb#fp1_u=4q&aBj3I$2A({r4k#<cJ(qq`53u0&iFpmc*TC=lS#Qxiu1V+VAFXC^L(kt*IK~L`)?og6Q(_
zrF`!`F0ycqI(r~M_{){d>n&A+rL+0}6rhICd`<5j7Y9h6oYs}QweX)sKrh!S&M1Uw
zZU-PZqTDobA4yQJL0MYNYqvvMqYo8;2rS|PxI`J#sSaL^;O
zUp?nV?*Ui+8dQzAy2MV(-c`h90^9cP4oSHgP+p7SZhjX|?K&kw@9zhS{LEzJ!1GO9
z3Yem%Ac5;AO7@FCDZaeQD}wU|B2UNB8QI6r2gD!^5lr11(^_?WwBw`%nU&RJwGN&E
z-{NyTf-kh3hfFeobm;OQ8q|S#TC;r;?koPjbjd$4Q?4QjK>WbeZR@A}gNbh(JRteP0rdOXRE^p>!Iq7@OAo(LgBiv?0
z_={tSJO1?_eAf3Plknm^Yc=_ggnLg-+g1G*28XL!O5T<3QPr1K?Z12b&S=47J|1s7
z2a6ip<8{$aohbqWlo77gJ)^*99lkdb(>G^yP?ZR1LBnN`N;!hM(*N}Y?6&Q)IdJ+_
z>?USso`FH~pJ^CZQ%tE;yE8OHRZumh4Nf&iq~WBxoWfTIJo0~r++OJgP1_QHNlg*l
zd&W6by$1XNJxtRGwYx2&uZb$)s?+8VGty*xSnJkck;uJ-k_R5u1=j*|)iaHtU+GMm
z=9n48(@oRd<$Xe`qT{vGyr|Qq7D8LH0~~6ZzoqNk%LOQUTS~|@LXT7Qh9nGE2+EkN
zWtc!;jsBXJnLnxlsw}8^={XL%bf&{N-ekCxNjTQ--DaAk=v8SB)MEZV>kYOf`4VNe
zEcXcX4c)K)e$q$(Ucc>>C3A!)YmgjU$OnZ)mf~OT%RV>-`&MRf9k?#>rkY*ZPM}M(D`fJ94K0gU)fSYhX9fsKXS}gC
z-L4LF^~aMFPLzENT^>W5DR+MzP#o8NCx*~~-|oW^e;-Y)YWHatSdL$U3`J>U@xL|A
z8}a5Q(lIJjJ&M`byx)tS__JItGnO+%2|H44odxdcZrN1)uG3*jJb34rZxKpV+UJlE
zY=Ffc-j@!8XhHQWTn|0|D{C00?YTTmN=rVzFA2BmMYmSeTaQM^|G)0&mOI@2|I%lTO$l)N
z-YJKsJBm46R{~Bz`rBP$h(Hrwiqnc`GQD<0kP5+4Fc&Jhy5m?+p~?Ks!@RZf$nwD*sg-hBU8Kfx-;fh~HujdmHvKCeNNU$Eo;q|R2~aGB*q
zs1bkU^~7!FT?$+8Wm>h@DU3f}g+@JG1w;?Bbt6z_
z^(JVIbonMJmy^j0(9t5!)eZ2nI@N2-AEQO&l5jC$C+T-qUfpxtHV^zL;mWM13epk@
z{<|1!JA+CRayY`xb49el`D=e+M1NYLH|$tSL~pOsE{5~h&`rMjO%d?Y;)u`bqsY^Y
zczqK8UVOH;fJ%aA^OSMLQ0|lPwg@*-Qt7?1i6*+s%yxENl=COYpnx1FJk5DU8BS#k
zSkMMn5-3-IS|U0eLFAfac5d~sS?RX8@9njFS-$+}#K}U8I`$`D6ug~s&v~EtqwQum
zhNL!TsIs2XBSYkD;dif5MzwM}L*uvpk6S(C-ze
zRf4)i)98TBBo>$rP@4g;Bk`BWnJ&y?dN`y|3wPSmQUCbS>DT`DRZv}N*4i9kX`z28KZ
zyYykhk_$RXaxL#Tc}1=XH03d>O})`0vr>Lq?t6G0Ygv3eX%?<_jd`I~t2eF8b*(LlRS3y`?qxufd(Lcgxl
ziB<2zf+BGG=kQiDz(=4{e*a|pj`-$F%!)Ks(g{Gf_-s(#)1C>>FheJA?tc+u*HlGSpJ=lL+C>gj1G
zVB6yKt~2GKD41(wkIeH5e5ph)A`%c8mga@ZmysH9;@T06f8FYO+<8r6+fwzu^AS5V
z>)Pu&%!LKYue6hEqt7g_t^B6t`e+%05pnx&OM%Y5t%GDrgUZV5E4*x8$~|w$e2OYT
zCS1ROR7P7;WJ;JJm^7-F93H}MPEskte{Jl=A`s%2Tsc%U9Vc;VJ2xW(^eh}
zLA{CHnEjcf@KK+zw?jpgLI>=ekD1gCK{u;&(hus+ErwaC5p&RLoJ)z}YHF~%{v?P@
zC|=}vy;thH4!^kPaePE4DwlbVRy##PRO_a3Ka(@^oRrR6p;H8u_S7ZhgC2c#I|X_O
z;edMQ-$&>=gQ@u1GdgaB0D0&h4DTLd0CmILKUGv5H6Pa&Vrrp9-@ZKUUB=11>v6+_lB
zjs*6x>?1P@oOW0x%8-doCh+dso|M`@G@di|!Tb>NW@*t1V1&2rCI)UI6zwv4EMZO=kp`nH^N#5QtZ%xj$o
z+L8tO4=u6>=or;#|de*qcjQ3n!N*FPwl$?!(L^
z=vDcRoXl^L-35xK9wJd4FQMSRD3qu#rmGozJ|6`=ktk)}`WXkGHPD&E9Zus(QmFl6
zoR%h5#N(os&m2>X{W(cB5?`eUSwQZxJ`r^@rdh2Fzs6DGr^L*S0}Jfa=GJKl)w;QaqrE^u*qW_?
zB3Nv6Llt5}l0~}zfiLP4DtR3Kki8muNzP1iE63+!p$IbPqs!VZAMh@tNvzJ308Xf5c;|K$85TBmEbIVF#Q*y)|3ETXcA#Xv5a
zYENk@z*uK6V3~fyx08?wabV{Vr>b9kETPYH@{?DR9wejN?@cdqN{Qs=VxX6CV}A5>
zHi}E;6WCs<;XLpi-T(fYyD^8^q6wf@6bmD4BU2ensk2>V3GA4Qc54KA@YD8)u|DH%
zYu@O2a(cD~G5w*puNh8vm5UhR29OkUPB=0bu0bu|g-~bhKMF3q8|CkPrU~pykp^tq_SZ$2s<_3ble2*Mt}x&Bd~}MD{@uCp
z+iX0OFj0JG2Ah8=KA#LaRQsG57AN}Xv+l~!8dhN`Cd^ZH8yBjH{DFBseoaVW55(Kx
zT(1#)_jJ_F8s8zX3zSDB8T}&sdpyzn(Q9twa=nbHpV$HWWR$ioZsNx4vav`zHYmyn
z`sPFAlaOu84PM_ZF4D~o+j}@u-Wk=H0rx8y8Hedr~6a_tE^h;NgxAzh)6
zGZW4xOcCUytwkfb7SRg9Ga}S0_H?Z;{Hoz_y9TluPwy`vqjL;OEo=!pJFysQ9SF4O_vk6r;ka_S
z<~L08p|Ahl!^2PU_K42!^s2JxHiq1u_)0!1mt-svPU%6N-_0l-x>NG+P^QqGPtp)d
zB>{L=Q=n47ocuUGM!m+*i!X#UUj0m5cWlh+^Wg_0s8&<%s}ENCzuoqIe)tLvWLZfB
z=l0_cG1v2qVXWh4HPc3*0A47(PE&nrHkaBNR4N?0-M^g+fUvwS5=bxY;T{=sB`VIx
z)qZW!nmNYZBfV+Oeh6EBe&pK^PRbf#?e&VHgh!`X>IIvSkmVR-o#>&#sH%RV2@GKh
z8J^)!e{T*GfyakyfJ@!$>MgKf5V10M`z6J=BVUo%^TG!s!5lhpJ(&5EbOoUW#dg(uJxBi8)
zP436VL6vb_Dn6ZQvCfhR|JQ)I^cw~x><3)lT+?xz6ijvHz#OC*>KC{40geH?k2ESc
zG7j|q71Yi7jrU+}_PH1DrE?^Ae~z=`ImQForgvjehNWfL$P?G+*Y_k^NTjxINkotw
zxP0NLB6m<+z+6?EJ$kY;`JItfKmES^74I?!8|;+#s`CI3nvu2ddUCo-QSzd21FqX;
z*Lmg?nmNEw<(eEplEB`qk>~^*22qjUiTKN;2s+ueSfK(MP+&Js>Ju%0jYETg^$9k_mp0NCB39d0?5
zG83XVgMTJ^V3S5nR}W=KZvAp@l_d||C(Vhc>i}=+_R>f*r!AS-e-A!rC-)YWUh&2<
zJmgq|#$?Dq)JVTotPKXP+@Fz|yD^@j9|Um!cyUJ1$V*~51)F-wdlX(p#b0J84x%6>
z%YY`=2}taAxE(QxALVN~S6FRA^@C#
zpc-EBOKU(|beoMQq2SHUEir`e_!uQ|>e-1j@i^1AE2^^|@boZPHyMm~!m&@G$XMap
zE(d`yk06JfW5A)8*x|;^ydq0$nT`8oUJ_fA3WUKN;mFWA{~hJf8CNS&!a4hJ{|Fdc
z+lO&tPTcYJ0OfBKXs*N;rpB1pW-oPpkDqHOgCc*Z-OF`3j&HX(e&VUvu|wMyU@jqQ
z6Wbr8nOq#fZS7Bv19!UOTiIddlK%iUO5-M_R^g0MNQZEf?3jS%G7ikvANEvmO&rNv
zUeg=50p2LO-5^q0`y)y*H^}h7xt{|?iZqiDwnMTuzaARt*FUeB(ZU?;u|baygdw_A^ffbqy4&$T8f
zR+?nk#+^2ziY!w!~sc~K*H^xX>_zlSKK;tc(Ra__8O;*Fds7H}s2jQs`TZW~M#
z`&YqruDXunljg_}GRC{rll2dm(Fn(*I(jB{lNZ`o*w-X0lh*HsQlCHaClQ@3D~z^p
zCTxUgX;-(!dUpUHqkPpdrs`_agad^dt6vr7D!#-I3@Y7BA3$rImb1e`c&WqU9g5U&
z4Y4=WaaRCBk~Hr$nmP+v9Deegs^S};oqppkrFOhRZ-K!b#!3Y9iUS94!Ggu>kBk9?{Rudq*kXOj
zKv6j9c6qyn&+to<*NAXil0p9O+tu2X+hUZ@Xr@6gW}?v7s>?mO`7DNP}SWUzuDV{p^4rKb8)2gvQ#BwqfcheJN
z$I#{V(EU<3sKD4+nxJe=-Yd8NLkd=edWMH03Ayc)Oh^ko;h5!fh}uC)knfD
z=g->SB!e4g2dS`l9NMuYg})@TOWu(p$z*Z_^v}pys8V?_DK-0r*W|fj-WM&W6cpqr
zN?3(K=IqmVgqUs4fBJnpRn2>9fr}^;syf0^hhj6yXxEtqNOgJp+M9lSR;Ry*;*S=}
zF>9SvooYBe9x{liEVuot4uGpPQA8#NT3m2+K`7kUyqrO{Mww
zSL_`PuD+yzPlw%0?DY)dP{L?lu|4m_X(4$Uk-!~Y2a--4Ph{*8N
z%|)Z{O0nj8$a-7x$Lv|37)Y%j(5G$Rkg}Q<+oQSz{lSFyePs@OsKil^L8k>JOVF%h
zz2o)C!3EW`3AYFwHnp$A^g}4r2zd!C_*|2-JV|r0YwdTz?Csv8(rUg+T_f6xx(if{
z7zcU&=xBj$`mLa#+G+`Ye$WeJfTQChinP6NPTO1xf*@eKb!h!yJqn^(S4052^RAx)
z@VPQDu|`I!Glx-gjz6Ii3IQvboSyx);9Nb>po-AOqYLEz@gy6+@oI%`cq>lZm7XW{
z>jdV;qcWiQ2lxZ!+4AqNd)M}}e>JqzDj%9(2hYk!9DXqbhRXpIuPf8SeMvie!y4yi
z(F~Q!#4Z0@G$9uva`w&fzX)--UcR#8tl_`q6c20v8!no9j^aW8@5>FfuCeTYEb~8A
w7kU1a|L>GM|Nm8*@xN#PFEshG>lve&;i8vQ@dWbk<;n{=DUf8vm#@G64+22-g8%>k

literal 0
HcmV?d00001

diff --git a/assets/style.49aa32a7.css b/assets/style.4df5b91b.css
similarity index 99%
rename from assets/style.49aa32a7.css
rename to assets/style.4df5b91b.css
index 18fd5eaa..c48b2f78 100644
--- a/assets/style.49aa32a7.css
+++ b/assets/style.4df5b91b.css
@@ -1 +1 @@
-@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-cyrillic.5f2c6c8c.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-cyrillic-ext.e75737ce.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-greek.d5a6d92a.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-greek-ext.ab0619bc.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-latin.2ed14f66.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-latin-ext.0030eebd.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-vietnamese.14ce25a6.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-cyrillic.ea42a392.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-greek.8f4463c4.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-greek-ext.4fbe9427.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-latin.bd3b6f56.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-latin-ext.bd8920cc.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-vietnamese.6ce511fb.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chinese Quotes;src:local("PingFang SC Regular"),local("PingFang SC"),local("SimHei"),local("Source Han Sans SC");unicode-range:U+2018,U+2019,U+201C,U+201D}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-gray: #8e8e93;--vp-c-text-light-1: rgba(60, 60, 67);--vp-c-text-light-2: rgba(60, 60, 67, .75);--vp-c-text-light-3: rgba(60, 60, 67, .33);--vp-c-text-dark-1: rgba(255, 255, 245, .86);--vp-c-text-dark-2: rgba(235, 235, 245, .6);--vp-c-text-dark-3: rgba(235, 235, 245, .38);--vp-c-green: #10b981;--vp-c-green-light: #34d399;--vp-c-green-lighter: #6ee7b7;--vp-c-green-dark: #059669;--vp-c-green-darker: #047857;--vp-c-green-dimm-1: rgba(16, 185, 129, .05);--vp-c-green-dimm-2: rgba(16, 185, 129, .2);--vp-c-green-dimm-3: rgba(16, 185, 129, .5);--vp-c-yellow: #d97706;--vp-c-yellow-light: #f59e0b;--vp-c-yellow-lighter: #fbbf24;--vp-c-yellow-dark: #b45309;--vp-c-yellow-darker: #92400e;--vp-c-yellow-dimm-1: rgba(234, 179, 8, .05);--vp-c-yellow-dimm-2: rgba(234, 179, 8, .2);--vp-c-yellow-dimm-3: rgba(234, 179, 8, .5);--vp-c-red: #f43f5e;--vp-c-red-light: #fb7185;--vp-c-red-lighter: #fda4af;--vp-c-red-dark: #e11d48;--vp-c-red-darker: #be123c;--vp-c-red-dimm-1: rgba(244, 63, 94, .05);--vp-c-red-dimm-2: rgba(244, 63, 94, .2);--vp-c-red-dimm-3: rgba(244, 63, 94, .5);--vp-c-sponsor: #db2777}:root{--vp-c-bg: #ffffff;--vp-c-bg-elv: #ffffff;--vp-c-bg-elv-up: #ffffff;--vp-c-bg-elv-down: #f6f6f7;--vp-c-bg-elv-mute: #f6f6f7;--vp-c-bg-soft: #f6f6f7;--vp-c-bg-soft-up: #f9f9fa;--vp-c-bg-soft-down: #e3e3e5;--vp-c-bg-soft-mute: #e3e3e5;--vp-c-bg-alt: #f6f6f7;--vp-c-border: rgba(60, 60, 67, .29);--vp-c-divider: rgba(60, 60, 67, .12);--vp-c-gutter: rgba(60, 60, 67, .12);--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white);--vp-c-text-1: var(--vp-c-text-light-1);--vp-c-text-2: var(--vp-c-text-light-2);--vp-c-text-3: var(--vp-c-text-light-3);--vp-c-text-inverse-1: var(--vp-c-text-dark-1);--vp-c-text-inverse-2: var(--vp-c-text-dark-2);--vp-c-text-inverse-3: var(--vp-c-text-dark-3);--vp-c-text-code: #476582;--vp-c-brand: var(--vp-c-green);--vp-c-brand-light: var(--vp-c-green-light);--vp-c-brand-lighter: var(--vp-c-green-lighter);--vp-c-brand-dark: var(--vp-c-green-dark);--vp-c-brand-darker: var(--vp-c-green-darker);--vp-c-mute: #f6f6f7;--vp-c-mute-light: #f9f9fc;--vp-c-mute-lighter: #ffffff;--vp-c-mute-dark: #e3e3e5;--vp-c-mute-darker: #d7d7d9}.dark{--vp-c-bg: #1e1e20;--vp-c-bg-elv: #252529;--vp-c-bg-elv-up: #313136;--vp-c-bg-elv-down: #1e1e20;--vp-c-bg-elv-mute: #313136;--vp-c-bg-soft: #252529;--vp-c-bg-soft-up: #313136;--vp-c-bg-soft-down: #1e1e20;--vp-c-bg-soft-mute: #313136;--vp-c-bg-alt: #161618;--vp-c-border: rgba(82, 82, 89, .68);--vp-c-divider: rgba(82, 82, 89, .32);--vp-c-gutter: #000000;--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black);--vp-c-text-1: var(--vp-c-text-dark-1);--vp-c-text-2: var(--vp-c-text-dark-2);--vp-c-text-3: var(--vp-c-text-dark-3);--vp-c-text-inverse-1: var(--vp-c-text-light-1);--vp-c-text-inverse-2: var(--vp-c-text-light-2);--vp-c-text-inverse-3: var(--vp-c-text-light-3);--vp-c-text-code: #c9def1;--vp-c-mute: #313136;--vp-c-mute-light: #3a3a3c;--vp-c-mute-lighter: #505053;--vp-c-mute-dark: #2c2c30;--vp-c-mute-darker: #252529}:root{--vp-font-family-base: "Chinese Quotes", "Inter var", "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-local-nav: 10;--vp-z-index-nav: 20;--vp-z-index-layout-top: 30;--vp-z-index-backdrop: 40;--vp-z-index-sidebar: 50;--vp-z-index-footer: 60}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E")}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-block-color: var(--vp-c-text-dark-1);--vp-code-block-bg: #292b30;--vp-code-block-bg-light: #1e1e20;--vp-code-block-divider-color: #000000;--vp-code-line-highlight-color: rgba(0, 0, 0, .5);--vp-code-line-number-color: var(--vp-c-text-dark-3);--vp-code-line-diff-add-color: var(--vp-c-green-dimm-2);--vp-code-line-diff-add-symbol-color: var(--vp-c-green);--vp-code-line-diff-remove-color: var(--vp-c-red-dimm-2);--vp-code-line-diff-remove-symbol-color: var(--vp-c-red);--vp-code-line-warning-color: var(--vp-c-yellow-dimm-2);--vp-code-line-error-color: var(--vp-c-red-dimm-2);--vp-code-copy-code-border-color: transparent;--vp-code-copy-code-bg: var(--vp-code-block-bg-light);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-code-block-bg-light);--vp-code-copy-code-active-text: var(--vp-c-text-dark-2);--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-dark-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-dark-1);--vp-code-tab-active-text-color: var(--vp-c-text-dark-1);--vp-code-tab-active-bar-color: var(--vp-c-brand)}.dark{--vp-code-block-bg: #161618}:root{--vp-button-brand-border: var(--vp-c-brand-lighter);--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand);--vp-button-brand-hover-border: var(--vp-c-brand-lighter);--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-dark);--vp-button-brand-active-border: var(--vp-c-brand-lighter);--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-darker);--vp-button-alt-border: var(--vp-c-border);--vp-button-alt-text: var(--vp-c-neutral);--vp-button-alt-bg: var(--vp-c-mute);--vp-button-alt-hover-border: var(--vp-c-border);--vp-button-alt-hover-text: var(--vp-c-neutral);--vp-button-alt-hover-bg: var(--vp-c-mute-dark);--vp-button-alt-active-border: var(--vp-c-border);--vp-button-alt-active-text: var(--vp-c-neutral);--vp-button-alt-active-bg: var(--vp-c-mute-darker);--vp-button-sponsor-border: var(--vp-c-gray-light-3);--vp-button-sponsor-text: var(--vp-c-text-light-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}.dark{--vp-button-sponsor-border: var(--vp-c-gray-dark-1);--vp-button-sponsor-text: var(--vp-c-text-dark-2)}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: var(--vp-c-border);--vp-custom-block-info-text: var(--vp-c-text-2);--vp-custom-block-info-bg: var(--vp-c-bg-soft-up);--vp-custom-block-info-code-bg: var(--vp-c-bg-soft);--vp-custom-block-tip-border: var(--vp-c-green);--vp-custom-block-tip-text: var(--vp-c-green-dark);--vp-custom-block-tip-bg: var(--vp-c-bg-soft-up);--vp-custom-block-tip-code-bg: var(--vp-c-bg-soft);--vp-custom-block-warning-border: var(--vp-c-yellow);--vp-custom-block-warning-text: var(--vp-c-yellow);--vp-custom-block-warning-bg: var(--vp-c-bg-soft-up);--vp-custom-block-warning-code-bg: var(--vp-c-bg-soft);--vp-custom-block-danger-border: var(--vp-c-red);--vp-custom-block-danger-text: var(--vp-c-red);--vp-custom-block-danger-bg: var(--vp-c-bg-soft-up);--vp-custom-block-danger-code-bg: var(--vp-c-bg-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-details-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-hover-border-color: var(--vp-c-gray);--vp-input-switch-bg-color: var(--vp-c-mute)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg)}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: var(--vp-c-border);--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-bg-soft-up);--vp-badge-tip-border: var(--vp-c-green-dark);--vp-badge-tip-text: var(--vp-c-green);--vp-badge-tip-bg: var(--vp-c-green-dimm-1);--vp-badge-warning-border: var(--vp-c-yellow-dark);--vp-badge-warning-text: var(--vp-c-yellow);--vp-badge-warning-bg: var(--vp-c-yellow-dimm-1);--vp-badge-danger-border: var(--vp-c-red-dark);--vp-badge-danger-text: var(--vp-c-red);--vp-badge-danger-bg: var(--vp-c-red-dimm-1)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);direction:ltr;font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info th{color:var(--vp-custom-block-info-text)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip th{color:var(--vp-custom-block-tip-text)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning th{color:var(--vp-custom-block-warning-text)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger th{color:var(--vp-custom-block-danger-text)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details th{color:var(--vp-custom-block-details-text)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600}.custom-block a:hover{text-decoration:underline}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.dark .vp-code-light{display:none}html:not(.dark) .vp-code-dark{display:none}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden}.vp-code-group .tabs:after{position:absolute;right:0;bottom:0;left:0;height:1px;background-color:var(--vp-code-tab-divider);content:""}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:absolute;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:10;height:1px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-]{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active{display:block}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{float:left;margin-left:-.87em;padding-right:.23em;font-weight:500;user-select:none;opacity:0;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand);text-decoration-style:dotted;transition:color .25s}.vp-doc a:hover{text-decoration:underline}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block a{color:inherit;font-weight:600}.vp-doc .custom-block a:hover{text-decoration:underline}.vp-doc .custom-block code{font-size:var(--vp-custom-block-code-font-size);font-weight:700;color:inherit}.vp-doc .custom-block div[class*=language-]{margin:8px 0}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;color:var(--vp-c-text-code);background-color:var(--vp-c-mute);transition:color .5s,background-color .5s}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc a>code{color:var(--vp-c-brand);transition:color .25s}.vp-doc a:hover>code{color:var(--vp-c-brand-dark)}.vp-doc div[class*=language-]{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-]{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;left:-65px;display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;width:64px;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:"Copied"}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-c-text-dark-3);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin-bottom:4px;text-align:center;letter-spacing:1px;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-bg-soft-down)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge[data-v-350d3852]{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:10px;padding:0 8px;line-height:18px;font-size:12px;font-weight:600;transform:translateY(-2px)}h1 .VPBadge[data-v-350d3852],h2 .VPBadge[data-v-350d3852],h3 .VPBadge[data-v-350d3852],h4 .VPBadge[data-v-350d3852],h5 .VPBadge[data-v-350d3852],h6 .VPBadge[data-v-350d3852]{vertical-align:top}h2 .VPBadge[data-v-350d3852]{border-radius:11px;line-height:20px}.VPBadge.info[data-v-350d3852]{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip[data-v-350d3852]{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning[data-v-350d3852]{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger[data-v-350d3852]{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPSkipLink[data-v-c8616af1]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-c8616af1]:focus{height:auto;width:auto;clip:auto;clip-path:none}.dark .VPSkipLink[data-v-c8616af1]{color:var(--vp-c-green)}@media (min-width: 1280px){.VPSkipLink[data-v-c8616af1]{top:14px;left:16px}}.VPBackdrop[data-v-c79a1216]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-c79a1216],.VPBackdrop.fade-leave-to[data-v-c79a1216]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c79a1216]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c79a1216]{display:none}}html:not(.dark) .VPImage.dark[data-v-6db2186b]{display:none}.dark .VPImage.light[data-v-6db2186b]{display:none}.title[data-v-f4ef19a3]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}.title[data-v-f4ef19a3]:hover{opacity:.6}@media (min-width: 960px){.title[data-v-f4ef19a3]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-f4ef19a3]{border-bottom-color:var(--vp-c-divider)}}[data-v-f4ef19a3] .logo{margin-right:8px;height:24px}/*! @docsearch/css 3.3.3 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"\bb  "}.DocSearch-Prefill{appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.DocSearch{--docsearch-primary-color: var(--vp-c-brand);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark .DocSearch{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-bg-soft-mute);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:32px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:1px;letter-spacing:-12px;color:transparent}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:var(--673bc564);font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-bg-soft-mute)}.DocSearch-Screen-Icon>svg{margin:auto}.icon[data-v-8f4dc553]{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;fill:var(--vp-c-text-3);transition:fill .25s;flex-shrink:0}.VPNavBarMenuLink[data-v-37adc828]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-37adc828],.VPNavBarMenuLink[data-v-37adc828]:hover{color:var(--vp-c-brand)}.VPMenuGroup+.VPMenuLink[data-v-d2c93bab]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-d2c93bab]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-d2c93bab]:hover{color:var(--vp-c-brand);background-color:var(--vp-c-bg-elv-mute)}.link.active[data-v-d2c93bab]{color:var(--vp-c-brand)}.VPMenuGroup[data-v-69e747b5]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-69e747b5]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-69e747b5]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-69e747b5]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-e7ea1737]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-e7ea1737] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e7ea1737] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e7ea1737] .group:last-child{padding-bottom:0}.VPMenu[data-v-e7ea1737] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e7ea1737] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e7ea1737] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-e7ea1737] .action{padding-left:24px}.VPFlyout[data-v-764effdf]{position:relative}.VPFlyout[data-v-764effdf]:hover{color:var(--vp-c-brand);transition:color .25s}.VPFlyout:hover .text[data-v-764effdf]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-764effdf]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-764effdf]{color:var(--vp-c-brand)}.VPFlyout.active:hover .text[data-v-764effdf]{color:var(--vp-c-brand-dark)}.VPFlyout:hover .menu[data-v-764effdf],.button[aria-expanded=true]+.menu[data-v-764effdf]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-764effdf]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-764effdf]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-764effdf]{margin-right:0;width:16px;height:16px;fill:currentColor}.text-icon[data-v-764effdf]{margin-left:4px;width:14px;height:14px;fill:currentColor}.icon[data-v-764effdf]{width:20px;height:20px;fill:currentColor;transition:fill .25s}.menu[data-v-764effdf]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPNavBarMenu[data-v-7f418b0f]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-7f418b0f]{display:flex}}.VPNavBarTranslations[data-v-74abcbb9]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-74abcbb9]{display:flex;align-items:center}}.title[data-v-74abcbb9]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPSwitch[data-v-f3c41672]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s}.VPSwitch[data-v-f3c41672]:hover{border-color:var(--vp-input-hover-border-color)}.check[data-v-f3c41672]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s}.icon[data-v-f3c41672]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-f3c41672] svg{position:absolute;top:3px;left:3px;width:12px;height:12px;fill:var(--vp-c-text-2)}.dark .icon[data-v-f3c41672] svg{fill:var(--vp-c-text-1);transition:opacity .25s}.sun[data-v-a9c8afb8]{opacity:1}.moon[data-v-a9c8afb8],.dark .sun[data-v-a9c8afb8]{opacity:0}.dark .moon[data-v-a9c8afb8]{opacity:1}.dark .VPSwitchAppearance[data-v-a9c8afb8] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-f6a63727]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-f6a63727]{display:flex;align-items:center}}.VPSocialLink[data-v-c530cc0a]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-c530cc0a]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-c530cc0a]>svg{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-f6988cfb]{display:flex;flex-wrap:wrap;justify-content:center}.VPNavBarSocialLinks[data-v-0394ad82]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-0394ad82]{display:flex;align-items:center}}.VPNavBarExtra[data-v-40855f84]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-40855f84]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-40855f84]{display:none}}.trans-title[data-v-40855f84]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-40855f84],.item.social-links[data-v-40855f84]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-40855f84]{min-width:176px}.appearance-action[data-v-40855f84]{margin-right:-2px}.social-links-list[data-v-40855f84]{margin:-4px -8px}.VPNavBarHamburger[data-v-e5dd9c1c]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-e5dd9c1c]{display:none}}.container[data-v-e5dd9c1c]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-e5dd9c1c]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .middle[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .bottom[data-v-e5dd9c1c]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-e5dd9c1c],.middle[data-v-e5dd9c1c],.bottom[data-v-e5dd9c1c]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(0)}.middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(4px)}.VPNavBar[data-v-1d30fa41]{position:relative;border-bottom:1px solid transparent;padding:0 8px 0 24px;height:var(--vp-nav-height);transition:border-color .5s,background-color .5s;pointer-events:none}.VPNavBar.has-sidebar[data-v-1d30fa41]{border-bottom-color:var(--vp-c-gutter)}@media (min-width: 768px){.VPNavBar[data-v-1d30fa41]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar[data-v-1d30fa41]{border-bottom-color:transparent;padding:0}.VPNavBar.fill[data-v-1d30fa41]:not(.has-sidebar){border-bottom-color:var(--vp-c-gutter);background-color:var(--vp-nav-bg-color)}}.container[data-v-1d30fa41]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container[data-v-1d30fa41] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-1d30fa41]{max-width:100%}}.title[data-v-1d30fa41]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-1d30fa41]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-1d30fa41]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-1d30fa41]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-1d30fa41]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-1d30fa41]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-1d30fa41]{display:flex;justify-content:flex-end;align-items:center;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .content-body[data-v-1d30fa41],.VPNavBar.fill .content-body[data-v-1d30fa41]{position:relative;background-color:var(--vp-nav-bg-color)}}.menu+.translations[data-v-1d30fa41]:before,.menu+.appearance[data-v-1d30fa41]:before,.menu+.social-links[data-v-1d30fa41]:before,.translations+.appearance[data-v-1d30fa41]:before,.appearance+.social-links[data-v-1d30fa41]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-1d30fa41]:before,.translations+.appearance[data-v-1d30fa41]:before{margin-right:16px}.appearance+.social-links[data-v-1d30fa41]:before{margin-left:16px}.social-links[data-v-1d30fa41]{margin-right:-8px}@media (min-width: 960px){.VPNavBar.has-sidebar .curtain[data-v-1d30fa41]{position:absolute;right:0;bottom:-31px;width:calc(100% - var(--vp-sidebar-width));height:32px}.VPNavBar.has-sidebar .curtain[data-v-1d30fa41]:before{display:block;width:100%;height:32px;background:linear-gradient(var(--vp-c-bg),transparent 70%);content:""}}@media (min-width: 1440px){.VPNavBar.has-sidebar .curtain[data-v-1d30fa41]{width:calc(100% - ((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width)))}}.VPNavScreenMenuLink[data-v-c328f34f]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-c328f34f]:hover{color:var(--vp-c-brand)}.VPNavScreenMenuGroupLink[data-v-3d20956d]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-3d20956d]:hover{color:var(--vp-c-brand)}.VPNavScreenMenuGroupSection[data-v-7478538b]{display:block}.title[data-v-7478538b]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-a9a19324]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-a9a19324]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-a9a19324]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-a9a19324]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-a9a19324]{padding-bottom:6px;color:var(--vp-c-brand)}.VPNavScreenMenuGroup.open .button-icon[data-v-a9a19324]{transform:rotate(45deg)}.button[data-v-a9a19324]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-a9a19324]:hover{color:var(--vp-c-brand)}.button-icon[data-v-a9a19324]{width:14px;height:14px;fill:var(--vp-c-text-2);transition:fill .5s,transform .25s}.group[data-v-a9a19324]:first-child{padding-top:0}.group+.group[data-v-a9a19324],.group+.item[data-v-a9a19324]{padding-top:4px}.VPNavScreenAppearance[data-v-add8f686]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-add8f686]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenTranslations[data-v-d72aa483]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-d72aa483]{height:auto}.title[data-v-d72aa483]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-d72aa483]{width:16px;height:16px;fill:currentColor}.icon.lang[data-v-d72aa483]{margin-right:8px}.icon.chevron[data-v-d72aa483]{margin-left:4px}.list[data-v-d72aa483]{padding:4px 0 0 24px}.link[data-v-d72aa483]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-724636ae]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-724636ae],.VPNavScreen.fade-leave-active[data-v-724636ae]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-724636ae],.VPNavScreen.fade-leave-active .container[data-v-724636ae]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-724636ae],.VPNavScreen.fade-leave-to[data-v-724636ae]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-724636ae],.VPNavScreen.fade-leave-to .container[data-v-724636ae]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-724636ae]{display:none}}.container[data-v-724636ae]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-724636ae],.menu+.appearance[data-v-724636ae],.translations+.appearance[data-v-724636ae]{margin-top:24px}.menu+.social-links[data-v-724636ae]{margin-top:16px}.appearance+.social-links[data-v-724636ae]{margin-top:16px}.VPNav[data-v-7e5bc4a5]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-7e5bc4a5]{position:fixed}}.root[data-v-8f12e865]{position:relative;z-index:1}.nested[data-v-8f12e865]{padding-left:13px}.outline-link[data-v-8f12e865]{display:block;line-height:28px;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s;font-weight:500}.outline-link[data-v-8f12e865]:hover,.outline-link.active[data-v-8f12e865]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-8f12e865]{padding-left:13px}.VPLocalNavOutlineDropdown[data-v-079b16a8]{padding:12px 20px 11px}.VPLocalNavOutlineDropdown button[data-v-079b16a8]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-079b16a8]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-079b16a8]{color:var(--vp-c-text-1)}.icon[data-v-079b16a8]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-079b16a8] .outline-link{font-size:14px;padding:2px 0}.open>.icon[data-v-079b16a8]{transform:rotate(90deg)}.items[data-v-079b16a8]{position:absolute;left:20px;right:20px;top:64px;background-color:var(--vp-local-nav-bg-color);padding:4px 10px 16px;border:1px solid var(--vp-c-divider);border-radius:8px;max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}.top-link[data-v-079b16a8]{display:block;color:var(--vp-c-brand);font-size:13px;font-weight:500;padding:6px 0;margin:0 13px 10px;border-bottom:1px solid var(--vp-c-divider)}.flyout-enter-active[data-v-079b16a8]{transition:all .2s ease-out}.flyout-leave-active[data-v-079b16a8]{transition:all .15s ease-in}.flyout-enter-from[data-v-079b16a8],.flyout-leave-to[data-v-079b16a8]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-f5a2ca58]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color);transition:border-color .5s,background-color .5s}@media (min-width: 960px){.VPLocalNav[data-v-f5a2ca58]{display:none}}.menu[data-v-f5a2ca58]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-f5a2ca58]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-f5a2ca58]{padding:0 32px}}.menu-icon[data-v-f5a2ca58]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPOutlineDropdown[data-v-f5a2ca58]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-f5a2ca58]{padding:12px 32px 11px}}.VPSidebarItem.level-0[data-v-c4656e6d]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-c4656e6d]{padding-bottom:10px}.item[data-v-c4656e6d]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-c4656e6d]{cursor:pointer}.indicator[data-v-c4656e6d]{position:absolute;top:6px;bottom:6px;left:-17px;width:1px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-c4656e6d],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-c4656e6d],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-c4656e6d],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-c4656e6d]{background-color:var(--vp-c-brand)}.link[data-v-c4656e6d]{display:flex;align-items:center;flex-grow:1}.text[data-v-c4656e6d]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-c4656e6d]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-c4656e6d],.VPSidebarItem.level-2 .text[data-v-c4656e6d],.VPSidebarItem.level-3 .text[data-v-c4656e6d],.VPSidebarItem.level-4 .text[data-v-c4656e6d],.VPSidebarItem.level-5 .text[data-v-c4656e6d]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-c4656e6d],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-c4656e6d],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-c4656e6d],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-c4656e6d],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-c4656e6d],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-c4656e6d]{color:var(--vp-c-brand)}.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-c4656e6d],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-c4656e6d],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-c4656e6d],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-c4656e6d],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-c4656e6d],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-c4656e6d]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-c4656e6d],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-c4656e6d],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-c4656e6d],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-c4656e6d],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-c4656e6d],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-c4656e6d]{color:var(--vp-c-brand)}.caret[data-v-c4656e6d]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s}.item:hover .caret[data-v-c4656e6d]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-c4656e6d]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-c4656e6d]{width:18px;height:18px;fill:currentColor;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-c4656e6d]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-c4656e6d],.VPSidebarItem.level-2 .items[data-v-c4656e6d],.VPSidebarItem.level-3 .items[data-v-c4656e6d],.VPSidebarItem.level-4 .items[data-v-c4656e6d],.VPSidebarItem.level-5 .items[data-v-c4656e6d]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-c4656e6d]{display:none}.VPSidebar[data-v-139a1f1d]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease}.VPSidebar.open[data-v-139a1f1d]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-139a1f1d]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-139a1f1d]{z-index:1;padding-top:var(--vp-nav-height);padding-bottom:128px;width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-139a1f1d]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-139a1f1d]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-139a1f1d]{outline:0}.group+.group[data-v-139a1f1d]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-139a1f1d]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPButton[data-v-567ba664]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-567ba664]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-567ba664]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-567ba664]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-567ba664]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-567ba664]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-567ba664]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-567ba664]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-567ba664]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-567ba664]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-567ba664]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-567ba664]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-567ba664]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}.VPHero[data-v-fd2650d5]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-fd2650d5]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-fd2650d5]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-fd2650d5]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-fd2650d5]{flex-direction:row}}.main[data-v-fd2650d5]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-fd2650d5]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-fd2650d5]{text-align:left}}@media (min-width: 960px){.main[data-v-fd2650d5]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-fd2650d5]{max-width:592px}}.name[data-v-fd2650d5],.text[data-v-fd2650d5]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-fd2650d5],.VPHero.has-image .text[data-v-fd2650d5]{margin:0 auto}.name[data-v-fd2650d5]{color:var(--vp-home-hero-name-color)}.clip[data-v-fd2650d5]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-fd2650d5],.text[data-v-fd2650d5]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-fd2650d5],.text[data-v-fd2650d5]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-fd2650d5],.VPHero.has-image .text[data-v-fd2650d5]{margin:0}}.tagline[data-v-fd2650d5]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-fd2650d5]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-fd2650d5]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-fd2650d5]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-fd2650d5]{margin:0}}.actions[data-v-fd2650d5]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-fd2650d5]{justify-content:center}@media (min-width: 640px){.actions[data-v-fd2650d5]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-fd2650d5]{justify-content:flex-start}}.action[data-v-fd2650d5]{flex-shrink:0;padding:6px}.image[data-v-fd2650d5]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-fd2650d5]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-fd2650d5]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-fd2650d5]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-fd2650d5]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-fd2650d5]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-fd2650d5]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-fd2650d5]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-fd2650d5]{width:320px;height:320px}}[data-v-fd2650d5] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-fd2650d5] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-fd2650d5] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-837f6cca]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-837f6cca]:hover{border-color:var(--vp-c-brand);background-color:var(--vp-c-bg-soft-up)}.box[data-v-837f6cca]{display:flex;flex-direction:column;padding:24px;height:100%}.VPFeature[data-v-837f6cca] .VPImage{width:48px;height:48px;margin-bottom:20px}.icon[data-v-837f6cca]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-bg-soft-down);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-837f6cca]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-837f6cca]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-837f6cca]{padding-top:8px}.link-text-value[data-v-837f6cca]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand)}.link-text-icon[data-v-837f6cca]{display:inline-block;margin-left:6px;width:14px;height:14px;fill:currentColor}.VPFeatures[data-v-6816157f]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-6816157f]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-6816157f]{padding:0 64px}}.container[data-v-6816157f]{margin:0 auto;max-width:1152px}.items[data-v-6816157f]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-6816157f]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-6816157f],.item.grid-4[data-v-6816157f],.item.grid-6[data-v-6816157f]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-6816157f],.item.grid-4[data-v-6816157f]{width:50%}.item.grid-3[data-v-6816157f],.item.grid-6[data-v-6816157f]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-6816157f]{width:25%}}.VPHome[data-v-d82743a8]{padding-bottom:96px}.VPHome[data-v-d82743a8] .VPHomeSponsors{margin-top:112px;margin-bottom:-128px}@media (min-width: 768px){.VPHome[data-v-d82743a8]{padding-bottom:128px}}.VPDocAsideOutline[data-v-ff0f39c8]{display:none}.VPDocAsideOutline.has-outline[data-v-ff0f39c8]{display:block}.content[data-v-ff0f39c8]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-ff0f39c8]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:1px;height:18px;background-color:var(--vp-c-brand);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-ff0f39c8]{letter-spacing:.4px;line-height:28px;font-size:13px;font-weight:600}.VPDocAside[data-v-3f215769]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-3f215769]{flex-grow:1}.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-3f215769] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-7b3ebfe1]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-7b3ebfe1]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-face870a]{margin-top:64px}.edit-info[data-v-face870a]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-face870a]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-face870a]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:color .25s}.edit-link-button[data-v-face870a]:hover{color:var(--vp-c-brand-dark)}.edit-link-icon[data-v-face870a]{margin-right:8px;width:14px;height:14px;fill:currentColor}.prev-next[data-v-face870a]{border-top:1px solid var(--vp-c-divider);padding-top:24px}@media (min-width: 640px){.prev-next[data-v-face870a]{display:flex}}.pager.has-prev[data-v-face870a]{padding-top:8px}@media (min-width: 640px){.pager[data-v-face870a]{display:flex;flex-direction:column;flex-shrink:0;width:50%}.pager.has-prev[data-v-face870a]{padding-top:0;padding-left:16px}}.pager-link[data-v-face870a]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-face870a]:hover{border-color:var(--vp-c-brand)}.pager-link.next[data-v-face870a]{margin-left:auto;text-align:right}.desc[data-v-face870a]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-face870a]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:color .25s}.VPDocOutlineDropdown[data-v-2edece88]{margin-bottom:42px}.VPDocOutlineDropdown button[data-v-2edece88]{display:block;font-size:14px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;border:1px solid var(--vp-c-border);padding:4px 12px;border-radius:8px}.VPDocOutlineDropdown button[data-v-2edece88]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPDocOutlineDropdown button.open[data-v-2edece88]{color:var(--vp-c-text-1)}.icon[data-v-2edece88]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-2edece88] .outline-link{font-size:13px}.open>.icon[data-v-2edece88]{transform:rotate(90deg)}.items[data-v-2edece88]{margin-top:10px;border-left:1px solid var(--vp-c-divider)}.VPDoc[data-v-c4b0d3cf]{padding:32px 24px 96px;width:100%}.VPDoc .VPDocOutlineDropdown[data-v-c4b0d3cf]{display:none}@media (min-width: 960px) and (max-width: 1280px){.VPDoc .VPDocOutlineDropdown[data-v-c4b0d3cf]{display:block}}@media (min-width: 768px){.VPDoc[data-v-c4b0d3cf]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-c4b0d3cf]{padding:32px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-c4b0d3cf]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-c4b0d3cf]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-c4b0d3cf]{display:flex;justify-content:center}.VPDoc .aside[data-v-c4b0d3cf]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-c4b0d3cf]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-c4b0d3cf]{max-width:1104px}}.container[data-v-c4b0d3cf]{margin:0 auto;width:100%}.aside[data-v-c4b0d3cf]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-c4b0d3cf]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-c4b0d3cf]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 32px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-c4b0d3cf]::-webkit-scrollbar{display:none}.aside-curtain[data-v-c4b0d3cf]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-c4b0d3cf]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 32px));padding-bottom:32px}.content[data-v-c4b0d3cf]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-c4b0d3cf]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-c4b0d3cf]{order:1;margin:0;min-width:640px}}.content-container[data-v-c4b0d3cf]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-c4b0d3cf]{max-width:688px}.NotFound[data-v-c70503b8]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-c70503b8]{padding:96px 32px 168px}}.code[data-v-c70503b8]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-c70503b8]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-c70503b8]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-c70503b8]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-c70503b8]{padding-top:20px}.link[data-v-c70503b8]{display:inline-block;border:1px solid var(--vp-c-brand);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:border-color .25s,color .25s}.link[data-v-c70503b8]:hover{border-color:var(--vp-c-brand-dark);color:var(--vp-c-brand-dark)}.VPContent[data-v-a494bd1d]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-a494bd1d]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-a494bd1d]{margin:0}@media (min-width: 960px){.VPContent[data-v-a494bd1d]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-a494bd1d]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-a494bd1d]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-2f86ebd2]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-2f86ebd2]{display:none}@media (min-width: 768px){.VPFooter[data-v-2f86ebd2]{padding:32px}}.container[data-v-2f86ebd2]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-2f86ebd2],.copyright[data-v-2f86ebd2]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.message[data-v-2f86ebd2]{order:2}.copyright[data-v-2f86ebd2]{order:1}.Layout[data-v-b2cf3e0b]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3c6e61c2]{border-top:1px solid var(--vp-c-gutter);padding:88px 24px 96px;background-color:var(--vp-c-bg)}.container[data-v-3c6e61c2]{margin:0 auto;max-width:1152px}.love[data-v-3c6e61c2]{margin:0 auto;width:28px;height:28px;color:var(--vp-c-text-3)}.icon[data-v-3c6e61c2]{width:28px;height:28px;fill:currentColor}.message[data-v-3c6e61c2]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-3c6e61c2]{padding-top:32px}.action[data-v-3c6e61c2]{padding-top:40px;text-align:center}.VPTeamPage[data-v-10b00018]{padding-bottom:96px}@media (min-width: 768px){.VPTeamPage[data-v-10b00018]{padding-bottom:128px}}.VPTeamPageSection+.VPTeamPageSection[data-v-10b00018-s],.VPTeamMembers+.VPTeamPageSection[data-v-10b00018-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-10b00018-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-10b00018-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-10b00018-s],.VPTeamMembers+.VPTeamPageSection[data-v-10b00018-s]{margin-top:96px}}.VPTeamMembers[data-v-10b00018-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-10b00018-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-10b00018-s]{padding:0 64px}}.VPTeamPageTitle[data-v-bf2cbdac]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:80px 64px 48px}}.title[data-v-bf2cbdac]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-bf2cbdac]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-bf2cbdac]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-bf2cbdac]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b1a88750]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b1a88750]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b1a88750]{padding:0 64px}}.title[data-v-b1a88750]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b1a88750]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b1a88750]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-b1a88750]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-b1a88750]{padding-top:40px}.VPTeamMembersItem[data-v-1739ab5f]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-1739ab5f]{padding:32px}.VPTeamMembersItem.small .data[data-v-1739ab5f]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-1739ab5f]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-1739ab5f]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-1739ab5f]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-1739ab5f]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-1739ab5f]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-1739ab5f]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-1739ab5f]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-1739ab5f]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-1739ab5f]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-1739ab5f]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-1739ab5f]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-1739ab5f]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-1739ab5f]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-1739ab5f]{text-align:center}.avatar[data-v-1739ab5f]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-1739ab5f]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-1739ab5f]{margin:0;font-weight:600}.affiliation[data-v-1739ab5f]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-1739ab5f]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-1739ab5f]:hover{color:var(--vp-c-brand)}.desc[data-v-1739ab5f]{margin:0 auto}.links[data-v-1739ab5f]{display:flex;justify-content:center;height:56px}.sp-link[data-v-1739ab5f]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-1739ab5f]:hover,.sp .sp-link.link[data-v-1739ab5f]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-1739ab5f]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPTeamMembers.small .container[data-v-04685dce]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-04685dce]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-04685dce]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-04685dce]{max-width:876px}.VPTeamMembers.medium .container[data-v-04685dce]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-04685dce]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-04685dce]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-04685dce]{max-width:760px}.container[data-v-04685dce]{display:grid;gap:24px;margin:0 auto;max-width:1152px}svg[data-v-258d28f5]{background:#2e3440}svg .svg-elem-1[data-v-258d28f5]{stroke-dashoffset:2648.758056640625px;stroke-dasharray:1324.3790283203125px;transition:stroke-dashoffset 1s cubic-bezier(.47,0,.745,.715) 0s}svg.v-enter-from .svg-elem-1[data-v-258d28f5],svg.v-leave-to .svg-elem-1[data-v-258d28f5]{stroke-dashoffset:1324.3790283203125px}svg .svg-elem-2[data-v-258d28f5]{stroke-dashoffset:680.4000854492188px;stroke-dasharray:340.2000427246094px;transition:stroke-dashoffset 1s ease-out .4s}svg.v-enter-from .svg-elem-2[data-v-258d28f5],svg.v-leave-to .svg-elem-2[data-v-258d28f5]{stroke-dashoffset:340.2000427246094px}svg .svg-elem-3[data-v-258d28f5]{stroke-dashoffset:76.21031951904297px;stroke-dasharray:38.105159759521484px;transition:stroke-dashoffset 1s ease-out .8s}svg.v-enter-from .svg-elem-3[data-v-258d28f5],svg.v-leave-to .svg-elem-3[data-v-258d28f5]{stroke-dashoffset:38.105159759521484px}svg .svg-elem-4[data-v-258d28f5]{stroke-dashoffset:175.18072509765625px;stroke-dasharray:87.59036254882812px;transition:stroke-dashoffset 1s cubic-bezier(.47,0,.745,.715) .36s}svg.v-enter-from .svg-elem-4[data-v-258d28f5],svg.v-leave-to .svg-elem-4[data-v-258d28f5]{stroke-dashoffset:87.59036254882812px}svg .svg-elem-5[data-v-258d28f5]{stroke-dashoffset:671.9447021484375px;stroke-dasharray:335.97235107421875px;transition:stroke-dashoffset 1s ease-out .8s}svg.v-enter-from .svg-elem-5[data-v-258d28f5],svg.v-leave-to .svg-elem-5[data-v-258d28f5]{stroke-dashoffset:335.97235107421875px}svg .svg-elem-6[data-v-258d28f5]{stroke-dashoffset:173.96141052246094px;stroke-dasharray:86.98070526123047px;transition:stroke-dashoffset 1s ease-out 1s}svg.v-enter-from .svg-elem-6[data-v-258d28f5],svg.v-leave-to .svg-elem-6[data-v-258d28f5]{stroke-dashoffset:86.98070526123047px}svg .svg-elem-7[data-v-258d28f5]{stroke-dashoffset:172.99151611328125px;stroke-dasharray:86.49575805664062px;transition:stroke-dashoffset 1s ease-out .85s}svg.v-enter-from .svg-elem-7[data-v-258d28f5],svg.v-leave-to .svg-elem-7[data-v-258d28f5]{stroke-dashoffset:86.49575805664062px}body{font-size:14px}@media (min-width: 960px){.main .name,.main .text{font-size:52px!important}}.custom-block.info{background-color:#3b4252}.custom-block.warning{background-color:#3b4252;border-color:#ebcb8b}.custom-block.warning>.custom-block-title{color:#ebcb8b}.custom-block.warning>:not(.custom-block-title){color:var(--vp-custom-block-info-text)}.vp-doc tr:nth-child(2n),.vp-doc th{background-color:var(--vp-c-bg-alt)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider-light)}.content,.VPNav.no-sidebar{background:var(--vp-c-bg)!important}.VPNavBar{border-bottom:0!important}.vp-doc :not(pre)>code{color:var(--vp-c-text-light-1);background-color:var(--vp-code-block-bg)}.vp-doc h3+h4{margin-top:16px}:root{--vp-c-bg: #2E3440;--vp-c-bg-alt: #3B4252;--vp-c-bg-elv: #3B4252;--vp-code-block-bg: #434C5E;--vp-c-text-light-1: #D8DEE9;--vp-c-text-light-2: #E5E9F0;--vp-c-text-light-3: #ECEFF4;--vp-c-text-dark-1: #2E3440;--vp-c-divider: #4C566A;--vp-c-divider-light: #4C566A;--vp-c-brand: #5E81AC;--vp-c-brand-light: #81A1C1;--vp-c-brand-dark: #81A1C1;--vp-button-brand-border: #81A1C1;--vp-button-brand-text: #ECEFF4;--vp-button-brand-hover-text: #ECEFF4;--vp-button-brand-active-text: #ECEFF4;--vp-button-alt-text: #ECEFF4;--vp-button-alt-bg: #3B4252;--vp-button-alt-border: #4C566A;--vp-code-inline-bg-color: #3B4252;--vp-c-gray-light-1: #2E3440;--vp-c-gray-light-2: #3B4252;--vp-c-gray-light-3: #434C5E;--vp-c-gray-light-4: #4C566A;--vp-c-bg-soft: #3B4252;--vp-font-family-base: Roboto Mono, monospace;--vp-font-family-mono: Roboto Mono, monospace}
+@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-cyrillic.5f2c6c8c.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-cyrillic-ext.e75737ce.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-greek.d5a6d92a.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-greek-ext.ab0619bc.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-latin.2ed14f66.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-latin-ext.0030eebd.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-vietnamese.14ce25a6.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-cyrillic.ea42a392.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-greek.8f4463c4.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-greek-ext.4fbe9427.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-latin.bd3b6f56.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-latin-ext.bd8920cc.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-vietnamese.6ce511fb.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chinese Quotes;src:local("PingFang SC Regular"),local("PingFang SC"),local("SimHei"),local("Source Han Sans SC");unicode-range:U+2018,U+2019,U+201C,U+201D}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-gray: #8e8e93;--vp-c-text-light-1: rgba(60, 60, 67);--vp-c-text-light-2: rgba(60, 60, 67, .75);--vp-c-text-light-3: rgba(60, 60, 67, .33);--vp-c-text-dark-1: rgba(255, 255, 245, .86);--vp-c-text-dark-2: rgba(235, 235, 245, .6);--vp-c-text-dark-3: rgba(235, 235, 245, .38);--vp-c-green: #10b981;--vp-c-green-light: #34d399;--vp-c-green-lighter: #6ee7b7;--vp-c-green-dark: #059669;--vp-c-green-darker: #047857;--vp-c-green-dimm-1: rgba(16, 185, 129, .05);--vp-c-green-dimm-2: rgba(16, 185, 129, .2);--vp-c-green-dimm-3: rgba(16, 185, 129, .5);--vp-c-yellow: #d97706;--vp-c-yellow-light: #f59e0b;--vp-c-yellow-lighter: #fbbf24;--vp-c-yellow-dark: #b45309;--vp-c-yellow-darker: #92400e;--vp-c-yellow-dimm-1: rgba(234, 179, 8, .05);--vp-c-yellow-dimm-2: rgba(234, 179, 8, .2);--vp-c-yellow-dimm-3: rgba(234, 179, 8, .5);--vp-c-red: #f43f5e;--vp-c-red-light: #fb7185;--vp-c-red-lighter: #fda4af;--vp-c-red-dark: #e11d48;--vp-c-red-darker: #be123c;--vp-c-red-dimm-1: rgba(244, 63, 94, .05);--vp-c-red-dimm-2: rgba(244, 63, 94, .2);--vp-c-red-dimm-3: rgba(244, 63, 94, .5);--vp-c-sponsor: #db2777}:root{--vp-c-bg: #ffffff;--vp-c-bg-elv: #ffffff;--vp-c-bg-elv-up: #ffffff;--vp-c-bg-elv-down: #f6f6f7;--vp-c-bg-elv-mute: #f6f6f7;--vp-c-bg-soft: #f6f6f7;--vp-c-bg-soft-up: #f9f9fa;--vp-c-bg-soft-down: #e3e3e5;--vp-c-bg-soft-mute: #e3e3e5;--vp-c-bg-alt: #f6f6f7;--vp-c-border: rgba(60, 60, 67, .29);--vp-c-divider: rgba(60, 60, 67, .12);--vp-c-gutter: rgba(60, 60, 67, .12);--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white);--vp-c-text-1: var(--vp-c-text-light-1);--vp-c-text-2: var(--vp-c-text-light-2);--vp-c-text-3: var(--vp-c-text-light-3);--vp-c-text-inverse-1: var(--vp-c-text-dark-1);--vp-c-text-inverse-2: var(--vp-c-text-dark-2);--vp-c-text-inverse-3: var(--vp-c-text-dark-3);--vp-c-text-code: #476582;--vp-c-brand: var(--vp-c-green);--vp-c-brand-light: var(--vp-c-green-light);--vp-c-brand-lighter: var(--vp-c-green-lighter);--vp-c-brand-dark: var(--vp-c-green-dark);--vp-c-brand-darker: var(--vp-c-green-darker);--vp-c-mute: #f6f6f7;--vp-c-mute-light: #f9f9fc;--vp-c-mute-lighter: #ffffff;--vp-c-mute-dark: #e3e3e5;--vp-c-mute-darker: #d7d7d9}.dark{--vp-c-bg: #1e1e20;--vp-c-bg-elv: #252529;--vp-c-bg-elv-up: #313136;--vp-c-bg-elv-down: #1e1e20;--vp-c-bg-elv-mute: #313136;--vp-c-bg-soft: #252529;--vp-c-bg-soft-up: #313136;--vp-c-bg-soft-down: #1e1e20;--vp-c-bg-soft-mute: #313136;--vp-c-bg-alt: #161618;--vp-c-border: rgba(82, 82, 89, .68);--vp-c-divider: rgba(82, 82, 89, .32);--vp-c-gutter: #000000;--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black);--vp-c-text-1: var(--vp-c-text-dark-1);--vp-c-text-2: var(--vp-c-text-dark-2);--vp-c-text-3: var(--vp-c-text-dark-3);--vp-c-text-inverse-1: var(--vp-c-text-light-1);--vp-c-text-inverse-2: var(--vp-c-text-light-2);--vp-c-text-inverse-3: var(--vp-c-text-light-3);--vp-c-text-code: #c9def1;--vp-c-mute: #313136;--vp-c-mute-light: #3a3a3c;--vp-c-mute-lighter: #505053;--vp-c-mute-dark: #2c2c30;--vp-c-mute-darker: #252529}:root{--vp-font-family-base: "Chinese Quotes", "Inter var", "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-local-nav: 10;--vp-z-index-nav: 20;--vp-z-index-layout-top: 30;--vp-z-index-backdrop: 40;--vp-z-index-sidebar: 50;--vp-z-index-footer: 60}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E")}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-block-color: var(--vp-c-text-dark-1);--vp-code-block-bg: #292b30;--vp-code-block-bg-light: #1e1e20;--vp-code-block-divider-color: #000000;--vp-code-line-highlight-color: rgba(0, 0, 0, .5);--vp-code-line-number-color: var(--vp-c-text-dark-3);--vp-code-line-diff-add-color: var(--vp-c-green-dimm-2);--vp-code-line-diff-add-symbol-color: var(--vp-c-green);--vp-code-line-diff-remove-color: var(--vp-c-red-dimm-2);--vp-code-line-diff-remove-symbol-color: var(--vp-c-red);--vp-code-line-warning-color: var(--vp-c-yellow-dimm-2);--vp-code-line-error-color: var(--vp-c-red-dimm-2);--vp-code-copy-code-border-color: transparent;--vp-code-copy-code-bg: var(--vp-code-block-bg-light);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-code-block-bg-light);--vp-code-copy-code-active-text: var(--vp-c-text-dark-2);--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-dark-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-dark-1);--vp-code-tab-active-text-color: var(--vp-c-text-dark-1);--vp-code-tab-active-bar-color: var(--vp-c-brand)}.dark{--vp-code-block-bg: #161618}:root{--vp-button-brand-border: var(--vp-c-brand-lighter);--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand);--vp-button-brand-hover-border: var(--vp-c-brand-lighter);--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-dark);--vp-button-brand-active-border: var(--vp-c-brand-lighter);--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-darker);--vp-button-alt-border: var(--vp-c-border);--vp-button-alt-text: var(--vp-c-neutral);--vp-button-alt-bg: var(--vp-c-mute);--vp-button-alt-hover-border: var(--vp-c-border);--vp-button-alt-hover-text: var(--vp-c-neutral);--vp-button-alt-hover-bg: var(--vp-c-mute-dark);--vp-button-alt-active-border: var(--vp-c-border);--vp-button-alt-active-text: var(--vp-c-neutral);--vp-button-alt-active-bg: var(--vp-c-mute-darker);--vp-button-sponsor-border: var(--vp-c-gray-light-3);--vp-button-sponsor-text: var(--vp-c-text-light-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}.dark{--vp-button-sponsor-border: var(--vp-c-gray-dark-1);--vp-button-sponsor-text: var(--vp-c-text-dark-2)}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: var(--vp-c-border);--vp-custom-block-info-text: var(--vp-c-text-2);--vp-custom-block-info-bg: var(--vp-c-bg-soft-up);--vp-custom-block-info-code-bg: var(--vp-c-bg-soft);--vp-custom-block-tip-border: var(--vp-c-green);--vp-custom-block-tip-text: var(--vp-c-green-dark);--vp-custom-block-tip-bg: var(--vp-c-bg-soft-up);--vp-custom-block-tip-code-bg: var(--vp-c-bg-soft);--vp-custom-block-warning-border: var(--vp-c-yellow);--vp-custom-block-warning-text: var(--vp-c-yellow);--vp-custom-block-warning-bg: var(--vp-c-bg-soft-up);--vp-custom-block-warning-code-bg: var(--vp-c-bg-soft);--vp-custom-block-danger-border: var(--vp-c-red);--vp-custom-block-danger-text: var(--vp-c-red);--vp-custom-block-danger-bg: var(--vp-c-bg-soft-up);--vp-custom-block-danger-code-bg: var(--vp-c-bg-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-details-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-hover-border-color: var(--vp-c-gray);--vp-input-switch-bg-color: var(--vp-c-mute)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg)}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: var(--vp-c-border);--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-bg-soft-up);--vp-badge-tip-border: var(--vp-c-green-dark);--vp-badge-tip-text: var(--vp-c-green);--vp-badge-tip-bg: var(--vp-c-green-dimm-1);--vp-badge-warning-border: var(--vp-c-yellow-dark);--vp-badge-warning-text: var(--vp-c-yellow);--vp-badge-warning-bg: var(--vp-c-yellow-dimm-1);--vp-badge-danger-border: var(--vp-c-red-dark);--vp-badge-danger-text: var(--vp-c-red);--vp-badge-danger-bg: var(--vp-c-red-dimm-1)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);direction:ltr;font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info th{color:var(--vp-custom-block-info-text)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip th{color:var(--vp-custom-block-tip-text)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning th{color:var(--vp-custom-block-warning-text)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger th{color:var(--vp-custom-block-danger-text)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details th{color:var(--vp-custom-block-details-text)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600}.custom-block a:hover{text-decoration:underline}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.dark .vp-code-light{display:none}html:not(.dark) .vp-code-dark{display:none}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden}.vp-code-group .tabs:after{position:absolute;right:0;bottom:0;left:0;height:1px;background-color:var(--vp-code-tab-divider);content:""}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:absolute;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:10;height:1px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-]{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active{display:block}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{float:left;margin-left:-.87em;padding-right:.23em;font-weight:500;user-select:none;opacity:0;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand);text-decoration-style:dotted;transition:color .25s}.vp-doc a:hover{text-decoration:underline}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block a{color:inherit;font-weight:600}.vp-doc .custom-block a:hover{text-decoration:underline}.vp-doc .custom-block code{font-size:var(--vp-custom-block-code-font-size);font-weight:700;color:inherit}.vp-doc .custom-block div[class*=language-]{margin:8px 0}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;color:var(--vp-c-text-code);background-color:var(--vp-c-mute);transition:color .5s,background-color .5s}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc a>code{color:var(--vp-c-brand);transition:color .25s}.vp-doc a:hover>code{color:var(--vp-c-brand-dark)}.vp-doc div[class*=language-]{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-]{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;left:-65px;display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;width:64px;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:"Copied"}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-c-text-dark-3);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin-bottom:4px;text-align:center;letter-spacing:1px;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-bg-soft-down)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge[data-v-350d3852]{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:10px;padding:0 8px;line-height:18px;font-size:12px;font-weight:600;transform:translateY(-2px)}h1 .VPBadge[data-v-350d3852],h2 .VPBadge[data-v-350d3852],h3 .VPBadge[data-v-350d3852],h4 .VPBadge[data-v-350d3852],h5 .VPBadge[data-v-350d3852],h6 .VPBadge[data-v-350d3852]{vertical-align:top}h2 .VPBadge[data-v-350d3852]{border-radius:11px;line-height:20px}.VPBadge.info[data-v-350d3852]{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip[data-v-350d3852]{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning[data-v-350d3852]{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger[data-v-350d3852]{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPSkipLink[data-v-c8616af1]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-c8616af1]:focus{height:auto;width:auto;clip:auto;clip-path:none}.dark .VPSkipLink[data-v-c8616af1]{color:var(--vp-c-green)}@media (min-width: 1280px){.VPSkipLink[data-v-c8616af1]{top:14px;left:16px}}.VPBackdrop[data-v-c79a1216]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-c79a1216],.VPBackdrop.fade-leave-to[data-v-c79a1216]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c79a1216]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c79a1216]{display:none}}html:not(.dark) .VPImage.dark[data-v-6db2186b]{display:none}.dark .VPImage.light[data-v-6db2186b]{display:none}.title[data-v-f4ef19a3]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}.title[data-v-f4ef19a3]:hover{opacity:.6}@media (min-width: 960px){.title[data-v-f4ef19a3]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-f4ef19a3]{border-bottom-color:var(--vp-c-divider)}}[data-v-f4ef19a3] .logo{margin-right:8px;height:24px}/*! @docsearch/css 3.3.3 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"\bb  "}.DocSearch-Prefill{appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.DocSearch{--docsearch-primary-color: var(--vp-c-brand);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark .DocSearch{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-bg-soft-mute);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:32px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:1px;letter-spacing:-12px;color:transparent}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:var(--673bc564);font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-bg-soft-mute)}.DocSearch-Screen-Icon>svg{margin:auto}.icon[data-v-8f4dc553]{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;fill:var(--vp-c-text-3);transition:fill .25s;flex-shrink:0}.VPNavBarMenuLink[data-v-37adc828]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-37adc828],.VPNavBarMenuLink[data-v-37adc828]:hover{color:var(--vp-c-brand)}.VPMenuGroup+.VPMenuLink[data-v-d2c93bab]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-d2c93bab]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-d2c93bab]:hover{color:var(--vp-c-brand);background-color:var(--vp-c-bg-elv-mute)}.link.active[data-v-d2c93bab]{color:var(--vp-c-brand)}.VPMenuGroup[data-v-69e747b5]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-69e747b5]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-69e747b5]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-69e747b5]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-e7ea1737]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-e7ea1737] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e7ea1737] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e7ea1737] .group:last-child{padding-bottom:0}.VPMenu[data-v-e7ea1737] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e7ea1737] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e7ea1737] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-e7ea1737] .action{padding-left:24px}.VPFlyout[data-v-764effdf]{position:relative}.VPFlyout[data-v-764effdf]:hover{color:var(--vp-c-brand);transition:color .25s}.VPFlyout:hover .text[data-v-764effdf]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-764effdf]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-764effdf]{color:var(--vp-c-brand)}.VPFlyout.active:hover .text[data-v-764effdf]{color:var(--vp-c-brand-dark)}.VPFlyout:hover .menu[data-v-764effdf],.button[aria-expanded=true]+.menu[data-v-764effdf]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-764effdf]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-764effdf]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-764effdf]{margin-right:0;width:16px;height:16px;fill:currentColor}.text-icon[data-v-764effdf]{margin-left:4px;width:14px;height:14px;fill:currentColor}.icon[data-v-764effdf]{width:20px;height:20px;fill:currentColor;transition:fill .25s}.menu[data-v-764effdf]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPNavBarMenu[data-v-7f418b0f]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-7f418b0f]{display:flex}}.VPNavBarTranslations[data-v-74abcbb9]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-74abcbb9]{display:flex;align-items:center}}.title[data-v-74abcbb9]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPSwitch[data-v-f3c41672]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s}.VPSwitch[data-v-f3c41672]:hover{border-color:var(--vp-input-hover-border-color)}.check[data-v-f3c41672]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s}.icon[data-v-f3c41672]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-f3c41672] svg{position:absolute;top:3px;left:3px;width:12px;height:12px;fill:var(--vp-c-text-2)}.dark .icon[data-v-f3c41672] svg{fill:var(--vp-c-text-1);transition:opacity .25s}.sun[data-v-a9c8afb8]{opacity:1}.moon[data-v-a9c8afb8],.dark .sun[data-v-a9c8afb8]{opacity:0}.dark .moon[data-v-a9c8afb8]{opacity:1}.dark .VPSwitchAppearance[data-v-a9c8afb8] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-f6a63727]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-f6a63727]{display:flex;align-items:center}}.VPSocialLink[data-v-c530cc0a]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-c530cc0a]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-c530cc0a]>svg{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-f6988cfb]{display:flex;flex-wrap:wrap;justify-content:center}.VPNavBarSocialLinks[data-v-0394ad82]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-0394ad82]{display:flex;align-items:center}}.VPNavBarExtra[data-v-40855f84]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-40855f84]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-40855f84]{display:none}}.trans-title[data-v-40855f84]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-40855f84],.item.social-links[data-v-40855f84]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-40855f84]{min-width:176px}.appearance-action[data-v-40855f84]{margin-right:-2px}.social-links-list[data-v-40855f84]{margin:-4px -8px}.VPNavBarHamburger[data-v-e5dd9c1c]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-e5dd9c1c]{display:none}}.container[data-v-e5dd9c1c]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-e5dd9c1c]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .middle[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .bottom[data-v-e5dd9c1c]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-e5dd9c1c],.middle[data-v-e5dd9c1c],.bottom[data-v-e5dd9c1c]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(0)}.middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(4px)}.VPNavBar[data-v-1d30fa41]{position:relative;border-bottom:1px solid transparent;padding:0 8px 0 24px;height:var(--vp-nav-height);transition:border-color .5s,background-color .5s;pointer-events:none}.VPNavBar.has-sidebar[data-v-1d30fa41]{border-bottom-color:var(--vp-c-gutter)}@media (min-width: 768px){.VPNavBar[data-v-1d30fa41]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar[data-v-1d30fa41]{border-bottom-color:transparent;padding:0}.VPNavBar.fill[data-v-1d30fa41]:not(.has-sidebar){border-bottom-color:var(--vp-c-gutter);background-color:var(--vp-nav-bg-color)}}.container[data-v-1d30fa41]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container[data-v-1d30fa41] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-1d30fa41]{max-width:100%}}.title[data-v-1d30fa41]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-1d30fa41]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-1d30fa41]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-1d30fa41]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-1d30fa41]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-1d30fa41]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-1d30fa41]{display:flex;justify-content:flex-end;align-items:center;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .content-body[data-v-1d30fa41],.VPNavBar.fill .content-body[data-v-1d30fa41]{position:relative;background-color:var(--vp-nav-bg-color)}}.menu+.translations[data-v-1d30fa41]:before,.menu+.appearance[data-v-1d30fa41]:before,.menu+.social-links[data-v-1d30fa41]:before,.translations+.appearance[data-v-1d30fa41]:before,.appearance+.social-links[data-v-1d30fa41]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-1d30fa41]:before,.translations+.appearance[data-v-1d30fa41]:before{margin-right:16px}.appearance+.social-links[data-v-1d30fa41]:before{margin-left:16px}.social-links[data-v-1d30fa41]{margin-right:-8px}@media (min-width: 960px){.VPNavBar.has-sidebar .curtain[data-v-1d30fa41]{position:absolute;right:0;bottom:-31px;width:calc(100% - var(--vp-sidebar-width));height:32px}.VPNavBar.has-sidebar .curtain[data-v-1d30fa41]:before{display:block;width:100%;height:32px;background:linear-gradient(var(--vp-c-bg),transparent 70%);content:""}}@media (min-width: 1440px){.VPNavBar.has-sidebar .curtain[data-v-1d30fa41]{width:calc(100% - ((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width)))}}.VPNavScreenMenuLink[data-v-c328f34f]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-c328f34f]:hover{color:var(--vp-c-brand)}.VPNavScreenMenuGroupLink[data-v-3d20956d]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-3d20956d]:hover{color:var(--vp-c-brand)}.VPNavScreenMenuGroupSection[data-v-7478538b]{display:block}.title[data-v-7478538b]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-a9a19324]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-a9a19324]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-a9a19324]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-a9a19324]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-a9a19324]{padding-bottom:6px;color:var(--vp-c-brand)}.VPNavScreenMenuGroup.open .button-icon[data-v-a9a19324]{transform:rotate(45deg)}.button[data-v-a9a19324]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-a9a19324]:hover{color:var(--vp-c-brand)}.button-icon[data-v-a9a19324]{width:14px;height:14px;fill:var(--vp-c-text-2);transition:fill .5s,transform .25s}.group[data-v-a9a19324]:first-child{padding-top:0}.group+.group[data-v-a9a19324],.group+.item[data-v-a9a19324]{padding-top:4px}.VPNavScreenAppearance[data-v-add8f686]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-add8f686]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenTranslations[data-v-d72aa483]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-d72aa483]{height:auto}.title[data-v-d72aa483]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-d72aa483]{width:16px;height:16px;fill:currentColor}.icon.lang[data-v-d72aa483]{margin-right:8px}.icon.chevron[data-v-d72aa483]{margin-left:4px}.list[data-v-d72aa483]{padding:4px 0 0 24px}.link[data-v-d72aa483]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-724636ae]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-724636ae],.VPNavScreen.fade-leave-active[data-v-724636ae]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-724636ae],.VPNavScreen.fade-leave-active .container[data-v-724636ae]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-724636ae],.VPNavScreen.fade-leave-to[data-v-724636ae]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-724636ae],.VPNavScreen.fade-leave-to .container[data-v-724636ae]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-724636ae]{display:none}}.container[data-v-724636ae]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-724636ae],.menu+.appearance[data-v-724636ae],.translations+.appearance[data-v-724636ae]{margin-top:24px}.menu+.social-links[data-v-724636ae]{margin-top:16px}.appearance+.social-links[data-v-724636ae]{margin-top:16px}.VPNav[data-v-7e5bc4a5]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-7e5bc4a5]{position:fixed}}.root[data-v-8f12e865]{position:relative;z-index:1}.nested[data-v-8f12e865]{padding-left:13px}.outline-link[data-v-8f12e865]{display:block;line-height:28px;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s;font-weight:500}.outline-link[data-v-8f12e865]:hover,.outline-link.active[data-v-8f12e865]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-8f12e865]{padding-left:13px}.VPLocalNavOutlineDropdown[data-v-079b16a8]{padding:12px 20px 11px}.VPLocalNavOutlineDropdown button[data-v-079b16a8]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-079b16a8]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-079b16a8]{color:var(--vp-c-text-1)}.icon[data-v-079b16a8]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-079b16a8] .outline-link{font-size:14px;padding:2px 0}.open>.icon[data-v-079b16a8]{transform:rotate(90deg)}.items[data-v-079b16a8]{position:absolute;left:20px;right:20px;top:64px;background-color:var(--vp-local-nav-bg-color);padding:4px 10px 16px;border:1px solid var(--vp-c-divider);border-radius:8px;max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}.top-link[data-v-079b16a8]{display:block;color:var(--vp-c-brand);font-size:13px;font-weight:500;padding:6px 0;margin:0 13px 10px;border-bottom:1px solid var(--vp-c-divider)}.flyout-enter-active[data-v-079b16a8]{transition:all .2s ease-out}.flyout-leave-active[data-v-079b16a8]{transition:all .15s ease-in}.flyout-enter-from[data-v-079b16a8],.flyout-leave-to[data-v-079b16a8]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-f5a2ca58]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color);transition:border-color .5s,background-color .5s}@media (min-width: 960px){.VPLocalNav[data-v-f5a2ca58]{display:none}}.menu[data-v-f5a2ca58]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-f5a2ca58]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-f5a2ca58]{padding:0 32px}}.menu-icon[data-v-f5a2ca58]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPOutlineDropdown[data-v-f5a2ca58]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-f5a2ca58]{padding:12px 32px 11px}}.VPSidebarItem.level-0[data-v-c4656e6d]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-c4656e6d]{padding-bottom:10px}.item[data-v-c4656e6d]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-c4656e6d]{cursor:pointer}.indicator[data-v-c4656e6d]{position:absolute;top:6px;bottom:6px;left:-17px;width:1px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-c4656e6d],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-c4656e6d],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-c4656e6d],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-c4656e6d]{background-color:var(--vp-c-brand)}.link[data-v-c4656e6d]{display:flex;align-items:center;flex-grow:1}.text[data-v-c4656e6d]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-c4656e6d]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-c4656e6d],.VPSidebarItem.level-2 .text[data-v-c4656e6d],.VPSidebarItem.level-3 .text[data-v-c4656e6d],.VPSidebarItem.level-4 .text[data-v-c4656e6d],.VPSidebarItem.level-5 .text[data-v-c4656e6d]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-c4656e6d],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-c4656e6d],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-c4656e6d],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-c4656e6d],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-c4656e6d],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-c4656e6d]{color:var(--vp-c-brand)}.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-c4656e6d],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-c4656e6d],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-c4656e6d],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-c4656e6d],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-c4656e6d],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-c4656e6d]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-c4656e6d],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-c4656e6d],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-c4656e6d],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-c4656e6d],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-c4656e6d],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-c4656e6d]{color:var(--vp-c-brand)}.caret[data-v-c4656e6d]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s}.item:hover .caret[data-v-c4656e6d]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-c4656e6d]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-c4656e6d]{width:18px;height:18px;fill:currentColor;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-c4656e6d]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-c4656e6d],.VPSidebarItem.level-2 .items[data-v-c4656e6d],.VPSidebarItem.level-3 .items[data-v-c4656e6d],.VPSidebarItem.level-4 .items[data-v-c4656e6d],.VPSidebarItem.level-5 .items[data-v-c4656e6d]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-c4656e6d]{display:none}.VPSidebar[data-v-139a1f1d]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease}.VPSidebar.open[data-v-139a1f1d]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-139a1f1d]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-139a1f1d]{z-index:1;padding-top:var(--vp-nav-height);padding-bottom:128px;width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-139a1f1d]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-139a1f1d]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-139a1f1d]{outline:0}.group+.group[data-v-139a1f1d]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-139a1f1d]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPButton[data-v-567ba664]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-567ba664]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-567ba664]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-567ba664]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-567ba664]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-567ba664]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-567ba664]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-567ba664]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-567ba664]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-567ba664]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-567ba664]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-567ba664]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-567ba664]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}.VPHero[data-v-fd2650d5]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-fd2650d5]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-fd2650d5]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-fd2650d5]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-fd2650d5]{flex-direction:row}}.main[data-v-fd2650d5]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-fd2650d5]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-fd2650d5]{text-align:left}}@media (min-width: 960px){.main[data-v-fd2650d5]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-fd2650d5]{max-width:592px}}.name[data-v-fd2650d5],.text[data-v-fd2650d5]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-fd2650d5],.VPHero.has-image .text[data-v-fd2650d5]{margin:0 auto}.name[data-v-fd2650d5]{color:var(--vp-home-hero-name-color)}.clip[data-v-fd2650d5]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-fd2650d5],.text[data-v-fd2650d5]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-fd2650d5],.text[data-v-fd2650d5]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-fd2650d5],.VPHero.has-image .text[data-v-fd2650d5]{margin:0}}.tagline[data-v-fd2650d5]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-fd2650d5]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-fd2650d5]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-fd2650d5]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-fd2650d5]{margin:0}}.actions[data-v-fd2650d5]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-fd2650d5]{justify-content:center}@media (min-width: 640px){.actions[data-v-fd2650d5]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-fd2650d5]{justify-content:flex-start}}.action[data-v-fd2650d5]{flex-shrink:0;padding:6px}.image[data-v-fd2650d5]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-fd2650d5]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-fd2650d5]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-fd2650d5]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-fd2650d5]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-fd2650d5]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-fd2650d5]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-fd2650d5]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-fd2650d5]{width:320px;height:320px}}[data-v-fd2650d5] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-fd2650d5] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-fd2650d5] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-837f6cca]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-837f6cca]:hover{border-color:var(--vp-c-brand);background-color:var(--vp-c-bg-soft-up)}.box[data-v-837f6cca]{display:flex;flex-direction:column;padding:24px;height:100%}.VPFeature[data-v-837f6cca] .VPImage{width:48px;height:48px;margin-bottom:20px}.icon[data-v-837f6cca]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-bg-soft-down);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-837f6cca]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-837f6cca]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-837f6cca]{padding-top:8px}.link-text-value[data-v-837f6cca]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand)}.link-text-icon[data-v-837f6cca]{display:inline-block;margin-left:6px;width:14px;height:14px;fill:currentColor}.VPFeatures[data-v-6816157f]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-6816157f]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-6816157f]{padding:0 64px}}.container[data-v-6816157f]{margin:0 auto;max-width:1152px}.items[data-v-6816157f]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-6816157f]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-6816157f],.item.grid-4[data-v-6816157f],.item.grid-6[data-v-6816157f]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-6816157f],.item.grid-4[data-v-6816157f]{width:50%}.item.grid-3[data-v-6816157f],.item.grid-6[data-v-6816157f]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-6816157f]{width:25%}}.VPHome[data-v-d82743a8]{padding-bottom:96px}.VPHome[data-v-d82743a8] .VPHomeSponsors{margin-top:112px;margin-bottom:-128px}@media (min-width: 768px){.VPHome[data-v-d82743a8]{padding-bottom:128px}}.VPDocAsideOutline[data-v-ff0f39c8]{display:none}.VPDocAsideOutline.has-outline[data-v-ff0f39c8]{display:block}.content[data-v-ff0f39c8]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-ff0f39c8]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:1px;height:18px;background-color:var(--vp-c-brand);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-ff0f39c8]{letter-spacing:.4px;line-height:28px;font-size:13px;font-weight:600}.VPDocAside[data-v-3f215769]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-3f215769]{flex-grow:1}.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-3f215769] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-7b3ebfe1]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-7b3ebfe1]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-face870a]{margin-top:64px}.edit-info[data-v-face870a]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-face870a]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-face870a]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:color .25s}.edit-link-button[data-v-face870a]:hover{color:var(--vp-c-brand-dark)}.edit-link-icon[data-v-face870a]{margin-right:8px;width:14px;height:14px;fill:currentColor}.prev-next[data-v-face870a]{border-top:1px solid var(--vp-c-divider);padding-top:24px}@media (min-width: 640px){.prev-next[data-v-face870a]{display:flex}}.pager.has-prev[data-v-face870a]{padding-top:8px}@media (min-width: 640px){.pager[data-v-face870a]{display:flex;flex-direction:column;flex-shrink:0;width:50%}.pager.has-prev[data-v-face870a]{padding-top:0;padding-left:16px}}.pager-link[data-v-face870a]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-face870a]:hover{border-color:var(--vp-c-brand)}.pager-link.next[data-v-face870a]{margin-left:auto;text-align:right}.desc[data-v-face870a]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-face870a]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:color .25s}.VPDocOutlineDropdown[data-v-2edece88]{margin-bottom:42px}.VPDocOutlineDropdown button[data-v-2edece88]{display:block;font-size:14px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;border:1px solid var(--vp-c-border);padding:4px 12px;border-radius:8px}.VPDocOutlineDropdown button[data-v-2edece88]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPDocOutlineDropdown button.open[data-v-2edece88]{color:var(--vp-c-text-1)}.icon[data-v-2edece88]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-2edece88] .outline-link{font-size:13px}.open>.icon[data-v-2edece88]{transform:rotate(90deg)}.items[data-v-2edece88]{margin-top:10px;border-left:1px solid var(--vp-c-divider)}.VPDoc[data-v-c4b0d3cf]{padding:32px 24px 96px;width:100%}.VPDoc .VPDocOutlineDropdown[data-v-c4b0d3cf]{display:none}@media (min-width: 960px) and (max-width: 1280px){.VPDoc .VPDocOutlineDropdown[data-v-c4b0d3cf]{display:block}}@media (min-width: 768px){.VPDoc[data-v-c4b0d3cf]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-c4b0d3cf]{padding:32px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-c4b0d3cf]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-c4b0d3cf]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-c4b0d3cf]{display:flex;justify-content:center}.VPDoc .aside[data-v-c4b0d3cf]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-c4b0d3cf]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-c4b0d3cf]{max-width:1104px}}.container[data-v-c4b0d3cf]{margin:0 auto;width:100%}.aside[data-v-c4b0d3cf]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-c4b0d3cf]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-c4b0d3cf]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 32px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-c4b0d3cf]::-webkit-scrollbar{display:none}.aside-curtain[data-v-c4b0d3cf]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-c4b0d3cf]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 32px));padding-bottom:32px}.content[data-v-c4b0d3cf]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-c4b0d3cf]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-c4b0d3cf]{order:1;margin:0;min-width:640px}}.content-container[data-v-c4b0d3cf]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-c4b0d3cf]{max-width:688px}.NotFound[data-v-c70503b8]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-c70503b8]{padding:96px 32px 168px}}.code[data-v-c70503b8]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-c70503b8]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-c70503b8]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-c70503b8]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-c70503b8]{padding-top:20px}.link[data-v-c70503b8]{display:inline-block;border:1px solid var(--vp-c-brand);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:border-color .25s,color .25s}.link[data-v-c70503b8]:hover{border-color:var(--vp-c-brand-dark);color:var(--vp-c-brand-dark)}.VPContent[data-v-a494bd1d]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-a494bd1d]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-a494bd1d]{margin:0}@media (min-width: 960px){.VPContent[data-v-a494bd1d]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-a494bd1d]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-a494bd1d]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-2f86ebd2]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-2f86ebd2]{display:none}@media (min-width: 768px){.VPFooter[data-v-2f86ebd2]{padding:32px}}.container[data-v-2f86ebd2]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-2f86ebd2],.copyright[data-v-2f86ebd2]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.message[data-v-2f86ebd2]{order:2}.copyright[data-v-2f86ebd2]{order:1}.Layout[data-v-b2cf3e0b]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3c6e61c2]{border-top:1px solid var(--vp-c-gutter);padding:88px 24px 96px;background-color:var(--vp-c-bg)}.container[data-v-3c6e61c2]{margin:0 auto;max-width:1152px}.love[data-v-3c6e61c2]{margin:0 auto;width:28px;height:28px;color:var(--vp-c-text-3)}.icon[data-v-3c6e61c2]{width:28px;height:28px;fill:currentColor}.message[data-v-3c6e61c2]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-3c6e61c2]{padding-top:32px}.action[data-v-3c6e61c2]{padding-top:40px;text-align:center}.VPTeamPage[data-v-10b00018]{padding-bottom:96px}@media (min-width: 768px){.VPTeamPage[data-v-10b00018]{padding-bottom:128px}}.VPTeamPageSection+.VPTeamPageSection[data-v-10b00018-s],.VPTeamMembers+.VPTeamPageSection[data-v-10b00018-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-10b00018-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-10b00018-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-10b00018-s],.VPTeamMembers+.VPTeamPageSection[data-v-10b00018-s]{margin-top:96px}}.VPTeamMembers[data-v-10b00018-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-10b00018-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-10b00018-s]{padding:0 64px}}.VPTeamPageTitle[data-v-bf2cbdac]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:80px 64px 48px}}.title[data-v-bf2cbdac]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-bf2cbdac]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-bf2cbdac]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-bf2cbdac]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b1a88750]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b1a88750]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b1a88750]{padding:0 64px}}.title[data-v-b1a88750]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b1a88750]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b1a88750]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-b1a88750]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-b1a88750]{padding-top:40px}.VPTeamMembersItem[data-v-1739ab5f]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-1739ab5f]{padding:32px}.VPTeamMembersItem.small .data[data-v-1739ab5f]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-1739ab5f]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-1739ab5f]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-1739ab5f]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-1739ab5f]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-1739ab5f]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-1739ab5f]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-1739ab5f]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-1739ab5f]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-1739ab5f]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-1739ab5f]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-1739ab5f]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-1739ab5f]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-1739ab5f]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-1739ab5f]{text-align:center}.avatar[data-v-1739ab5f]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-1739ab5f]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-1739ab5f]{margin:0;font-weight:600}.affiliation[data-v-1739ab5f]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-1739ab5f]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-1739ab5f]:hover{color:var(--vp-c-brand)}.desc[data-v-1739ab5f]{margin:0 auto}.links[data-v-1739ab5f]{display:flex;justify-content:center;height:56px}.sp-link[data-v-1739ab5f]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-1739ab5f]:hover,.sp .sp-link.link[data-v-1739ab5f]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-1739ab5f]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPTeamMembers.small .container[data-v-04685dce]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-04685dce]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-04685dce]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-04685dce]{max-width:876px}.VPTeamMembers.medium .container[data-v-04685dce]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-04685dce]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-04685dce]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-04685dce]{max-width:760px}.container[data-v-04685dce]{display:grid;gap:24px;margin:0 auto;max-width:1152px}svg[data-v-258d28f5]{background:#2e3440}svg .svg-elem-1[data-v-258d28f5]{stroke-dashoffset:2648.758056640625px;stroke-dasharray:1324.3790283203125px;transition:stroke-dashoffset 1s cubic-bezier(.47,0,.745,.715) 0s}svg.v-enter-from .svg-elem-1[data-v-258d28f5],svg.v-leave-to .svg-elem-1[data-v-258d28f5]{stroke-dashoffset:1324.3790283203125px}svg .svg-elem-2[data-v-258d28f5]{stroke-dashoffset:680.4000854492188px;stroke-dasharray:340.2000427246094px;transition:stroke-dashoffset 1s ease-out .4s}svg.v-enter-from .svg-elem-2[data-v-258d28f5],svg.v-leave-to .svg-elem-2[data-v-258d28f5]{stroke-dashoffset:340.2000427246094px}svg .svg-elem-3[data-v-258d28f5]{stroke-dashoffset:76.21031951904297px;stroke-dasharray:38.105159759521484px;transition:stroke-dashoffset 1s ease-out .8s}svg.v-enter-from .svg-elem-3[data-v-258d28f5],svg.v-leave-to .svg-elem-3[data-v-258d28f5]{stroke-dashoffset:38.105159759521484px}svg .svg-elem-4[data-v-258d28f5]{stroke-dashoffset:175.18072509765625px;stroke-dasharray:87.59036254882812px;transition:stroke-dashoffset 1s cubic-bezier(.47,0,.745,.715) .36s}svg.v-enter-from .svg-elem-4[data-v-258d28f5],svg.v-leave-to .svg-elem-4[data-v-258d28f5]{stroke-dashoffset:87.59036254882812px}svg .svg-elem-5[data-v-258d28f5]{stroke-dashoffset:671.9447021484375px;stroke-dasharray:335.97235107421875px;transition:stroke-dashoffset 1s ease-out .8s}svg.v-enter-from .svg-elem-5[data-v-258d28f5],svg.v-leave-to .svg-elem-5[data-v-258d28f5]{stroke-dashoffset:335.97235107421875px}svg .svg-elem-6[data-v-258d28f5]{stroke-dashoffset:173.96141052246094px;stroke-dasharray:86.98070526123047px;transition:stroke-dashoffset 1s ease-out 1s}svg.v-enter-from .svg-elem-6[data-v-258d28f5],svg.v-leave-to .svg-elem-6[data-v-258d28f5]{stroke-dashoffset:86.98070526123047px}svg .svg-elem-7[data-v-258d28f5]{stroke-dashoffset:172.99151611328125px;stroke-dasharray:86.49575805664062px;transition:stroke-dashoffset 1s ease-out .85s}svg.v-enter-from .svg-elem-7[data-v-258d28f5],svg.v-leave-to .svg-elem-7[data-v-258d28f5]{stroke-dashoffset:86.49575805664062px}body{font-size:14px}@media (min-width: 960px){.main .name,.main .text{font-size:52px!important}}.custom-block.info{background-color:#3b4252}.custom-block.warning{background-color:#3b4252;border-color:#ebcb8b}.custom-block.warning>.custom-block-title{color:#ebcb8b}.custom-block.warning>:not(.custom-block-title){color:var(--vp-custom-block-info-text)}.vp-doc tr:nth-child(2n),.vp-doc th{background-color:var(--vp-c-bg-alt)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider-light)}.content,.VPNav.no-sidebar{background:var(--vp-c-bg)!important}.VPNavBar{border-bottom:0!important}.vp-doc :not(pre)>code{color:var(--vp-c-text-light-1);background-color:var(--vp-code-block-bg)}.vp-doc h3+h4{margin-top:16px}:root{--vp-c-bg: #2E3440;--vp-c-bg-alt: #3B4252;--vp-code-block-bg: #434C5E;--vp-c-text-light-1: #D8DEE9;--vp-c-text-light-2: #E5E9F0;--vp-c-text-light-3: #ECEFF4;--vp-c-text-dark-1: #2E3440;--vp-c-divider: #4C566A;--vp-c-divider-light: #4C566A;--vp-c-brand: #5E81AC;--vp-c-brand-light: #81A1C1;--vp-c-brand-dark: #81A1C1;--vp-button-brand-border: #81A1C1;--vp-button-brand-text: #ECEFF4;--vp-button-brand-hover-text: #ECEFF4;--vp-button-brand-active-text: #ECEFF4;--vp-button-alt-text: #ECEFF4;--vp-button-alt-bg: #3B4252;--vp-button-alt-border: #4C566A;--vp-code-inline-bg-color: #3B4252;--vp-c-gray-light-1: #2E3440;--vp-c-gray-light-2: #3B4252;--vp-c-gray-light-3: #434C5E;--vp-c-gray-light-4: #4C566A;--vp-c-bg-soft: #3B4252;--vp-font-family-base: Roboto Mono, monospace;--vp-font-family-mono: Roboto Mono, monospace}
diff --git a/guide/advanced-concepts/creating-features.html b/guide/advanced-concepts/creating-features.html
index d1910e35..d313a983 100644
--- a/guide/advanced-concepts/creating-features.html
+++ b/guide/advanced-concepts/creating-features.html
@@ -5,12 +5,12 @@
     
     Creating Features | Profectus
     
-    
+    
     
     
   
   
-  
+  
   
   
   
@@ -21,7 +21,7 @@
   
   
   
-    
Skip to content
On this page

Creating Features ​

Profectus is designed to encourage the developer to eventually start designing their own features for use in specific games. Features are designed to work where they require minimal (and typically zero) modifications around the code base - you simply write a single file for the feature, and any vue components it needs, and the act of importing that feature will set everything up. This also means you can share these features with others in entire collections, and any they don't use won't be present in the build output, won't be loaded, and won't affect the project in any way.

Creating the Feature ​

Every feature has a couple of types. They have the feature themselves, a generic version for convenience, and any constructor typically has an options type and a type that gets "added" to it to create the feature itself. These typically involve replacing some types to denote how various properties change from, for example, Computable<X> to ProcessedComputable<X>. You should be able to use any of the existing features as a reference for how these types look and work.

Most significantly, the base type should typically always have a type property pointing to a symbol unique to this feature, so they can be easily differentiated at runtime. If it's a feature that should be renderable, then it'll also need [Component] and [GatherProps] properties, which describe the vue component to use and how to get the props for it from this feature, as well as a unique ID for the feature's node. You cna use the getUniqueID utility to help.

The constructor itself should do several things. They should take their options within a function, so that they're not resolved when the object is constructed. It should return a lazy proxy of the feature, which allows features to reference each other and only resolve themselves once every feature is defined. The constructor should create any persistent refs it may require outside of the lazy proxy - it won't have access to the options at this point, so it should make any it potentially may require. Any that turn out not being needed can be deleted. Inside the lazy proxy the constructor should create the options object, assign onto it every property from the base type, call processComputable on every computable type, and setDefault on any property with a default value. Then you should be able to simply return the options object, likely with a type cast, and the constructor will be complete.

Because typescript does not emit JS, if a property is supposed to be a function it is impossible to differentiate between a function that is itself the intended value or a function that returns the actual value. For this reason it is not recommended for any feature types to include properties that are Computable<Function>s, and all functions will be wrapped in computed. The notable exception to this is JSX, which uses a utility function to mark that a function should not be wrapped.

Vue Components ​

Any vue components you write need to do a couple things. Typically they'll need to type any props that come from computed properties appropriately, for which you can use the processedPropType utility - using it will look something like style: processedPropType<StyleValue>(String, Object, Array). You'll also want to make sure to unref any of these props you use in the template. The template should make sure to include a Node component with the feature's ID. Also, if there are custom displays this feature may have, you'll want to convert the CoercableComponent into a Vue component inside the setup function, typically using the computeComponent or computeOptionalComponent utilities.

Custom Settings ​

To add a setting to the options menu specific to this feature, you'll need to do three things, all inside the feature's file. First, extend the settings type with the name of the new setting. For example, here's how the challenge feature adds a setting to hide completed challenges:

ts
declare module "game/settings" {
+    
Skip to content
On this page

Creating Features ​

Profectus is designed to encourage the developer to eventually start designing their own features for use in specific games. Features are designed to work where they require minimal (and typically zero) modifications around the code base - you simply write a single file for the feature, and any vue components it needs, and the act of importing that feature will set everything up. This also means you can share these features with others in entire collections, and any they don't use won't be present in the build output, won't be loaded, and won't affect the project in any way.

Creating the Feature ​

Every feature has a couple of types. They have the feature themselves, a generic version for convenience, and any constructor typically has an options type and a type that gets "added" to it to create the feature itself. These typically involve replacing some types to denote how various properties change from, for example, Computable<X> to ProcessedComputable<X>. You should be able to use any of the existing features as a reference for how these types look and work.

Most significantly, the base type should typically always have a type property pointing to a symbol unique to this feature, so they can be easily differentiated at runtime. If it's a feature that should be renderable, then it'll also need [Component] and [GatherProps] properties, which describe the vue component to use and how to get the props for it from this feature, as well as a unique ID for the feature's node. You cna use the getUniqueID utility to help.

The constructor itself should do several things. They should take their options within a function, so that they're not resolved when the object is constructed. It should return a lazy proxy of the feature, which allows features to reference each other and only resolve themselves once every feature is defined. The constructor should create any persistent refs it may require outside of the lazy proxy - it won't have access to the options at this point, so it should make any it potentially may require. Any that turn out not being needed can be deleted. Inside the lazy proxy the constructor should create the options object, assign onto it every property from the base type, call processComputable on every computable type, and setDefault on any property with a default value. Then you should be able to simply return the options object, likely with a type cast, and the constructor will be complete.

Because typescript does not emit JS, if a property is supposed to be a function it is impossible to differentiate between a function that is itself the intended value or a function that returns the actual value. For this reason it is not recommended for any feature types to include properties that are Computable<Function>s, and all functions will be wrapped in computed. The notable exception to this is JSX, which uses a utility function to mark that a function should not be wrapped.

Vue Components ​

Any vue components you write need to do a couple things. Typically they'll need to type any props that come from computed properties appropriately, for which you can use the processedPropType utility - using it will look something like style: processedPropType<StyleValue>(String, Object, Array). You'll also want to make sure to unref any of these props you use in the template. The template should make sure to include a Node component with the feature's ID. Also, if there are custom displays this feature may have, you'll want to convert the CoercableComponent into a Vue component inside the setup function, typically using the computeComponent or computeOptionalComponent utilities.

Custom Settings ​

To add a setting to the options menu specific to this feature, you'll need to do three things, all inside the feature's file. First, extend the settings type with the name of the new setting. For example, here's how the challenge feature adds a setting to hide completed challenges:

ts
declare module "game/settings" {
     interface Settings {
         hideChallenges: boolean;
     }
@@ -51,9 +51,9 @@
     // unsubscribe from postUpdate
     listeners[layer.id]?.();
     listeners[layer.id] = undefined;
-});
- +});
+ \ No newline at end of file diff --git a/guide/advanced-concepts/dynamic-layers.html b/guide/advanced-concepts/dynamic-layers.html index 4bbe7814..1e4eaecf 100644 --- a/guide/advanced-concepts/dynamic-layers.html +++ b/guide/advanced-concepts/dynamic-layers.html @@ -5,12 +5,12 @@ Dynamic Layers | Profectus - + - + @@ -21,13 +21,13 @@ -
Skip to content
On this page

Dynamic Layers ​

You can dynamically add and remove layers using the addLayer and removeLayer functions. It's important to note that removing a layer does not affect the player's save data. You can safely add and remove the same layer without losing any progress. For instances where the structure of a layer changes, such as when adding a new feature, use the reloadLayer function.

When procedurally generating layers with similar structures, consider using a utility function like the one below. This function allows you to access a correctly typed reference to a layer with a specified ID easily:

ts
function getDynLayer(id: string): DynamicLayer {
+    
Skip to content
On this page

Dynamic Layers ​

You can dynamically add and remove layers using the addLayer and removeLayer functions. It's important to note that removing a layer does not affect the player's save data. You can safely add and remove the same layer without losing any progress. For instances where the structure of a layer changes, such as when adding a new feature, use the reloadLayer function.

When procedurally generating layers with similar structures, consider using a utility function like the one below. This function allows you to access a correctly typed reference to a layer with a specified ID easily:

ts
function getDynLayer(id: string): DynamicLayer {
   const layer = layers[id];
   if (!layer) throw "Layer does not exist";
   return layer as DynamicLayer; // you might need an "as unknown" after layer
-}

This utility function can streamline your code when dealing with multiple dynamic layers and ensure that you're working with the correct layer type.

When working with dynamic layers you'll need to ensure you can determine what layers should exist when loading a save file, by returning an accurate list from your project's getInitialLayers function.

- +}

This utility function can streamline your code when dealing with multiple dynamic layers and ensure that you're working with the correct layer type.

When working with dynamic layers you'll need to ensure you can determine what layers should exist when loading a save file, by returning an accurate list from your project's getInitialLayers function.

+ \ No newline at end of file diff --git a/guide/advanced-concepts/nodes.html b/guide/advanced-concepts/nodes.html index d316e9cc..019627ee 100644 --- a/guide/advanced-concepts/nodes.html +++ b/guide/advanced-concepts/nodes.html @@ -5,12 +5,12 @@ Nodes | Profectus - + - + @@ -21,7 +21,7 @@ -
Skip to content
On this page

Nodes ​

Features rendered in the DOM should include a Node component, which registers itself to the nearest Context component (usually within the Layer's component) and tracks the bounding rect (both size and position) of the DOM element. Access the DOM element for a feature via its unique id property within layer.nodes, provided it currently exists.

This is useful for features with complex displays, such as particle effects positioned relative to another feature or drawing links between different nodes. To illustrate this, let's look at a complete example of using layer.nodes to get a node's bounding rect and then placing a particle effect using it. Here's an example from Kronos:

ts
const particlesEmitter = ref(particles.addEmitter(element.particlesConfig));
+    
Skip to content
On this page

Nodes ​

Features rendered in the DOM should include a Node component, which registers itself to the nearest Context component (usually within the Layer's component) and tracks the bounding rect (both size and position) of the DOM element. Access the DOM element for a feature via its unique id property within layer.nodes, provided it currently exists.

This is useful for features with complex displays, such as particle effects positioned relative to another feature or drawing links between different nodes. To illustrate this, let's look at a complete example of using layer.nodes to get a node's bounding rect and then placing a particle effect using it. Here's an example from Kronos:

ts
const particlesEmitter = ref(particles.addEmitter(element.particlesConfig));
 const updateParticleEffect = async ([shouldEmit, rect, boundingRect]: [
     boolean,
     DOMRect | undefined,
@@ -45,9 +45,9 @@
         particles.boundingRect
     ],
     updateParticleEffect
-)

In this example the particle effects will update whenever the window resizes, the feature's bounding rect changes, or the particle effect is supposed to turn on/off. By watching for other relevant properties you can ensure even more complex situations are accounted for.

The bounding rect is usually kept up-to-date and responsive to changes such as nodes resizing, moving due to window resizing, or features being shown or hidden. However, occasional situations may cause it to be out of sync. Therefore, it's recommended to use the node system for visual effects only, where any glitches have minimal impact.

- +)

In this example the particle effects will update whenever the window resizes, the feature's bounding rect changes, or the particle effect is supposed to turn on/off. By watching for other relevant properties you can ensure even more complex situations are accounted for.

The bounding rect is usually kept up-to-date and responsive to changes such as nodes resizing, moving due to window resizing, or features being shown or hidden. However, occasional situations may cause it to be out of sync. Therefore, it's recommended to use the node system for visual effects only, where any glitches have minimal impact.

+ \ No newline at end of file diff --git a/guide/creating-your-project/changelog.html b/guide/creating-your-project/changelog.html index 5b37725c..477c4e32 100644 --- a/guide/creating-your-project/changelog.html +++ b/guide/creating-your-project/changelog.html @@ -5,12 +5,12 @@ Changelog | Profectus - + - + @@ -21,7 +21,7 @@ -
Skip to content
On this page

Changelog ​

This is a Vue component stored at /src/data/Changelog.vue used to display all the changes version to version. You can use any features you'd like within here, but it's recommended to simply add new <details> elements for each new major release, and mark the most recent one as open by default. It is strongly advised to not change any of the code relating to making the changelog appear in a modal.

There is a single version included by default that can serve as a reference of how it is recommended to add a version to the changelog:

html
<details open>
+    
Skip to content
On this page

Changelog ​

This is a Vue component stored at /src/data/Changelog.vue used to display all the changes version to version. You can use any features you'd like within here, but it's recommended to simply add new <details> elements for each new major release, and mark the most recent one as open by default. It is strongly advised to not change any of the code relating to making the changelog appear in a modal.

There is a single version included by default that can serve as a reference of how it is recommended to add a version to the changelog:

html
<details open>
 	<summary>v0.0 Initial Commit - <time>2021-09-04</time></summary>
 	This is the first release :D
 	<ul>
@@ -30,9 +30,9 @@
 		<li class="breaking">Removed everything</li>
 		<li class="balancing">Created some bugs to fix later</li>
 	</ul>
-</details>

The details and summary tags will create a section that can be collapsed and uncollapsed. While collapsed only the text in the summary tag will appear. By default sections are collapsed, although adding the open attribute to the details element will change that.

Within the details of the version, you can add a description and a list of changes for that version. CSS classes have been defined to automatically mark a change as a feature, fix, breaking change, or balancing tweak. You can of course add additional tags as you have full control over the entire component.

- +</details>

The details and summary tags will create a section that can be collapsed and uncollapsed. While collapsed only the text in the summary tag will appear. By default sections are collapsed, although adding the open attribute to the details element will change that.

Within the details of the version, you can add a description and a list of changes for that version. CSS classes have been defined to automatically mark a change as a feature, fix, breaking change, or balancing tweak. You can of course add additional tags as you have full control over the entire component.

+ \ No newline at end of file diff --git a/guide/creating-your-project/project-entry.html b/guide/creating-your-project/project-entry.html index ca63a208..a0b0b990 100644 --- a/guide/creating-your-project/project-entry.html +++ b/guide/creating-your-project/project-entry.html @@ -5,12 +5,12 @@ Project Entry | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Project Entry ​

This is a TypeScript file containing the non-static parts of your project, and acts as the entry point for it.

It is stored at /src/data/projEntry.jsx.

This file has 3 things it must export, but beyond that can export anything the creator wants it to. Typically in addition to the required 3, the initial/"main" layer will be exported. Typically utilites belong in common.tsx, which exists next to projEntry.tsx.

Required Exports ​

getInitialLayers ​

  • Type: (player: Partial<PlayerData>) => GenericLayer[]

A function that is given a player save data object currently being loaded, and returns a list of layers that should be active for that player. If a project does not have dynamic layers, this should always return a list of all layers.

hasWon ​

  • Type: ComputedRef<boolean>

A computed ref whose value is true whenever the game is over.

For example, in a game where the goal is to have a resource reach 10:

ts
export const hasWon = computed(() => Decimal.gte(resource.value, 10));

fixOldSave ​

  • Type: (oldVersion: string | undefined, player: Partial<PlayerData>) => void

This function will be run whenever a save is loaded that has a different version than the one in project info. It will be given the old version number, and the player save data object currently being loaded.

The purpose of this function is to perform any necessary migrations, such as capping a resource that accidentally inflated in a previous version of the project. By default it will do nothing.

- +
Skip to content
On this page

Project Entry ​

This is a TypeScript file containing the non-static parts of your project, and acts as the entry point for it.

It is stored at /src/data/projEntry.jsx.

This file has 3 things it must export, but beyond that can export anything the creator wants it to. Typically in addition to the required 3, the initial/"main" layer will be exported. Typically utilites belong in common.tsx, which exists next to projEntry.tsx.

Required Exports ​

getInitialLayers ​

  • Type: (player: Partial<PlayerData>) => GenericLayer[]

A function that is given a player save data object currently being loaded, and returns a list of layers that should be active for that player. If a project does not have dynamic layers, this should always return a list of all layers.

hasWon ​

  • Type: ComputedRef<boolean>

A computed ref whose value is true whenever the game is over.

For example, in a game where the goal is to have a resource reach 10:

ts
export const hasWon = computed(() => Decimal.gte(resource.value, 10));

fixOldSave ​

  • Type: (oldVersion: string | undefined, player: Partial<PlayerData>) => void

This function will be run whenever a save is loaded that has a different version than the one in project info. It will be given the old version number, and the player save data object currently being loaded.

The purpose of this function is to perform any necessary migrations, such as capping a resource that accidentally inflated in a previous version of the project. By default it will do nothing.

+ \ No newline at end of file diff --git a/guide/creating-your-project/project-info.html b/guide/creating-your-project/project-info.html index 4bdb826c..08ca54df 100644 --- a/guide/creating-your-project/project-info.html +++ b/guide/creating-your-project/project-info.html @@ -5,12 +5,12 @@ Project Info | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Project Info ​

This is a JSON file containing information that describes your project and configures parts of how Profectus should represent it.

It is stored at /src/data/projInfo.json.

Basic Config ​

title ​

  • Type: string
  • Default: Profectus

The name of the project, which will appear in the info tab and the header, if enabled. The page title will also be set to this value.

description ​

  • Type: string
  • Default: A project made in Profectus

A description of the project, which will be used when the project is installed as a Progressive Web Application.

id ​

  • Type: string
  • Default: ""

This is a unique ID used when saving player data. Changing this will effectively erase all save data for all players.

WARNING

This ID MUST be unique to your project, and should not be left as the default value. Otherwise, your project may use the save data from another project and cause issues for both projects.

author ​

  • Type: string
  • Default: ""

The author of the project, which will appear in the info tab.

discordName ​

  • Type: string
  • Default: The Paper Pilot Community

The text to display for the discord server to point users to. This will appear when hovering over the discord icon, inside the info tab, the game over screen, as well as the NaN detected screen.

By default, this is The Paper Pilot Community, which can act as a catch-all for any Profectus projects without their own servers. If you change the discord server with your own, The Paper Pilot Community will still display underneath the custom server when hovering over the discord icon and within the info tab. Those places will also contain a link to the Modding Tree discord server.

  • Type: string
  • Default: https://discord.gg/WzejVAx

The link for the discord server to point users to. See discordName for more details.

Version Config ​

versionNumber ​

  • Type: string
  • Default: 0.0

The current version of the project loaded. If the player data was last saved in a different version of the project, fixOldSave will be run, so you can perform any save migrations necessary. This will also appear in the nav, the info tab, and the game over screen.

versionTitle ​

  • Type: string
  • Default: Initial Commit

The display name for the current version of the project loaded. This will also appear in the nav, the info tab, and the game over screen unless set to an empty string.

Display Config ​

allowGoBack ​

  • Type: boolean
  • Default: true

Whether or not to allow tabs (besides the first) to display a "back" button to close them (and any other tabs to the right of them).

defaultShowSmall ​

  • Type: boolean
  • Default: false

Whether or not to allow resources to display small values (<.001). If false they'll just display as 0. Individual resources can also be configured to override this value.

defaultDecimalsShown ​

  • Type: number
  • Default: 2

Default precision to display numbers at when passed into format. Individual format calls can override this value, and resources can be configured with a custom precision as well.

useHeader ​

  • Type: boolean
  • Default: true

Whether or not to display the nav as a header at the top of the screen. If disabled, the nav will appear on the left side of the screen laid over the first tab.

  • Type: string | null
  • Default: null

A path to an image file to display as the logo of the app. If null, the title will be shown instead. This will appear in the nav when useHeader is true.

  • Type: string
  • Default: ""

A path to an image file to display as the logo of the app within the info tab. If left blank no logo will be shown.

initialTabs ​

  • Type: string[]
  • Default: ["main"]

The list of initial tabs to display on new saves. This value must have at least one element. Each element should be the ID of the layer to display in that tab.

Advanced Config ​

maxTickLength ​

  • Type: number
  • Default: 3600

The longest duration a single tick can be, in seconds. When calculating things like offline time, a single tick will be forced to be this amount or lower. This will make calculating offline time spread out across many ticks as necessary. The default value is 1 hour.

offlineLimit ​

  • Type: number
  • Default: 1

The max amount of time that can be stored as offline time, in hours.

enablePausing ​

  • Type: boolean
  • Default: true

Whether or not to allow the player to pause the game. Turning this off disables the toggle from the options menu as well as the NaN screen. Developers can still manually pause by just running player.devSpeed = 0 in console (or = 1 to resume).

exportEncoding ​

  • Type: base64 | lz | plain
  • Default: base64

The encoding to use when exporting to the clipboard. Plain-text is fast to generate but is easiest for the player to manipulate and cheat with. Base 64 is slightly slower and the string will be longer but will offer a small barrier to people trying to cheat. LZ-String is the slowest method, but produces the smallest strings and still offers a small barrier to those trying to cheat. Some sharing platforms like pastebin may automatically delete base64 encoded text, and some sites might not support all the characters used in lz-string exports.

- +
Skip to content
On this page

Project Info ​

This is a JSON file containing information that describes your project and configures parts of how Profectus should represent it.

It is stored at /src/data/projInfo.json.

Basic Config ​

title ​

  • Type: string
  • Default: Profectus

The name of the project, which will appear in the info tab and the header, if enabled. The page title will also be set to this value.

description ​

  • Type: string
  • Default: A project made in Profectus

A description of the project, which will be used when the project is installed as a Progressive Web Application.

id ​

  • Type: string
  • Default: ""

This is a unique ID used when saving player data. Changing this will effectively erase all save data for all players.

WARNING

This ID MUST be unique to your project, and should not be left as the default value. Otherwise, your project may use the save data from another project and cause issues for both projects.

author ​

  • Type: string
  • Default: ""

The author of the project, which will appear in the info tab.

discordName ​

  • Type: string
  • Default: The Paper Pilot Community

The text to display for the discord server to point users to. This will appear when hovering over the discord icon, inside the info tab, the game over screen, as well as the NaN detected screen.

By default, this is The Paper Pilot Community, which can act as a catch-all for any Profectus projects without their own servers. If you change the discord server with your own, The Paper Pilot Community will still display underneath the custom server when hovering over the discord icon and within the info tab. Those places will also contain a link to the Modding Tree discord server.

  • Type: string
  • Default: https://discord.gg/WzejVAx

The link for the discord server to point users to. See discordName for more details.

Version Config ​

versionNumber ​

  • Type: string
  • Default: 0.0

The current version of the project loaded. If the player data was last saved in a different version of the project, fixOldSave will be run, so you can perform any save migrations necessary. This will also appear in the nav, the info tab, and the game over screen.

versionTitle ​

  • Type: string
  • Default: Initial Commit

The display name for the current version of the project loaded. This will also appear in the nav, the info tab, and the game over screen unless set to an empty string.

Display Config ​

allowGoBack ​

  • Type: boolean
  • Default: true

Whether or not to allow tabs (besides the first) to display a "back" button to close them (and any other tabs to the right of them).

defaultShowSmall ​

  • Type: boolean
  • Default: false

Whether or not to allow resources to display small values (<.001). If false they'll just display as 0. Individual resources can also be configured to override this value.

defaultDecimalsShown ​

  • Type: number
  • Default: 2

Default precision to display numbers at when passed into format. Individual format calls can override this value, and resources can be configured with a custom precision as well.

useHeader ​

  • Type: boolean
  • Default: true

Whether or not to display the nav as a header at the top of the screen. If disabled, the nav will appear on the left side of the screen laid over the first tab.

  • Type: string | null
  • Default: null

A path to an image file to display as the logo of the app. If null, the title will be shown instead. This will appear in the nav when useHeader is true.

  • Type: string
  • Default: ""

A path to an image file to display as the logo of the app within the info tab. If left blank no logo will be shown.

initialTabs ​

  • Type: string[]
  • Default: ["main"]

The list of initial tabs to display on new saves. This value must have at least one element. Each element should be the ID of the layer to display in that tab.

Advanced Config ​

maxTickLength ​

  • Type: number
  • Default: 3600

The longest duration a single tick can be, in seconds. When calculating things like offline time, a single tick will be forced to be this amount or lower. This will make calculating offline time spread out across many ticks as necessary. The default value is 1 hour.

offlineLimit ​

  • Type: number
  • Default: 1

The max amount of time that can be stored as offline time, in hours.

enablePausing ​

  • Type: boolean
  • Default: true

Whether or not to allow the player to pause the game. Turning this off disables the toggle from the options menu as well as the NaN screen. Developers can still manually pause by just running player.devSpeed = 0 in console (or = 1 to resume).

exportEncoding ​

  • Type: base64 | lz | plain
  • Default: base64

The encoding to use when exporting to the clipboard. Plain-text is fast to generate but is easiest for the player to manipulate and cheat with. Base 64 is slightly slower and the string will be longer but will offer a small barrier to people trying to cheat. LZ-String is the slowest method, but produces the smallest strings and still offers a small barrier to those trying to cheat. Some sharing platforms like pastebin may automatically delete base64 encoded text, and some sites might not support all the characters used in lz-string exports.

+ \ No newline at end of file diff --git a/guide/creating-your-project/themes.html b/guide/creating-your-project/themes.html index 660fa13d..8faa01ed 100644 --- a/guide/creating-your-project/themes.html +++ b/guide/creating-your-project/themes.html @@ -5,12 +5,12 @@ Themes | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Themes ​

Themes are objects that change how the project's interface should look. This is done mostly by changing the values of various CSS variables. You can look at the existing themes as a reference for the kind of values these CSS variables expect. They can also set various theme options that change how parts of the screen are laid out, which are described below.

They are stored in /src/data/themes.ts.

Modifying Themes ​

You can add a theme by adding a property to the Themes enum and then including the theme in the exported object. It's recommended to use the spread operator if you'd like to have a theme look like another, but override specific options / CSS variables.

Themes added in this way will be automatically included in the Themes dropdown in the Options tab. Removing themes from the enum and exported object will similarly hide them from the dropdown.

If you'd like to change which theme is the default, you may modify the initial player settings object in the /src/game/settings.ts file. Keep in mind you'll also want to change it in the hardResetSettings function in the same file.

Theme Options ​

floatingTabs ​

  • Type: boolean

Toggles whether to display tab buttons in a tab list, similar to how a browser displays tabs; or to display them as floating buttons, similar to how TMT displays buttons.

mergeAdjacent ​

  • Type: boolean

If true, elements in a row or column will have their margins removed and border radiuses set to 0 between elements. This will cause the elements to appear as segments in a single object.

Currently, this can only merge in a single dimension. Rows of columns or columns of rows will not merge into a single rectangular object.

- +
Skip to content
On this page

Themes ​

Themes are objects that change how the project's interface should look. This is done mostly by changing the values of various CSS variables. You can look at the existing themes as a reference for the kind of values these CSS variables expect. They can also set various theme options that change how parts of the screen are laid out, which are described below.

They are stored in /src/data/themes.ts.

Modifying Themes ​

You can add a theme by adding a property to the Themes enum and then including the theme in the exported object. It's recommended to use the spread operator if you'd like to have a theme look like another, but override specific options / CSS variables.

Themes added in this way will be automatically included in the Themes dropdown in the Options tab. Removing themes from the enum and exported object will similarly hide them from the dropdown.

If you'd like to change which theme is the default, you may modify the initial player settings object in the /src/game/settings.ts file. Keep in mind you'll also want to change it in the hardResetSettings function in the same file.

Theme Options ​

floatingTabs ​

  • Type: boolean

Toggles whether to display tab buttons in a tab list, similar to how a browser displays tabs; or to display them as floating buttons, similar to how TMT displays buttons.

mergeAdjacent ​

  • Type: boolean

If true, elements in a row or column will have their margins removed and border radiuses set to 0 between elements. This will cause the elements to appear as segments in a single object.

Currently, this can only merge in a single dimension. Rows of columns or columns of rows will not merge into a single rectangular object.

+ \ No newline at end of file diff --git a/guide/creating-your-project/utils.html b/guide/creating-your-project/utils.html index 4d292453..d7ce2c80 100644 --- a/guide/creating-your-project/utils.html +++ b/guide/creating-your-project/utils.html @@ -5,12 +5,12 @@ Utilities | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Utilities ​

There are often concepts that aren't inherent to a single feature, but rather work with joining different features together. For example, a reset clickable that activates a conversion and resets a tree, which happens to be a common use case but isn't inherent to clickables, conversions, or trees.

These are perfect situations for utilities, and so to encourage creators to learn to identify and take advantage of these situations, a file called src/data/common.tsx has been created to demo some of the more common utility functions a project might use. Adding new utilities to this file is encouraged, as is creating utils in general. It also works as a good stepping stone to creating your own features.

- +
Skip to content
On this page

Utilities ​

There are often concepts that aren't inherent to a single feature, but rather work with joining different features together. For example, a reset clickable that activates a conversion and resets a tree, which happens to be a common use case but isn't inherent to clickables, conversions, or trees.

These are perfect situations for utilities, and so to encourage creators to learn to identify and take advantage of these situations, a file called src/data/common.tsx has been created to demo some of the more common utility functions a project might use. Adding new utilities to this file is encouraged, as is creating utils in general. It also works as a good stepping stone to creating your own features.

+ \ No newline at end of file diff --git a/guide/getting-started/examples.html b/guide/getting-started/examples.html index d652c0be..8084eb1c 100644 --- a/guide/getting-started/examples.html +++ b/guide/getting-started/examples.html @@ -5,12 +5,12 @@ Example Projects | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Example Projects ​

Advent Incremental Profectus 0.5 ​

View Source | View Project

An incremental game with 25 different layers of content. A good example of what a large project looks like. There's also a partial port to 0.6 available here.

Primordia Profectus 0.5 ​

View Source | View Project

A "The Prestige Tree" style incremental game, developed by the original creator of TPT.

TMT-Demo Profectus 0.6 ​

View Source | View Project

A project loosely based off the Demo project for TMT. Uses most of the different features of Profectus, but doesn't have any real gameplay.

- +
Skip to content
On this page

Example Projects ​

Advent Incremental Profectus 0.5 ​

View Source | View Project

An incremental game with 25 different layers of content. A good example of what a large project looks like. There's also a partial port to 0.6 available here.

Primordia Profectus 0.5 ​

View Source | View Project

A "The Prestige Tree" style incremental game, developed by the original creator of TPT.

TMT-Demo Profectus 0.6 ​

View Source | View Project

A project loosely based off the Demo project for TMT. Uses most of the different features of Profectus, but doesn't have any real gameplay.

+ \ No newline at end of file diff --git a/guide/getting-started/setup.html b/guide/getting-started/setup.html index 5a2d7160..d76c13b7 100644 --- a/guide/getting-started/setup.html +++ b/guide/getting-started/setup.html @@ -5,12 +5,12 @@ Setting Up | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Setting Up ​

Profectus requires a Node.js development environment for working on a project. If you are comfortable with the command line, a local development environment is recommended.

Local Development ​

For local development, you will need the following tools:

Create a new project from the Profectus repository by clicking the "Use this template" button. Then, clone the repository locally using the provided link.

INFO

The template repository allows easy creation of multiple projects from one repository. However, updating an existing project to a newer version of Profectus can be challenging. Consider updating Profectus before starting development to avoid issues with unrelated histories.

It's recommended to create a new Git branch for development, allowing you to push changes without affecting the live build. The GitHub workflow will automatically rebuild the page when you push to the main branch.

Next, install Profectus' dependencies by running npm install. Run npm run serve to start a local server hosting your project. The site will automatically reload as you modify files.

Also, follow the steps to update Profectus before starting to make future updates easier without worrying about unrelated histories.

Deploying ​

Using Git, the repository's workflow action automates deployment. However, you need to grant write permissions for the action in the repository settings. Go to Actions, General, Workflow permissions, and select "Read and write permissions".

workflow permissions

To deploy, push changes to the main branch. The site will be updated automatically in a few minutes. Check progress or errors from the Actions tab on your repository.

actions button

Enable GitHub Pages in the repo settings to host the generated site. Select the gh-pages branch. Perform this step once. This will automatically start another GitHub action to deploy the website.

github pages

Upon action completion, your project should be available at https://<YOUR_GITHUB_USERNAME>.github.io/<YOUR_REPO_NAME>/. For example, the TMT Demo project hosted at https://github.com/profectus-engine/TMT-Demo is available at https://profectus-engine.github.io/TMT-Demo/.

Visual Studio Code Setup ​

If you don't have a preferred IDE, Profectus is developed in Visual Studio Code and is known to work well with it.

Recommendations:

  • Use Take Over Mode for proper type analysis
  • Turn off .value autocomplete by running the Preferences: Open Settings command and setting volar.autoCompleteRefs to false
  • Disable emmet expansions by setting emmet.showExpandedAbbreviation to "never", also in the preferences
  • Install the Vitest VS Code extension for running and debugging unit tests (if working on the engine itself)

Replit ​

As an alternative to local development, you may use Replit. Replit sets up your development and hosts your project.

On the free plan, you'll face limitations, and the program may need occasional startups.

To create a Profectus project on Replit, all you have to do is click this button:

Run on Repl.it

Click the "Run" button at the top of the screen to start development. This will also make the project publicly accessible, essentially auto-deploying it. However, this means you cannot separate your development and production environments.

Glitch ​

Glitch is a site similar to Replit, with many of the same pros and cons. To create a Profectus project on Glitch, select "New Project", "Import from GitHub", and enter profectus-engine/Profectus. The new project will be automatically configured and ready to go.

- +
Skip to content
On this page

Setting Up ​

Profectus requires a Node.js development environment for working on a project. If you are comfortable with the command line, a local development environment is recommended.

Local Development ​

For local development, you will need the following tools:

Create a new project from the Profectus repository by clicking the "Use this template" button. Then, clone the repository locally using the provided link.

INFO

The template repository allows easy creation of multiple projects from one repository. However, updating an existing project to a newer version of Profectus can be challenging. Consider updating Profectus before starting development to avoid issues with unrelated histories.

It's recommended to create a new Git branch for development, allowing you to push changes without affecting the live build. The GitHub workflow will automatically rebuild the page when you push to the main branch.

Next, install Profectus' dependencies by running npm install. Run npm run serve to start a local server hosting your project. The site will automatically reload as you modify files.

Also, follow the steps to update Profectus before starting to make future updates easier without worrying about unrelated histories.

Deploying ​

Using Git, the repository's workflow action automates deployment. However, you need to grant write permissions for the action in the repository settings. Go to Actions, General, Workflow permissions, and select "Read and write permissions".

workflow permissions

To deploy, push changes to the main branch. The site will be updated automatically in a few minutes. Check progress or errors from the Actions tab on your repository.

actions button

Enable GitHub Pages in the repo settings to host the generated site. Select the gh-pages branch. Perform this step once. This will automatically start another GitHub action to deploy the website.

github pages

Upon action completion, your project should be available at https://<YOUR_GITHUB_USERNAME>.github.io/<YOUR_REPO_NAME>/. For example, the TMT Demo project hosted at https://github.com/profectus-engine/TMT-Demo is available at https://profectus-engine.github.io/TMT-Demo/.

Visual Studio Code Setup ​

If you don't have a preferred IDE, Profectus is developed in Visual Studio Code and is known to work well with it.

Recommendations:

  • Use Take Over Mode for proper type analysis
  • Turn off .value autocomplete by running the Preferences: Open Settings command and setting volar.autoCompleteRefs to false
  • Disable emmet expansions by setting emmet.showExpandedAbbreviation to "never", also in the preferences
  • Install the Vitest VS Code extension for running and debugging unit tests (if working on the engine itself)

Replit ​

As an alternative to local development, you may use Replit. Replit sets up your development and hosts your project.

On the free plan, you'll face limitations, and the program may need occasional startups.

To create a Profectus project on Replit, all you have to do is click this button:

Run on Repl.it

Click the "Run" button at the top of the screen to start development. This will also make the project publicly accessible, essentially auto-deploying it. However, this means you cannot separate your development and production environments.

Glitch ​

Glitch is a site similar to Replit, with many of the same pros and cons. To create a Profectus project on Glitch, select "New Project", "Import from GitHub", and enter profectus-engine/Profectus. The new project will be automatically configured and ready to go.

+ \ No newline at end of file diff --git a/guide/getting-started/updating.html b/guide/getting-started/updating.html index 9153347b..24ba2076 100644 --- a/guide/getting-started/updating.html +++ b/guide/getting-started/updating.html @@ -5,12 +5,12 @@ Updating Profectus | Profectus - + - + @@ -21,11 +21,11 @@ -
Skip to content
On this page

Updating Profectus ​

Github ​

Due to Profectus being a template repository, your projects do not share a git history with Profectus. In order to update changes, you will need to run the following:

bash
git remote add template https://github.com/profectus-engine/Profectus
+    
Skip to content
On this page

Updating Profectus ​

Github ​

Due to Profectus being a template repository, your projects do not share a git history with Profectus. To update changes, you will need to run the following:

bash
git remote add template https://github.com/profectus-engine/Profectus
 git fetch --all
-git merge template/main --allow-unrelated-histories

The first command only has to be performed once. The third command may require you to merge conflicts between code both you and Profectus have changed - however, due to the modularity of Profectus, this should be fairly rare. Unfortunately, due to the unrelated histories the first time you do this every change will be marked as a conflict, and you'll need to accept each one.

Replit ​

The sidebar has a tab labelled "Version Control", which you can use to merge all changes made to Profectus into your project. Unfortunately, replit does not have a merge tool so this process may irrecoverably erase changes you've made - I'd recommend making a backup first.

Glitch ​

Unfortunately glitch does not provide any method by which to update a project from a github repository. If you've only changed things in the data folder you may consider creating a new project, importing the current version of Profectus, and then placing your data folder in the new project.

- +git merge template/main --allow-unrelated-histories

The first command only has to be performed once. The third command may require you to merge conflicts between code both you and Profectus have changed - however, due to the modularity of Profectus, this should be fairly rare. Unfortunately, due to the unrelated histories the first time you do this every change will be marked as a conflict, and you'll need to accept each one.

Replit ​

The sidebar has a tab labeled "Version Control", which you can use to merge all changes made to Profectus into your project. Unfortunately, Replit does not have a merge tool so this process may irrecoverably erase changes you've made - I'd recommend making a backup first.

Glitch ​

Unfortunately, Glitch does not provide any method by which to update a project from a Github repository. If you've only changed things in the data folder you may consider creating a new project, importing the current version of Profectus, and then placing your data folder in the new project.

+ \ No newline at end of file diff --git a/guide/important-concepts/coercable.html b/guide/important-concepts/coercable.html index 3d4d2a96..37a5592f 100644 --- a/guide/important-concepts/coercable.html +++ b/guide/important-concepts/coercable.html @@ -5,12 +5,12 @@ Coercable Components | Profectus - + - + @@ -21,7 +21,7 @@ -
Skip to content
On this page

Coercable Components ​

Most times a feature has some sort of dynamic display, it'll allow you to pass a "Coercable Component", or rather, something that can be coerced into a Vue component. This page goes over the different types of values you can use

Template Strings ​

If you provide a string, it will be wrapped in a component using it as the template. This is the simplest method, although not suitable for complex displays, and realistically cannot use Vue components as none are registered globally (by default). Recommended for static or simple dynamic displays, such as displays on features.

Template strings need to be wrapped in some HTML element. By default, they'll be wrapped in a <span> element, although certain features may wrap things in div or header elements instead, as appropriate.

Render Functions (JSX) ​

You can provide a render function and it will be wrapped in a component as well. The intended use for this is to write JSX inside a function, which will get automatically converted into a render function. You can read more about that process on the Vue docs on Render Functions & JSX. Note that JSX must be returned in a function - it does not work "standalone". The CoercableComponent type will enforce this for you.

JSX can use imported components, making this suited for writing the display properties on things like Tabs or Layers. There are also built-in functions to render features (either as their own or in a layout via renderRow and renderCol), so you don't need to import the Vue component for every feature you plan on using.

Typically a feature will accept a Computable<CoercableComponent>, which means functions would (normally) be wrapped in a computed (see Computable for more details). This would break render functions, so when passing a render function as a CoercableComponent it must be specially marked that it shouldn't be cached. You can use the built-in jsx function to mark a function for you.

Example ​

ts
{
+    
Skip to content
On this page

Coercable Components ​

Most times a feature has some sort of dynamic display, it'll allow you to pass a "Coercable Component", or rather, something that can be coerced into a Vue component. This page goes over the different types of values you can use

Template Strings ​

If you provide a string, it will be wrapped in a component using it as the template. This is the simplest method, although not suitable for complex displays, and realistically cannot use Vue components as none are registered globally (by default). Recommended for static or simple dynamic displays, such as displays on features.

Template strings need to be wrapped in some HTML element. By default, they'll be wrapped in a <span> element, although certain features may wrap things in div or header elements instead, as appropriate.

Render Functions (JSX) ​

You can provide a render function and it will be wrapped in a component as well. The intended use for this is to write JSX inside a function, which will get automatically converted into a render function. You can read more about that process on the Vue docs on Render Functions & JSX. Note that JSX must be returned in a function - it does not work "standalone". The CoercableComponent type will enforce this for you.

JSX can use imported components, making this suited for writing the display properties on things like Tabs or Layers. There are also built-in functions to render features (either as their own or in a layout via renderRow and renderCol), so you don't need to import the Vue component for every feature you plan on using.

Typically a feature will accept a Computable<CoercableComponent>, which means functions would (normally) be wrapped in a computed (see Computable for more details). This would break render functions, so when passing a render function as a CoercableComponent it must be specially marked that it shouldn't be cached. You can use the built-in jsx function to mark a function for you.

Example ​

ts
{
 	display: jsx(() => (
         <>
             <MainDisplay resource={points} color={color} />
@@ -29,9 +29,9 @@
             {renderRow(upgrade1, upgrade2, upgrade3)}
         </>
     )),
-}

Components ​

This one might be the most obvious, but you can also just give it a Vue component to display outright. Keep in mind it will not be passed any props, so it should not depend on any. You can read more about creating Vue components on Components Basics.

- +}

Components ​

This one might be the most obvious, but you can also just give it a Vue component to display outright. Keep in mind it will not be passed any props, so it should not depend on any. You can read more about creating Vue components on Components Basics.

+ \ No newline at end of file diff --git a/guide/important-concepts/features.html b/guide/important-concepts/features.html index 13337270..45368d94 100644 --- a/guide/important-concepts/features.html +++ b/guide/important-concepts/features.html @@ -5,12 +5,12 @@ Features | Profectus - + - + @@ -21,7 +21,7 @@ -
Skip to content
On this page

Features ​

A layer is made up of features. There are many types of features included in Profectus, and more can be created once you become familiar with the engine.

To create a feature, the feature type will have one or more functions to help you. They'll typically look something like this:

ts
const addGainUpgrade = createUpgrade(() => ({
+    
Skip to content
On this page

Features ​

A layer is made up of features. There are many types of features included in Profectus, and more can be created once you become familiar with the engine.

To create a feature, the feature type will have one or more functions to help you. They'll typically look something like this:

ts
const addGainUpgrade = createUpgrade(() => ({
     display: {
         title: "Generator of Genericness",
         description: "Gain 1 point every second"
@@ -29,9 +29,9 @@
     cost: 1,
     resource: points
 }));

The result will be a lazy proxy of the feature being created. The feature can then be used throughout the rest of the layer. The main thing to keep in mind when creating features is that they should typically be included in the layer object that gets returned. If a feature has any persistent refs they must be included or else they will not have their values saved and loaded correctly.

While the structure of layers is intentionally left up to the creator, it is recommended to avoid storing them in arrays. If you ever remove an upgrade from an array, or add an upgrade in between others, then it will interfere with the save data of existing users. You can manually fix these issues in fixOldSave, but it's recommended to avoid the error entirely.

Since usually you want to access a specific feature, storing them in an object is much more reliable and makes the code easier to read. For things like checking number of upgrades bought, for example, you can still use Object.values to get an array of the objects instead.

Example ​

ts
const upgrades = { addGainUpgrade, gainMultUpgrade, upgMultUpgrade };
-const numUpgrades = computed(() => Object.values(upgrades).length);

Tree Shaking ​

Since Profectus takes advantage of tree shaking, and type of feature that is not used will not be included in the output of the project. That means users have less code to download, a slight performance boost, and you don't need to worry about feature type-specific settings appearing (such as whether to show maxed challenges).

It should be noted that a couple features depend on each other, such as Buyables depending on Clickables. That means you may see features included in the output despite not directly using them. Some features, such as Links and Tooltips, are used by the engine itself and will always be included in the output.

- +const numUpgrades = computed(() => Object.values(upgrades).length);

Tree Shaking ​

Since Profectus takes advantage of tree shaking, and type of feature that is not used will not be included in the output of the project. That means users have less code to download, a slight performance boost, and you don't need to worry about feature type-specific settings appearing (such as whether to show maxed challenges).

It should be noted that a couple features depend on each other, such as Buyables depending on Clickables. That means you may see features included in the output despite not directly using them. Some features, such as Links and Tooltips, are used by the engine itself and will always be included in the output.

+ \ No newline at end of file diff --git a/guide/important-concepts/formulas.html b/guide/important-concepts/formulas.html index 3d77051a..c3e20194 100644 --- a/guide/important-concepts/formulas.html +++ b/guide/important-concepts/formulas.html @@ -5,12 +5,12 @@ Formulas | Profectus - + - + @@ -21,7 +21,7 @@ -
Skip to content
On this page

Formulas ​

Profectus utilizes formulas for various features, such as increasing requirements for repeatables and challenges or determining resource gains in conversions. These formulas often need to be inverted or integrated to enable features like buying multiple levels of a repeatable at once or determining when a conversion will increase resource gains. The Formula class can handle these operations, supporting every function Decimal does, while tracking the operations internally.

For example, a cost function like Decimal.pow(this.amount, 1.05).times(100) can be represented using a Formula: Formula.variable(this.amount).pow(1.05).times(100).

ts
const myRepeatable = createRepeatable(function (this: GenericRepeatable) {
+    
Skip to content
On this page

Formulas ​

Profectus utilizes formulas for various features, such as increasing requirements for repeatables and challenges or determining resource gains in conversions. These formulas often need to be inverted or integrated to enable features like buying multiple levels of a repeatable at once or determining when a conversion will increase resource gains. The Formula class can handle these operations, supporting every function Decimal does, while tracking the operations internally.

For example, a cost function like Decimal.pow(this.amount, 1.05).times(100) can be represented using a Formula: Formula.variable(this.amount).pow(1.05).times(100).

ts
const myRepeatable = createRepeatable(function (this: GenericRepeatable) {
     return {
         requirements: createCostRequirement(() => ({
             resource: points,
@@ -29,9 +29,9 @@
         })),
         maximize: true
     };
-});

Limitations ​

Single Variable ​

For inverting and integrating, formulas should have a single variable, which serves as the input. Although other parts of the formula can be computed values, they must not be dependent on the input variable for inverting or integrating purposes. Formulas work correctly as long as changing other parts of the formula doesn't affect the input variable.

Invertibility and Integrability ​

Certain operations may not support inverting or integrating. Functions such as rounding or clamping are non-invertible, while others like super-log are non-integrable. You may only use a single complex operation in addition to add, sub, mult, and div operations. For formulas with two complex operations, a custom formula is required.

Spending Resources ​

When working with formulas, the spendResources property determines whether the formula needs to be invertible or integrable. The property is used in two utilities: calculateMaxAffordable and calculateCost. These utilities are ultimately employed wherever formulas are used, such as in cost requirements or conversions.

Spending resources refers to whether max affordability and cost calculations should account for resources spent. If spending resources is set to true, the formula will be integrated and inverted, albeit with certain limitations. For example, exponential modifiers and soft caps can make a formula non-integrable.

Consider a simple formula that returns the input value as the cost. For example, to make three sequential purchases, the costs would be 1, 2, and 3, totaling 6. When resources are spent, making three purchases in a single operation will cost a total of 6. However, if resources are not spent, the cost would only be 3, the cost of the last purchase. Accounting for resources being spent means that the overall cost calculation reflects the cumulative costs of multiple purchases.

Integration in this context is an estimation, as it calculates the area under a continuous curve, while actual purchases occur at integer values. This means that calculating max affordable might overshoot and the cost at that amount might undershoot. To help address this, the summedPurchases property can be used, which manually sums the last X purchases, reducing the error margin. This also ensures higher accuracy when the player makes fewer purchases at once, which is when accuracy is most relevant. For larger numbers of purchases, a slight overshoot or undershoot is typically acceptable.

Modifiers ​

When applying changes to a formula using modifiers, use the modifierToFormula utility to apply the modifier while preserving invertibility if the modifier is invertible.

Custom Formulas ​

If the existing functions are insufficient for your needs, create a custom formula by implementing your own evaluation, inversion, and integration functions. Use the operations in src/game/formulas/operations.ts as reference. For spending resources, the integral formula must be invertible.

- +});

Limitations ​

Single Variable ​

For inverting and integrating, formulas should have a single variable, which serves as the input. Although other parts of the formula can be computed values, they must not be dependent on the input variable for inverting or integrating purposes. Formulas work correctly as long as changing other parts of the formula doesn't affect the input variable.

Invertibility and Integrability ​

Certain operations may not support inverting or integrating. Functions such as rounding or clamping are non-invertible, while others like super-log are non-integrable. You may only use a single complex operation in addition to add, sub, mult, and div operations. For formulas with two complex operations, a custom formula is required.

Spending Resources ​

When working with formulas, the spendResources property determines whether the formula needs to be invertible or integrable. The property is used in two utilities: calculateMaxAffordable and calculateCost. These utilities are ultimately employed wherever formulas are used, such as in cost requirements or conversions.

Spending resources refers to whether max affordability and cost calculations should account for resources spent. If spending resources is set to true, the formula will be integrated and inverted, albeit with certain limitations. For example, exponential modifiers and soft caps can make a formula non-integrable.

Consider a simple formula that returns the input value as the cost. For example, to make three sequential purchases, the costs would be 1, 2, and 3, totaling 6. When resources are spent, making three purchases in a single operation will cost a total of 6. However, if resources are not spent, the cost would only be 3, the cost of the last purchase. Accounting for resources being spent means that the overall cost calculation reflects the cumulative costs of multiple purchases.

Integration in this context is an estimation, as it calculates the area under a continuous curve, while actual purchases occur at integer values. This means that calculating max affordable might overshoot and the cost at that amount might undershoot. To help address this, the summedPurchases property can be used, which manually sums the last X purchases, reducing the error margin. This also ensures higher accuracy when the player makes fewer purchases at once, which is when accuracy is most relevant. For larger numbers of purchases, a slight overshoot or undershoot is typically acceptable.

Modifiers ​

When applying changes to a formula using modifiers, use the modifierToFormula utility to apply the modifier while preserving invertibility if the modifier is invertible.

Custom Formulas ​

If the existing functions are insufficient for your needs, create a custom formula by implementing your own evaluation, inversion, and integration functions. Use the operations in src/game/formulas/operations.ts as reference. For spending resources, the integral formula must be invertible.

+ \ No newline at end of file diff --git a/guide/important-concepts/layers.html b/guide/important-concepts/layers.html index 6615938d..7fa5ac3e 100644 --- a/guide/important-concepts/layers.html +++ b/guide/important-concepts/layers.html @@ -5,12 +5,12 @@ Layers | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Layers ​

Profectus content is organized into units called "Layers". When displaying content to the user, the screen will be divided into several tabs that each display the content of a layer. These layers are stored in /src/data/layers.

Each layer is ultimately a collection of different features, and a display function. While there are a couple reserved properties for layers, most of its structure is fully up to the creator.

Layers can be dynamically added or removed at any time, which also allows for effectively disabling or enabling content based on arbitrary conditions. Just make sure getInitialLayers can process the player save data object and determine which layers should be currently active.

Lazy Proxies ​

Layers (and features) are not actually created immediately. Instead, their options are gotten through a function which is then run the first time something inside the layer is accessed. This is a concept called lazy evaluation, which is also used for things like computed, and allows for features to reference each other without worrying about cyclical dependencies.

- +
Skip to content
On this page

Layers ​

Profectus content is organized into units called "Layers". When displaying content to the user, the screen will be divided into several tabs that each display the content of a layer. These layers are stored in /src/data/layers.

Each layer is ultimately a collection of different features, and a display function. While there are a couple reserved properties for layers, most of its structure is fully up to the creator.

Layers can be dynamically added or removed at any time, which also allows for effectively disabling or enabling content based on arbitrary conditions. Just make sure getInitialLayers can process the player save data object and determine which layers should be currently active.

Lazy Proxies ​

Layers (and features) are not actually created immediately. Instead, their options are gotten through a function which is then run the first time something inside the layer is accessed. This is a concept called lazy evaluation, which is also used for things like computed, and allows for features to reference each other without worrying about cyclical dependencies.

+ \ No newline at end of file diff --git a/guide/important-concepts/persistence.html b/guide/important-concepts/persistence.html index 12e087d1..916ebd56 100644 --- a/guide/important-concepts/persistence.html +++ b/guide/important-concepts/persistence.html @@ -5,12 +5,12 @@ Persistence | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Persistence ​

Persistence refers to data that is saved, so that it persists when the user closes the tab and opens it again in the future.

In Profectus, this is handled by creating "persistent refs", which act like refs but whose value is stored in an object that gets saved to localStorage. Other than that you can treat them like any other ref - when adding the layer, any persistent refs will automatically have their values updated to the ones saved in localStorage. If there isn't a saved value, it'll use the default value passed to the persistent ref constructor.

Many features in Profectus, such as upgrades, milestones, and challenges, internally have persistent refs to save things like whether the upgrade has been purchased, the milestone achieved, or the challenge completed. Creators can also create their own custom persistent refs to store any arbitrary (but serializable) data they need - that means Numbers (including big numbers), strings, booleans, or objects containing only serializable values. Another notable function is the resource constructor. If you pass a default value into its contructor, it will automatically create a persistent ref for that resource. If you pass in a ref, it will NOT make the ref persistent.

It's important for saving and loading these properties for these refs to be in a well known location. This is implemented based on the location of the persistent ref within a layer. That means its important that all persistent refs are located within the object returned by the createLayer options function. If a persistent ref is not within that object, it will NOT be saved and loaded - regardless of whether its a persistent ref within a feature, one you manually created, or otherwise.

Additionally, this structure should typically remain consistent between project versions. If a value is in a new location, it will not load the value from localStorage correctly. This is exacerbated if two values swap places, such as when an array is re-ordered. In the event a creator changes this structure anyways, the fixOldSave function can be used to migrate the old player save data to the new structure expected by the current version of the project.

- +
Skip to content
On this page

Persistence ​

Persistence refers to data that is saved, so that it persists when the user closes the tab and opens it again in the future.

In Profectus, this is handled by creating "persistent refs", which act like refs but whose value is stored in an object that gets saved to localStorage. Other than that you can treat them like any other ref - when adding the layer, any persistent refs will automatically have their values updated to the ones saved in localStorage. If there isn't a saved value, it'll use the default value passed to the persistent ref constructor.

Many features in Profectus, such as upgrades, milestones, and challenges, internally have persistent refs to save things like whether the upgrade has been purchased, the milestone achieved, or the challenge completed. Creators can also create their own custom persistent refs to store any arbitrary (but serializable) data they need - that means Numbers (including big numbers), strings, booleans, or objects containing only serializable values. Another notable function is the resource constructor. If you pass a default value into its contructor, it will automatically create a persistent ref for that resource. If you pass in a ref, it will NOT make the ref persistent.

It's important for saving and loading these properties for these refs to be in a well known location. This is implemented based on the location of the persistent ref within a layer. That means its important that all persistent refs are located within the object returned by the createLayer options function. If a persistent ref is not within that object, it will NOT be saved and loaded - regardless of whether its a persistent ref within a feature, one you manually created, or otherwise.

Additionally, this structure should typically remain consistent between project versions. If a value is in a new location, it will not load the value from localStorage correctly. This is exacerbated if two values swap places, such as when an array is re-ordered. In the event a creator changes this structure anyways, the fixOldSave function can be used to migrate the old player save data to the new structure expected by the current version of the project.

+ \ No newline at end of file diff --git a/guide/important-concepts/reactivity.html b/guide/important-concepts/reactivity.html index de093f5c..d7c7f8e7 100644 --- a/guide/important-concepts/reactivity.html +++ b/guide/important-concepts/reactivity.html @@ -5,12 +5,12 @@ Reactivity | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Reactivity ​

Profectus takes large advantage of Vue's reactivity system. It's recommended to read up on how refs and computed refs work. Ultimately this means that sometimes you'll need to type .value to get the actual value of something, but also you are able to pass things around by reference instead of by value. Indeed, it is recommended to only unwrap the actual value when you actually need it. .value is guaranteed to be correct and up to date only on the exact moment it is accessed.

With a proper IDE, such as Visual Studio Code, you should be able to see whether or not something is a ref or not from type hints. If in doubt, you can always wrap the property in an unref call.

Vue's reactivity is probably the "quirkiest" part of Profectus, and not even the documentation makes all of those quirks clear. It is recommend to read this thread of common misconceptions around Vue reactivity.

Computable ​

Most properties on features will accept Computable values. Computable values can either be a raw value, a ref to the value, or a function that returns the value. In the lattermost case it will be wrapped in computed, turning it into a ref. The feature type will handle it being a ref or a raw value by using unref when accessing those values. With type hints, your IDE should correctly identify these values as refs or raw values so you can treat them as the types they actually are.

Because functions are automatically wrapped in computed for many properties, it might be expected to happen to custom properties you add to a feature that isn't defined by the feature type. These functions will not be wrapped, and if you want it cached you should wrap it in a computed yourself. This does, however, allow you to include custom methods on a feature without worry.

- +
Skip to content
On this page

Reactivity ​

Profectus takes large advantage of Vue's reactivity system. It's recommended to read up on how refs and computed refs work. Ultimately this means that sometimes you'll need to type .value to get the actual value of something, but also you are able to pass things around by reference instead of by value. Indeed, it is recommended to only unwrap the actual value when you actually need it. .value is guaranteed to be correct and up to date only on the exact moment it is accessed.

With a proper IDE, such as Visual Studio Code, you should be able to see whether or not something is a ref or not from type hints. If in doubt, you can always wrap the property in an unref call.

Vue's reactivity is probably the "quirkiest" part of Profectus, and not even the documentation makes all of those quirks clear. It is recommend to read this thread of common misconceptions around Vue reactivity.

Computable ​

Most properties on features will accept Computable values. Computable values can either be a raw value, a ref to the value, or a function that returns the value. In the lattermost case it will be wrapped in computed, turning it into a ref. The feature type will handle it being a ref or a raw value by using unref when accessing those values. With type hints, your IDE should correctly identify these values as refs or raw values so you can treat them as the types they actually are.

Because functions are automatically wrapped in computed for many properties, it might be expected to happen to custom properties you add to a feature that isn't defined by the feature type. These functions will not be wrapped, and if you want it cached you should wrap it in a computed yourself. This does, however, allow you to include custom methods on a feature without worry.

+ \ No newline at end of file diff --git a/guide/important-concepts/requirements.html b/guide/important-concepts/requirements.html index 0322d6b8..3d45879c 100644 --- a/guide/important-concepts/requirements.html +++ b/guide/important-concepts/requirements.html @@ -5,12 +5,12 @@ Requirements | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Requirements ​

The requirements system in Profectus is designed to handle various conditions that must be met before certain actions or features can be accessed by the player. These conditions can include resource amounts, completed challenges, or other milestones within the game.

Creating Requirements ​

To create a requirement, you can use one of the provided utility functions like createCostRequirement, createVisibilityRequirement, or createBooleanRequirement. These functions return a Requirement object with specific properties that define the requirement conditions.

Using Requirements ​

Several features will have a requirements property that takes one or more requirements that must be fulfilled for a certain action to be performed with that feature.

When implementing requirements, you can use the displayRequirements utility. This utility is designed to give a human-readable string generated by the requirement(s) given, making it easier for players to understand the conditions needed to progress in the game. Typically features that support requirements will already use this utility internally.

You may need to "pay" requirements upon meeting their conditions and performing the associated action. This action typically involves spending resources or making other adjustments to the game state. The payRequirements function simplifies this process by handling the payment for one or more requirements, considering the number of levels to pay for. Additionally, custom pay functions like payByDivision and payByReset can be passed into createCostRequirement for more specialized cases.

Multi-Level Requirements ​

Requirements can have multiple "levels", which are typically used for things like multi-level challenges with scaling requirements. When checking if requirements are met, the requirementsMet function can be used. It accepts a single requirement or an array of requirements.

Requirements that are just on/off, such as boolean or visibility requirements, will count as infinite levels when in the same array. This allows you to combine different types of requirements in the same array and use the maxRequirementsMet function to calculate the maximum number of levels that could be acquired with the current requirement states.

- +
Skip to content
On this page

Requirements ​

The requirements system in Profectus is designed to handle various conditions that must be met before certain actions or features can be accessed by the player. These conditions can include resource amounts, completed challenges, or other milestones within the game.

Creating Requirements ​

To create a requirement, you can use one of the provided utility functions like createCostRequirement, createVisibilityRequirement, or createBooleanRequirement. These functions return a Requirement object with specific properties that define the requirement conditions.

Using Requirements ​

Several features will have a requirements property that takes one or more requirements that must be fulfilled for a certain action to be performed with that feature.

When implementing requirements, you can use the displayRequirements utility. This utility is designed to give a human-readable string generated by the requirement(s) given, making it easier for players to understand the conditions needed to progress in the game. Typically features that support requirements will already use this utility internally.

You may need to "pay" requirements upon meeting their conditions and performing the associated action. This action typically involves spending resources or making other adjustments to the game state. The payRequirements function simplifies this process by handling the payment for one or more requirements, considering the number of levels to pay for. Additionally, custom pay functions like payByDivision and payByReset can be passed into createCostRequirement for more specialized cases.

Multi-Level Requirements ​

Requirements can have multiple "levels", which are typically used for things like multi-level challenges with scaling requirements. When checking if requirements are met, the requirementsMet function can be used. It accepts a single requirement or an array of requirements.

Requirements that are just on/off, such as boolean or visibility requirements, will count as infinite levels when in the same array. This allows you to combine different types of requirements in the same array and use the maxRequirementsMet function to calculate the maximum number of levels that could be acquired with the current requirement states.

+ \ No newline at end of file diff --git a/guide/index.html b/guide/index.html index 5aa6d17d..d6262599 100644 --- a/guide/index.html +++ b/guide/index.html @@ -5,12 +5,12 @@ Introduction | Profectus - + - + @@ -21,9 +21,9 @@ -
Skip to content
On this page

Introduction ​

Profectus is a web-based game engine. You can write your content using many built in features, write your own features, and build up complex gameplay quickly and easily.

The purpose of creating profectus was to create an easy to use engine that does not create a ceiling for a programmer's personal growth. This engine will grow in complexity with you, empowering you to create increasingly complex designs and mechanics.

Should you use Profectus? ​

While this engine is intended to make game development (and web app development) easier, it still requires you to be comfortable with programming in general and javascript in particular. Fortunately, that is a solvable problem.

If you've never used Javascript before, learn-js.org is a good resource for learning the important concepts. If you'd like a more thorough lesson on all the ins and outs of web development, javascript.info and MDN's tutorials should have you covered. MDN is also a great resource to use as a reference - for example, if you want to know more about something and you google it, there'll typically be a MDN link that'll explain it thoroughly.

Beyond the basics, Profectus uses a modern web development pipeline, using tools like node, typescript, and JSX. While most of it should be relatively easy to pick up through context, if this becomes too complicated you may be interested in The Modding Tree, a predecessor of Profectus that uses plain old javascript.

Alternative Engines ​

There are many popular game engines out there, such as GameMaker Studio 2, Unity3D, Unreal Engine 4, and Godot, that are all general purpose and also more useful if you're planning on going into a career in game development. These are all more mature and robust game engines compared to Profectus, and are used by actual game development studios.

Profectus, on the other hand, is a very opinionated engine that is better at specific types of projects. Where the above engines will require you to design and create your own interfaces, menus, save management systems, etc. Profectus will include those out of the box. Profectus will also output games that run natively in the browser, and will typically be easier for players to play than traditional engines.

If you are not interested in programming but still want to get into game development, the above engines also all support "visual programming", which may be more amenable to you. Each engine will have varying levels of support, and of course with varying complexities, but ultimately any of these will help you learn the concepts of programming and game development, and all of them also offer traditional programming for when you think you're ready.

Design Philosophies ​

While absolute purity is impossible, design decisions have been and will continue to be made using these principles in mind.

  • An engine should be intuitive, and code readable without context
  • An engine should not constrain a creator
  • An engine should be consistent
  • An engine should be extensible, and those extensions sharable
  • An engine should be efficient
  • An engine should report issues early and thoroughly
  • Passing by reference is one honking great idea -- let's do more of that!
- +
Skip to content
On this page

Introduction ​

Profectus is a web-based game engine. You can write your content using many built in features, write your own features, and build up complex gameplay quickly and easily.

The purpose of creating profectus was to create an easy to use engine that does not create a ceiling for a programmer's personal growth. This engine will grow in complexity with you, empowering you to create increasingly complex designs and mechanics.

Should you use Profectus? ​

While this engine is intended to make game development (and web app development) easier, it still requires you to be comfortable with programming in general and javascript in particular. Fortunately, that is a solvable problem.

If you've never used Javascript before, learn-js.org is a good resource for learning the important concepts. If you'd like a more thorough lesson on all the ins and outs of web development, javascript.info and MDN's tutorials should have you covered. MDN is also a great resource to use as a reference - for example, if you want to know more about something and you google it, there'll typically be a MDN link that'll explain it thoroughly.

Beyond the basics, Profectus uses a modern web development pipeline, using tools like node, typescript, and JSX. While most of it should be relatively easy to pick up through context, if this becomes too complicated you may be interested in The Modding Tree, a predecessor of Profectus that uses plain old javascript.

Alternative Engines ​

There are many popular game engines out there, such as GameMaker Studio 2, Unity3D, Unreal Engine 4, and Godot, that are all general purpose and also more useful if you're planning on going into a career in game development. These are all more mature and robust game engines compared to Profectus, and are used by actual game development studios.

Profectus, on the other hand, is a very opinionated engine that is better at specific types of projects. Where the above engines will require you to design and create your own interfaces, menus, save management systems, etc. Profectus will include those out of the box. Profectus will also output games that run natively in the browser, and will typically be easier for players to play than traditional engines.

If you are not interested in programming but still want to get into game development, the above engines also all support "visual programming", which may be more amenable to you. Each engine will have varying levels of support, and of course with varying complexities, but ultimately any of these will help you learn the concepts of programming and game development, and all of them also offer traditional programming for when you think you're ready.

Design Philosophies ​

While absolute purity is impossible, design decisions have been and will continue to be made using these principles in mind.

  • An engine should be intuitive, and code readable without context
  • An engine should not constrain a creator
  • An engine should be consistent
  • An engine should be extensible, and those extensions sharable
  • An engine should be efficient
  • An engine should report issues early and thoroughly
  • Passing by reference is one honking great idea -- let's do more of that!
+ \ No newline at end of file diff --git a/guide/migrations/0-6.html b/guide/migrations/0-6.html new file mode 100644 index 00000000..18825c35 --- /dev/null +++ b/guide/migrations/0-6.html @@ -0,0 +1,55 @@ + + + + + + Migrating to Profectus 0.6 | Profectus + + + + + + + + + + + + + + + + + +
Skip to content
On this page

Migrating to Profectus 0.6 ​

Alongside the standard steps for Updating Profectus, this update contains numerous large or breaking changes. This guide will cover additional steps to follow after updating Profectus.

Fixing save data ​

This update introduces a major change in save data collection and storage. The change reduces save data size and fixes issues that can cause persistent values to reset to default values. Unfortunately, developers will need to mark which persistent value uses should be included in the save data and which are merely references. Let's go through an example:

ts
const flowers = createResource<DecimalSource>(0, "moly");
+const job = createJob(name, () => ({
+	/** snip **/
+    resource: flowers
+}));
+/** snip **/
+return {
+	/** snip **/
+	flowers,
+	job
+}

This example stores the same persistent data in two locations - flowers.flowers and flowers.job.resource. We can mark the latter usage as a reference by wrapping it in the noPersist utility, so it'd look like resource: noPersist(flowers). Otherwise, you will encounter an error in the console when the layer is loaded:

Persistence Error

Use these console errors to identify save data redundancy that needs correction. It is recommended to run the app and use the errors as a guide rather than trying to identify redundancies manually.

In addition to obtaining non-persistent refs from your persistent refs, you may need to wrap entire features containing persistent refs. For example, in Kronos, there are seven layers with "Job" features, which are combined into a dictionary in the main layer. This would cause the persistent state to appear in both layers, but you can wrap the dictionary in a noPersist call to bypass serialization, ensuring it only uses the jobs within their respective layers. Here's an example from Kronos:

ts
const jobs = noPersist({
+    flowers: flowers.job,
+    distill: distill.job,
+    study: study.job,
+    experiments: experiments.job,
+    generators: generators.job,
+    breeding: breeding.job,
+    rituals: rituals.job
+}) as Record<JobKeys, GenericJob>;

The time required for this step depends on your project structure. You can use this commit to see all the changes made for Kronos, which used a utility function for similar features that limited the number of required changes.

Breaking feature changes ​

This update includes several breaking feature changes. Here are a few minor fixes:

  • Buyables have been renamed to repeatables. Simply replace all instances of Buyable with Repeatable.
  • Achievements and Milestones have been merged. Add small: true to the options for existing achievements, and replace createMilestone calls with createAchievement.

Additionally, there are changes with more significant impact on your code: Requirements, Formulas, and Modifiers.

Requirements ​

Many features no longer use cost and resource properties but instead utilize a requirements property, which can consist of one or more Requirement objects. This makes it easier to support features requiring multiple currencies or other conditions. To update an existing cost requirement, wrap your current cost function and resource property as follows:

ts
requirements: createCostRequirement(() => ({
+    cost: () => Decimal.pow(priceRatio, unref(machines.amount)),
+    resource: generators.energeia,
+}))

Learn more about requirements and their capabilities in this guide page.

Formulas ​

Formulas are a new feature that allows for scaling cost or effect functions to be inverted or integrated without requiring the developer to code anything beyond the original formula. They can simplify support for "buy max" functionalities and make conversions easier to read and write.

Any cost requirements can now accept a formula instead of a cost function. The formula system can then handle determining how many purchases can be made at once. To continue the example above, here's how it would be rewritten:

ts
requirements: createCostRequirement(() => ({
+    cost: Formula.variable(machines.amount).pow_base(priceRatio),
+    resource: generators.energeia,
+}))

Conversions work a bit differently. Their scaling function system has been replaced with a formula property that takes a lambda - it provides the input formula variable, representing the base resource, as a parameter, and you return a formula representing the amount of the gain resource that could be converted. For example, if you previously had code like this:

ts
scaling: addSoftcap(createPolynomialScaling(10, 0.5), 1e100, 0.5)

you can now write this:

ts
formula: x => x.div(10).sqrt().step(1e100, f => f.sqrt())

Learn more about formulas and their capabilities in this guide page.

Modifiers ​

Modifiers now display negative effects in red. The current implementation assumes any value that reduces the result is negative, and the output being less than the base value is a negative outcome. However, for some modifiers, this may be the opposite of what you want - for example, a cooldown being reduced below its base value is a positive effect. For those modifiers, set the smallerIsBetter property to true. This property also exists when creating collapsible modifier sections.

Modifiers have renamed their revert property to invert to match the terms used by formulas. Update any custom modifiers you've created accordingly.

Fixing visibility changes ​

Visibility properties now work with booleans, which has several implications.

The showIf util is no longer necessary and has been removed - simply return the boolean value itself. In fact, if you were previously passing a computed boolean into showIf, you can now use the computed ref directly, reducing overhead. Here's an example:

ts
visibility() {
+    return showIf(spellExpMilestone.earned.value);
+}

This code can now be simplified to:

ts
visibility: spellExpMilestone.earned

Be aware that using the computed ref directly instead of a function can cause circular dependency issues. If you encounter one while simplifying a visibility property, resolve the issue or continue using a function, returning the computed ref value.

Custom Components ​

If you created any custom features with their own Vue components, you'll need to update them to support booleans for visibility values. This means replacing ALL equality checks for specific visibilities with calls to isVisible and isHidden.

While updating your component, you may need to cast the component to GenericComponent.

+ + + + \ No newline at end of file diff --git a/guide/recipes/particles.html b/guide/recipes/particles.html index 2205de4d..48816e57 100644 --- a/guide/recipes/particles.html +++ b/guide/recipes/particles.html @@ -5,12 +5,12 @@ Particles | Profectus - + - + @@ -21,7 +21,7 @@ -
Skip to content
On this page

Particles ​

This is a more comprehensive example based on the Kronos example used in the nodes docs. You will design a particle effect, make it appear on another feature, and ensure it adapts to the game state.

Design the Effect ​

First, design the particle effect. Profectus uses pixi-particles, and you can use the online particle effect editor here. However, the editor returns an older format of the particle effect emitter config, so you'll need to convert it like this:

ts
import myParticleEffect from "myParticleEffect.json";
+    
Skip to content
On this page

Particles ​

This is a more comprehensive example based on the Kronos example used in the nodes docs. You will design a particle effect, make it appear on another feature, and ensure it adapts to the game state.

Design the Effect ​

First, design the particle effect. Profectus uses pixi-particles, and you can use the online particle effect editor here. However, the editor returns an older format of the particle effect emitter config, so you'll need to convert it like this:

ts
import myParticleEffect from "myParticleEffect.json";
 import { upgradeConfig } from "@pixi/particle-emitter"
 
 const particleEffect = upgradeConfig(myParticleEffect);

Create the Particles ​

Next, create the particles feature and render it. You'll also want to track the bounding rect of the particle effects. Consider the following step:

ts
const particles = createParticles(() => ({
@@ -79,9 +79,9 @@
                 particles.boundingRect.value
             ])
         );
-};
- +};
+ \ No newline at end of file diff --git a/guide/recipes/save-progress.html b/guide/recipes/save-progress.html index a65a3905..eea3753c 100644 --- a/guide/recipes/save-progress.html +++ b/guide/recipes/save-progress.html @@ -5,12 +5,12 @@ Display Save Progress | Profectus - + - + @@ -21,7 +21,7 @@ -
Skip to content
On this page

Display Save Progress ​

This is a recipe to add a section to each save in the Saves Manager that will describe the amount of progress within that save. This can allow the player to more easily compare the saves to determine which is which. This would be in addition to the game version, last time played, and the name of the save itself, which can already be used for comparing saves without any configuration.

save progress display

This recipe will involve modifying the Save.vue file within your project to include an extra component in the saves details. It will go over creating the new component, how to work with the save data object, and then displaying the component.

Creating the component ​

Let's start with creating the coerced component. For this recipe we're going to make a couple assumptions about what this display should be. We'll assume the text will be more complex than displaying a single value. That is, at different stages of the game progress will be indicated by different metrics. We'll also assume it will be a single line of descriptive text - no images or anything else that would justify making a new .vue component. Breaking these assumptions is left as an exercise for the reader. But for now, with those assumptions in mind, we'll write our component (in the <script> tag in Save.vue) similar to this example:

ts
const progressDisplay = computeComponent(
+    
Skip to content
On this page

Display Save Progress ​

This is a recipe to add a section to each save in the Saves Manager that will describe the amount of progress within that save. This can allow the player to more easily compare the saves to determine which is which. This would be in addition to the game version, last time played, and the name of the save itself, which can already be used for comparing saves without any configuration.

save progress display

This recipe will involve modifying the Save.vue file within your project to include an extra component in the saves details. It will go over creating the new component, how to work with the save data object, and then displaying the component.

Creating the component ​

Let's start with creating the coerced component. For this recipe we're going to make a couple assumptions about what this display should be. We'll assume the text will be more complex than displaying a single value. That is, at different stages of the game progress will be indicated by different metrics. We'll also assume it will be a single line of descriptive text - no images or anything else that would justify making a new .vue component. Breaking these assumptions is left as an exercise for the reader. But for now, with those assumptions in mind, we'll write our component (in the <script> tag in Save.vue) similar to this example:

ts
const progressDisplay = computeComponent(
     computed(() => {
     	if (someCondition) {
     		return "Just started";
@@ -42,9 +42,9 @@
     ><br />
     <div v-if="currentTime">Last played {{ dateFormat.format(currentTime) }}</div>
 ++  <div v-if="progressDisplay"><component :is="progressDisplay" /></div>
-</div>

And there you have it! Your dev environment should now show the component in all its glory in the saves manager.

- +</div>

And there you have it! Your dev environment should now show the component in all its glory in the saves manager.

+ \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index 83b2802b..42695ecd 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"guide_important-concepts_coercable.md":"b1f1acdb","guide_important-concepts_features.md":"ce662e79","guide_important-concepts_formulas.md":"0ba3b4c0","guide_important-concepts_layers.md":"40e3beef","guide_important-concepts_persistence.md":"d4602def","guide_important-concepts_reactivity.md":"6d7d263f","guide_important-concepts_requirements.md":"315f99b3","guide_index.md":"a6d0887c","index.md":"884f44e0","guide_recipes_save-progress.md":"090d590c","guide_recipes_particles.md":"fc5fb015","api_modules_lib_pixi.md":"2b426252","api_components_contextcomponent.md":"088cd8fb","api_modules_features_resource.md":"337b8880","guide_creating-your-project_project-entry.md":"c30550eb","guide_creating-your-project_project-info.md":"f06a6a5d","guide_creating-your-project_themes.md":"2ceffe94","api_components_fields_slidercomponent.md":"de4f5cd1","api_components_fields_textcomponent.md":"039dbcea","api_components_fields_togglecomponent.md":"0126692d","api_components_layout_collapsiblecomponent.md":"b792d45f","api_components_layout_columncomponent.md":"0a31ce33","api_components_layout_rowcomponent.md":"2f1b6079","api_components_layout_spacercomponent.md":"8e0b53af","api_components_layout_stickycomponent.md":"3605e970","api_components_layout_verticalrulecomponent.md":"87270803","api_components_math_floorcomponent.md":"765da36c","api_components_math_sqrtcomponent.md":"a610fb30","api_modules_data_common.md":"cea7349b","api_modules_data_projentry.md":"85e931a3","api_modules_data_themes.md":"04121ce6","api_modules_features_achievement.md":"41fd9d95","api_modules_features_action.md":"accd9686","api_modules_features_bar.md":"d549ae50","api_modules_features_board.md":"83c56444","api_modules_features_challenge.md":"b67ac4a6","guide_getting-started_updating.md":"9e46942a","api_modules_features_clickable.md":"81af6047","api_modules_features_conversion.md":"e67c86a2","api_modules_features_feature.md":"6c0b6f85","api_modules_features_grid.md":"44a0d8eb","api_modules_features_hotkey.md":"9bdca378","api_modules_features_infobox.md":"8a44c689","api_modules_features_links.md":"232f4909","api_modules_features_particles.md":"acdac247","api_modules_features_repeatable.md":"2078abb7","api_modules_game_formulas_operations.md":"19c5dc95","api_modules_features_reset.md":"295fd3d8","api_modules_features_tabs_tabfamily.md":"1a69473b","api_modules_features_tooltip.md":"4f1ae01d","api_modules_features_tree.md":"ed4d7a45","api_components_hotkeycomponent.md":"94af8a77","api_modules_game_gameloop.md":"4e2abfc0","api_modules_game_layers.md":"ba0180ea","api_modules_game_modifiers.md":"e9a04d07","api_modules_game_notifications.md":"4007ad77","api_modules_game_persistence.md":"e61c1fc6","api_modules_game_player.md":"f23bb598","api_modules_game_requirements.md":"403fc39c","api_modules_game_settings.md":"1958e7ca","api_modules_game_state.md":"f32881b2","api_modules_lib_break_eternity.md":"4905c813","api_modules_lib_collapsetransition.md":"37a925e1","api_modules_lib_lru-cache.md":"56fe8d58","api_modules_lib_vue-panzoom.md":"bfc32ff5","api_modules_lib_vue-textarea-autosize.md":"a92591ec","api_modules_util_bignum.md":"03ad1117","api_modules_util_break_eternity.md":"5233e941","api_modules_util_computed.md":"f384f5a3","api_modules_util_proxies.md":"272c9807","api_modules_util_save.md":"6130f3f6","api_modules_util_vue.md":"65db83c2","api_overview.md":"88cceb38","guide_advanced-concepts_creating-features.md":"a18865d1","guide_advanced-concepts_dynamic-layers.md":"69b0375d","guide_advanced-concepts_nodes.md":"74909dae","guide_creating-your-project_changelog.md":"62153173","guide_creating-your-project_utils.md":"0aa70f37","guide_getting-started_examples.md":"8dc349eb","guide_getting-started_setup.md":"283dd6fc","api_modules_features_tabs_tab.md":"ac4b1c4b","api_modules_game_events.md":"597f47e5","api_modules_util_common.md":"fa59245c","api_modules_lib_pwa-register.md":"8e6a42cb","api_components_layercomponent.md":"fb5a91af","api_modules_game_formulas_formulas.md":"dda227f0","api_components_infocomponent.md":"5e7ed906","api_components_modalcomponent.md":"40989410","api_components_marknodecomponent.md":"95ce4d1c","api_components_savecomponent.md":"bc14d931","api_components_fields_dangerbuttoncomponent.md":"43aea00b","api_components_fields_feedbackbuttoncomponent.md":"3022117b","api_modules_features_upgrade.md":"1354b683","api_components_nodecomponent.md":"6c607feb","api_components_fields_selectcomponent.md":"ace2bb01","api_modules_game_formulas_types.md":"bd193bf8"} +{"api_components_layout_collapsiblecomponent.md":"b792d45f","api_components_hotkeycomponent.md":"94af8a77","api_components_fields_togglecomponent.md":"0126692d","api_components_infocomponent.md":"5e7ed906","api_components_marknodecomponent.md":"95ce4d1c","api_components_modalcomponent.md":"40989410","api_components_savecomponent.md":"bc14d931","api_components_fields_dangerbuttoncomponent.md":"43aea00b","api_components_nodecomponent.md":"6c607feb","api_components_fields_feedbackbuttoncomponent.md":"3022117b","api_components_fields_selectcomponent.md":"ace2bb01","api_components_fields_slidercomponent.md":"de4f5cd1","api_components_fields_textcomponent.md":"039dbcea","api_components_layout_columncomponent.md":"0a31ce33","api_components_layout_rowcomponent.md":"2f1b6079","api_components_layout_spacercomponent.md":"8e0b53af","api_components_layout_stickycomponent.md":"3605e970","api_components_layout_verticalrulecomponent.md":"87270803","api_modules_features_conversion.md":"c27720d1","api_components_math_floorcomponent.md":"765da36c","api_components_math_sqrtcomponent.md":"a610fb30","api_modules_features_bar.md":"e8448677","api_modules_features_action.md":"70d6eb9f","api_modules_data_themes.md":"fcd738aa","api_modules_features_challenge.md":"538635b7","api_modules_features_feature.md":"fece3203","api_components_layercomponent.md":"fb5a91af","api_components_contextcomponent.md":"088cd8fb","api_modules_data_projentry.md":"77f70a60","api_modules_data_common.md":"47fec908","api_modules_features_achievement.md":"2dda368f","api_modules_features_hotkey.md":"1b3345c1","api_modules_features_infobox.md":"e1f3a0d5","api_modules_features_links.md":"c0f648c4","api_modules_features_clickable.md":"f229af4e","api_modules_features_repeatable.md":"a16afba7","api_modules_features_particles.md":"5c9477d1","api_modules_features_grid.md":"9df2e2cb","api_modules_game_state.md":"d8713837","api_modules_lib_break_eternity.md":"456df427","api_modules_lib_collapsetransition.md":"37a925e1","api_modules_lib_lru-cache.md":"a386377a","api_modules_lib_pixi.md":"2b426252","api_modules_lib_pwa-register.md":"0a1ca45c","api_modules_lib_vue-panzoom.md":"bfc32ff5","api_modules_util_bignum.md":"7557448e","api_modules_util_common.md":"501f49a5","api_modules_lib_vue-textarea-autosize.md":"a92591ec","api_modules_util_break_eternity.md":"3953e0b7","api_modules_util_computed.md":"084c4cc2","api_modules_util_save.md":"5477d06f","api_overview.md":"88cceb38","guide_advanced-concepts_dynamic-layers.md":"21faf359","guide_creating-your-project_changelog.md":"172bc03e","guide_creating-your-project_project-info.md":"64fc6c56","guide_creating-your-project_project-entry.md":"ddd3e9f7","guide_creating-your-project_themes.md":"63c537c1","api_modules_util_vue.md":"37e5800d","guide_creating-your-project_utils.md":"f64b911e","guide_advanced-concepts_creating-features.md":"49125d9d","guide_advanced-concepts_nodes.md":"b6eda7dd","guide_getting-started_updating.md":"d0fb2ae0","guide_important-concepts_features.md":"f95c37df","guide_migrations_0-6.md":"caa4c6e3","guide_recipes_save-progress.md":"e09db940","guide_recipes_particles.md":"fcacf72f","index.md":"5c45fd2b","api_modules_features_board.md":"f946e582","api_modules_features_reset.md":"c413767d","api_modules_features_resource.md":"b91e265b","guide_important-concepts_formulas.md":"c2a76b20","guide_getting-started_examples.md":"be79c82f","guide_getting-started_setup.md":"af062367","guide_important-concepts_coercable.md":"c6ef7a86","guide_important-concepts_reactivity.md":"ca2bbc88","guide_important-concepts_layers.md":"0f85a362","guide_important-concepts_persistence.md":"8e5f6af6","api_modules_game_formulas_operations.md":"7b749a35","api_modules_game_settings.md":"d73a8fbd","api_modules_features_tabs_tabfamily.md":"ae450c2b","api_modules_game_formulas_formulas.md":"c3dafd78","api_modules_game_gameloop.md":"aa836b66","guide_important-concepts_requirements.md":"54bd91b9","api_modules_game_notifications.md":"afaa7863","api_modules_game_modifiers.md":"6263854d","api_modules_features_tooltip.md":"7e3b32e5","guide_index.md":"08f69a51","api_modules_features_tree.md":"c82cfafa","api_modules_game_player.md":"1ceb97cb","api_modules_game_persistence.md":"647a4d58","api_modules_features_upgrade.md":"0ba043c0","api_modules_game_events.md":"98906675","api_modules_game_formulas_types.md":"9c4cba15","api_modules_features_tabs_tab.md":"3b186dff","api_modules_game_requirements.md":"1f80f527","api_modules_game_layers.md":"2eb36c5e","api_modules_util_proxies.md":"5c302d9c"} diff --git a/index.html b/index.html index fa4880cc..bfd77c02 100644 --- a/index.html +++ b/index.html @@ -5,12 +5,12 @@ Home | Profectus - + - + @@ -22,8 +22,8 @@
Skip to content

Profectus

A game engine that grows with you

Starts at your skill level and encourages your ambition to make your projects bigger and better.

Easy to Use

Everything is written to be as intuitive to use as possible, through consistent design.

Helpful

Built with TypeScript to guide you as you write. Seamlessly deploy your project with pre-configured github workflows, and more.

Incremental

Designed to actively encourage you to become better at programming. The engine will never limit you.

- + \ No newline at end of file