From 66c915a1eda0fcce464bc5b76825c6b515bbae24 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Thu, 25 Dec 2025 12:48:55 -0500 Subject: [PATCH] input setup cleanup --- src/kiri/app/init/bind.js | 2 + src/kiri/app/init/input.js | 124 +++++++++++++------------------------ src/kiri/app/init/sync.js | 21 +++---- src/kiri/app/keyboard.js | 2 + src/kiri/app/modal.js | 2 + src/kiri/app/slider.js | 2 + 6 files changed, 58 insertions(+), 95 deletions(-) diff --git a/src/kiri/app/init/bind.js b/src/kiri/app/init/bind.js index 468ce17f..826c5ac6 100644 --- a/src/kiri/app/init/bind.js +++ b/src/kiri/app/init/bind.js @@ -92,6 +92,8 @@ export function bind() { settings: $('settings'), settingsBody: $('settingsBody'), settingsList: $('settingsList'), + settingsName: $('settingsName'), + settingsSave: $('settingsSave'), slider: { div: $('slider'), diff --git a/src/kiri/app/init/input.js b/src/kiri/app/init/input.js index 971950e8..ef054233 100644 --- a/src/kiri/app/init/input.js +++ b/src/kiri/app/init/input.js @@ -86,7 +86,7 @@ api.event.emit('preset', api.conf.dbo()); // api.event.on("set.threaded", bool => setThreaded(bool)); -function onBooleanClick(el) { +export function onBooleanClick(el) { // copy some ui elements to target settings let settings = api.conf.get(); settings.device.bedBelt = ui.deviceBelt.checked && api.mode.is_fdm(); @@ -130,8 +130,17 @@ function isNotBelt() { return !isBelt(); } +function onResize() { + if (WIN.innerHeight < 800) { + ui.modalBox.classList.add('mh85'); + } else { + ui.modalBox.classList.remove('mh85'); + } + api.view.update_slider(); +} + // MAIN UI INITIALIZATION FUNCTION -function init_one() { +export function init_input() { let { event, conf, view, show } = api, { newBlank, newButton, newBoolean, newGroup, newInput } = uc, { newSelect, newRow, newGCode, newDiv, toInt, toFloat } = uc; @@ -154,19 +163,11 @@ function init_one() { tracker = $('tracker'), controller = settings().controller; - WIN.addEventListener("resize", () => { - event.emit('resize'); - }); - - event.on('resize', () => { - if (WIN.innerHeight < 800) { - ui.modalBox.classList.add('mh85'); - } else { - ui.modalBox.classList.remove('mh85'); - } - view.update_slider(); - }); + // window resize handlers + WIN.addEventListener("resize", onResize); + event.on('resize', onResize); + // configure moto.space space.sky.showGrid(false); space.sky.setColor(controller.dark ? 0 : 0xffffff); space.setAntiAlias(controller.antiAlias); @@ -326,9 +327,6 @@ function init_one() { ...menuSLA(), layers: uc.setGroup($("layers")), - - settingsName: $('settingsName'), - settingsSave: $('settingsSave'), }); // run client mode initializations right after UI is bound @@ -347,8 +345,8 @@ function init_one() { settingsOps.settingsSave(undefined, ui.settingsName.value); }; - // initialize modal controller - modal.init({ + // initialize and expose modal to API + api.modal = modal.init({ ui: { modal: ui.modal, modals: ui.modals @@ -361,23 +359,9 @@ function init_one() { } }); - // expose modal to API - api.modal = modal; - - // slider setup - slider.init({ - ui: { - layers: ui.layers, - slider: ui.slider, - sliderRange: ui.sliderRange, - sliderHold: ui.sliderHold, - sliderMid: ui.sliderMid, - sliderLo: ui.sliderLo, - sliderHi: ui.sliderHi, - sliderMin: ui.sliderMin, - sliderMax: ui.sliderMax, - sliderZero: $('slider-zero'), - }, + // initialize and expose slider to API + api.slider = slider.init({ + ui, tracker: tracker, mobile: space.info.mob, onLayerChange: (hi, lo) => { @@ -392,11 +376,8 @@ function init_one() { } }); - // expose slider to API - api.slider = slider; - - // initialize keyboard controller - keyboard.init({ + // initialize and expose keyboard to API + api.keyboard = keyboard.init({ api, platform, selection, @@ -413,65 +394,46 @@ function init_one() { settingsLoad: settingsOps.settingsLoad }); - // expose keyboard to API - api.keyboard = keyboard; - // add mobile class to body if needed if (space.info.mob) { DOC.body.classList.add('mobile'); } - ui.load.onchange = function(event) { + ui.load.onchange = (event) => { api.platform.load_files(event.target.files); ui.load.value = ''; // reset so you can re-import the same filee }; // store layer preferences - api.event.on('stack.show', label => { + api.event.on('stack.show', (label) => { let mode = api.mode.get(); let view = api.view.get(); api.conf.get().labels[`${mode}-${view}-${label}`] = true; }); - api.event.on('stack.hide', label => { + api.event.on('stack.hide', (label) => { let mode = api.mode.get(); let view = api.view.get(); api.conf.get().labels[`${mode}-${view}-${label}`] = false; }); - // bind language choices - $('lset-en').onclick = function() { - sdb.setItem('kiri-lang', 'en-us'); - api.space.reload(); - }; - $('lset-da').onclick = function() { - sdb.setItem('kiri-lang', 'da-dk'); - api.space.reload(); - }; - $('lset-de').onclick = function() { - sdb.setItem('kiri-lang', 'de-de'); - api.space.reload(); - }; - $('lset-fr').onclick = function() { - sdb.setItem('kiri-lang', 'fr-fr'); - api.space.reload(); - }; - $('lset-pl').onclick = function() { - sdb.setItem('kiri-lang', 'pl-pl'); - api.space.reload(); - }; - $('lset-pt').onclick = function() { - sdb.setItem('kiri-lang', 'pt-pt'); - api.space.reload(); - }; - $('lset-es').onclick = function() { - sdb.setItem('kiri-lang', 'es-es'); - api.space.reload(); - }; - $('lset-zh').onclick = function() { - sdb.setItem('kiri-lang', 'zh'); - api.space.reload(); - }; + // bind menu language choices + let lang_map = [ + [ 'lset-en', 'en-us' ], + [ 'lset-da', 'da-dk' ], + [ 'lset-de', 'de-de' ], + [ 'lset-fr', 'fr-fr' ], + [ 'lset-pl', 'pl-pl' ], + [ 'lset-pt', 'pt-pt' ], + [ 'lset-es', 'es-es' ], + [ 'lset-zh', 'zh' ], + ] + for (let [ btn, lang ] of lang_map) { + $(btn).onclick = () => { + sdb.setItem('kiri-lang', lang); + api.space.reload(); + }; + } space.event.addHandlers(self, [ 'dragover', fileOps.dragOverHandler, @@ -576,5 +538,3 @@ function init_one() { api.space.restore(resolve) || checkSeed(resolve) || resolve(); }); }; - -export { onBooleanClick, init_one as init_input }; diff --git a/src/kiri/app/init/sync.js b/src/kiri/app/init/sync.js index cae72456..4756fbe6 100644 --- a/src/kiri/app/init/sync.js +++ b/src/kiri/app/init/sync.js @@ -12,21 +12,18 @@ import { space } from '../../../moto/space.js'; import { VIEWS } from '../../core/consts.js'; import * as view_tools from '../tools.js'; +const { SETUP, LOCAL } = api.const; +const { catalog, client, platform, selection, stats, ui } = api; + const DOC = self.document; const WIN = self.window; -const proto = location.protocol; -const { SETUP, LOCAL } = api.const; -const { platform, client, catalog, stats } = api; const LANG = api.language.current; -const ui = api.ui; const STARTMODE = SETUP.sm && SETUP.sm.length === 1 ? SETUP.sm[0] : null; -function settings() { - return api.conf.get(); -} - // SECOND STAGE INIT AFTER UI RESTORED export async function init_sync() { + const proto = location.protocol; + api.event.emit('init.two'); // load script extensions @@ -107,7 +104,7 @@ export async function init_sync() { }); // Setup navigation button bindings - setup_keybd_nav(ui, WIN, LANG); + setup_keybd_nav(); // show topline separator when iframed try { if (WIN.self !== WIN.top) $('top-sep').style.display = 'flex' } catch (e) { console.log(e) } @@ -132,7 +129,7 @@ export async function init_sync() { } function ui_sync() { - const current = settings(); + const current = api.conf.get(); const control = current.controller; if (!control.devel) { @@ -198,9 +195,7 @@ function ui_sync() { client.wasm(control.assembly === true); } -function setup_keybd_nav(ui, WIN, LANG) { - const { selection } = api; - +function setup_keybd_nav() { // bind interface action elements ui.acct.help.onclick = (ev) => { ev.stopPropagation(); api.help.show() }; ui.acct.don8.onclick = (ev) => { ev.stopPropagation(); api.modal.show('don8') }; diff --git a/src/kiri/app/keyboard.js b/src/kiri/app/keyboard.js index 87d54a9a..32b41152 100644 --- a/src/kiri/app/keyboard.js +++ b/src/kiri/app/keyboard.js @@ -62,6 +62,8 @@ class KeyboardControl { this.#bindEvents(); this.#initialized = true; + + return this; } /** diff --git a/src/kiri/app/modal.js b/src/kiri/app/modal.js index 9cf49b7a..6dbf4013 100644 --- a/src/kiri/app/modal.js +++ b/src/kiri/app/modal.js @@ -29,6 +29,8 @@ class ModalControl { this.#onShow = onShow; this.#onHide = onHide; this.#initialized = true; + + return this; } /** diff --git a/src/kiri/app/slider.js b/src/kiri/app/slider.js index 2b7bb974..4a84bedd 100644 --- a/src/kiri/app/slider.js +++ b/src/kiri/app/slider.js @@ -52,6 +52,8 @@ class SliderControl { this.#setupUI(); this.#bindEvents(); this.#initialized = true; + + return this; } /**