2022-02-17 14:40:51 -05:00
|
|
|
/** Copyright Stewart Allen <sa@grid.space> -- All Rights Reserved */
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
2022-02-24 23:29:53 -05:00
|
|
|
// dep: moto.broker
|
2022-02-20 18:00:31 -05:00
|
|
|
// dep: data.local
|
|
|
|
|
// dep: kiri.utils
|
2022-02-22 00:05:29 -05:00
|
|
|
// dep: kiri.consts
|
2022-02-20 18:00:31 -05:00
|
|
|
gapp.register("kiri.api", [], (root, exports) => {
|
2022-02-17 14:40:51 -05:00
|
|
|
|
2022-02-20 22:47:04 -05:00
|
|
|
const { data, kiri, noop } = root;
|
2022-02-18 10:52:49 -05:00
|
|
|
const { consts, utils } = kiri;
|
|
|
|
|
const { areEqual, parseOpt, encodeOpt, ajax, o2js, js2o } = utils;
|
|
|
|
|
const { LISTS } = consts;
|
2022-02-17 14:40:51 -05:00
|
|
|
|
2022-02-24 23:29:53 -05:00
|
|
|
let isHover = false;
|
|
|
|
|
|
2022-02-17 14:40:51 -05:00
|
|
|
const feature = {
|
|
|
|
|
seed: true, // seed profiles on first use
|
|
|
|
|
meta: true, // show selected widget metadata
|
|
|
|
|
frame: true, // receive frame events
|
|
|
|
|
alert_event: false, // emit alerts as events instead of display
|
|
|
|
|
controls: true, // show or not side menus
|
|
|
|
|
device_filter: undefined, // function to limit devices shown
|
|
|
|
|
drop_group: undefined, // optional array to group multi drop
|
|
|
|
|
drop_layout: true, // layout on new drop
|
|
|
|
|
hoverAdds: false, // when true only searches widget additions
|
|
|
|
|
on_key: undefined, // function override default key handlers
|
|
|
|
|
on_load: undefined, // function override file drop loads
|
|
|
|
|
on_add_stl: undefined, // legacy override stl drop loads
|
2022-04-04 21:37:15 -04:00
|
|
|
on_mouse_up: undefined, // function intercepts mouse up select
|
|
|
|
|
on_mouse_down: undefined, // function intercepts mouse down
|
2022-02-17 14:40:51 -05:00
|
|
|
work_alerts: true, // allow disabling work progress alerts
|
|
|
|
|
modes: [ "fdm", "sla", "cam", "laser" ], // enable device modes
|
2022-02-24 23:29:53 -05:00
|
|
|
pmode: consts.PMODES.SPEED, // preview modes
|
|
|
|
|
// hover: false, // when true fires mouse hover events
|
|
|
|
|
get hover() {
|
|
|
|
|
return isHover;
|
|
|
|
|
},
|
|
|
|
|
set hover(b) {
|
|
|
|
|
isHover = b;
|
|
|
|
|
moto.broker.publish("feature.hover", b);
|
|
|
|
|
}
|
2022-02-17 14:40:51 -05:00
|
|
|
};
|
|
|
|
|
|
2022-02-18 10:52:49 -05:00
|
|
|
const devel = {
|
|
|
|
|
xray: (layers, raw) => {
|
|
|
|
|
let proc = api.conf.get().process;
|
|
|
|
|
let size = proc.sliceHeight || proc.slaSlice || 1;
|
2022-06-16 18:24:49 -04:00
|
|
|
let base = (proc.firstSliceHeight || size);
|
2022-02-18 10:52:49 -05:00
|
|
|
layers = Array.isArray(layers) ? layers : [ layers ];
|
2022-06-16 18:24:49 -04:00
|
|
|
proc.xray = layers.map(l => raw ? l : base + l * size - size / 2);
|
2022-07-05 19:19:21 -04:00
|
|
|
proc.xrayi = layers.slice();
|
2022-02-18 10:52:49 -05:00
|
|
|
api.function.slice();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const tweak = {
|
|
|
|
|
line_precision(v) { api.work.config({base:{clipperClean: v}}) },
|
|
|
|
|
gcode_decimals(v) { api.work.config({base:{gcode_decimals: v}}) }
|
|
|
|
|
};
|
|
|
|
|
|
2022-02-20 18:00:31 -05:00
|
|
|
const api = exports({
|
2022-02-18 10:52:49 -05:00
|
|
|
clone: Object.clone,
|
|
|
|
|
sdb: data.local,
|
|
|
|
|
ajax: ajax,
|
|
|
|
|
js2o: js2o,
|
|
|
|
|
o2js: o2js,
|
|
|
|
|
lists: LISTS,
|
|
|
|
|
doit: {
|
|
|
|
|
undo: noop, // set in do.js
|
|
|
|
|
redo: noop // set in do.js
|
|
|
|
|
},
|
|
|
|
|
var: {
|
|
|
|
|
layer_lo: 0,
|
|
|
|
|
layer_hi: 0,
|
|
|
|
|
layer_max: 0
|
|
|
|
|
},
|
|
|
|
|
feature,
|
|
|
|
|
devel,
|
|
|
|
|
tweak,
|
2022-02-20 18:00:31 -05:00
|
|
|
});
|
2022-02-17 14:40:51 -05:00
|
|
|
|
2022-02-20 18:00:31 -05:00
|
|
|
});
|