public setSelectionMode()

in src/canvastools/ts/CanvasTools/Selection/AreaSelector.ts [216:260]


    public setSelectionMode(settings: ISelectorSettings | SelectionMode) {
        let selectionSettings: ISelectorSettings;
        if (settings === null || settings === undefined) {
            selectionSettings = {
                mode: SelectionMode.NONE,
            };
        } else if ((settings as ISelectorSettings).mode !== undefined) {
            selectionSettings = settings as ISelectorSettings;
        } else {
            selectionSettings = { mode: settings as SelectionMode };
        }

        if (this.selectorSettings === undefined || this.selectorSettings.mode !== selectionSettings.mode) {
            this.disable();
            this.selectorSettings = selectionSettings;

            if (this.selectorSettings.mode === SelectionMode.NONE) {
                this.selector = null;
                return;
            } else if (this.selectorSettings.mode === SelectionMode.COPYRECT) {
                this.selector = this.rectCopySelector;
                const template = this.selectorSettings.template;
                if (template !== undefined) {
                    this.rectCopySelector.setTemplate(template);
                } else {
                    this.rectCopySelector.setTemplate(AreaSelector.DefaultTemplateSize);
                }
            } else if (this.selectorSettings.mode === SelectionMode.RECT) {
                this.selector = this.rectSelector;
            } else if (this.selectorSettings.mode === SelectionMode.POINT) {
                this.selector = this.pointSelector;
            } else if (this.selectorSettings.mode === SelectionMode.POLYLINE) {
                this.selector = this.polylineSelector;
            } else if (this.selectorSettings.mode === SelectionMode.POLYGON) {
                this.selector = this.polygonSelector;
            }
            // restore enabled status
            this.enable();
            if (this.isVisible) {
                this.show();
            } else {
                this.hide();
            }
        }
    }