/// import { Disposable } from '@devexpress/analytics-core/analytics-utils'; import * as ko from 'knockout'; import { DashboardItem, DashboardLayoutGroupOrientation, DashboardLayoutNode, DashboardTabPage, IDisposable, LayoutItemInsertPosition } from '../../../model'; import { KnockoutEntry } from '../../../model/internal/_knockout-utils'; import { DashboardLayoutItemPlaceholder } from '../../../model/layout/_layout-item-placeholder'; import { DashboardItemJson } from '../../../model/layout/metadata/_dashboard-layout-node'; import { Constraints } from '../../../viewer-parts/layout/_utils.layout'; import { ISizeController } from '../../internal/_interfaces'; import { DashboardItemContext } from '../../viewer/_viewer-interfaces'; import { IResizableModel } from './_resizable'; export interface ILayoutItemViewModel extends IDisposable { create: (modelItemJson: any, location: string, insertionBehavior?: LayoutItemInsertionBehavior) => any; moveTo: (itemModel?: ILayoutItemViewModel, location?: LayoutItemInsertPosition, insertionBehavior?: LayoutItemInsertionBehavior) => any; delete: () => void; canAttach?: (something: ILayoutItemViewModel | DashboardItemJson) => boolean; createTabPage: () => void; model: DashboardLayoutNode; item: ko.Subscribable; dashboardItem: ko.Subscribable; orientation: ko.Observable; weight: ko.Observable; visibleItems: ko.ObservableArray; childItems: ko.ObservableArray; activeTabPage: KnockoutEntry; activeTabIndex: KnockoutEntry; template: string; hasItem: ko.Subscribable; ignoreChildMaxHeight: boolean; dragOverInnerElementController?: DragOverController; getPlaceholder(): DashboardLayoutItemPlaceholder; } export interface ILayoutItemViewModelProvider { _createViewModel(): ILayoutItemViewModel; } export interface DragOverController { selector: string; onDragOver(elementIndex: number): void; } export interface ObservableConstraints { min: { width: ko.Observable; height: ko.Observable; }; max: { width: ko.Observable; height: ko.Observable; }; } export interface LayoutDroppableItem { node: LayoutItem; dropBehavior: LayoutItemInsertionBehavior; } export type LayoutItemInsertionBehavior = 'InsertIntoGroup' | 'InsertBesideGroup'; export declare function _syncLayoutHelper(sourceArray: ko.ObservableArray, destArray: ko.ObservableArray, addHandler: (value: T) => U): ko.Subscription; export declare function setHoverLocation(hoverLayoutItem: LayoutItem, location?: LayoutItemInsertPosition, dropBehavior?: LayoutItemInsertionBehavior): void; export declare let SplitterSize: number; export declare const MinWeight = 0.00001; export type LayoutEvent = 'click' | 'mouseover' | 'resize-started' | 'resize-completed' | 'get-context' | 'get-local-context' | 'get-context-menu-service' | 'get-empty-item-templates-service' | 'get-layout-item-placeholder-service'; export declare class LayoutItem extends Disposable implements IResizableModel { viewModel: ILayoutItemViewModel; private _isUpdating; static findLargestItem(layoutItem: LayoutItem): { maxSquare: number; item: LayoutItem; }; private _constraints; _parent: ko.Observable; private _width; private _height; private _changeWeight; private _changeWeightCore; private _correntWeight; private _safeSetWidth; private _safeSetHeight; private _updateChildrenSize; private _updateChildrenResizeHandles; constructor(viewModel: ILayoutItemViewModel, parent?: LayoutItem); dispose(): void; isValidWidth(val: number): boolean; isValidHeight(val: number): boolean; setConstraints: (constraints: Constraints) => void; getSelectionParentsList(location: LayoutItemInsertPosition): LayoutDroppableItem[]; private _getRequiredOrientationByLocation; private _inverseOrientation; private _checkGroupWillBeUnwrapped; findLayoutItem(criteria: (item: LayoutItem) => boolean): LayoutItem; findLayoutItemByItemModel(itemModel: ILayoutItemViewModel): LayoutItem; items: ko.ObservableArray; minWidth: ko.Computed; minHeight: ko.Computed; maxWidth: ko.Computed; maxHeight: ko.Computed; width: ko.Computed; height: ko.Computed; contentWidth: ko.Computed; contentHeight: ko.Computed; containerWidth: ko.Computed; containerHeight: ko.Computed; resizeHandles: ko.Observable; isSelected: ko.Observable; areChildrenSelected: ko.Computed; dragOverLocation: ko.Observable; itemStyle: ko.Computed; onEvent(item: LayoutItem, event: LayoutEvent): any; coverClickHandler: (e: any) => void; coverMouseOverHandler: (e: any) => void; resizeStarted: () => void; resizeCompleted: () => void; getContext: () => any; getLocalContext: () => DashboardItemContext; getContextMenu: () => any; getEmptyItemTemplates: () => any; getLayoutItemPlaceholder: () => any; verticalPaddings: ko.Observable; horizontalPaddings: ko.Observable; isDesignMode: ko.Observable; isLayoutReady: ko.Observable; updateSize(width: number, height: number): void; visible: ko.Computed; create(modelItemJson?: any, location?: string, insertBehavior?: LayoutItemInsertionBehavior): LayoutItem; moveTo(layoutNode: LayoutItem, location: LayoutItemInsertPosition, insertBehavior?: LayoutItemInsertionBehavior): LayoutItem; delete(): void; getRoot(): LayoutItem; canAttach(something: ILayoutItemViewModel | DashboardItemJson): boolean; placeholderItem: LayoutItem; getPlaceholder(): LayoutItem; repaintCallbacks: JQuery.Callbacks; sizeController: ISizeController; } export declare const _registerDxLayoutItem: () => void;