UNPKG

magix-components

Version:
58 lines 1.29 kB
/* ver:1.3.1 */ /* author:xinglie.lkf@taobao.com */ let $ = require('$'); let ICounter = 0; let Instances = []; let Doc = $(document); let Win = $(window); let Watcher = (e) => { for (let i = Instances.length; i--;) { let info = Instances[i]; if (info['@{destroyed}']) { Instances.splice(i, 1); } else { let view = info['@{view}']; if (e.type != 'mousedown' || !view['@{inside}'](e.target)) { view['@{hide}'](); } } } }; let Remove = view => { let info = Instances[view.id]; if (info) { info['@{destroyed}'] = true; } delete Instances[view.id]; }; module.exports = { '@{add}'(view) { Remove(view); let info = { '@{view}': view }; Instances.push(info); Instances[view.id] = info; }, '@{remove}': Remove, '@{setup}'() { if (!ICounter) { Doc.on('mousedown', Watcher); Win.on('resize', Watcher); } ICounter++; }, '@{teardown}'() { if (ICounter > 0) { ICounter--; if (!ICounter) { Doc.off('mousedown', Watcher); Win.off('resize', Watcher); } } } };