UNPKG

@infinite-canvas-tutorial/webcomponents

Version:
88 lines (84 loc) 3.24 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { html, css, LitElement } from 'lit'; import { consume } from '@lit/context'; import { map } from 'lit/directives/map.js'; import { customElement } from 'lit/decorators.js'; import { apiContext, appStateContext, nodesContext, Task } from '../context'; let LayersPanel = class LayersPanel extends LitElement { handleClose() { this.api.setTaskbars(this.appState.taskbarSelected.filter((task) => task !== Task.SHOW_LAYERS_PANEL)); } handleSelect(e, id) { this.api.selectNodes([id], e.shiftKey); } render() { const { layersSelected, taskbarSelected } = this.appState; return taskbarSelected.includes(Task.SHOW_LAYERS_PANEL) ? html `<section> <h4> Layers <sp-action-button quiet size="s" @click=${this.handleClose}> <sp-icon-close slot="icon"></sp-icon-close> </sp-action-button> </h4> <div class="layers-container"> ${map(this.nodes, (node) => { // TODO: hierarchy // TODO: virtual scroll for better performance return html `<ic-spectrum-layers-panel-item .node=${node} draggable @click=${(e) => this.handleSelect(e, node.id)} ?selected=${layersSelected.includes(node.id)} ?child=${!!node.parentId} ></ic-spectrum-layers-panel-item>`; })} </div> </section>` : null; } }; LayersPanel.styles = css ` section { display: flex; flex-direction: column; background: var(--spectrum-gray-100); border-radius: var(--spectrum-corner-radius-200); margin: 4px; filter: drop-shadow( var(--spectrum-drop-shadow-color) 0px var(--spectrum-drop-shadow-y) var(--spectrum-drop-shadow-blur) ); } h4 { padding: var(--spectrum-global-dimension-size-100); display: flex; align-items: center; justify-content: space-between; margin: 0; } .layers-container { height: 300px; overflow: hidden; overflow-y: auto; } `; __decorate([ consume({ context: appStateContext, subscribe: true }) ], LayersPanel.prototype, "appState", void 0); __decorate([ consume({ context: nodesContext, subscribe: true }) ], LayersPanel.prototype, "nodes", void 0); __decorate([ consume({ context: apiContext, subscribe: true }) ], LayersPanel.prototype, "api", void 0); LayersPanel = __decorate([ customElement('ic-spectrum-layers-panel') ], LayersPanel); export { LayersPanel }; //# sourceMappingURL=layers-panel.js.map