{"version":3,"file":"sidepanel.menu.bundle.js","sources":["../src/collection.js","../src/item.js","../src/menu.js"],"sourcesContent":["import {Tag, Type} from 'main.core';\nimport {EventEmitter, BaseEvent} from 'main.core.events';\nimport {Item, type ItemOptions} from './item.js';\n\ntype CollectionOptions = {\n\titems: Array;\n};\n\nexport class Collection extends EventEmitter\n{\n\t#list: Array = [];\n\t#node: HTMLElement;\n\t#sync: boolean = false;\n\n\tconstructor(options: CollectionOptions = {})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('ui:sidepanel:menu:collection');\n\t\tthis.setItems(options.items);\n\t}\n\n\t#addSilent(itemOptions: ItemOptions): Item\n\t{\n\t\tif (itemOptions.active)\n\t\t{\n\t\t\titemOptions.active = !this.hasActive();\n\t\t}\n\t\telse\n\t\t{\n\t\t\titemOptions.active = false;\n\t\t}\n\n\t\tconst item = new Item(itemOptions);\n\t\tthis.#list.push(item);\n\t\titem.subscribe('change:active', () => {\n\t\t\tif (item.isActive() && item.getCollection().isEmpty())\n\t\t\t{\n\t\t\t\tthis.syncActive(item);\n\t\t\t}\n\t\t});\n\t\titem.subscribe('sync:active', () => this.syncActive(item));\n\t\titem.subscribe('click', data => this.emit('click', data));\n\t\titem.subscribe('change', () => setTimeout(() => this.render(), 0));\n\n\t\treturn item;\n\t}\n\n\tsetActiveFirstItem(): void\n\t{\n\t\tconst item = this.list()[0];\n\t\tif (!item)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\titem.setActive(true);\n\t\titem.getCollection().setActiveFirstItem();\n\t}\n\n\tgetActiveItem(): Item\n\t{\n\t\treturn this.list().filter(item => item.isActive())[0];\n\t}\n\n\tsyncActive(excludeItem): Collection\n\t{\n\t\tif (this.#sync)\n\t\t{\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.#sync = true;\n\t\tthis.list()\n\t\t\t.filter(otherItem => otherItem !== excludeItem)\n\t\t\t.forEach(otherItem => {\n\t\t\t\totherItem.getCollection().isEmpty()\n\t\t\t\t\t? otherItem.setActive(false)\n\t\t\t\t\t: otherItem.getCollection().syncActive(otherItem)\n\n\t\t\t})\n\t\t;\n\n\t\tthis.emit('sync:active');\n\t\tthis.#sync = false;\n\t\treturn this;\n\t}\n\n\tadd(itemOptions: ItemOptions): Item\n\t{\n\t\tconst item = this.#addSilent(itemOptions);\n\t\tthis.emit('change');\n\n\t\tif (this.#node)\n\t\t{\n\t\t\tthis.render();\n\t\t}\n\n\t\treturn item;\n\t}\n\n\tget(id: number | string): ?Item\n\t{\n\t\treturn this.list().filter(item => item.getId() === id)[0];\n\t}\n\n\tchange(id: number | string, options: ItemOptions): ?Item\n\t{\n\t\tconst foundItem = this.list().find((item: Item) => item.getId() === id);\n\n\t\tif (foundItem)\n\t\t{\n\t\t\tfoundItem.change(options);\n\n\t\t\treturn foundItem;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tremove(id: number | string)\n\t{\n\t\tconst foundItem = this.list().find((item: Item) => item.getId() === id);\n\t\tif (foundItem)\n\t\t{\n\t\t\tthis.emit('change');\n\n\t\t\tthis.#list = this.list().filter(otherItem => otherItem !== foundItem);\n\n\t\t\tfoundItem.remove();\n\t\t}\n\t}\n\n\tsetItems(items: Array = []): Collection\n\t{\n\t\tthis.#list = items.map(itemOptions => this.#addSilent(itemOptions));\n\t\tthis.emit('change');\n\n\t\tif (this.#node)\n\t\t{\n\t\t\tthis.render();\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tlist(): Array\n\t{\n\t\treturn this.#list;\n\t}\n\n\tisEmpty(): boolean\n\t{\n\t\treturn this.list().length === 0;\n\t}\n\n\thasActive(recursively: boolean = true): boolean\n\t{\n\t\tconst has = this.list().some(item => item.isActive());\n\t\tif (has)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tif (!recursively)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this.list().some(item => item.getCollection().hasActive());\n\t}\n\n\trender(): HTMLElement\n\t{\n\t\tif (!this.#node)\n\t\t{\n\t\t\tthis.#node = Tag.render`
`;\n\t\t}\n\n\t\tthis.#node.innerHTML = '';\n\t\tthis.#list.forEach((item: Item) => this.#node.appendChild(item.render()));\n\n\t\treturn this.#node;\n\t}\n}\n","import {Tag, Type, Loc, Event, Dom} from 'main.core';\nimport {EventEmitter} from 'main.core.events';\nimport {Menu} from 'main.popup';\n\nimport {Collection} from './collection.js';\n\nexport type ItemOptions = {\n\tlabel: string;\n\tactive: ?boolean;\n\tnotice: ?boolean;\n\tonclick: ?Function;\n\tid: ?string;\n\titems: ?Array;\n\tactions?: Array;\n\tmoduleId: ?string;\n};\n\ntype ActionOptions = {\n\tid: number | string;\n\tlabel: string,\n\tonclick: Function;\n}\n\nexport class Item extends EventEmitter\n{\n\t#id: ?string;\n\t#label: string;\n\t#active: ?boolean;\n\t#notice: ?boolean;\n\t#onclick: ?Function;\n\t#collection: Collection;\n\t#node: HTMLElement;\n\t#actions: Array;\n\t#moduleId: ?string;\n\n\tconstructor(options: ItemOptions)\n\t{\n\t\tsuper(options);\n\n\t\tthis.setEventNamespace('ui:sidepanel:menu:item');\n\n\t\tthis.#collection = new Collection();\n\t\tthis.setLabel(options.label)\n\t\t\t.setActive(options.active)\n\t\t\t.setNotice(options.notice)\n\t\t\t.setId(options.id)\n\t\t\t.setItems(options.items)\n\t\t\t.setClickHandler(options.onclick)\n\t\t\t.setActions(options.actions)\n\t\t\t.setModuleId(options.moduleId)\n\t\t;\n\n\t\tthis.#collection.subscribe('sync:active', () => this.emit('sync:active'));\n\t\tthis.#collection.subscribe('click', event => this.emit('click', event));\n\t}\n\n\tsetLabel(label: string = ''): Item\n\t{\n\t\tif (this.#label === label)\n\t\t{\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.#label = label;\n\t\tthis.#emitChange();\n\t\treturn this;\n\t}\n\n\tsetId(id: string): Item\n\t{\n\t\tif (this.#id === id)\n\t\t{\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.#id = id;\n\t\tthis.#emitChange();\n\t\treturn this;\n\t}\n\n\tsetActive(mode: boolean = true): Item\n\t{\n\t\tmode = !!mode;\n\t\tif (this.#active === mode)\n\t\t{\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.#active = mode;\n\t\tthis.#emitChange({active: this.#active}, 'active');\n\n\t\treturn this;\n\t}\n\n\tsetNotice(mode: boolean = false): Item\n\t{\n\t\tthis.#notice = !!mode;\n\t\tthis.#emitChange();\n\t\treturn this;\n\t}\n\n\tsetClickHandler(handler: Function): Item\n\t{\n\t\tthis.#onclick = handler;\n\t\treturn this;\n\t}\n\n\tsetModuleId(moduleId: ?string): Item\n\t{\n\t\tthis.#moduleId = moduleId;\n\n\t\treturn this;\n\t}\n\n\tsetActions(actions: Array = []): Item\n\t{\n\t\tthis.#actions = actions;\n\n\t\treturn this;\n\t}\n\n\tsetItems(items: Array = []): Item\n\t{\n\t\tthis.#collection.setItems(items || []);\n\t\tthis.#emitChange();\n\t\treturn this;\n\t}\n\n\tgetCollection(): Collection\n\t{\n\t\treturn this.#collection;\n\t}\n\n\tgetLabel(): string\n\t{\n\t\treturn this.#label;\n\t}\n\n\tgetId(): ?string\n\t{\n\t\treturn this.#id;\n\t}\n\n\tgetModuleId(): ?string\n\t{\n\t\treturn this.#moduleId;\n\t}\n\n\tgetClickHandler(): ?Function\n\t{\n\t\treturn this.#onclick;\n\t}\n\n\tisActive(): boolean\n\t{\n\t\treturn this.#active;\n\t}\n\n\thasNotice(): boolean\n\t{\n\t\treturn this.#notice;\n\t}\n\n\thasActions(): boolean\n\t{\n\t\treturn this.#actions.length > 0;\n\t}\n\n\tchange(options: ItemOptions)\n\t{\n\t\tif (!Type.isUndefined(options.label))\n\t\t{\n\t\t\tthis.setLabel(options.label);\n\t\t}\n\n\t\tif (!Type.isUndefined(options.active))\n\t\t{\n\t\t\tthis.setActive(options.active);\n\t\t}\n\n\t\tif (!Type.isUndefined(options.notice))\n\t\t{\n\t\t\tthis.setNotice(options.notice);\n\t\t}\n\n\t\tif (!Type.isUndefined(options.id))\n\t\t{\n\t\t\tthis.setId(options.id);\n\t\t}\n\n\t\tif (!Type.isUndefined(options.items))\n\t\t{\n\t\t\tthis.setItems(options.items);\n\t\t}\n\n\t\tif (!Type.isUndefined(options.onclick))\n\t\t{\n\t\t\tthis.setClickHandler(options.onclick);\n\t\t}\n\n\t\tif (!Type.isUndefined(options.actions))\n\t\t{\n\t\t\tthis.setActions(options.actions);\n\t\t}\n\t}\n\n\tremove()\n\t{\n\t\tDom.remove(this.#node);\n\n\t\tthis.#node = null;\n\t}\n\n\t#emitChange(data = {}, type: string = null): void\n\t{\n\t\tthis.emit('change', data);\n\t\tif (type)\n\t\t{\n\t\t\tthis.emit('change:' + type, data);\n\t\t}\n\t}\n\n\t#handleClick(event: Event)\n\t{\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tthis.setActive(this.#collection.isEmpty() || !this.isActive());\n\t\tthis.emit('click', {item: this});\n\t\tif (Type.isFunction(this.#onclick))\n\t\t{\n\t\t\tthis.#onclick.apply(this);\n\t\t}\n\t}\n\n\t#showActionMenu(event: Event)\n\t{\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tif (this.actionsMenu)\n\t\t{\n\t\t\tthis.actionsMenu.getPopupWindow().close();\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst targetIcon: HTMLElement = event.currentTarget;\n\n\t\tDom.addClass(targetIcon, '--hover');\n\t\tDom.addClass(targetIcon.parentNode, '--hover');\n\n\t\tthis.actionsMenu = new Menu({\n\t\t\tid: `ui-sidepanel-menu-item-actions-${this.getId()}`,\n\t\t\tbindElement: targetIcon\n\t\t});\n\n\t\tthis.#actions.forEach((action: ActionOptions) => {\n\t\t\tthis.actionsMenu.addMenuItem({\n\t\t\t\ttext: action.label,\n\t\t\t\tonclick: (event, menuItem) => {\n\t\t\t\t\tmenuItem.getMenuWindow().close();\n\t\t\t\t\taction.onclick(this);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tthis.actionsMenu.getPopupWindow()\n\t\t\t.subscribe('onClose', () => {\n\t\t\t\tDom.removeClass(targetIcon, '--hover');\n\t\t\t\tDom.removeClass(targetIcon.parentNode, '--hover');\n\n\t\t\t\tthis.actionsMenu.destroy();\n\t\t\t\tthis.actionsMenu = null;\n\t\t\t})\n\t\t;\n\n\t\tthis.actionsMenu.show();\n\t}\n\n\trender(): HTMLElement\n\t{\n\t\tconst isEmpty = this.#collection.isEmpty();\n\n\t\tconst classes = [];\n\t\tif (this.#active)\n\t\t{\n\t\t\tif (isEmpty)\n\t\t\t{\n\t\t\t\tclasses.push('ui-sidepanel-menu-active');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tclasses.push('ui-sidepanel-menu-expand');\n\t\t\t}\n\t\t}\n\n\t\tconst actionText = Loc.getMessage('UI_SIDEPANEL_MENU_JS_' + (this.isActive() ? 'COLLAPSE' : 'EXPAND'));\n\t\tthis.#node = Tag.render`\n\t\t\t
  • \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${!isEmpty ? `
    ${actionText}
    ` : ''}\n\t\t\t\t\t${this.#notice ? '' : ''}\n\t\t\t\t\t${\n\t\t\t\t\t\tthis.hasActions()\n\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t
  • \n\t\t`;\n\n\t\tif (this.hasActions())\n\t\t{\n\t\t\tEvent.bind(\n\t\t\t\tthis.#node.querySelector('.ui-sidepanel-menu-action-icon'),\n\t\t\t\t'click',\n\t\t\t\tthis.#showActionMenu.bind(this)\n\t\t\t);\n\t\t}\n\n\t\tif (!this.#collection.isEmpty())\n\t\t{\n\t\t\tDom.append(this.#collection.render(), this.#node);\n\t\t}\n\n\t\treturn this.#node;\n\t}\n}\n","import 'ui.fonts.opensans';\nimport './css/style.css';\nimport {Item, ItemOptions} from './item.js';\nimport {Collection} from './collection.js';\nimport {Tag} from 'main.core';\n\nexport {Item};\n\nexport type MenuOptions = {\n\titems: Array;\n};\n\nexport class Menu extends Collection\n{\n\t#node: HTMLElement;\n\n\tconstructor(options: MenuOptions = {})\n\t{\n\t\tsuper({items: options.items});\n\n\t\tif (!this.hasActive())\n\t\t{\n\t\t\tthis.setActiveFirstItem();\n\t\t}\n\t}\n\n\trender(): HTMLElement\n\t{\n\t\tconst itemsNode = super.render();\n\t\tif (!this.#node)\n\t\t{\n\t\t\tthis.#node = Tag.render`
      `;\n\t\t\tthis.#node.appendChild(itemsNode);\n\t\t}\n\n\t\treturn this.#node;\n\t}\n\n\trenderTo(target: HTMLElement): HTMLElement\n\t{\n\t\tconst node = this.render();\n\t\ttarget.appendChild(node);\n\t\treturn node;\n\t}\n}\n"],"names":["Collection","EventEmitter","constructor","options","setEventNamespace","setItems","items","setActiveFirstItem","item","list","setActive","getCollection","getActiveItem","filter","isActive","syncActive","excludeItem","otherItem","forEach","isEmpty","emit","add","itemOptions","render","get","id","getId","change","foundItem","find","remove","map","length","hasActive","recursively","has","some","Tag","innerHTML","appendChild","active","Item","push","subscribe","data","setTimeout","setLabel","label","setNotice","notice","setId","setClickHandler","onclick","setActions","actions","setModuleId","moduleId","event","mode","handler","getLabel","getModuleId","getClickHandler","hasNotice","hasActions","Type","isUndefined","Dom","classes","actionText","Loc","getMessage","join","bind","safe","Event","querySelector","append","type","preventDefault","stopPropagation","isFunction","apply","actionsMenu","getPopupWindow","close","targetIcon","currentTarget","addClass","parentNode","Menu","bindElement","action","addMenuItem","text","menuItem","getMenuWindow","removeClass","destroy","show","itemsNode","renderTo","target","node"],"mappings":"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"}