147 lines
6.9 KiB
JavaScript
147 lines
6.9 KiB
JavaScript
const ICON_BASE = new URL("../assets/gmoccapy-icons/", import.meta.url).href;
|
|
|
|
const ICONS = {
|
|
tbtn_estop: {
|
|
active: icon("main_switch_on", "img_emergency__main_switch_on__48.png"),
|
|
inactive: icon("main_switch_off", "img_emergency_off__main_switch_off__48.png"),
|
|
default: icon("main_switch_on", "img_emergency__main_switch_on__48.png"),
|
|
},
|
|
tbtn_on: {
|
|
active: icon("power_on", "img_machine_on__power_on__48.png"),
|
|
inactive: icon("power_off", "img_machine_off__power_off__48.png"),
|
|
default: icon("power_off", "img_machine_off__power_off__48.png"),
|
|
},
|
|
rbt_manual: {
|
|
active: icon("mode_manual_active", "img_manual_on__mode_manual_active__48.png"),
|
|
inactive: icon("mode_manual_inactive", "img_manual__mode_manual_inactive__48.png"),
|
|
default: icon("mode_manual_inactive", "img_manual__mode_manual_inactive__48.png"),
|
|
},
|
|
rbt_mdi: {
|
|
active: icon("mode_mdi_active", "img_mdi_on__mode_mdi_active__48.png"),
|
|
inactive: icon("mode_mdi_inactive", "img_mdi__mode_mdi_inactive__48.png"),
|
|
default: icon("mode_mdi_inactive", "img_mdi__mode_mdi_inactive__48.png"),
|
|
},
|
|
rbt_auto: {
|
|
active: icon("mode_auto_active", "img_auto_on__mode_auto_active__48.png"),
|
|
inactive: icon("mode_auto_inactive", "img_auto__mode_auto_inactive__48.png"),
|
|
default: icon("mode_auto_inactive", "img_auto__mode_auto_inactive__48.png"),
|
|
},
|
|
tbtn_setup: {
|
|
active: icon("mode_settings_active", "img_settings_on__mode_settings_active__48.png"),
|
|
inactive: icon("mode_settings_inactive", "img_settings__mode_settings_inactive__48.png"),
|
|
default: icon("mode_settings_inactive", "img_settings__mode_settings_inactive__48.png"),
|
|
},
|
|
tbtn_user_tabs: {
|
|
active: icon("mode_user_tabs_active", "img_user_tabs_on__mode_user_tabs_active__48.png"),
|
|
inactive: icon("mode_user_tabs_inactive", "img_user_tabs__mode_user_tabs_inactive__48.png"),
|
|
default: icon("mode_user_tabs_inactive", "img_user_tabs__mode_user_tabs_inactive__48.png"),
|
|
},
|
|
btn_load: { default: icon("open_file", "img_open__open_file__32.svg") },
|
|
btn_reload: { default: icon("refresh", "img_reload1__refresh__32.png") },
|
|
btn_run: { default: icon("play", "img_run__play__32.png") },
|
|
btn_stop: { default: icon("stop", "img_stop__stop__32.png") },
|
|
tbtn_pause: {
|
|
active: icon("pause_active", "img_pause_active__pause_active__32.png"),
|
|
inactive: icon("pause", "img_pause__pause__32.png"),
|
|
default: icon("pause", "img_pause__pause__32.png"),
|
|
},
|
|
btn_step: { default: icon("step", "img_step__step__32.png") },
|
|
btn_homing: { default: icon("ref_all", "img_ref_menu__ref_all__48.png") },
|
|
btn_tool: { default: icon("hsk_mill_tool", "img_tools__hsk_mill_tool__48.png") },
|
|
btn_touch: { default: icon("touch_off", "img_touch_off__touch_off__48.png") },
|
|
ref_all: { default: icon("ref_all", "img_ref_all__ref_all__48.png") },
|
|
btn_fullscreen: {
|
|
active: icon("fullscreen_close", "img_fullsize_preview0_close__fullscreen_close__48.png"),
|
|
inactive: icon("fullscreen_open", "img_fullsize_preview0_open__fullscreen_open__48.png"),
|
|
default: icon("fullscreen_open", "img_fullsize_preview0_open__fullscreen_open__48.png"),
|
|
},
|
|
rbt_forward: {
|
|
active: icon("spindle_right_on", "img_spindle_forward_on__spindle_right_on__48.png"),
|
|
inactive: icon("spindle_right", "img_spindle_forward__spindle_right__48.png"),
|
|
default: icon("spindle_right", "img_spindle_forward__spindle_right__48.png"),
|
|
},
|
|
rbt_reverse: {
|
|
active: icon("spindle_left_on", "img_spindle_reverse_on__spindle_left_on__48.png"),
|
|
inactive: icon("spindle_left", "img_spindle_reverse__spindle_left__48.png"),
|
|
default: icon("spindle_left", "img_spindle_reverse__spindle_left__48.png"),
|
|
},
|
|
rbt_stop: {
|
|
active: icon("spindle_stop_on", "img_spindle_stop_on__spindle_stop_on__48.png"),
|
|
inactive: icon("spindle_stop", "img_spindle_stop__spindle_stop__48.png"),
|
|
default: icon("spindle_stop_on", "img_spindle_stop_on__spindle_stop_on__48.png"),
|
|
},
|
|
tbtn_flood: {
|
|
active: icon("coolant_flood_active", "img_coolant_on__coolant_flood_active__48.png"),
|
|
inactive: icon("coolant_flood_inactive", "img_coolant_off__coolant_flood_inactive__48.png"),
|
|
default: icon("coolant_flood_inactive", "img_coolant_off__coolant_flood_inactive__48.png"),
|
|
},
|
|
tbtn_mist: {
|
|
active: icon("coolant_mist_active", "img_mist_on__coolant_mist_active__48.png"),
|
|
inactive: icon("coolant_mist_inactive", "img_mist_off__coolant_mist_inactive__48.png"),
|
|
default: icon("coolant_mist_inactive", "img_mist_off__coolant_mist_inactive__48.png"),
|
|
},
|
|
btn_zoom_in: { default: icon("zoom_in", "img_zoom_in__zoom_in__24.png") },
|
|
btn_zoom_out: { default: icon("zoom_out", "img_zoom_out__zoom_out__24.png") },
|
|
rbt_view_x: { default: icon("tool_axis_x", "img_view_x__tool_axis_x__24.png") },
|
|
rbt_view_y: { default: icon("tool_axis_y", "img_view_y__tool_axis_y__24.png") },
|
|
rbt_view_z: { default: icon("tool_axis_z", "img_view_z__tool_axis_z__24.png") },
|
|
rbt_view_p: { default: icon("tool_axis_p", "img_view_p__tool_axis_p__24.png") },
|
|
tbtn_view_tool_path: { default: icon("toolpath", "img_tool_path__toolpath__24.png") },
|
|
tbtn_view_dimension: { default: icon("dimensions", "img_dimensions__dimensions__24.png") },
|
|
btn_exit: { default: icon("logout", "img_close__logout__48.png") },
|
|
btn_save_session: { default: icon("save", "img_tool_save__save__32.png") },
|
|
};
|
|
|
|
export const GMOCAPY_ICON_REGISTRY_BOUNDARY = "gmoccapy_icon_registry_from_working3_manifest_core_ui_subset";
|
|
|
|
export function getGmoccapyIcon(buttonId, variant = "default") {
|
|
const variants = ICONS[buttonId] || null;
|
|
const fallback = {
|
|
buttonId,
|
|
variant,
|
|
iconName: "text_fallback",
|
|
path: null,
|
|
fallback: true,
|
|
semanticBoundary: GMOCAPY_ICON_REGISTRY_BOUNDARY,
|
|
};
|
|
if (!variants) return fallback;
|
|
const normalizedVariant = normalizeVariant(variant);
|
|
const resolved = variants[normalizedVariant] || variants.default || variants.inactive || variants.active || null;
|
|
if (!resolved) return fallback;
|
|
return {
|
|
buttonId,
|
|
variant: normalizedVariant,
|
|
...resolved,
|
|
fallback: false,
|
|
semanticBoundary: GMOCAPY_ICON_REGISTRY_BOUNDARY,
|
|
};
|
|
}
|
|
|
|
export function listGmoccapyIconRegistryEntries() {
|
|
return Object.entries(ICONS).flatMap(([buttonId, variants]) => (
|
|
Object.entries(variants).map(([variant, entry]) => ({
|
|
buttonId,
|
|
variant,
|
|
...entry,
|
|
semanticBoundary: GMOCAPY_ICON_REGISTRY_BOUNDARY,
|
|
}))
|
|
));
|
|
}
|
|
|
|
function icon(iconName, filename) {
|
|
return {
|
|
iconName,
|
|
filename,
|
|
path: `${ICON_BASE}${filename}`,
|
|
};
|
|
}
|
|
|
|
function normalizeVariant(variant) {
|
|
if (variant === true) return "active";
|
|
if (variant === false) return "inactive";
|
|
const value = String(variant || "default").toLowerCase();
|
|
if (["active", "on", "selected", "state_on", "paused", "fullscreen active"].includes(value)) return "active";
|
|
if (["inactive", "off", "default", "state_estop_reset"].includes(value)) return value === "default" ? "default" : "inactive";
|
|
return value;
|
|
}
|