runtimeDispatchJs top-level constant
String
const runtimeDispatchJs
Implementation
const String runtimeDispatchJs = r'''
function runAction(action, ctx) {
if (!action) return;
const verb = action.verb;
const args = action.args;
ctx = ctx || {};
switch (verb) {
case 'noop':
return;
case 'surface.open':
openSurface(args[0], args[1], { trigger: ctx.trigger });
return;
case 'surface.close':
closeSurface(args[0], args[1]);
return;
case 'surface.toggle':
toggleSurface(args[0], args[1], { trigger: ctx.trigger });
return;
case 'surface.dismiss': {
const surface = withinSurface(ctx.trigger);
if (surface) {
closeSurface(surfaceType(surface), surfaceId(surface));
} else {
dismissTopSurface();
}
return;
}
case 'value.set':
setGroupValue(args[0], args[1] || '');
return;
case 'value.toggle':
toggleGroupValue(args[0], args[1] || '');
return;
case 'value.clear':
clearGroup(args[0]);
return;
case 'tab.activate':
activateTab(args[0], args[1]);
return;
case 'panel.expand':
expandPanel(args[0], args[1]);
return;
case 'panel.collapse':
collapsePanel(args[0], args[1]);
return;
case 'panel.toggle':
togglePanel(args[0], args[1]);
return;
case 'step.go':
goToStep(args[0], args[1]);
return;
case 'page.go':
goToPage(args[0], args[1]);
return;
case 'carousel.go':
goToSlide(args[0], args[1]);
return;
case 'slider.set':
setSliderValue(args[0], args[1] || '0', args[2]);
return;
case 'cycle.next':
cycleStep(args[0], 1);
return;
case 'cycle.prev':
cycleStep(args[0], -1);
return;
case 'calendar.prev':
calendarPrev(args[0]);
return;
case 'calendar.next':
calendarNext(args[0]);
return;
case 'calendar.today':
calendarToday(args[0]);
return;
case 'calendar.select':
calendarSelect(args[0], (ctx.trigger && ctx.trigger.getAttribute) ? ctx.trigger.getAttribute('data-arcane-value') : args[1]);
return;
case 'command.filter': {
const inp = ctx.trigger;
const q = inp && inp.value !== undefined ? inp.value : (args[1] || '');
filterCommand(args[0], q);
return;
}
case 'command.selectFirst':
commandSelectFirst(args[0]);
return;
case 'form.submit':
submitForm(args[0]);
return;
case 'form.reset':
resetForm(args[0]);
return;
case 'form.validate':
validateForm(args[0]);
return;
case 'field.set':
setFieldValue(args[0], args[1], args[2] || '');
return;
case 'copy':
copyText(args[0] || '', args[1]);
return;
case 'nav.go':
navGo(args[0]);
return;
case 'nav.external':
navExternal(args[0]);
return;
case 'nav.back':
navBack();
return;
case 'theme.mode.set':
setThemeMode(args[0]);
return;
case 'theme.mode.toggle':
toggleThemeMode();
return;
case 'theme.stylesheet.set':
setStylesheet(args[0]);
return;
case 'theme.palette.set': {
const parts = (args[0] || '').split('/');
setPalette(parts[0] || '', parts[1] || '');
return;
}
case 'toast.show': {
const payload = readJson(args[0], { message: args[0] || '' });
showToast(payload);
return;
}
case 'event.dispatch': {
const detail = args[1] ? readJson(args[1], {}) : {};
fireEvent(document, args[0], detail);
return;
}
case 'script.run': {
const fn = ARCANE.scripts[args[0]];
if (typeof fn === 'function') {
fn.apply(null, args.slice(1));
}
return;
}
default:
if (verb && verb.indexOf(':') > 0) {
fireEvent(document, verb, { args: args, ctx: ctx });
return;
}
console.warn('[arcane] unknown action:', verb);
}
}
function runActions(str, ctx) {
if (!str) return;
const list = parseActions(str);
for (let i = 0; i < list.length; i++) {
runAction(list[i], ctx);
}
}
ARCANE.run = runActions;
ARCANE.runOne = runAction;
''';