mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
54 lines
1.4 KiB
TypeScript
54 lines
1.4 KiB
TypeScript
import { WEnv } from "./core/component";
|
|
import { QWeb } from "./core/qweb_vdom";
|
|
import { idGenerator } from "./core/utils";
|
|
import { INotification, RPC, Services, Store } from "./store";
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Types
|
|
//------------------------------------------------------------------------------
|
|
|
|
export interface Env extends WEnv {
|
|
services: Services;
|
|
|
|
// commands
|
|
activateMenuItem(menuId: number): void;
|
|
addNotification(notif: Partial<INotification>): number;
|
|
closeNotification(id: number): void;
|
|
toggleHomeMenu(): void;
|
|
|
|
// helpers
|
|
rpc: RPC;
|
|
|
|
// configuration
|
|
debug: boolean;
|
|
isMobile: boolean;
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Environment
|
|
//------------------------------------------------------------------------------
|
|
|
|
export function makeEnv(store: Store, templates: string): Env {
|
|
const qweb = new QWeb();
|
|
qweb.addTemplate("default", "<div/>");
|
|
qweb.loadTemplates(templates);
|
|
|
|
const env: Env = {
|
|
qweb,
|
|
getID: idGenerator(),
|
|
|
|
services: store.services,
|
|
|
|
activateMenuItem: store.activateMenuItem.bind(store),
|
|
addNotification: store.addNotification.bind(store),
|
|
closeNotification: store.closeNotification.bind(store),
|
|
toggleHomeMenu: store.toggleHomeMenu.bind(store),
|
|
|
|
rpc: store.rpc.bind(store),
|
|
|
|
debug: false,
|
|
isMobile: window.innerWidth <= 768
|
|
};
|
|
return env;
|
|
}
|