{"version":3,"file":"static/js/main.6f96d49f443fcc3553a5.1713179789357.js","mappings":"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E,EAAQg9H,MAAO98H,GAAOz/E,OAAOq+H,WAAA,EAGxD1+B,CAAA,CDzBO,CAAqCq7C,GAAiB59I,EAAA,EDJvD,CACb,IACA,OACA,UACA,OACA,UACA,QACA,QACA,IACA,OACA,MACA,MACA,MACA,aACA,OACA,KACA,SACA,SACA,UACA,OACA,OACA,MACA,WACA,OACA,WACA,KACA,MACA,UACA,MACA,SACA,MACA,KACA,KACA,KACA,QACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,SACA,QACA,SACA,KACA,OACA,OACA,MACA,OACA,UACA,OACA,WACA,OACA,QACA,MACA,WACA,SACA,KACA,WACA,SACA,SACA,IACA,QACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,QACA,SACA,OACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,QACA,KACA,QACA,IACA,KACA,MACA,QACA,MAGA,SACA,WACA,OACA,UACA,gBACA,IACA,QACA,OACA,iBACA,SACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,MACA,OACA,WACA,SCnIU2sC,SAAQ,SAAA3sC,GAClBo6I,GAAOp6I,GAAco6I,GAAOp6I,EAAA,KELT,oBAAAA,EAOPA,EAAgBiuG,GAAA,KACrByvG,MAAQ19M,EAAA,KACRw+M,YAAcvwG,EAAA,KACdswG,SAAWtkE,GAAcj6I,GAI9Bg2J,GAAW+nD,WAAWx6N,KAAKi7N,YAAc,OAAAvwG,EAAAjuG,EAAArJ,UAAAs3G,EAG3C2xG,aAAA,SACE5/M,EACAiuG,EACA5rB,EACAj9E,GAAA,IAGM+8E,EAAM/8E,EADIo0L,GAAQj2M,KAAKm6N,MAAOzvG,EAAkB5rB,EAAYj9E,GACvC1iB,KAAK,IAAK,IAC/B6/G,EAAKh/G,KAAKi7N,YAAcx+M,EAG9BqiF,EAAWu6H,YAAYr6G,EAAIA,EA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","sources":["../node_modules/base64-js/index.js","../node_modules/basicprimitives/src/configs/LevelAnnotationConfig.js","../node_modules/basicprimitives/src/enums.js","../node_modules/basicprimitives/src/graphics/structs/Thickness.js","../node_modules/basicprimitives/src/common/index.js","../node_modules/basicprimitives/src/common/colors.js","../node_modules/basicprimitives/src/graphics/structs/Size.js","../node_modules/basicprimitives/src/graphics/dom.js","../node_modules/basicprimitives/src/common/jsonml-html.js","../node_modules/basicprimitives/src/graphics/structs/Point.js","../node_modules/basicprimitives/src/graphics/structs/Matrix.js","../node_modules/basicprimitives/src/graphics/structs/Vector.js","../node_modules/basicprimitives/src/graphics/structs/Interval.js","../node_modules/basicprimitives/src/graphics/structs/Rect.js","../node_modules/basicprimitives/src/algorithms/binarySearch.js","../node_modules/basicprimitives/src/algorithms/SortedList.js","../node_modules/basicprimitives/src/algorithms/getCrossingRectangles.js","../node_modules/basicprimitives/src/algorithms/getFamilyLoops.js","../node_modules/basicprimitives/src/algorithms/getFamilyUnits.js","../node_modules/basicprimitives/src/algorithms/getLiniarBreaks.js","../node_modules/basicprimitives/src/algorithms/LinkedHashItems.js","../node_modules/basicprimitives/src/algorithms/getMergedRectangles.js","../node_modules/basicprimitives/src/algorithms/getMinimumCrossingRows.js","../node_modules/basicprimitives/src/algorithms/mergeSort.js","../node_modules/basicprimitives/src/algorithms/getMergedIntervals.js","../node_modules/basicprimitives/src/algorithms/Tree.js","../node_modules/basicprimitives/src/algorithms/FibonacciHeap.js","../node_modules/basicprimitives/src/algorithms/Graph.js","../node_modules/basicprimitives/src/algorithms/Family.js","../node_modules/basicprimitives/src/algorithms/FamilyMargins.js","../node_modules/basicprimitives/src/algorithms/FamilyAlignment.js","../node_modules/basicprimitives/src/algorithms/RMQ.js","../node_modules/basicprimitives/src/algorithms/LCA.js","../node_modules/basicprimitives/src/algorithms/Pile.js","../node_modules/basicprimitives/src/algorithms/QuadTree.js","../node_modules/basicprimitives/src/algorithms/SpatialIndex.js","../node_modules/basicprimitives/src/algorithms/TreeLevels.js","../node_modules/basicprimitives/src/configs/OrgConfig.js","../node_modules/basicprimitives/src/configs/OrgItemConfig.js","../node_modules/basicprimitives/src/events/OrgEventArgs.js","../node_modules/basicprimitives/src/configs/FamConfig.js","../node_modules/basicprimitives/src/configs/FamItemConfig.js","../node_modules/basicprimitives/src/events/FamEventArgs.js","../node_modules/basicprimitives/src/configs/BackgroundAnnotationConfig.js","../node_modules/basicprimitives/src/configs/ConnectorAnnotationConfig.js","../node_modules/basicprimitives/src/configs/HighlightPathAnnotationConfig.js","../node_modules/basicprimitives/src/configs/LabelAnnotationConfig.js","../node_modules/basicprimitives/src/configs/PaletteItemConfig.js","../node_modules/basicprimitives/src/configs/ShapeAnnotationConfig.js","../node_modules/basicprimitives/src/configs/TemplateConfig.js","../node_modules/basicprimitives/src/templates/html/AnnotationLabelTemplate.js","../node_modules/basicprimitives/src/templates/html/ButtonsTemplate.js","../node_modules/basicprimitives/src/templates/html/CustomRenderTemplate.js","../node_modules/basicprimitives/src/templates/html/CheckBoxTemplate.js","../node_modules/basicprimitives/src/templates/html/CursorTemplate.js","../node_modules/basicprimitives/src/templates/html/DotHighlightTemplate.js","../node_modules/basicprimitives/src/graphics/EnumValues.js","../node_modules/basicprimitives/src/templates/html/RotatedText.js","../node_modules/basicprimitives/src/templates/html/GroupTitleTemplate.js","../node_modules/basicprimitives/src/templates/html/HighlightTemplate.js","../node_modules/basicprimitives/src/templates/html/ItemTemplate.js","../node_modules/basicprimitives/src/templates/html/UserTemplate.js","../node_modules/basicprimitives/src/templates/html/LabelAnnotationTemplate.js","../node_modules/basicprimitives/src/templates/html/LevelTitleTemplate.js","../node_modules/basicprimitives/src/templates/html/LevelBackgroundTemplate.js","../node_modules/basicprimitives/src/managers/DependencyManager.js","../node_modules/basicprimitives/src/managers/TaskManager.js","../node_modules/basicprimitives/src/tasks/options/OptionsTask.js","../node_modules/basicprimitives/src/readers/ArrayReader.js","../node_modules/basicprimitives/src/readers/ValueReader.js","../node_modules/basicprimitives/src/readers/ObjectReader.js","../node_modules/basicprimitives/src/readers/EnumerationReader.js","../node_modules/basicprimitives/src/tasks/options/CalloutOptionTask.js","../node_modules/basicprimitives/src/tasks/options/ConnectorsOptionTask.js","../node_modules/basicprimitives/src/tasks/options/OrgItemsOptionTask.js","../node_modules/basicprimitives/src/tasks/options/ItemsContentOptionTask.js","../node_modules/basicprimitives/src/readers/FunctionReader.js","../node_modules/basicprimitives/src/tasks/options/ItemsSizesOptionTask.js","../node_modules/basicprimitives/src/tasks/options/MinimumVisibleLevelsOptionTask.js","../node_modules/basicprimitives/src/tasks/options/LabelsOptionTask.js","../node_modules/basicprimitives/src/tasks/options/TemplatesOptionTask.js","../node_modules/basicprimitives/src/tasks/options/OrientationOptionTask.js","../node_modules/basicprimitives/src/tasks/options/OrgVisualTreeOptionTask.js","../node_modules/basicprimitives/src/tasks/options/MinimizedItemsOptionTask.js","../node_modules/basicprimitives/src/tasks/options/selection/CursorItemOptionTask.js","../node_modules/basicprimitives/src/tasks/options/selection/HighlightItemOptionTask.js","../node_modules/basicprimitives/src/tasks/options/selection/SelectedItemsOptionTask.js","../node_modules/basicprimitives/src/tasks/options/selection/CursorSelectionPathModeOptionTask.js","../node_modules/basicprimitives/src/tasks/options/annotations/SplitAnnotationsOptionTask.js","../node_modules/basicprimitives/src/tasks/options/annotations/ShapeAnnotationOptionTask.js","../node_modules/basicprimitives/src/tasks/options/annotations/HighlightPathAnnotationOptionTask.js","../node_modules/basicprimitives/src/tasks/options/annotations/ConnectorAnnotationOptionTask.js","../node_modules/basicprimitives/src/tasks/options/annotations/BackgroundAnnotationOptionTask.js","../node_modules/basicprimitives/src/tasks/options/annotations/LevelAnnotationOptionTask.js","../node_modules/basicprimitives/src/tasks/options/ScaleOptionTask.js","../node_modules/basicprimitives/src/tasks/options/FrameOptionTask.js","../node_modules/basicprimitives/src/tasks/options/LevelTitlePlacementOptionTask.js","../node_modules/basicprimitives/src/tasks/options/LevelTitleTemplateOptionTask.js","../node_modules/basicprimitives/src/tasks/transformations/CombinedContextsTask.js","../node_modules/basicprimitives/src/models/OrgItem.js","../node_modules/basicprimitives/src/tasks/transformations/OrgTreeTask.js","../node_modules/basicprimitives/src/models/Template.js","../node_modules/basicprimitives/src/tasks/templates/ReadTemplatesTask.js","../node_modules/basicprimitives/src/tasks/templates/ActiveItemsTask.js","../node_modules/basicprimitives/src/models/TemplateParams.js","../node_modules/basicprimitives/src/tasks/templates/ItemTemplateParamsTask.js","../node_modules/basicprimitives/src/tasks/templates/GroupTitleTemplateTask.js","../node_modules/basicprimitives/src/tasks/templates/CheckBoxTemplateTask.js","../node_modules/basicprimitives/src/tasks/templates/ButtonsTemplateTask.js","../node_modules/basicprimitives/src/tasks/templates/AnnotationLabelTemplateTask.js","../node_modules/basicprimitives/src/tasks/templates/LevelAnnotationTemplateTask.js","../node_modules/basicprimitives/src/tasks/transformations/visualTreeBuilder/enums.js","../node_modules/basicprimitives/src/tasks/transformations/visualTreeBuilder/BranchAligner.js","../node_modules/basicprimitives/src/models/TreeItem.js","../node_modules/basicprimitives/src/tasks/transformations/visualTreeBuilder/NodeTypeSorter.js","../node_modules/basicprimitives/src/tasks/transformations/visualTreeBuilder/NodeGroupSorter.js","../node_modules/basicprimitives/src/tasks/transformations/visualTreeBuilder/VisualTreeBuilder.js","../node_modules/basicprimitives/src/tasks/transformations/visualTreeBuilder/NavigationalFamily.js","../node_modules/basicprimitives/src/tasks/transformations/VisualTreeTask.js","../node_modules/basicprimitives/src/models/TreeLevelConnectorStackSize.js","../node_modules/basicprimitives/src/graphics/structs/PaletteItem.js","../node_modules/basicprimitives/src/graphics/structs/MoveSegment.js","../node_modules/basicprimitives/src/graphics/structs/LineSegment.js","../node_modules/basicprimitives/src/graphics/structs/QuadraticArcSegment.js","../node_modules/basicprimitives/src/graphics/structs/Polyline.js","../node_modules/basicprimitives/src/graphics/structs/CubicArcSegment.js","../node_modules/basicprimitives/src/connectors/BaseConnectorBundle.js","../node_modules/basicprimitives/src/connectors/VerticalConnectorBundle.js","../node_modules/basicprimitives/src/connectors/HorizontalConnectorBundle.js","../node_modules/basicprimitives/src/tasks/transformations/VisualTreeLevelsTask.js","../node_modules/basicprimitives/src/tasks/transformations/OrgExtractNestedLayoutsTask.js","../node_modules/basicprimitives/src/models/TreeLevelPosition.js","../node_modules/basicprimitives/src/models/TreeItemPosition.js","../node_modules/basicprimitives/src/tasks/transformations/layouts/OrgLayout.js","../node_modules/basicprimitives/src/tasks/transformations/layouts/ItemLayout.js","../node_modules/basicprimitives/src/tasks/transformations/OrgCreateLayoutsTreeTask.js","../node_modules/basicprimitives/src/tasks/transformations/ConnectionsGraphTask.js","../node_modules/basicprimitives/src/tasks/transformations/selection/HighlightItemTask.js","../node_modules/basicprimitives/src/tasks/transformations/selection/CursorItemTask.js","../node_modules/basicprimitives/src/tasks/transformations/selection/OrgCursorNeighboursTask.js","../node_modules/basicprimitives/src/tasks/transformations/selection/SelectedItemsTask.js","../node_modules/basicprimitives/src/tasks/transformations/selection/OrgSelectionPathItemsTask.js","../node_modules/basicprimitives/src/tasks/transformations/selection/NormalVisibilityItemsByAnnotationTask.js","../node_modules/basicprimitives/src/tasks/transformations/selection/NormalVisibilityItemsByConnectorAnnotationTask.js","../node_modules/basicprimitives/src/tasks/transformations/selection/OrgNormalVisibilityItemsByMinimumVisibleLevelsTask.js","../node_modules/basicprimitives/src/tasks/transformations/selection/CombinedNormalVisibilityItemsTask.js","../node_modules/basicprimitives/src/tasks/layout/FrameSizeTask.js","../node_modules/basicprimitives/src/tasks/layout/LevelTitleSizeTask.js","../node_modules/basicprimitives/src/tasks/options/LayoutOptionsTask.js","../node_modules/basicprimitives/src/tasks/layout/CurrentControlSizeTask.js","../node_modules/basicprimitives/src/tasks/layout/CurrentScrollPositionTask.js","../node_modules/basicprimitives/src/tasks/transformations/ItemsPositionsTask.js","../node_modules/basicprimitives/src/tasks/layout/AlignDiagramTask.js","../node_modules/basicprimitives/src/managers/KeyboardNavigationManager.js","../node_modules/basicprimitives/src/graphics/Transform.js","../node_modules/basicprimitives/src/tasks/layout/CreateTransformTask.js","../node_modules/basicprimitives/src/graphics/structs/PaletteManager.js","../node_modules/basicprimitives/src/tasks/transformations/PaletteManagerTask.js","../node_modules/basicprimitives/src/tasks/layout/ApplyLayoutChangesTask.js","../node_modules/basicprimitives/src/tasks/layout/CenterOnCursorTask.js","../node_modules/basicprimitives/src/tasks/layout/ProjectItemsToFrameTask.js","../node_modules/basicprimitives/src/tasks/layout/ViewPortPlacementTask.js","../node_modules/basicprimitives/src/tasks/layout/VerticalOffsetTask.js","../node_modules/basicprimitives/src/tasks/layout/OrgLogicalLevelsPlacementTask.js","../node_modules/basicprimitives/src/tasks/layout/MergeLevelIntervalsTask.js","../node_modules/basicprimitives/src/graphics/shapes/BaseShape.js","../node_modules/basicprimitives/src/graphics/shapes/MergedRectangles.js","../node_modules/basicprimitives/src/tasks/renders/DrawBackgroundAnnotationTask.js","../node_modules/basicprimitives/src/graphics/structs/PolylinesBuffer.js","../node_modules/basicprimitives/src/tasks/renders/DrawHighlightPathAnnotationTask.js","../node_modules/basicprimitives/src/events/RenderEventArgs.js","../node_modules/basicprimitives/src/tasks/renders/offsetResolver/CollinearVectorBundle.js","../node_modules/basicprimitives/src/graphics/shapes/ConnectorStraight.js","../node_modules/basicprimitives/src/graphics/shapes/ConnectorOffbeat.js","../node_modules/basicprimitives/src/tasks/renders/DrawConnectorAnnotationTask.js","../node_modules/basicprimitives/src/tasks/renders/offsetResolver/ConnectorAnnotationOffsetResolver.js","../node_modules/basicprimitives/src/graphics/shapes/Callout.js","../node_modules/basicprimitives/src/graphics/shapes/Marker.js","../node_modules/basicprimitives/src/graphics/shapes/Shape.js","../node_modules/basicprimitives/src/tasks/renders/DrawShapeAnnotationTask.js","../node_modules/basicprimitives/src/tasks/renders/DrawCursorTask.js","../node_modules/basicprimitives/src/tasks/renders/DrawHighlightTask.js","../node_modules/basicprimitives/src/tasks/renders/DrawHighlightAnnotationTask.js","../node_modules/basicprimitives/src/tasks/renders/DrawTreeItemsTask.js","../node_modules/basicprimitives/src/graphics/structs/DotSegment.js","../node_modules/basicprimitives/src/tasks/renders/DrawMinimizedItemsTask.js","../node_modules/basicprimitives/src/tasks/renders/DrawConnectorsTask.js","../node_modules/basicprimitives/src/graphics/structs/Label.js","../node_modules/basicprimitives/src/tasks/renders/DrawItemLabelsTask.js","../node_modules/basicprimitives/src/tasks/renders/DrawFrameItemsTask.js","../node_modules/basicprimitives/src/tasks/renders/DrawFrameHighlightTask.js","../node_modules/basicprimitives/src/tasks/renders/DrawLevelAnnotationTitlesTask.js","../node_modules/basicprimitives/src/tasks/renders/DrawLevelAnnotationBackgroundTask.js","../node_modules/basicprimitives/src/OrgTaskManagerFactory.js","../node_modules/basicprimitives/src/OrgEventArgsFactory.js","../node_modules/basicprimitives/src/graphics/Cache.js","../node_modules/basicprimitives/src/graphics/Placeholder.js","../node_modules/basicprimitives/src/graphics/Layer.js","../node_modules/basicprimitives/src/graphics/Graphics.js","../node_modules/basicprimitives/src/graphics/Element.js","../node_modules/basicprimitives/src/graphics/SvgGraphics.js","../node_modules/basicprimitives/src/BaseControl.js","../node_modules/basicprimitives/src/graphics/createGraphics.js","../node_modules/basicprimitives/src/OrgDiagram.js","../node_modules/basicprimitives/src/tasks/options/FamItemsOptionTask.js","../node_modules/basicprimitives/src/tasks/transformations/selection/FamNormalVisibilityItemsByMinimumVisibleLevelsTask.js","../node_modules/basicprimitives/src/tasks/layout/FamLogicalLevelsPlacementTask.js","../node_modules/basicprimitives/src/tasks/options/FamVisualTreeOptionTask.js","../node_modules/basicprimitives/src/tasks/options/HideGrandParentsConnectorsOptionTask.js","../node_modules/basicprimitives/src/tasks/options/NormalizeOptionTask.js","../node_modules/basicprimitives/src/tasks/options/ExtractNestedLayoutsOptionTask.js","../node_modules/basicprimitives/src/tasks/options/OrderFamilyNodesOptionTask.js","../node_modules/basicprimitives/src/tasks/options/LinePaletteOptionTask.js","../node_modules/basicprimitives/src/tasks/options/selection/NeighboursSelectionModeOptionTask.js","../node_modules/basicprimitives/src/tasks/transformations/familyTransformations/UserDefinedNodesOrder.js","../node_modules/basicprimitives/src/tasks/transformations/UserDefinedNodesOrderTask.js","../node_modules/basicprimitives/src/models/FamilyItem.js","../node_modules/basicprimitives/src/tasks/transformations/LogicalFamilyTask.js","../node_modules/basicprimitives/src/tasks/transformations/RemoveLoopsTask.js","../node_modules/basicprimitives/src/tasks/options/annotations/LabelAnnotationOptionTask.js","../node_modules/basicprimitives/src/tasks/options/annotations/LabelAnnotationTemplateOptionTask.js","../node_modules/basicprimitives/src/tasks/options/annotations/LabelAnnotationPlacementOptionTask.js","../node_modules/basicprimitives/src/models/EdgeItem.js","../node_modules/basicprimitives/src/tasks/transformations/AddLabelAnnotationsTask.js","../node_modules/basicprimitives/src/tasks/transformations/HideGrandParentsConnectorsTask.js","../node_modules/basicprimitives/src/tasks/transformations/BindFamilyConnectorsTask.js","../node_modules/basicprimitives/src/tasks/transformations/familyTransformations/BaseTransformer.js","../node_modules/basicprimitives/src/connectors/MatrixConnectorBundle.js","../node_modules/basicprimitives/src/tasks/transformations/layouts/MatrixLayout.js","../node_modules/basicprimitives/src/tasks/transformations/layouts/HorizontalLayout.js","../node_modules/basicprimitives/src/tasks/transformations/familyTransformations/FamilyMatrixesExtractor.js","../node_modules/basicprimitives/src/tasks/transformations/ExtractNestedLayoutsTask.js","../node_modules/basicprimitives/src/tasks/transformations/familyTransformations/FamilyNormalizer.js","../node_modules/basicprimitives/src/tasks/transformations/NormalizeLogicalFamilyTask.js","../node_modules/basicprimitives/src/tasks/transformations/familyTransformations/FamilyBalanceItem.js","../node_modules/basicprimitives/src/models/Slot.js","../node_modules/basicprimitives/src/tasks/transformations/familyTransformations/FamilyBalance.js","../node_modules/basicprimitives/src/tasks/transformations/familyTransformations/UserDefinedPrimaryParents.js","../node_modules/basicprimitives/src/tasks/transformations/OrderFamilyNodesTask.js","../node_modules/basicprimitives/src/tasks/templates/LabelAnnotationTemplateParamsTask.js","../node_modules/basicprimitives/src/tasks/templates/CombinedTemplateParamsTask.js","../node_modules/basicprimitives/src/tasks/transformations/selection/FamCursorNeighboursTask.js","../node_modules/basicprimitives/src/tasks/transformations/selection/FamSelectionPathItemsTask.js","../node_modules/basicprimitives/src/tasks/transformations/layouts/FamilyLayout.js","../node_modules/basicprimitives/src/tasks/transformations/FamCreateLayoutsTreeTask.js","../node_modules/basicprimitives/src/FamTaskManagerFactory.js","../node_modules/basicprimitives/src/FamEventArgsFactory.js","../node_modules/basicprimitives/src/FamDiagram.js","../node_modules/basicprimitives/src/templates/pdf/AnnotationLabelTemplate.js","../node_modules/basicprimitives/src/templates/pdf/CheckBoxTemplate.js","../node_modules/basicprimitives/src/templates/pdf/CustomRenderTemplate.js","../node_modules/basicprimitives/src/templates/pdf/CursorTemplate.js","../node_modules/basicprimitives/src/templates/pdf/DummyTemplate.js","../node_modules/basicprimitives/src/templates/pdf/RotatedText.js","../node_modules/basicprimitives/src/templates/pdf/GroupTitleTemplate.js","../node_modules/basicprimitives/src/templates/pdf/HighlightTemplate.js","../node_modules/basicprimitives/src/templates/pdf/ItemTemplate.js","../node_modules/basicprimitives/src/templates/pdf/UserTemplate.js","../node_modules/basicprimitives/src/templates/pdf/LabelAnnotationTemplate.js","../node_modules/basicprimitives/src/templates/pdf/LevelTitleTemplate.js","../node_modules/basicprimitives/src/templates/pdf/LevelBackgroundTemplate.js","../node_modules/basicprimitives/src/graphics/PdfGraphics.js","../node_modules/basicprimitives/src/BasePdfkitPlugin.js","../node_modules/basicprimitives/src/tasks/transformations/selection/DummyCombinedNormalVisibilityItemsTask.js","../node_modules/basicprimitives/src/tasks/layout/DummyCurrentControlSizeTask.js","../node_modules/basicprimitives/src/OrgPdfkitTaskManagerFactory.js","../node_modules/basicprimitives/src/OrgDiagramPdfkit.js","../node_modules/basicprimitives/src/FamPdfkitTaskManagerFactory.js","../node_modules/basicprimitives/src/FamDiagramPdfkit.js","../node_modules/basicprimitivesreact/dist/esm/BaseDiagram.js","../node_modules/basicprimitivesreact/dist/esm/FamDiagram.js","../node_modules/basicprimitivesreact/dist/esm/Graphics.js","../node_modules/basicprimitivesreact/dist/esm/OrgDiagram.js","../node_modules/basicprimitivesreact/dist/esm/Schemas/BackgroundAnnotationConfigShape.js","../node_modules/basicprimitivesreact/dist/esm/Schemas/ConnectorAnnotationConfigShape.js","../node_modules/basicprimitivesreact/dist/esm/Schemas/FamConfigShape.js","../node_modules/basicprimitivesreact/dist/esm/Schemas/FamItemConfigShape.js","../node_modules/basicprimitivesreact/dist/esm/Schemas/HighlightPathAnnotationConfigShape.js","../node_modules/basicprimitivesreact/dist/esm/Schemas/LabelAnnotationConfigShape.js","../node_modules/basicprimitivesreact/dist/esm/Schemas/LevelAnnotationConfigShape.js","../node_modules/basicprimitivesreact/dist/esm/Schemas/OrgConfigShape.js","../node_modules/basicprimitivesreact/dist/esm/Schemas/OrgItemConfigShape.js","../node_modules/basicprimitivesreact/dist/esm/Schemas/PaletteItemConfigShape.js","../node_modules/basicprimitivesreact/dist/esm/Schemas/ShapeAnnotationConfigShape.js","../node_modules/basicprimitivesreact/dist/esm/Schemas/TemplateConfigShape.js","../node_modules/basicprimitivesreact/dist/esm/Templates/AbstractTemplate.js","../node_modules/basicprimitivesreact/dist/esm/Templates/AnnotationLabelTemplate.js","../node_modules/basicprimitivesreact/dist/esm/Templates/ButtonsTemplate.js","../node_modules/basicprimitivesreact/dist/esm/Templates/CheckBoxTemplate.js","../node_modules/basicprimitivesreact/dist/esm/Templates/CursorTemplate.js","../node_modules/basicprimitivesreact/dist/esm/Templates/CustomRenderTemplate.js","../node_modules/basicprimitivesreact/dist/esm/Templates/DotHighlightTemplate.js","../node_modules/basicprimitivesreact/dist/esm/Templates/GroupTitleTemplate.js","../node_modules/basicprimitivesreact/dist/esm/Templates/HighlightTemplate.js","../node_modules/basicprimitivesreact/dist/esm/Templates/ItemTemplate.js","../node_modules/basicprimitivesreact/dist/esm/Templates/LabelAnnotationTemplate.js","../node_modules/basicprimitivesreact/dist/esm/Templates/LevelBackgroundTemplate.js","../node_modules/basicprimitivesreact/dist/esm/Templates/LevelTitleTemplate.js","../node_modules/basicprimitivesreact/dist/esm/Templates/RotatedText.js","../node_modules/basicprimitivesreact/dist/esm/Templates/UserTemplate.js","../node_modules/basicprimitivesreact/dist/esm/Templates/index.js","../node_modules/basicprimitivesreact/dist/esm/index.js","../node_modules/buffer/index.js","../node_modules/classnames/index.js","../node_modules/copy-to-clipboard/index.js","../node_modules/enquire.js/src/MediaQuery.js","../node_modules/enquire.js/src/MediaQueryDispatch.js","../node_modules/enquire.js/src/QueryHandler.js","../node_modules/enquire.js/src/Util.js","../node_modules/enquire.js/src/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/ieee754/index.js","../node_modules/js-big-decimal/dist/node/js-big-decimal.js","../node_modules/json2mq/index.js","../node_modules/lodash.debounce/index.js","../node_modules/moment/moment.js","../node_modules/process/browser.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-confirm-alert/lib/index.js","../node_modules/react-copy-to-clipboard/lib/Component.js","../node_modules/react-copy-to-clipboard/lib/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-redux/node_modules/react-is/index.js","../node_modules/react-slick/lib/arrows.js","../node_modules/react-slick/lib/default-props.js","../node_modules/react-slick/lib/dots.js","../node_modules/react-slick/lib/index.js","../node_modules/react-slick/lib/initial-state.js","../node_modules/react-slick/lib/inner-slider.js","../node_modules/react-slick/lib/slider.js","../node_modules/react-slick/lib/track.js","../node_modules/react-slick/lib/utils/innerSliderUtils.js","../node_modules/react-toggle/dist/component/check.js","../node_modules/react-toggle/dist/component/index.js","../node_modules/react-toggle/dist/component/util.js","../node_modules/react-toggle/dist/component/x.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.global.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/shallowequal/index.js","../node_modules/string-convert/camel2hyphen.js","../node_modules/toggle-selection/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/void-elements/index.js","assets/images/home|sync|/^/.//.*$","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../webpack/runtime/nonce","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/utils/useSyncExternalStore.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/connect.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/index.js","store/hooks.ts","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/immer/src/utils/errors.ts","../node_modules/immer/src/utils/common.ts","../node_modules/immer/src/utils/plugins.ts","../node_modules/immer/src/core/scope.ts","../node_modules/immer/src/core/finalize.ts","../node_modules/immer/src/core/proxy.ts","../node_modules/immer/src/core/immerClass.ts","../node_modules/immer/src/core/current.ts","../node_modules/immer/src/plugins/es5.ts","../node_modules/immer/src/immer.ts","../node_modules/immer/src/utils/env.ts","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/redux/es/redux.js","../node_modules/redux-thunk/es/index.js","../node_modules/@reduxjs/toolkit/src/devtoolsExtension.ts","../node_modules/@reduxjs/toolkit/src/isPlainObject.ts","../node_modules/@reduxjs/toolkit/src/utils.ts","../node_modules/@reduxjs/toolkit/src/getDefaultMiddleware.ts","../node_modules/@reduxjs/toolkit/src/createAction.ts","../node_modules/@reduxjs/toolkit/src/mapBuilders.ts","../node_modules/@reduxjs/toolkit/src/createSlice.ts","../node_modules/@reduxjs/toolkit/src/createReducer.ts","../node_modules/@reduxjs/toolkit/src/nanoid.ts","../node_modules/@reduxjs/toolkit/src/createAsyncThunk.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/index.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/task.ts","../node_modules/@reduxjs/toolkit/src/autoBatchEnhancer.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/@reduxjs/toolkit/src/index.ts","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","services/http.ts","services/token.service.ts","services/auth.service.ts","store/modules/authSlice.ts","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/styled-components/node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/styled-components/src/utils/interleave.js","../node_modules/styled-components/src/utils/isPlainObject.js","../node_modules/styled-components/src/utils/empties.js","../node_modules/styled-components/src/utils/isFunction.js","../node_modules/styled-components/src/utils/getComponentName.js","../node_modules/styled-components/src/utils/isStyledComponent.js","../node_modules/styled-components/src/constants.js","../node_modules/styled-components/src/utils/error.js","../node_modules/styled-components/src/sheet/GroupedTag.js","../node_modules/styled-components/src/sheet/GroupIDAllocator.js","../node_modules/styled-components/src/sheet/Rehydration.js","../node_modules/styled-components/src/utils/nonce.js","../node_modules/styled-components/src/sheet/dom.js","../node_modules/styled-components/src/sheet/Tag.js","../node_modules/styled-components/src/sheet/Sheet.js","../node_modules/styled-components/src/utils/generateAlphabeticName.js","../node_modules/styled-components/src/utils/hash.js","../node_modules/styled-components/src/utils/isStaticRules.js","../node_modules/styled-components/src/models/ComponentStyle.js","../node_modules/styled-components/src/utils/stylis.js","../node_modules/styled-components/src/utils/stylisPluginInsertRule.js","../node_modules/styled-components/src/models/StyleSheetManager.js","../node_modules/styled-components/src/models/Keyframes.js","../node_modules/styled-components/src/utils/hyphenateStyleName.js","../node_modules/styled-components/src/utils/flatten.js","../node_modules/styled-components/src/utils/isStatelessFunction.js","../node_modules/styled-components/src/utils/addUnitIfNeeded.js","../node_modules/styled-components/src/constructors/css.js","../node_modules/styled-components/src/utils/checkDynamicCreation.js","../node_modules/styled-components/src/utils/determineTheme.js","../node_modules/styled-components/src/utils/escape.js","../node_modules/styled-components/src/utils/generateComponentId.js","../node_modules/styled-components/src/utils/isTag.js","../node_modules/styled-components/src/utils/mixinDeep.js","../node_modules/styled-components/src/models/ThemeProvider.js","../node_modules/styled-components/src/models/StyledComponent.js","../node_modules/styled-components/src/utils/generateDisplayName.js","../node_modules/styled-components/src/utils/joinStrings.js","../node_modules/styled-components/src/utils/domElements.js","../node_modules/styled-components/src/constructors/styled.js","../node_modules/styled-components/src/constructors/constructWithOptions.js","../node_modules/styled-components/src/models/GlobalStyle.js","../node_modules/styled-components/src/models/ServerStyleSheet.js","../node_modules/styled-components/src/base.js","webpack://kdream-front/./src/assets/styles/uni.module.scss?7ee6","components/common/pageArea.tsx","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/html-parse-stringify/src/parse-tag.js","../node_modules/html-parse-stringify/src/parse.js","../node_modules/html-parse-stringify/src/stringify.js","../node_modules/html-parse-stringify/src/index.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/react-i18next/dist/es/unescape.js","../node_modules/react-i18next/dist/es/defaults.js","../node_modules/react-i18next/dist/es/i18nInstance.js","../node_modules/react-i18next/dist/es/TransWithoutContext.js","../node_modules/react-i18next/dist/es/initReactI18next.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/react-i18next/dist/es/Trans.js","../node_modules/react-i18next/dist/es/useTranslation.js","pages/login/privateLogin.tsx","components/common/privateRoute.tsx","helpers/ScrollTop.ts","../node_modules/clsx/dist/clsx.m.js","../node_modules/decode-uri-component/index.js","../node_modules/split-on-first/index.js","../node_modules/filter-obj/index.js","../node_modules/query-string/base.js","../node_modules/query-string/index.js","../node_modules/react-spinners/esm/helpers/colors.js","../node_modules/react-spinners/esm/helpers/unitConverter.js","../node_modules/react-spinners/esm/helpers/animation.js","../node_modules/react-spinners/esm/HashLoader.js","components/common/Loading.tsx","components/common/popup/ToastAlert.tsx","../node_modules/i18next/dist/esm/i18next.js","components/home/home_layer1.tsx","components/home/home_layer2.tsx","components/layer/footer.tsx","helpers/hooks.js","pages/home/home.tsx","components/common/button/BottomButton.tsx","components/login/termsPage.tsx","../node_modules/react-hook-form/src/utils/isCheckBoxInput.ts","../node_modules/react-hook-form/src/utils/isDateObject.ts","../node_modules/react-hook-form/src/utils/isNullOrUndefined.ts","../node_modules/react-hook-form/src/utils/isObject.ts","../node_modules/react-hook-form/src/logic/getEventValue.ts","../node_modules/react-hook-form/src/logic/isNameInFieldArray.ts","../node_modules/react-hook-form/src/logic/getNodeParentName.ts","../node_modules/react-hook-form/src/utils/isPlainObject.ts","../node_modules/react-hook-form/src/utils/isWeb.ts","../node_modules/react-hook-form/src/utils/cloneObject.ts","../node_modules/react-hook-form/src/utils/compact.ts","../node_modules/react-hook-form/src/utils/isUndefined.ts","../node_modules/react-hook-form/src/utils/get.ts","../node_modules/react-hook-form/src/constants.ts","../node_modules/react-hook-form/src/useFormContext.tsx","../node_modules/react-hook-form/src/logic/getProxyFormState.ts","../node_modules/react-hook-form/src/utils/isEmptyObject.ts","../node_modules/react-hook-form/src/logic/shouldRenderFormState.ts","../node_modules/react-hook-form/src/utils/convertToArrayPayload.ts","../node_modules/react-hook-form/src/useSubscribe.ts","../node_modules/react-hook-form/src/utils/isString.ts","../node_modules/react-hook-form/src/logic/generateWatchOutput.ts","../node_modules/react-hook-form/src/utils/isKey.ts","../node_modules/react-hook-form/src/utils/stringToPath.ts","../node_modules/react-hook-form/src/utils/set.ts","../node_modules/react-hook-form/src/logic/appendErrors.ts","../node_modules/react-hook-form/src/logic/focusFieldBy.ts","../node_modules/react-hook-form/src/logic/generateId.ts","../node_modules/react-hook-form/src/logic/getValidationModes.ts","../node_modules/react-hook-form/src/logic/isWatched.ts","../node_modules/react-hook-form/src/logic/updateFieldArrayRootError.ts","../node_modules/react-hook-form/src/utils/isBoolean.ts","../node_modules/react-hook-form/src/utils/isFileInput.ts","../node_modules/react-hook-form/src/utils/isFunction.ts","../node_modules/react-hook-form/src/utils/isHTMLElement.ts","../node_modules/react-hook-form/src/utils/isMessage.ts","../node_modules/react-hook-form/src/utils/isRadioInput.ts","../node_modules/react-hook-form/src/utils/isRegex.ts","../node_modules/react-hook-form/src/logic/getCheckboxValue.ts","../node_modules/react-hook-form/src/logic/getRadioValue.ts","../node_modules/react-hook-form/src/logic/getValidateError.ts","../node_modules/react-hook-form/src/logic/getValueAndMessage.ts","../node_modules/react-hook-form/src/logic/validateField.ts","../node_modules/react-hook-form/src/utils/unset.ts","../node_modules/react-hook-form/src/utils/createSubject.ts","../node_modules/react-hook-form/src/utils/isPrimitive.ts","../node_modules/react-hook-form/src/utils/deepEqual.ts","../node_modules/react-hook-form/src/utils/isMultipleSelect.ts","../node_modules/react-hook-form/src/utils/isRadioOrCheckbox.ts","../node_modules/react-hook-form/src/utils/live.ts","../node_modules/react-hook-form/src/utils/objectHasFunction.ts","../node_modules/react-hook-form/src/logic/getDirtyFields.ts","../node_modules/react-hook-form/src/logic/getFieldValueAs.ts","../node_modules/react-hook-form/src/logic/getFieldValue.ts","../node_modules/react-hook-form/src/logic/getResolverOptions.ts","../node_modules/react-hook-form/src/logic/getRuleValue.ts","../node_modules/react-hook-form/src/logic/hasValidation.ts","../node_modules/react-hook-form/src/logic/schemaErrorLookup.ts","../node_modules/react-hook-form/src/logic/skipValidation.ts","../node_modules/react-hook-form/src/logic/unsetEmptyArray.ts","../node_modules/react-hook-form/src/logic/createFormControl.ts","../node_modules/react-hook-form/src/useForm.ts","components/common/input/DefaultInput.tsx","components/login/joinForm.tsx","components/login/mailConfirm.tsx","pages/login/join.tsx","pages/login/welcome.tsx","pages/login/login.tsx","components/setting/nickItem.tsx","components/setting/passItem.tsx","components/setting/emailItem.tsx","services/profile.service.ts","components/setting/secretKey.tsx","pages/setting/settingPopup.tsx","store/modules/profileSlice.ts","pages/setting/setting.tsx","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/is-in-browser/dist/module.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/jss/dist/jss.esm.js","../node_modules/@material-ui/core/node_modules/@material-ui/styles/esm/mergeClasses/mergeClasses.js","../node_modules/@material-ui/core/node_modules/@material-ui/styles/esm/makeStyles/multiKeyStore.js","../node_modules/@material-ui/core/node_modules/@material-ui/styles/esm/useTheme/ThemeContext.js","../node_modules/@material-ui/core/node_modules/@material-ui/styles/esm/useTheme/useTheme.js","../node_modules/@material-ui/core/node_modules/@material-ui/styles/esm/ThemeProvider/nested.js","../node_modules/@material-ui/core/node_modules/@material-ui/styles/esm/createGenerateClassName/createGenerateClassName.js","../node_modules/jss-plugin-rule-value-function/dist/jss-plugin-rule-value-function.esm.js","../node_modules/jss-plugin-global/dist/jss-plugin-global.esm.js","../node_modules/jss-plugin-nested/dist/jss-plugin-nested.esm.js","../node_modules/hyphenate-style-name/index.js","../node_modules/jss-plugin-camel-case/dist/jss-plugin-camel-case.esm.js","../node_modules/jss-plugin-default-unit/dist/jss-plugin-default-unit.esm.js","../node_modules/css-vendor/dist/css-vendor.esm.js","../node_modules/jss-plugin-vendor-prefixer/dist/jss-plugin-vendor-prefixer.esm.js","../node_modules/jss-plugin-props-sort/dist/jss-plugin-props-sort.esm.js","../node_modules/@material-ui/core/node_modules/@material-ui/styles/esm/StylesProvider/StylesProvider.js","../node_modules/@material-ui/core/node_modules/@material-ui/styles/esm/jssPreset/jssPreset.js","../node_modules/@material-ui/core/node_modules/@material-ui/styles/esm/makeStyles/indexCounter.js","../node_modules/@material-ui/core/node_modules/@material-ui/utils/esm/deepmerge.js","../node_modules/@material-ui/core/node_modules/@material-ui/styles/esm/getStylesCreator/noopTheme.js","../node_modules/@material-ui/core/node_modules/@material-ui/styles/esm/makeStyles/makeStyles.js","../node_modules/@material-ui/core/node_modules/@material-ui/styles/esm/getStylesCreator/getStylesCreator.js","../node_modules/@material-ui/core/node_modules/@material-ui/styles/esm/withStyles/withStyles.js","../node_modules/@material-ui/core/node_modules/@material-ui/styles/esm/getThemeProps/getThemeProps.js","../node_modules/@material-ui/core/esm/styles/createBreakpoints.js","../node_modules/@material-ui/core/esm/styles/createMixins.js","../node_modules/@material-ui/core/node_modules/@material-ui/utils/esm/formatMuiErrorMessage.js","../node_modules/@material-ui/core/esm/colors/common.js","../node_modules/@material-ui/core/esm/colors/grey.js","../node_modules/@material-ui/core/esm/colors/indigo.js","../node_modules/@material-ui/core/esm/colors/pink.js","../node_modules/@material-ui/core/esm/colors/red.js","../node_modules/@material-ui/core/esm/colors/orange.js","../node_modules/@material-ui/core/esm/colors/blue.js","../node_modules/@material-ui/core/esm/colors/green.js","../node_modules/@material-ui/core/esm/styles/colorManipulator.js","../node_modules/@material-ui/core/esm/styles/createPalette.js","../node_modules/@material-ui/core/esm/styles/createTypography.js","../node_modules/@material-ui/core/esm/styles/shadows.js","../node_modules/@material-ui/core/esm/styles/shape.js","../node_modules/@material-ui/core/node_modules/@material-ui/system/esm/breakpoints.js","../node_modules/@material-ui/core/node_modules/@material-ui/system/esm/merge.js","../node_modules/@material-ui/core/node_modules/@material-ui/system/esm/spacing.js","../node_modules/@material-ui/core/node_modules/@material-ui/system/esm/memoize.js","../node_modules/@material-ui/core/esm/styles/transitions.js","../node_modules/@material-ui/core/esm/styles/zIndex.js","../node_modules/@material-ui/core/esm/styles/createTheme.js","../node_modules/@material-ui/core/esm/styles/createSpacing.js","../node_modules/@material-ui/core/esm/styles/defaultTheme.js","../node_modules/@material-ui/core/esm/styles/withStyles.js","../node_modules/@material-ui/core/esm/utils/useIsFocusVisible.js","../node_modules/@material-ui/core/esm/utils/ownerDocument.js","../node_modules/@material-ui/core/esm/utils/useEventCallback.js","../node_modules/@material-ui/core/esm/utils/setRef.js","../node_modules/@material-ui/core/esm/utils/useForkRef.js","../node_modules/@material-ui/core/esm/utils/capitalize.js","../node_modules/@material-ui/core/esm/Slider/ValueLabel.js","../node_modules/@material-ui/core/esm/Slider/Slider.js","../node_modules/@material-ui/core/esm/styles/useTheme.js","../node_modules/@material-ui/core/esm/utils/useControlled.js","components/common/EmptyContent.tsx","helpers/utilities.ts","pages/ref/RefPopup.tsx","pages/ref/RefPage.tsx","pages/mining/refMiningComplete.tsx","webpack://kdream-front/./src/assets/styles/toast.scss?6d8b","components/common/popup/ConfirmPopup.tsx","../node_modules/src/observe.ts","../node_modules/src/InView.tsx","../node_modules/src/useInView.tsx","pages/ref/RefPopup_old.tsx","pages/mining/refMining.tsx","components/layer/burgerMenu.tsx","components/layer/mainTop.tsx","services/wallet.service.ts","components/my/coinList.tsx","components/my/myAccount.tsx","components/my/swapCompleate.tsx","components/my/swapView.tsx","pages/my/my.tsx","../node_modules/qrcode.react/lib/esm/index.js","components/coin/qrPopup.tsx","components/coin/withdrawDepth1.tsx","components/common/button/Button34.tsx","components/coin/withdrawDepth2.tsx","components/coin/withdrawDepth3.tsx","components/coin/withdrawDepth4.tsx","components/coin/walletPopup.tsx","pages/coin/coinDetail.tsx","pages/login/emailAuth.tsx","components/boost/boostList.tsx","pages/boost/boost.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","services/staking.service.ts","../node_modules/react-countdown/dist/index.es.js","components/staking/stakinglist.tsx","pages/staking/stakingPopup.tsx","components/staking/stakingEndlist.tsx","pages/staking/stakingEndPopup.tsx","components/staking/refStakingList.tsx","pages/staking/stakingNoBnsPopup.tsx","pages/staking/stakingPage.tsx","components/common/SlideInputBar.tsx","pages/staking/stakingOkPopup.tsx","pages/staking/stakingView.tsx","pages/AppRouter.tsx","App.tsx","reportWebVitals.ts","serviceWorkerRegistration.js","store/store.ts","../node_modules/@reduxjs/toolkit/src/configureStore.ts","services/setupInterceptors.ts","helpers/Locales/i18n.ts","index.tsx"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","import Thickness from '../graphics/structs/Thickness';\r\nimport { AnnotationType, LineType, Colors } from '../enums';\r\n\r\n/**\r\n * @class LevelAnnotationConfig\r\n * @classdesc Level annotation highlights same level nodes of the diagram via drawing continuous rectangular shape \r\n * from side to side in their background. Level has optional title on the side of the diagram view area.\r\n * Title may be placed inside or outside of the diagram. If it is placed inside, it is drawn in the \r\n * background and does not occupy space. \r\n *\r\n * @param {object} arg0 Object properties.\r\n */\r\nexport default function LevelAnnotationConfig(arg0) {\r\n var property;\r\n\r\n /**\r\n * Annotation type. All types of annotations objects are added to `annotations` collection property of the control.\r\n * This property is needed to distinguish them when they are defined as a type less JSON objects.\r\n * \r\n * @type {AnnotationType}\r\n */\r\n this.annotationType = AnnotationType.Level;\r\n\r\n /**\r\n * Collection of levels this level annotation is drawn for.\r\n * \r\n * @type {string[]}\r\n */\r\n this.levels = [];\r\n\r\n /**\r\n * Level Title.\r\n * \r\n * @type {string}\r\n */\r\n this.title = null;\r\n\r\n /**\r\n * Title font color.\r\n * \r\n * @type {string}\r\n */\r\n this.titleFontColor = null;\r\n\r\n /**\r\n * The level title background color.\r\n * \r\n * @type {string}\r\n */\r\n this.titleColor = null;\r\n\r\n /**\r\n * Sets background offset relative to default position.\r\n * \r\n * @type {Thickness}\r\n */\r\n this.offset = new Thickness(0, 0, 0, 0);\r\n\r\n /**\r\n * Background stripe border line width. Use {Thickness} to set border width individually per side.\r\n * \r\n * @type {Thickness}\r\n */\r\n this.lineWidth = new Thickness(0, 0, 0, 0);\r\n\r\n /**\r\n * Background color opacity.\r\n * \r\n * @type {number}\r\n */\r\n this.opacity = 1;\r\n\r\n /**\r\n * Background stripe border line color\r\n * \r\n * @type {string}\r\n */\r\n this.borderColor = null;\r\n\r\n /**\r\n * Background stripe fill Color.\r\n * \r\n * @type {string}\r\n */\r\n this.fillColor = \"#D4D4D4\";\r\n\r\n /**\r\n * Background stripe border line type\r\n * \r\n * @type {LineType}\r\n */\r\n this.lineType = LineType.Solid;\r\n\r\n switch (arguments.length) {\r\n case 1:\r\n if (arg0 !== null) {\r\n if (arg0 instanceof Array) {\r\n this.items = arg0;\r\n } else if (typeof arg0 == \"object\") {\r\n for (property in arg0) {\r\n if (arg0.hasOwnProperty(property)) {\r\n this[property] = arg0[property];\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n};","/**\r\n * @typedef {number} AdviserPlacementType\r\n **/\r\n\r\n\r\n/**\r\n * The enumeration sets leftward or rightward item placement relative to the referenced item.\r\n * In the case of assistants or advisers, the referenced node is their immediate parent.\r\n * In the case of the family diagram, the referenced node is a sibling. \r\n * \r\n * @enum {AdviserPlacementType}\r\n */\r\nexport const AdviserPlacementType = {\r\n /**\r\n * Auto select by layout manager\r\n */\r\n Auto: 0,\r\n /**\r\n * Left side\r\n */\r\n Left: 2,\r\n /**\r\n * Right side\r\n */\r\n Right: 3\r\n};\r\n\r\n/**\r\n * @typedef {number} AnnotationType\r\n **/\r\n\r\n\r\n/**\r\n * Defines type of on-screen and in-layout annotation object. Annotations are geometrical \r\n * figures drawn around or bound to existing nodes of the diagram.\r\n *\r\n * @enum {AnnotationType}\r\n */\r\nexport const AnnotationType = {\r\n /**\r\n * The connector annotation displays a spline between two nodes of the diagram.\r\n * They are drawn on top and across the existing diagram layout, and they don't affect nodes placement.\r\n * If available space between nodes is not enough to display connector annotation,\r\n * then control draws it outside on the side of them.\r\n */\r\n Connector: 0,\r\n /**\r\n * Shape annotation is a possibility to draw some geometrical shapes over several nodes of the diagram. \r\n */\r\n Shape: 1,\r\n /**\r\n * Highlight path annotation traces a path between a given sequence of nodes over existing relation lines in the diagram.\r\n */\r\n HighlightPath: 2,\r\n /**\r\n * The in-layout label annotation display values over relation lines between nodes. \r\n * The control preserves space for labels in the diagram layout so they don't overlap nodes.\r\n * Label annotations are designed for auto-placement and bundling of connection lines between nodes when needed.\r\n */\r\n Label: 3,\r\n /**\r\n * The background annotation highlights nodes via drawing the rectangular shape in the node's background.\r\n * If the same style annotations of neighboring nodes overlap, control merges them into one continuous polygon geometry. \r\n */\r\n Background: 4,\r\n /**\r\n * Level annotation highlights same level nodes of the diagram via drawing continuous rectangular shape \r\n * from side to side in their background. Level has optional title on the side of the diagram view area.\r\n * Title may be placed inside or outside of the diagram. If it is placed inside, it is drawn in the \r\n * background and does not occupy space. \r\n */\r\n Level: 5\r\n};\r\n\r\n/**\r\n * @typedef {number} ChildrenPlacementType\r\n **/\r\n\r\n\r\n/**\r\n * The enumeration defines the shape of children's formation. By default, control places children in a horizontal \r\n * line below the parent node. On a large scale, this may result in the end-user having to scroll screens \r\n * to view all of them. To compensate, we provide the option of placing all of the children of a parent node\r\n * in a square/matrix formation. That will reduce sideways screen scrolling by compacting the child\r\n * nodes into a much smaller area on the screen.\r\n * \r\n * @enum {ChildrenPlacementType}\r\n */\r\nexport const ChildrenPlacementType = {\r\n /**\r\n * Auto: This mode lets you set nodes layout at the component level and then redefine it for individual nodes if needed.\r\n */\r\n Auto: 0,\r\n /**\r\n * Vertical layout\r\n */\r\n Vertical: 1,\r\n /**\r\n * Horizontal layout\r\n */\r\n Horizontal: 2,\r\n /**\r\n * Matrix formation of the nodes\r\n */\r\n Matrix: 3\r\n};\r\n\r\n/**\r\n * @typedef {string} Colors\r\n **/\r\n\r\n/**\r\n * Just a list of named colors.\r\n * \r\n * @ignore\r\n * @enum {Colors}\r\n */\r\nexport const Colors = {\r\n AliceBlue: \"#f0f8ff\",\r\n AntiqueWhite: \"#faebd7\",\r\n Aqua: \"#00ffff\",\r\n Aquamarine: \"#7fffd4\",\r\n Azure: \"#f0ffff\",\r\n \r\n Beige: \"#f5f5dc\",\r\n Bisque: \"#ffe4c4\",\r\n Black: \"#000000\",\r\n BlanchedAlmond: \"#ffebcd\",\r\n Blue: \"#0000ff\",\r\n BlueViolet: \"#8a2be2\",\r\n Brown: \"#a52a2a\",\r\n BurlyWood: \"#deb887\",\r\n Bronze: \"#cd7f32\",\r\n \r\n CadetBlue: \"#5f9ea0\",\r\n ChartReuse: \"#7fff00\",\r\n Chocolate: \"#d2691e\",\r\n Coral: \"#ff7f50\",\r\n CornflowerBlue: \"#6495ed\",\r\n Cornsilk: \"#fff8dc\",\r\n Crimson: \"#dc143c\",\r\n Cyan: \"#00ffff\",\r\n DarkBlue: \"#00008b\",\r\n DarkCyan: \"#008b8b\",\r\n DarkGoldenrod: \"#b8860b\",\r\n DarkGray: \"#a9a9a9\",\r\n DarkGreen: \"#006400\",\r\n DarkKhaki: \"#bdb76b\",\r\n DarkMagenta: \"#8b008b\",\r\n DarkOliveGreen: \"#556b2f\",\r\n Darkorange: \"#ff8c00\",\r\n DarkOrchid: \"#9932cc\",\r\n DarkRed: \"#8b0000\",\r\n DarkSalmon: \"#e9967a\",\r\n DarkSeaGreen: \"#8fbc8f\",\r\n DarkSlateBlue: \"#483d8b\",\r\n DarkSlateGray: \"#2f4f4f\",\r\n DarkTurquoise: \"#00ced1\",\r\n DarkViolet: \"#9400d3\",\r\n DeepPink: \"#ff1493\",\r\n DeepSkyBlue: \"#00bfff\",\r\n DimGray: \"#696969\",\r\n DodgerBlue: \"#1e90ff\",\r\n \r\n FireBrick: \"#b22222\",\r\n FloralWhite: \"#fffaf0\",\r\n ForestGreen: \"#228b22\",\r\n Fuchsia: \"#ff00ff\",\r\n \r\n Gainsboro: \"#dcdcdc\",\r\n GhostWhite: \"#f8f8ff\",\r\n Gold: \"#ffd700\",\r\n Goldenrod: \"#daa520\",\r\n Gray: \"#808080\",\r\n Green: \"#008000\",\r\n GreenYellow: \"#adff2f\",\r\n \r\n Honeydew: \"#f0fff0\",\r\n Hotpink: \"#ff69b4\",\r\n \r\n IndianRed: \"#cd5c5c\",\r\n Indigo: \"#4b0082\",\r\n Ivory: \"#fffff0\",\r\n Khaki: \"#f0e68c\",\r\n \r\n Lavender: \"#e6e6fa\",\r\n LavenderBlush: \"#fff0f5\",\r\n Lawngreen: \"#7cfc00\",\r\n Lemonchiffon: \"#fffacd\",\r\n LightBlue: \"#add8e6\",\r\n LightCoral: \"#f08080\",\r\n LightCyan: \"#e0ffff\",\r\n LightGoldenrodYellow: \"#fafad2\",\r\n \r\n LightGray: \"#d3d3d3\",\r\n LightGreen: \"#90ee90\",\r\n LightPink: \"#ffb6c1\",\r\n LightSalmon: \"#ffa07a\",\r\n LightSeaGreen: \"#20b2aa\",\r\n LightSkyBlue: \"#87cefa\",\r\n LightSlateGray: \"#778899\",\r\n LightSteelBlue: \"#b0c4de\",\r\n \r\n LightYellow: \"#ffffe0\",\r\n Lime: \"#00ff00\",\r\n Limegreen: \"#32cd32\",\r\n Linen: \"#faf0e6\",\r\n \r\n Magenta: \"#ff00ff\",\r\n Maroon: \"#800000\",\r\n MediumAquamarine: \"#66cdaa\",\r\n MediumBlue: \"#0000cd\",\r\n MediumOrchid: \"#ba55d3\",\r\n MediumPurple: \"#9370d8\",\r\n MediumSeaGreen: \"#3cb371\",\r\n MediumSlateBlue: \"#7b68ee\",\r\n \r\n MediumSpringGreen: \"#00fa9a\",\r\n MediumTurquoise: \"#48d1cc\",\r\n MediumVioletRed: \"#c71585\",\r\n MidnightBlue: \"#191970\",\r\n MintCream: \"#f5fffa\",\r\n MistyRose: \"#ffe4e1\",\r\n Moccasin: \"#ffe4b5\",\r\n \r\n NavajoWhite: \"#ffdead\",\r\n Navy: \"#000080\",\r\n \r\n Oldlace: \"#fdf5e6\",\r\n Olive: \"#808000\",\r\n Olivedrab: \"#6b8e23\",\r\n Orange: \"#ffa500\",\r\n OrangeRed: \"#ff4500\",\r\n Orchid: \"#da70d6\",\r\n \r\n PaleGoldenRod: \"#eee8aa\",\r\n PaleGreen: \"#98fb98\",\r\n PaleTurquoise: \"#afeeee\",\r\n PaleVioletRed: \"#d87093\",\r\n Papayawhip: \"#ffefd5\",\r\n Peachpuff: \"#ffdab9\",\r\n Peru: \"#cd853f\",\r\n Pink: \"#ffc0cb\",\r\n Plum: \"#dda0dd\",\r\n PowderBlue: \"#b0e0e6\",\r\n Purple: \"#800080\",\r\n \r\n Red: \"#ff0000\",\r\n RosyBrown: \"#bc8f8f\",\r\n RoyalBlue: \"#4169e1\",\r\n \r\n SaddleBrown: \"#8b4513\",\r\n Salmon: \"#fa8072\",\r\n SandyBrown: \"#f4a460\",\r\n SeaGreen: \"#2e8b57\",\r\n Seashell: \"#fff5ee\",\r\n Sienna: \"#a0522d\",\r\n Silver: \"#c0c0c0\",\r\n SkyBlue: \"#87ceeb\",\r\n SlateBlue: \"#6a5acd\",\r\n SlateGray: \"#708090\",\r\n Snow: \"#fffafa\",\r\n SpringGreen: \"#00ff7f\",\r\n SteelBlue: \"#4682b4\",\r\n \r\n Tan: \"#d2b48c\",\r\n Teal: \"#008080\",\r\n Thistle: \"#d8bfd8\",\r\n Tomato: \"#ff6347\",\r\n Turquoise: \"#40e0d0\",\r\n \r\n Violet: \"#ee82ee\",\r\n \r\n Wheat: \"#f5deb3\",\r\n White: \"#ffffff\",\r\n WhiteSmoke: \"#f5f5f5\",\r\n \r\n Yellow: \"#ffff00\",\r\n YellowGreen: \"#9acd32\"\r\n};\r\n\r\n/**\r\n * @typedef {number} ConnectorLabelPlacementType\r\n **/\r\n\r\n\r\n/**\r\n * Label placement relative to connector annotation. Connector annotation is bound and drawn between two nodes\r\n * defined by two properties: `fromItem` and `toItem`. Label can be placed close to \"start\", \"end\" nodes or in between of them\r\n * along the connector line. \r\n *\r\n * @enum {ConnectorLabelPlacementType}\r\n */\r\nexport const ConnectorLabelPlacementType = {\r\n From: 0,\r\n Between: 1,\r\n To: 2\r\n};\r\n\r\n/**\r\n * @typedef {number} ConnectorPlacementType\r\n **/\r\n\r\n\r\n/**\r\n * Connector placement type defines style of connector line drawing over diagram layout. It supports two options: \r\n * the `Straight` is classic direct line connecting two nodes, this is the most expected style of connector annotation\r\n * drawing over diagram, the second style is called `Offbeat` and it design to dynamically adopt to nodes mutual \r\n * location and gap between them. It uses free hand line style drawing going from start to the end nodes. Since every diagram \r\n * is packed with various connection lines, this annotation placement style is deliberately made not straight, so it can be \r\n * noticeable on top of other lines of the diagram.\r\n *\r\n * @enum {ConnectorPlacementType}\r\n */\r\nexport const ConnectorPlacementType = {\r\n /**\r\n * Places connector annotation in the way that it does not overlap underlying diagram connector lines.\r\n * If nodes are close to each other and gap between them cannot fit annotation, then \r\n * it will be drawn on the side of the nodes, so it will have enough space for arrow and label.\r\n */\r\n Offbeat: 0,\r\n /**\r\n * Straight line annotation between nodes. This annotation mode provides basic conflict resolution between annotations\r\n * overlapping each other. If two or more straight annotations overlap each other then layout engine will \r\n * add extra offset to them, so they will be drawn in parallel to each other.\r\n */\r\n Straight: 1\r\n};\r\n\r\n/**\r\n * @typedef {number} ConnectorShapeType\r\n **/\r\n\r\n\r\n/**\r\n * Connector shape type defines number of lines and arrows at their ends drawn between nodes of the connector annotation.\r\n * This feature combined with basic conflict resolution, which places overlapping annotations in parallel when they overlap each other,\r\n * gives you full flexibility over variations of possible connector lines between two given nodes of diagram.\r\n *\r\n * @enum {ConnectorShapeType}\r\n */\r\nexport const ConnectorShapeType = {\r\n /**\r\n * Single line with one arrow\r\n */\r\n OneWay: 0,\r\n /**\r\n * Two parallel lines with single arrows\r\n */\r\n TwoWay: 1,\r\n /**\r\n * Single line with 2 arrows.\r\n */\r\n BothWay: 2\r\n};\r\n\r\nexport const ConnectorStyleType = {\r\n Extra: 0,\r\n Regular: 1,\r\n Highlight: 2\r\n};\r\n\r\n/**\r\n * @typedef {number} ConnectorType\r\n **/\r\n\r\n/**\r\n * Connection lines style. This option is only applicable to nodes minimized to markers or lines.\r\n * Full size nodes are always connected with squared connection lines\r\n * \r\n * @enum {ConnectorType}\r\n */\r\nexport const ConnectorType = {\r\n /**\r\n * Orthogonal connection lines\r\n */\r\n Squared: 0,\r\n /**\r\n * Angular direct node to node connection lines\r\n */\r\n Angular: 1,\r\n /**\r\n * Curved direct node to node connection lines\r\n */\r\n Curved: 2\r\n};\r\n\r\n/**\r\n * @typedef {number} ElbowType\r\n **/\r\n\r\n/**\r\n * Elbow style of connection lines\r\n * \r\n * @enum {ElbowType}\r\n */\r\nexport const ElbowType = {\r\n /**\r\n * No elbow\r\n */\r\n None: 0,\r\n /**\r\n * Dot marker at the intersection\r\n */\r\n Dot: 1,\r\n /**\r\n * Bevel elbow\r\n */\r\n Bevel: 2,\r\n /**\r\n * Round elbow\r\n */\r\n Round: 3\r\n};\r\n \r\n/**\r\n * Defines option state.\r\n * \r\n * @readonly\r\n * @enum {number}\r\n */\r\nexport const Enabled = {\r\n /**\r\n * Option state is auto defined.\r\n */\r\n Auto: 0,\r\n /**\r\n * Enabled\r\n */\r\n True: 1,\r\n /**\r\n * Disabled\r\n */\r\n False: 2\r\n};\r\n \r\n/**\r\n * @typedef {number} GroupByType\r\n **/\r\n\r\n/**\r\n * This enumeration defines objects gravity in the chart relative to parents and children.\r\n * For example connection lines can be drawn with arrows, so this enumeration controls\r\n * direction of arrows up towards parents or down towards children in the hierarchy.\r\n * The other example is nodes placement close to their immediate parents or immediate children \r\n * in case when parents and children are offset from them by multiple levels in hierarchy.\r\n * \r\n * @enum {GroupByType}\r\n */\r\nexport const GroupByType = {\r\n None: 0,\r\n Parents: 1,\r\n Children: 2\r\n};\r\n\r\n/**\r\n * @typedef {number} HorizontalAlignmentType\r\n **/\r\n\r\n/**\r\n * Horizontal alignment\r\n * \r\n * @enum {HorizontalAlignmentType}\r\n */\r\nexport const HorizontalAlignmentType = {\r\n Center: 0,\r\n Left: 1,\r\n Right: 2\r\n};\r\n\r\n/**\r\n * @typedef {number} ItemType\r\n **/\r\n\r\n/**\r\n * The enumeration defines child node placement relative to its parent node.\r\n * By default, the control places all children that belong to the same parent as\r\n * the horizontal line below it. That works for a regular hierarchy of nodes\r\n * having the same type. In the organizational chart, we have a lot of exceptions\r\n * and non-hierarchical relations between nodes. For this purpose, we provide custom\r\n * item types to place nodes around the logical parent, which helps visually\r\n * differentiate nodes logically belonging to the same parent. These placement\r\n * options give a lot of space for creating roles such as an Assistant, Adviser,\r\n * various Partners, and co-heads in the organization. Additionally, control allows\r\n * shaping the same type of children into vertical and matrix formations\r\n * and place them into multiple levels.\r\n * \r\n * @enum {ItemType}\r\n */\r\nexport const ItemType = {\r\n /**\r\n * The regular type places node below parent.\r\n */\r\n Regular: 0,\r\n /**\r\n * The assistant type places node at the row on the side of the connection line going from parent to its children.\r\n */\r\n Assistant: 1,\r\n /**\r\n * The sub-assistant node type is a variation of the assistant node type. \r\n * The sub-assistant places node at the row on the side of the connection line\r\n * going from parent to its children. The connection line goes out of the top side of the node.\r\n */\r\n SubAssistant: 4,\r\n /**\r\n * The adviser type places node on the right or left side of the parent.\r\n */\r\n Adviser: 2,\r\n /**\r\n * The sub-adviser type places node on the right or left side of the parent. \r\n * The connection line goes out of the top side of the sub-adviser node.\r\n */\r\n SubAdviser: 5,\r\n /**\r\n * The general partner type is an imitation of multiple inheritances in the organizational chart hierarchy.\r\n * The general-partner node is drawn side by side with its logical parent, and control places\r\n * regular children below them, so they visually look like parents. Another layout specifics\r\n * of the general partner is that it is connected to its logical parent's parent.\r\n * So visually, it becomes an immediate child of its grandparent.\r\n */\r\n GeneralPartner: 6,\r\n /**\r\n * The limited partner is a variation of the general partner.\r\n * The only difference is that it is not connected to its logical grandparent.\r\n */\r\n LimitedPartner: 7,\r\n /**\r\n * The adviser partner is a variation of the limited partner. \r\n * The difference is that it has an extra connection line to its logical parent.\r\n */\r\n AdviserPartner: 8\r\n};\r\n\r\nexport const LabelType =\r\n{\r\n Regular: 0,\r\n Dummy: 1,\r\n Fixed: 2,\r\n None: 3\r\n};\r\n\r\nexport const Layers =\r\n{\r\n LevelAnnotation: 1,\r\n BackgroundAnnotation: 2,\r\n BackgroundAnnotations: 3,\r\n BackgroundConnectorAnnotation: 4,\r\n BackgroundHighlightPathAnnotations: 5,\r\n Connector: 6,\r\n ForegroundHighlightPathAnnotations: 7,\r\n Highlight: 8,\r\n Marker: 9,\r\n Label: 10,\r\n Cursor: 11,\r\n Item: 12,\r\n ForegroundAnnotations: 13,\r\n ForegroundConnectorAnnotation: 14,\r\n Annotation: 15,\r\n Controls: 16\r\n};\r\n\r\n/**\r\n * @typedef {number} LineType\r\n **/\r\n\r\n/**\r\n * Line style of connection lines.\r\n * \r\n * @enum {LineType}\r\n */\r\nexport const LineType = {\r\n Solid: 0,\r\n Dotted: 1,\r\n Dashed: 2\r\n};\r\n\r\n/**\r\n * @typedef {number} NavigationMode\r\n **/\r\n\r\n/**\r\n * Interactivity mode. Control implements standard behavior of classic desktop UI controls. It supports single selected node - cursor.\r\n * It supports on mouse over node visual feedback - highlight. It supports selection of group of nodes - selected items. \r\n * All that functionality can be disabled depending on your application requirements.\r\n * \r\n * @enum {NavigationMode}\r\n */\r\nexport const NavigationMode = {\r\n /**\r\n * Everything is on.\r\n */\r\n Default: 0,\r\n /**\r\n * Cursor selection only without highlight. \r\n */\r\n CursorOnly: 1,\r\n /**\r\n * Mouse over feedback only\r\n */\r\n HighlightOnly: 3,\r\n /**\r\n * No interactivity\r\n */\r\n Inactive: 2\r\n};\r\n\r\n/**\r\n * @typedef {number} NavigationMode\r\n **/\r\n\r\n/**\r\n * Neighbors selection mode. The control supports diagram auto fit into screen view. It is achieved via drawing nodes in form of markers.\r\n * So small nodes make diagram fit into the screen space, but they have no details. Our solution is to show cursor and selected items\r\n * of the diagram in full size and draw all other as markers.\r\n *\r\n * This enumeration controls visibility of neighbors of the cursor node in the auto fit mode. It allows to draw \r\n * them in full size regardless of available space.\r\n *\r\n * @enum {NavigationMode}\r\n */\r\nexport const NeighboursSelectionMode = {\r\n /**\r\n * Selects parents and children of the cursor item\r\n */\r\n ParentsAndChildren: 0,\r\n /**\r\n * Selects parents, children, and siblings of the cursor item.\r\n */\r\n ParentsChildrenSiblingsAndSpouses: 1\r\n};\r\n \r\n/**\r\n * @typedef {number} OrientationType\r\n **/\r\n\r\n/**\r\n * Controls diagram layout orientation. The control can be rotated in any direction, this is needed for arabic support and various layout.\r\n * \r\n * @enum {OrientationType}\r\n */\r\nexport const OrientationType = {\r\n Top: 0,\r\n Bottom: 1,\r\n Left: 2,\r\n Right: 3,\r\n None: 4\r\n};\r\n\r\n/**\r\n * @typedef {number} PageFitMode\r\n **/\r\n\r\n/**\r\n * Fits diagram into available screen space. When diagram size significantly larger that available screen space, its scrolling and navigation\r\n * becomes problematic, so we support automatic diagram fit into the screen space via rendering some of its nodes in form of small markers.\r\n * Control supports several page fit mode options which can match your requirements depending on diagram layout, orientation and number of nodes.\r\n * \r\n * Autosize - this option is opposite to auto fit. It lets you expand control size to fit all diagram nodes full size without scroll bars.\r\n * \r\n * @enum {PageFitMode}\r\n */\r\nexport const PageFitMode = {\r\n /**\r\n * Disabled. All nodes are being rendered using their templates.\r\n */\r\n None: 0,\r\n /**\r\n * Fits diagram into the view width, so it has no horizontal scrollbar.\r\n */\r\n PageWidth: 1,\r\n /**\r\n * Fits diagram into the view hight, so it has no vertical scrollbar.\r\n */\r\n PageHeight: 2,\r\n /**\r\n * Fits diagram into the view so it has no scroll bars.\r\n */\r\n FitToPage: 3,\r\n /**\r\n * This is opposite mode to auto fit. In this mode diagram controls its size, it sets its size to fit all nodes and render them full size using templates.\r\n */\r\n AutoSize: 5,\r\n /**\r\n * Renders all nodes as markers regardless of available screen space. Control selects and renders full size cursor, its neighbours and selected nodes only.\r\n * Don't forget to disable selection path as well, so nodes from cursor up to the root are not selected.\r\n */\r\n SelectionOnly: 6\r\n};\r\n\r\n/**\r\n * @typedef {number} PlacementType\r\n **/\r\n\r\n\r\n/**\r\n * Defines element placement relative to rectangular area it is bound to.\r\n * \r\n * @enum {PlacementType}\r\n */\r\nexport const PlacementType = {\r\n /**\r\n * Defined by other control options.\r\n */\r\n Auto: 0,\r\n TopLeft: 8,\r\n Top: 1,\r\n TopRight: 2,\r\n RightTop: 11,\r\n Right: 3,\r\n RightBottom: 12,\r\n BottomRight: 4,\r\n Bottom: 5,\r\n BottomLeft: 6,\r\n LeftBottom: 10,\r\n Left: 7,\r\n LeftTop: 9\r\n};\r\n\r\n/**\r\n * @typedef {number} RenderingMode\r\n **/\r\n\r\n/**\r\n * This enumeration is used to tell rendering callback functions current state of the template.\r\n * It is needed for proper events binding and content updates.\r\n *\r\n * @enum {RenderingMode}\r\n */\r\nexport const RenderingMode = {\r\n /**\r\n * Template is just created.\r\n */\r\n Create: 0,\r\n /**\r\n * Template is reused and update is needed.\r\n */\r\n Update: 1\r\n};\r\n\r\nexport const SegmentType = {\r\n Line: 0,\r\n Move: 1,\r\n QuadraticArc: 2,\r\n CubicArc: 3,\r\n Dot: 4\r\n};\r\n\r\n/**\r\n * @typedef {number} SelectionPathMode\r\n **/\r\n\r\n/**\r\n * Selection path mode. This enumeration controls visibility of nodes between cursor and the root of the diagram in the auto fit mode. It allows to draw \r\n * them in full size regardless of available space and auto fit mode.\r\n * \r\n * The control supports diagram auto fit into screen view. It is achieved via drawing nodes in form of markers.\r\n * So small nodes make diagram fit into the screen space, but they have no details. Our solution is to show cursor and selected items\r\n * of the diagram in full size and draw all other diagram nodes as markers.\r\n *\r\n * @enum {SelectionPathMode}\r\n */\r\nexport const SelectionPathMode = {\r\n /**\r\n * No selection path\r\n */\r\n None: 0,\r\n /**\r\n * Selects cursor node parents up to the root are renders them full size regardless of available space.\r\n */\r\n FullStack: 1\r\n};\r\n\r\n/**\r\n * @typedef {number} ShapeType\r\n **/\r\n\r\n/**\r\n * Shapes\r\n * \r\n * @enum {ShapeType}\r\n */\r\nexport const ShapeType = {\r\n Rectangle: 0,\r\n Oval: 1,\r\n Triangle: 2,\r\n CrossOut: 3,\r\n Circle: 4,\r\n Rhombus: 5,\r\n Wedge: 7,\r\n FramedOval: 8,\r\n FramedTriangle: 9,\r\n FramedWedge: 10,\r\n FramedRhombus: 11,\r\n None: 6\r\n};\r\n\r\nexport const SideFlag = {\r\n Top: 1,\r\n Right: 2,\r\n Bottom: 4,\r\n Left: 8\r\n};\r\n\r\n/**\r\n * @typedef {number} TextOrientationType\r\n **/\r\n\r\n/**\r\n * Text rotation\r\n * \r\n * @enum {TextOrientationType}\r\n */\r\nexport const TextOrientationType = {\r\n /**\r\n * Regular horizontal text\r\n */\r\n Horizontal: 0,\r\n /**\r\n * Rotate text left for 90 degree.\r\n */\r\n RotateLeft: 1,\r\n /**\r\n * Rotate text right for 90 degree.\r\n */\r\n RotateRight: 2,\r\n /**\r\n * Depends on other options.\r\n */\r\n Auto: 3\r\n};\r\n\r\n/**\r\n * @typedef {number} UpdateMode\r\n **/\r\n\r\n/**\r\n * Controls update of the diagram\r\n *\r\n * @enum {UpdateMode}\r\n */\r\nexport const UpdateMode = {\r\n /**\r\n * Forces control to make a full chart redraw. It is equivalent to initial chart creation. \r\n * It removes everything from placeholder and renders all elements again.\r\n */\r\n Recreate: 0,\r\n /**\r\n * Optimized refresh. It only updates visual elements which needs to be updated.\r\n */\r\n Refresh: 1,\r\n /**\r\n * Updates highlight position only\r\n */\r\n PositonHighlight: 2\r\n};\r\n\r\n/**\r\n * @typedef {number} VectorRelationType\r\n **/\r\n\r\n/**\r\n * Defines relation between two vectors\r\n *\r\n * @enum {VectorRelationType}\r\n */\r\nexport const VectorRelationType = {\r\n None: 0,\r\n Null: 1,\r\n Collinear: 2,\r\n Opposite: 3\r\n};\r\n\r\n/**\r\n * @typedef {number} VerticalAlignmentType\r\n **/\r\n\r\n/**\r\n * Controls nodes vertical alignment inside row of nodes. If row of nodes contains nodes of\r\n * multiple sizes then small nodes are vertically aligned relative to their large neighbours.\r\n * \r\n * @enum {VerticalAlignmentType}\r\n */\r\nexport const VerticalAlignmentType = {\r\n Top: 0,\r\n Middle: 1,\r\n Bottom: 2\r\n};\r\n\r\n/**\r\n * @typedef {number} Visibility\r\n **/\r\n\r\n\r\n/**\r\n * Minimal nodes visibility in the diagram. If auto fit of diagram into current page size is enabled, then\r\n * this option controls minimum allowed size of diagram nodes.\r\n * \r\n * @enum {Visibility}\r\n */\r\nexport const Visibility = {\r\n /**\r\n * Selects best visibility mode.\r\n */\r\n Auto: 0,\r\n /**\r\n * Regular template based diagram nodes\r\n */\r\n Normal: 1,\r\n /**\r\n * Diagram draws nodes in form of markers\r\n */\r\n Dot: 2,\r\n /**\r\n * Diagram only draws connection lines and hides actual nodes.\r\n */\r\n Line: 3,\r\n /**\r\n * Makes node invisible in layout. If node has no parents then \r\n * its connection lines are hidden as well.\r\n * \r\n * @ignore\r\n */\r\n Invisible: 4\r\n};\r\n\r\n/**\r\n * @typedef {number} ZOrderType\r\n **/\r\n\r\n/**\r\n * Option to draw annotation in the foreground or in the background of diagram nodes.\r\n * \r\n * @enum {ZOrderType}\r\n */\r\nexport const ZOrderType = {\r\n /**\r\n * Depends on annotation type.\r\n */\r\n Auto: 0,\r\n /**\r\n * Background\r\n */\r\n Background: 1,\r\n /**\r\n * Foreground\r\n */\r\n Foreground: 2\r\n};\r\n","/**\r\n * @class Thickness\r\n * @classdesc Class describes the thickness of a frame around rectangle.\r\n * \r\n * @param {number} left Left.\r\n * @param {number} top Top.\r\n * @param {number} right Right.\r\n * @param {number} bottom Bottom.\r\n */\r\nexport default function Thickness(arg0, arg1, arg2, arg3) {\r\n /**\r\n * The thickness for the left side of the rectangle.\r\n */\r\n this.left = 0;\r\n\r\n /**\r\n * The thickness for the upper side of the rectangle.\r\n */\r\n this.top = 0;\r\n\r\n /**\r\n * The thickness for the right side of the rectangle.\r\n */\r\n this.right = 0;\r\n\r\n /**\r\n * The thickness for the bottom side of the rectangle.\r\n */\r\n this.bottom = 0;\r\n\r\n switch (arguments.length) {\r\n case 1:\r\n if (arg0 !== null && typeof arg0 == \"object\") {\r\n this.left = arg0.left;\r\n this.top = arg0.top;\r\n this.right = arg0.right;\r\n this.bottom = arg0.bottom;\r\n } else {\r\n this.left = arg0;\r\n this.top = arg0;\r\n this.right = arg0;\r\n this.bottom = arg0;\r\n }\r\n break;\r\n case 4:\r\n this.left = arg0;\r\n this.top = arg1;\r\n this.right = arg2;\r\n this.bottom = arg3;\r\n break;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Checks object is empty\r\n * \r\n * @returns {boolean} Returns true if object has no thickness defined for any of its sides\r\n */\r\nThickness.prototype.isEmpty = function () {\r\n return this.left === 0 && this.top === 0 && this.right === 0 && this.bottom === 0;\r\n};\r\n\r\n/**\r\n * Checks if at least one side is positive\r\n * \r\n * @returns {boolean} Returns true if any of its sides is positive\r\n */\r\nThickness.prototype.isPositive = function () {\r\n return this.left > 0 || this.top > 0 || this.right > 0 || this.bottom > 0;\r\n};\r\n\r\n/**\r\n * Checks if at least one side is negative\r\n * \r\n * @returns {boolean} Returns true if any of its sides is negative\r\n */\r\nThickness.prototype.isNegative = function () {\r\n return this.left < 0 || this.top < 0 || this.right < 0 || this.bottom < 0;\r\n};\r\n\r\n/**\r\n * Maximum thickness.\r\n * \r\n * @param {Thickness} thickness The thickness to compare with.\r\n * @returns {Thickness} Returns reference to the current thickness object\r\n */\r\nThickness.prototype.maxThickness = function (thickness) {\r\n this.left = Math.max(this.left, thickness.left);\r\n this.top = Math.max(this.top, thickness.top);\r\n this.right = Math.max(this.right, thickness.right);\r\n this.bottom = Math.max(this.bottom, thickness.bottom);\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Add thickness.\r\n * \r\n * @param {Thickness} thickness The thickness to add.\r\n * @returns {Thickness} Returns reference to the current thickness object\r\n */\r\nThickness.prototype.addThickness = function (arg0, arg1, arg2, arg3) {\r\n switch (arguments.length) {\r\n case 1:\r\n if (arg0 !== null && typeof arg0 == \"object\") {\r\n this.left += arg0.left;\r\n this.top += arg0.top;\r\n this.right += arg0.right;\r\n this.bottom += arg0.bottom;\r\n } else {\r\n this.left += arg0;\r\n this.top += arg0;\r\n this.right += arg0;\r\n this.bottom += arg0;\r\n }\r\n break;\r\n case 4:\r\n this.left += arg0;\r\n this.top += arg1;\r\n this.right += arg2;\r\n this.bottom += arg3;\r\n break;\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Scales the thickness by the specified value\r\n * \r\n * @param {number} scale\r\n * @returns {Thickness} Returns reference to the current size.\r\n */\r\nThickness.prototype.scale = function (scale) {\r\n this.left = this.left * scale;\r\n this.top = this.top * scale;\r\n this.right = this.right * scale;\r\n this.bottom = this.bottom * scale;\r\n return this;\r\n};\r\n\r\n/**\r\n * Returns thickness object in form of CSS style string. It is conversion to padding style string.\r\n * \r\n * @param {string} [units=\"px\"] The string name of units.\r\n * @returns {string} CSS style string.\r\n */\r\nThickness.prototype.toString = function (units) {\r\n units = (units !== undefined) ? units : \"px\";\r\n\r\n return this.top + units + \" \" + this.right + units + \" \" + this.bottom + units + \" \" + this.left + units;\r\n};","/**\r\n * Indicates whether the specified number is even or not.\r\n * \r\n * @param {number} value The number to test.\r\n * @returns {boolean} Returns true if the value is even.\r\n * @ignore\r\n */\r\nexport function isEven(value) {\r\n return value % 2 == 0;\r\n};\r\n \r\n/**\r\n * Indicates whether the specified string is null or an Empty string.\r\n * \r\n * @ignore\r\n * @param {string} value The string to test.\r\n * @returns {boolean} Returns true if the value is null or an empty string(\"\"); otherwise, false.\r\n */\r\nexport function isNullOrEmpty(value) {\r\n var result = true,\r\n string;\r\n if (value !== undefined && value !== null) {\r\n string = value.toString();\r\n if (string.length > 0) {\r\n result = false;\r\n }\r\n }\r\n return result;\r\n};\r\n\r\n\r\n/**\r\n * Callback for looping collection items\r\n *\r\n * @callback onLoopItemCallback\r\n * @param {number} index An index of the collection item\r\n * @param {Object} item A collection item\r\n * @returns {boolean} Returns true to break iteration process\r\n */\r\n\r\n/**\r\n * Loops array elements or object properties.\r\n *\r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {Object|Object[]} items - Array of items or object with properties to iterate on\r\n * @param {onLoopItemCallback} onItem A call back function to call on each item in the array or object.\r\n * @ignore\r\n */\r\nexport function loop(thisArg, items, onItem) {\r\nvar key, index, len;\r\nif (onItem != null) {\r\n if (Array.isArray(items)) {\r\n for (index = 0, len = items.length; index < len; index += 1) {\r\n if (onItem.call(thisArg, index, items[index])) {\r\n break;\r\n }\r\n }\r\n } else {\r\n for (key in items) {\r\n if (items.hasOwnProperty(key)) {\r\n if (onItem.call(thisArg, key, items[key])) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n};\r\n\r\n/**\r\n * Splits string of merged cameled words into array.\r\n * \r\n * @param {string} name String of cameled words\r\n * @returns {string[]} Returns array of cameled words\r\n * @ignore\r\n */\r\nexport function splitCamelCaseName(name) {\r\n var result = [];\r\n var word = \"\";\r\n for (var i = 0; i < name.length; i += 1) {\r\n var c = name[i];\r\n if (c >= 'A' && c <= 'Z') {\r\n if (word !== \"\") {\r\n result.push(word);\r\n }\r\n word = c;\r\n } else {\r\n word += c;\r\n }\r\n }\r\n if (word !== \"\") {\r\n result.push(word);\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Indicates whether the specified value is object\r\n * \r\n * @param {string} item The value to test.\r\n * @returns {boolean} Returns true if the item is object otherwise, false.\r\n * @ignore\r\n */\r\nexport function isObject(item) {\r\n return item !== null && typeof item == 'object';\r\n};\r\n\r\n/**\r\n * Indicates whether the specified object is empty.\r\n * \r\n * @param {string} item The object to test.\r\n * @returns {boolean} Returns true if the item is empty object otherwise, false.\r\n * @ignore\r\n */\r\nexport function isEmptyObject(item) {\r\n var key;\r\n for (key in item) {\r\n if (item.hasOwnProperty(key)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\n/**\r\n * Makes deep copy of the object.\r\n * \r\n * @param {object} source The source object to take values from\r\n * @param {boolean} isShallow If true then method makes shallow copy\r\n * @returns {object} Returns cloned copy of the object\r\n * @ignore\r\n */\r\nexport function cloneObject(source, isShallow) {\r\n var result;\r\n if (source === null) {\r\n result = null;\r\n } else if (Array.isArray(source)) {\r\n if (isShallow) {\r\n result = source.slice(0);\r\n } else {\r\n result = [];\r\n for (var index = 0, len = source.length; index < len; index += 1) {\r\n result.push(cloneObject(source[index], isShallow));\r\n }\r\n }\r\n } else {\r\n switch (typeof source) {\r\n case 'object':\r\n result = {};\r\n for (var property in source) {\r\n if (source.hasOwnProperty(property)) {\r\n if (isShallow) {\r\n result[property] = source[property];\r\n } else {\r\n result[property] = cloneObject(source[property], isShallow);\r\n }\r\n }\r\n }\r\n break;\r\n default:\r\n result = source;\r\n break;\r\n }\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Shallow copy of source object properites into destination\r\n * \r\n * @param {object} destination The object to add properties to\r\n * @param {object} source The source object to take values from\r\n * @returns {object} Returns reference to destination object\r\n * @ignore\r\n */\r\nexport function mergeObjects(destination, source) {\r\n for (var index = 1; index < arguments.length; index += 1) {\r\n var src = arguments[index];\r\n if (src !== undefined) {\r\n for (var key in src) {\r\n if (src.hasOwnProperty(key)) {\r\n destination[key] = src[key];\r\n }\r\n }\r\n }\r\n }\r\n return destination;\r\n};\r\n\r\n/**\r\n * Returns hash code for specified string value. This function is not needed because \r\n * JavaScript supports near unlimited length of object property names.\r\n * \r\n * @param {string} value The string to calculate hash code for.\r\n * @returns {number} Returns hash code for the given string\r\n * @ignore\r\n */\r\nexport function getHashCode(value) {\r\n var hash = 0,\r\n character,\r\n i;\r\n /*ignore jslint start*/\r\n if (value.length > 0) {\r\n for (i = 0; i < value.length; i += 1) {\r\n character = value.charCodeAt(i);\r\n hash = ((hash << 5) - hash) + character;\r\n hash = hash & hash;\r\n }\r\n }\r\n /*ignore jslint end*/\r\n return hash;\r\n};\r\n\r\n\r\n/**\r\n * Callback for getting item key for an element of the array\r\n *\r\n * @callback getKeyFuncCallback\r\n * @param {Object} item A collection item\r\n * @returns {number} Returns key of the item \r\n */\r\n\r\n/**\r\n * Compares non-sorted arrays.\r\n *\r\n * @param {Object[]} array1 - The first collection of elements.\r\n * @param {Object[]} array2 - The second collection of elements.\r\n * @param {getKeyFuncCallback|undefined} getKeyFunc If callback function is defined it is used to get a key for an array element\r\n * @returns {boolean} Returns true if the arrays are identical.\r\n */\r\nexport function compareArrays(array1, array2, getKeyFunc) {\r\n var result = true,\r\n index, len, value,\r\n hashArray1;\r\n if (array1.length != array2.length) {\r\n result = false;\r\n } else {\r\n hashArray1 = {};\r\n for (index = 0, len = array1.length; index < len; index += 1) {\r\n value = getKeyFunc != null ? getKeyFunc(array1[index]) : array1[index];\r\n if (hashArray1.hasOwnProperty(value)) {\r\n hashArray1[value] += 1;\r\n } else {\r\n hashArray1[value] = 1;\r\n }\r\n }\r\n for (index = 0, len = array2.length; index < len; index += 1) {\r\n value = getKeyFunc != null ? getKeyFunc(array2[index]) : array2[index];\r\n if (!hashArray1.hasOwnProperty(value)) {\r\n result = false;\r\n break;\r\n } else {\r\n hashArray1[value] -= 1;\r\n if (hashArray1[value] < 0) {\r\n result = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n};","import { Colors } from '../enums';\r\n\r\nlet ColorHexs;\r\n\r\n/**\r\n * Converts color string into HEX color string.\r\n * \r\n * @param {string} color Regular HTML color string.\r\n * @returns {string} Returns color value in form of HEX string.\r\n */\r\nexport function getColorHexValue(color) {\r\n var digits,\r\n red,\r\n green,\r\n blue,\r\n rgb,\r\n colorIndex,\r\n colorKey;\r\n if (color.substr(0, 1) === '#') {\r\n return color;\r\n }\r\n\r\n /*ignore jslint start*/\r\n digits = /(.*?)rgb\\((\\d+), (\\d+), (\\d+)\\)/.exec(color);\r\n /*ignore jslint end*/\r\n if (digits !== null && digits.length > 0) {\r\n red = parseInt(digits[2], 10);\r\n green = parseInt(digits[3], 10);\r\n blue = parseInt(digits[4], 10);\r\n\r\n /*ignore jslint start*/\r\n rgb = ((red << 16) | (green << 8) | blue).toString(16);\r\n /*ignore jslint end*/\r\n return digits[1] + \"000000\".substr(0, 6 - rgb.length) + rgb;\r\n }\r\n if (ColorHexs === undefined) {\r\n ColorHexs = {};\r\n colorIndex = 0;\r\n for (colorKey in Colors) {\r\n if (Colors.hasOwnProperty(colorKey)) {\r\n ColorHexs[colorKey.toUpperCase()] = Colors[colorKey];\r\n colorIndex += 1;\r\n }\r\n }\r\n }\r\n\r\n return ColorHexs[color.toUpperCase()];\r\n};\r\n\r\nlet ColorNames;\r\n\r\n/**\r\n * Converts color string into HTML color name string or return hex color string.\r\n * \r\n * @param {string} color Regular HTML color string\r\n * @returns {string} Returns HTML Color name or HEX string.\r\n */\r\nexport function getColorName(color) {\r\n var colorIndex,\r\n colorKey;\r\n color = getColorHexValue(color);\r\n\r\n if (ColorNames === undefined) {\r\n ColorNames = {};\r\n colorIndex = 0;\r\n for (colorKey in Colors) {\r\n if (Colors.hasOwnProperty(colorKey)) {\r\n ColorNames[Colors[colorKey]] = colorKey;\r\n colorIndex += 1;\r\n }\r\n }\r\n }\r\n\r\n return ColorNames[color];\r\n};\r\n\r\n/**\r\n * Gets red value of HEX color string.\r\n * \r\n * @param {string} color Color\r\n * @returns {number} Returns red value of the HEX color string. \r\n */\r\nexport function getRed(color) {\r\n if (color.substr(0, 1) === '#' && color.length === 7) {\r\n return parseInt(color.substr(1, 2), 16);\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Gets green value of HEX color string.\r\n * \r\n * @param {string} color Color\r\n * @returns {number} Returns green value of the HEX color string. \r\n */\r\nexport function getGreen(color) {\r\n if (color.substr(0, 1) === '#' && color.length === 7) {\r\n return parseInt(color.substr(3, 2), 16);\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Gets blue value of HEX color string.\r\n * \r\n * @param {string} color Color\r\n * @returns {number} Returns blue value of the HEX color string. \r\n */\r\nexport function getBlue(color) {\r\n if (color.substr(0, 1) === '#' && color.length === 7) {\r\n return parseInt(color.substr(5, 2), 16);\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Calculates before opacity color value producing color you need after applying opacity.\r\n * \r\n * @param {string} color The color you want to get after applying opacity.\r\n * @param {number} opacity Opacity\r\n * @returns {string} The HEX color before opacity\r\n */\r\nexport function beforeOpacity(color, opacity) {\r\n var red,\r\n green,\r\n blue,\r\n rgb;\r\n color = getColorHexValue(color);\r\n\r\n red = Math.ceil((getRed(color) - (1.0 - opacity) * 255.0) / opacity);\r\n green = Math.ceil((getGreen(color) - (1.0 - opacity) * 255.0) / opacity);\r\n blue = Math.ceil((getBlue(color) - (1.0 - opacity) * 255.0) / opacity);\r\n\r\n /*ignore jslint start*/\r\n rgb = ((red << 16) | (green << 8) | blue).toString(16);\r\n /*ignore jslint end*/\r\n return '#' + \"000000\".substr(0, 6 - rgb.length) + rgb;\r\n};\r\n\r\nconst highestContrasts = {};\r\n\r\n/**\r\n * Finds contrast between base color and two optional first and second colors and returns the one which has highest contrast.\r\n * \r\n * @param {string} baseColor Base color to compare with\r\n * @param {string} firstColor First color.\r\n * @param {string} secondColor Second color.\r\n * \r\n * @returns {string} Returns highest contrast color compared to base color.\r\n */\r\nexport function highestContrast(baseColor, firstColor, secondColor) {\r\n var result = firstColor,\r\n key = baseColor + \",\" + firstColor + \",\" + secondColor;\r\n\r\n if (highestContrasts.hasOwnProperty(key)) {\r\n result = highestContrasts[key];\r\n } else {\r\n if (luminosity(firstColor, baseColor) < luminosity(secondColor, baseColor)) {\r\n result = secondColor;\r\n }\r\n highestContrasts[key] = result;\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Calculates luminosity between two HEX string colors.\r\n * \r\n * @param {string} firstColor First color.\r\n * @param {string} secondColor Second color.\r\n * \r\n * @returns {number} Returns luminosity value\r\n */\r\nexport function luminosity(firstColor, secondColor) {\r\n var result,\r\n first = getColorHexValue(firstColor),\r\n second = getColorHexValue(secondColor),\r\n firstLuminosity =\r\n 0.2126 * Math.pow(getRed(first) / 255.0, 2.2) +\r\n 0.7152 * Math.pow(getRed(first) / 255.0, 2.2) +\r\n 0.0722 * Math.pow(getRed(first) / 255.0, 2.2),\r\n secondLuminosity =\r\n 0.2126 * Math.pow(getRed(second) / 255.0, 2.2) +\r\n 0.7152 * Math.pow(getRed(second) / 255.0, 2.2) +\r\n 0.0722 * Math.pow(getRed(second) / 255.0, 2.2);\r\n\r\n if (firstLuminosity > secondLuminosity) {\r\n result = (firstLuminosity + 0.05) / (secondLuminosity + 0.05);\r\n }\r\n else {\r\n result = (secondLuminosity + 0.05) / (firstLuminosity + 0.05);\r\n }\r\n\r\n return result;\r\n};","/**\r\n * @class Size\r\n * @classdesc Size object defines width and height.\r\n * \r\n * @param {Size} arg0 Size object to clone.\r\n * \r\n * @param {number} arg0 Width.\r\n * @param {number} arg1 Height.\r\n */\r\nexport default function Size(arg0, arg1) {\r\n /**\r\n * The width\r\n * @type {number}\r\n */\r\n this.width = 0;\r\n\r\n /**\r\n * The height\r\n * @type {number}\r\n */\r\n this.height = 0;\r\n\r\n switch (arguments.length) {\r\n case 1:\r\n this.width = arg0.width;\r\n this.height = arg0.height;\r\n break;\r\n case 2:\r\n this.width = arg0;\r\n this.height = arg1;\r\n break;\r\n default:\r\n break;\r\n }\r\n};\r\n\r\n/**\r\n * Checks if size is empty. Size is empty if one of its dimensions is undefined or less than zero.\r\n * \r\n * @returns {boolean} Returns true if size is empty.\r\n */\r\n Size.prototype.isEmpty = function () {\r\n return this.width === null || this.height === null || this.width < 0 || this.height < 0;\r\n};\r\n\r\n/**\r\n * Inverts size dimensions\r\n * \r\n * @returns {Size} Returns reference to the current size.\r\n */\r\nSize.prototype.invert = function () {\r\n var width = this.width;\r\n this.width = this.height;\r\n this.height = width;\r\n return this;\r\n};\r\n\r\n/**\r\n * Scales the size by the specified value\r\n * \r\n * @param {number} scale\r\n * @returns {Size} Returns reference to the current size.\r\n */\r\nSize.prototype.scale = function (scale) {\r\n this.width = this.width * scale;\r\n this.height = this.height * scale;\r\n return this;\r\n};\r\n\r\n/**\r\n * Returns square size\r\n * \r\n * @returns {number} Returns square size.\r\n */\r\nSize.prototype.space = function () {\r\n return this.width * this.height;\r\n};\r\n\r\n\r\n/**\r\n * Returns size in form of CSS style object.\r\n * \r\n * @param {string} [units=\"px\"] The string name of units.\r\n * @returns {object} CSS style object\r\n */\r\nSize.prototype.getCSS = function (units) {\r\n units = (units !== undefined) ? units : \"px\";\r\n\r\n var result = {\r\n width: this.width + units,\r\n height: this.height + units\r\n };\r\n return result;\r\n};\r\n\r\n/**\r\n * Crops the size by the other size object.\r\n * \r\n * @param {Size} size The size to use as the crop boundaries.\r\n * @returns {Size} Returns reference to the current size object\r\n */\r\nSize.prototype.cropBySize = function (size) {\r\n this.width = Math.min(this.width, size.width);\r\n this.height = Math.min(this.height, size.height);\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Extends the current size by the other size.\r\n * \r\n * @param {Size} size The size to use as extension.\r\n * @returns {Size} Returns reference to the current size object\r\n */\r\nSize.prototype.maxSize = function (size) {\r\n this.width = Math.max(this.width, size.width);\r\n this.height = Math.max(this.height, size.height);\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Expands the current size by the thickness object.\r\n * \r\n * @param {Thickness} thickness The thickness to use for expansion.\r\n * @returns {Size} Returns reference to the current size object\r\n */\r\nSize.prototype.addThickness = function (thickness) {\r\n this.width = Math.max(0, this.width + thickness.left + thickness.right);\r\n this.height = Math.max(0, this.height + thickness.top + thickness.bottom);\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Shrinks the current size by the thickness object.\r\n * \r\n * @param {Thickness} thickness The thickness to use for contraction.\r\n * @returns {Size} Returns reference to the current size object\r\n */\r\nSize.prototype.removeThickness = function (thickness) {\r\n this.width = Math.max(0, this.width - thickness.left - thickness.right);\r\n this.height = Math.max(0, this.height - thickness.top - thickness.bottom);\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Validates size properties\r\n * \r\n * @returns {boolean} Returns true if size properties are valid.\r\n */\r\nSize.prototype.validate = function () {\r\n if (isNaN(this.width) || isNaN(this.height)) {\r\n throw \"Invalid size.\";\r\n }\r\n};","import Size from './structs/Size';\r\n\r\nexport function getElementsByName(thisArg, parent, name, onNode) {\r\n var nodes = parent.getElementsByTagName(\"*\");\r\n for (var index = 0; index < nodes.length; index += 1) {\r\n var node = nodes[index];\r\n if (node.name == name) {\r\n onNode.call(thisArg, node);\r\n }\r\n }\r\n};\r\n\r\nexport function getFixOfPixelAlignment(element) {\r\n var elementClientRectangle = element.getBoundingClientRect(),\r\n top = elementClientRectangle.top + document.body.scrollTop,\r\n left = elementClientRectangle.left + document.body.scrollLeft;\r\n return new Size(-left + Math.floor(left), -top + Math.floor(top));\r\n};\r\n\r\nexport function getElementOffset(element) {\r\n var rect = element.getBoundingClientRect();\r\n var ownerDocument = element.ownerDocument;\r\n var documentElement = ownerDocument.documentElement;\r\n\r\n return {\r\n top: rect.top + window.pageYOffset - documentElement.clientTop,\r\n left: rect.left + window.pageXOffset - documentElement.clientLeft\r\n };\r\n};\r\n\r\nexport function hasClass(element, className) {\r\n var classNames = element.className;\r\n if (classNames != null && typeof classNames == \"string\") {\r\n var list = classNames.split(\" \");\r\n for (var index = 0; index < list.length; index += 1) {\r\n if (list[index] == className) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * This method uses various approaches used in different browsers to stop event propagation.\r\n * @param {object} event Event to be stopped\r\n * @ignore\r\n */\r\nexport function stopPropagation(event) {\r\n if (event.stopPropagation !== undefined) {\r\n event.stopPropagation();\r\n } else if (event.cancelBubble !== undefined) {\r\n event.cancelBubble = true;\r\n } else if (event.preventDefault !== undefined) {\r\n event.preventDefault();\r\n }\r\n};\r\n\r\nexport function getInnerSize(element) {\r\n var size = window.getComputedStyle(element);\r\n\r\n return new Size(parseInt(size.width, 10), parseInt(size.height, 10));\r\n};","/*\r\n jsonml-html.js\r\n JsonML to HTML utility\r\n\r\n Created: 2006-11-09-0116\r\n Modified: 2012-11-24-1051\r\n\r\n Copyright (c)2006-2012 Stephen M. McKamey\r\n Distributed under The MIT License: http://jsonml.org/license\r\n\r\n This file ensures a global JsonML object adding these methods:\r\n\r\n JsonML.toHTML(JsonML, filter)\r\n\r\n This method produces a tree of DOM elements from a JsonML tree. The\r\n array must not contain any cyclical references.\r\n\r\n The optional filter parameter is a function which can filter and\r\n transform the results. It receives each of the DOM nodes, and\r\n its return value is used instead of the original value. If it\r\n returns what it received, then structure is not modified. If it\r\n returns undefined then the member is deleted.\r\n\r\n This is useful for binding unobtrusive JavaScript to the generated\r\n DOM elements.\r\n\r\n Example:\r\n\r\n // Parses the structure. If an element has a specific CSS value then\r\n // takes appropriate action: Remove from results, add special event\r\n // handlers, or bind to a custom component.\r\n\r\n var myUI = JsonML.toHTML(myUITemplate, function (elem) {\r\n if (elem.className.indexOf('Remove-Me') >= 0) {\r\n // this will remove from resulting DOM tree\r\n return null;\r\n }\r\n\r\n if (elem.tagName && elem.tagName.toLowerCase() === 'a' &&\r\n elem.className.indexOf('External-Link') >= 0) {\r\n // this is the equivalent of target='_blank'\r\n elem.onclick = function(evt) {\r\n window.open(elem.href); return false;\r\n };\r\n\r\n } else if (elem.className.indexOf('Fancy-Widgit') >= 0) {\r\n // bind to a custom component\r\n FancyWidgit.bindDOM(elem);\r\n }\r\n return elem;\r\n });\r\n\r\n JsonML.toHTMLText(JsonML)\r\n Converts JsonML to HTML text\r\n\r\n // Implement onerror to handle any runtime errors while binding:\r\n JsonML.onerror = function (ex, jml, filter) {\r\n // display inline error message\r\n return document.createTextNode('['+ex+']');\r\n };\r\n*/\r\n\r\nconst JsonML = {};\r\n\r\nif (typeof document !== 'undefined') {\r\n\r\n (function (JsonML, document) {\r\n 'use strict';\r\n\r\n /**\r\n * Attribute name map\r\n * \r\n * @private\r\n * @constant\r\n * @type {Object.}\r\n */\r\n var ATTR_MAP = {\r\n 'accesskey': 'accessKey',\r\n 'bgcolor': 'bgColor',\r\n 'cellpadding': 'cellPadding',\r\n 'cellspacing': 'cellSpacing',\r\n 'checked': 'defaultChecked',\r\n 'class': 'className',\r\n 'colspan': 'colSpan',\r\n 'contenteditable': 'contentEditable',\r\n 'defaultchecked': 'defaultChecked',\r\n 'for': 'htmlFor',\r\n 'formnovalidate': 'formNoValidate',\r\n 'hidefocus': 'hideFocus',\r\n 'ismap': 'isMap',\r\n 'maxlength': 'maxLength',\r\n 'novalidate': 'noValidate',\r\n 'readonly': 'readOnly',\r\n 'rowspan': 'rowSpan',\r\n 'spellcheck': 'spellCheck',\r\n 'tabindex': 'tabIndex',\r\n 'usemap': 'useMap',\r\n 'willvalidate': 'willValidate'\r\n // can add more attributes here as needed\r\n };\r\n\r\n /**\r\n * Attribute duplicates map\r\n * \r\n * @private\r\n * @constant\r\n * @type {Object.}\r\n */\r\n var ATTR_DUP = {\r\n 'enctype': 'encoding',\r\n 'onscroll': 'DOMMouseScroll'\r\n // can add more attributes here as needed\r\n };\r\n\r\n /**\r\n * Attributes to be set via DOM\r\n * \r\n * @private\r\n * @constant\r\n * @type {Object.}\r\n */\r\n var ATTR_DOM = {\r\n 'autocapitalize': 1,\r\n 'autocomplete': 1,\r\n 'autocorrect': 1\r\n // can add more attributes here as needed\r\n };\r\n\r\n /**\r\n * Boolean attribute map\r\n * \r\n * @private\r\n * @constant\r\n * @type {Object.}\r\n */\r\n var ATTR_BOOL = {\r\n 'async': 1,\r\n 'autofocus': 1,\r\n 'checked': 1,\r\n 'defaultchecked': 1,\r\n 'defer': 1,\r\n 'disabled': 1,\r\n 'formnovalidate': 1,\r\n 'hidden': 1,\r\n 'indeterminate': 1,\r\n 'ismap': 1,\r\n 'multiple': 1,\r\n 'novalidate': 1,\r\n 'readonly': 1,\r\n 'required': 1,\r\n 'spellcheck': 1,\r\n 'willvalidate': 1\r\n // can add more attributes here as needed\r\n };\r\n\r\n /**\r\n * Leading SGML line ending pattern\r\n * \r\n * @private\r\n * @constant\r\n * @type {RegExp}\r\n */\r\n var LEADING = /^[\\r\\n]+/;\r\n\r\n /**\r\n * Trailing SGML line ending pattern\r\n * \r\n * @private\r\n * @constant\r\n * @type {RegExp}\r\n */\r\n var TRAILING = /[\\r\\n]+$/;\r\n\r\n /**\r\n * @private\r\n * @const\r\n * @type {number}\r\n */\r\n var NUL = 0;\r\n\r\n /**\r\n * @private\r\n * @const\r\n * @type {number}\r\n */\r\n var FUN = 1;\r\n\r\n /**\r\n * @private\r\n * @const\r\n * @type {number}\r\n */\r\n var ARY = 2;\r\n\r\n /**\r\n * @private\r\n * @const\r\n * @type {number}\r\n */\r\n var OBJ = 3;\r\n\r\n /**\r\n * @private\r\n * @const\r\n * @type {number}\r\n */\r\n var VAL = 4;\r\n\r\n /**\r\n * @private\r\n * @const\r\n * @type {number}\r\n */\r\n var RAW = 5;\r\n\r\n /**\r\n * Wraps a data value to maintain as raw markup in output\r\n * \r\n * @private\r\n * @this {Markup}\r\n * @param {string} value The value\r\n * @constructor\r\n */\r\n function Markup(value) {\r\n /**\r\n * @type {string}\r\n * @const\r\n * @protected\r\n */\r\n this.value = value;\r\n }\r\n\r\n /**\r\n * Renders the value\r\n * \r\n * @public\r\n * @ignore\r\n * @override\r\n * @this {Markup}\r\n * @return {string} value\r\n */\r\n Markup.prototype.toString = function () {\r\n return this.value;\r\n };\r\n\r\n /**\r\n * @ignore\r\n * @param {string} value\r\n * @return {Markup}\r\n */\r\n JsonML.raw = function (value) {\r\n return new Markup(value);\r\n };\r\n\r\n /**\r\n * @ignore\r\n * @param {*} value\r\n * @return {boolean}\r\n */\r\n var isMarkup = JsonML.isRaw = function (value) {\r\n return (value instanceof Markup);\r\n };\r\n\r\n /**\r\n * Determines if the value is an Array\r\n * \r\n * @private\r\n * @param {*} val the object being tested\r\n * @return {boolean}\r\n */\r\n var isArray = Array.isArray || function (val) {\r\n return (val instanceof Array);\r\n };\r\n\r\n /**\r\n * Determines if the value is a function\r\n * \r\n * @private\r\n * @param {*} val the object being tested\r\n * @return {boolean}\r\n */\r\n function isFunction(val) {\r\n return (typeof val === 'function');\r\n }\r\n\r\n /**\r\n * Determines the type of the value\r\n * \r\n * @private\r\n * @param {*} val the object being tested\r\n * @return {number}\r\n */\r\n function getType(val) {\r\n switch (typeof val) {\r\n case 'object':\r\n return !val ? NUL : (isArray(val) ? ARY : (isMarkup(val) ? RAW : ((val instanceof Date) ? VAL : OBJ)));\r\n case 'function':\r\n return FUN;\r\n case 'undefined':\r\n return NUL;\r\n default:\r\n return VAL;\r\n }\r\n }\r\n\r\n /**\r\n * Creates a DOM element \r\n * \r\n * @private\r\n * @param {string} tag The element's tag name\r\n * @return {Node}\r\n */\r\n var createElement = function (tag) {\r\n if (!tag) {\r\n // create a document fragment to hold multiple-root elements\r\n if (document.createDocumentFragment) {\r\n return document.createDocumentFragment();\r\n }\r\n\r\n tag = '';\r\n\r\n } else if (tag.charAt(0) === '!') {\r\n return document.createComment(tag === '!' ? '' : tag.substr(1) + ' ');\r\n }\r\n\r\n if (tag.toLowerCase() === 'style' && document.createStyleSheet) {\r\n // IE requires this interface for styles\r\n return document.createStyleSheet();\r\n }\r\n\r\n return document.createElement(tag);\r\n };\r\n\r\n /**\r\n * Adds an event handler to an element\r\n * \r\n * @private\r\n * @param {Node} elem The element\r\n * @param {string} name The event name\r\n * @param {function(Event)} handler The event handler\r\n */\r\n var addHandler = function (elem, name, handler) {\r\n if (name.substr(0, 2) === 'on') {\r\n name = name.substr(2);\r\n }\r\n\r\n switch (typeof handler) {\r\n case 'function':\r\n if (elem.addEventListener) {\r\n // DOM Level 2\r\n elem.addEventListener(name, handler, false);\r\n\r\n } else if (elem.attachEvent && getType(elem[name]) !== NUL) {\r\n // IE legacy events\r\n elem.attachEvent('on' + name, handler);\r\n\r\n } else {\r\n // DOM Level 0\r\n var old = elem['on' + name] || elem[name];\r\n elem['on' + name] = elem[name] = !isFunction(old) ? handler :\r\n function (e) {\r\n return (old.call(this, e) !== false) && (handler.call(this, e) !== false);\r\n };\r\n }\r\n break;\r\n\r\n case 'string':\r\n // inline functions are DOM Level 0\r\n /*jslint evil:true */\r\n elem['on' + name] = new Function('event', handler);\r\n /*jslint evil:false */\r\n break;\r\n }\r\n };\r\n\r\n /**\r\n * Apply styles to element\r\n * \r\n * @public\r\n * @ignore\r\n * @param {Node} elem The element\r\n * @param {Object} css styles object\r\n * @return {Node}\r\n */\r\n var applyStyles = JsonML.applyStyles = function (elem, css) {\r\n for (var key in css) {\r\n if (css.hasOwnProperty(key)) {\r\n elem.style[key] = css[key];\r\n }\r\n }\r\n return elem;\r\n };\r\n\r\n /**\r\n * Appends an attribute to an element\r\n * \r\n * @private\r\n * @param {Node} elem The element\r\n * @param {Object} attr Attributes object\r\n * @return {Node}\r\n */\r\n var addAttributes = function (elem, attr) {\r\n if (attr.name && document.attachEvent && !elem.parentNode) {\r\n try {\r\n // IE fix for not being able to programatically change the name attribute\r\n var alt = createElement('<' + elem.tagName + ' name=\"' + attr.name + '\">');\r\n // fix for Opera 8.5 and Netscape 7.1 creating malformed elements\r\n if (elem.tagName === alt.tagName) {\r\n elem = alt;\r\n }\r\n } catch (ex) { }\r\n }\r\n\r\n // for each attributeName\r\n for (var name in attr) {\r\n if (attr.hasOwnProperty(name)) {\r\n // attributeValue\r\n var value = attr[name],\r\n type = getType(value);\r\n\r\n if (name) {\r\n if (type === NUL) {\r\n value = '';\r\n type = VAL;\r\n }\r\n\r\n name = ATTR_MAP[name.toLowerCase()] || name;\r\n\r\n if (name === '$') {\r\n value(elem);\r\n }\r\n else if (name == 'className') {\r\n if (isArray(value)) {\r\n for (var index = 0; index < value.length; index += 1) {\r\n elem.className += \" \" + value[index];\r\n }\r\n } else {\r\n elem.className += \" \" + value;\r\n }\r\n }\r\n else if (name === 'style') {\r\n if (getType(elem.style.cssText) !== NUL) {\r\n if (typeof value == \"string\") {\r\n elem.style.cssText = value;\r\n } else {\r\n applyStyles(elem, value);\r\n }\r\n } else {\r\n elem.style = value;\r\n }\r\n\r\n } else if (name.substr(0, 2) === 'on') {\r\n addHandler(elem, name, value);\r\n\r\n // also set duplicated events\r\n name = ATTR_DUP[name];\r\n if (name) {\r\n addHandler(elem, name, value);\r\n }\r\n\r\n } else if (!ATTR_DOM[name.toLowerCase()] && (type !== VAL || name.charAt(0) === '$' || getType(elem[name]) !== NUL || getType(elem[ATTR_DUP[name]]) !== NUL)) {\r\n // direct setting of existing properties\r\n elem[name] = value;\r\n\r\n // also set duplicated properties\r\n name = ATTR_DUP[name];\r\n if (name) {\r\n elem[name] = value;\r\n }\r\n\r\n } else if (ATTR_BOOL[name.toLowerCase()]) {\r\n if (value) {\r\n // boolean attributes\r\n elem.setAttribute(name, name);\r\n\r\n // also set duplicated attributes\r\n name = ATTR_DUP[name];\r\n if (name) {\r\n elem.setAttribute(name, name);\r\n }\r\n }\r\n\r\n } else {\r\n // http://www.quirksmode.org/dom/w3c_core.html#attributes\r\n\r\n // custom and 'data-*' attributes\r\n elem.setAttribute(name, value);\r\n\r\n // also set duplicated attributes\r\n name = ATTR_DUP[name];\r\n if (name) {\r\n elem.setAttribute(name, value);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return elem;\r\n };\r\n\r\n /**\r\n * Appends a child to an element\r\n * \r\n * @private\r\n * @param {Node} elem The parent element\r\n * @param {Node} child The child\r\n */\r\n var appendDOM = JsonML.appendDOM = function (elem, child) {\r\n if (child) {\r\n var tag = (elem.tagName || '').toLowerCase();\r\n if (elem.nodeType === 8) { // comment\r\n if (child.nodeType === 3) { // text node\r\n elem.nodeValue += child.nodeValue;\r\n }\r\n } else if (tag === 'table' && elem.tBodies) {\r\n if (!child.tagName) {\r\n // must unwrap documentFragment for tables\r\n if (child.nodeType === 11) {\r\n while (child.firstChild) {\r\n appendDOM(elem, child.removeChild(child.firstChild));\r\n }\r\n }\r\n return;\r\n }\r\n\r\n // in IE must explicitly nest TRs in TBODY\r\n var childTag = child.tagName.toLowerCase();// child tagName\r\n if (childTag && childTag !== 'tbody' && childTag !== 'thead') {\r\n // insert in last tbody\r\n var tBody = elem.tBodies.length > 0 ? elem.tBodies[elem.tBodies.length - 1] : null;\r\n if (!tBody) {\r\n tBody = createElement(childTag === 'th' ? 'thead' : 'tbody');\r\n elem.appendChild(tBody);\r\n }\r\n tBody.appendChild(child);\r\n } else if (elem.canHaveChildren !== false) {\r\n elem.appendChild(child);\r\n }\r\n\r\n } else if (tag === 'style' && document.createStyleSheet) {\r\n // IE requires this interface for styles\r\n elem.cssText = child;\r\n\r\n } else if (elem.canHaveChildren !== false) {\r\n elem.appendChild(child);\r\n\r\n } else if (tag === 'object' &&\r\n child.tagName && child.tagName.toLowerCase() === 'param') {\r\n // IE-only path\r\n try {\r\n elem.appendChild(child);\r\n } catch (ex1) { }\r\n try {\r\n if (elem.object) {\r\n elem.object[child.name] = child.value;\r\n }\r\n } catch (ex2) { }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Tests a node for whitespace\r\n * \r\n * @private\r\n * @param {Node} node The node\r\n * @return {boolean}\r\n */\r\n var isWhitespace = function (node) {\r\n return !!node && (node.nodeType === 3) && (!node.nodeValue || !/\\S/.exec(node.nodeValue));\r\n };\r\n\r\n /**\r\n * Trims whitespace pattern from the text node\r\n * \r\n * @private\r\n * @param {Node} node The node\r\n */\r\n var trimPattern = function (node, pattern) {\r\n if (!!node && (node.nodeType === 3) && pattern.exec(node.nodeValue)) {\r\n node.nodeValue = node.nodeValue.replace(pattern, '');\r\n }\r\n };\r\n\r\n /**\r\n * Removes leading and trailing whitespace nodes\r\n * \r\n * @private\r\n * @param {Node} elem The node\r\n */\r\n var trimWhitespace = function (elem) {\r\n if (elem) {\r\n while (isWhitespace(elem.firstChild)) {\r\n // trim leading whitespace text nodes\r\n elem.removeChild(elem.firstChild);\r\n }\r\n // trim leading whitespace text\r\n trimPattern(elem.firstChild, LEADING);\r\n while (isWhitespace(elem.lastChild)) {\r\n // trim trailing whitespace text nodes\r\n elem.removeChild(elem.lastChild);\r\n }\r\n // trim trailing whitespace text\r\n trimPattern(elem.lastChild, TRAILING);\r\n }\r\n };\r\n\r\n /**\r\n * Converts the markup to DOM nodes\r\n * \r\n * @private\r\n * @param {string|Markup} value The node\r\n * @return {Node}\r\n */\r\n var toDOM = function (value) {\r\n var wrapper = createElement('div');\r\n wrapper.innerHTML = '' + value;\r\n\r\n // trim extraneous whitespace\r\n trimWhitespace(wrapper);\r\n\r\n // eliminate wrapper for single nodes\r\n if (wrapper.childNodes.length === 1) {\r\n return wrapper.firstChild;\r\n }\r\n\r\n // create a document fragment to hold elements\r\n var frag = createElement('');\r\n while (wrapper.firstChild) {\r\n frag.appendChild(wrapper.firstChild);\r\n }\r\n return frag;\r\n };\r\n\r\n /**\r\n * Default error handler\r\n * @ignore\r\n * @param {Error} ex\r\n * @return {Node}\r\n */\r\n var onError = function (ex) {\r\n return document.createTextNode('[' + ex + ']');\r\n };\r\n\r\n /* override this to perform custom error handling during binding */\r\n JsonML.onerror = null;\r\n\r\n /**\r\n * also used by JsonML.BST\r\n * @ignore\r\n * @param {Node} elem\r\n * @param {*} jml\r\n * @param {function} filter\r\n * @return {Node}\r\n */\r\n var patch = JsonML.patch = function (elem, jml, filter) {\r\n\r\n for (var i = 1; i < jml.length; i += 1) {\r\n if (isArray(jml[i]) || 'string' === typeof jml[i]) {\r\n // append children\r\n appendDOM(elem, toHTML(jml[i], filter));\r\n\r\n } else if (isMarkup(jml[i])) {\r\n appendDOM(elem, toDOM(jml[i].value));\r\n\r\n } else if ('object' === typeof jml[i] && jml[i] !== null && elem.nodeType === 1) {\r\n // add attributes\r\n elem = addAttributes(elem, jml[i]);\r\n }\r\n }\r\n\r\n return elem;\r\n };\r\n\r\n /**\r\n * Main builder entry point\r\n * @ignore\r\n * @param {string|array} jml\r\n * @param {function} filter\r\n * @return {Node}\r\n */\r\n var toHTML = JsonML.toHTML = function (jml, filter) {\r\n try {\r\n if (!jml) {\r\n return null;\r\n }\r\n if ('string' === typeof jml) {\r\n return document.createTextNode(jml);\r\n }\r\n if (isMarkup(jml)) {\r\n return toDOM(jml.value);\r\n }\r\n if (!isArray(jml) || ('string' !== typeof jml[0])) {\r\n throw new SyntaxError('invalid JsonML');\r\n }\r\n\r\n var tagName = jml[0]; // tagName\r\n if (!tagName) {\r\n // correctly handle a list of JsonML trees\r\n // create a document fragment to hold elements\r\n var frag = createElement('');\r\n for (var i = 1; i < jml.length; i += 1) {\r\n appendDOM(frag, toHTML(jml[i], filter));\r\n }\r\n\r\n // trim extraneous whitespace\r\n trimWhitespace(frag);\r\n\r\n // eliminate wrapper for single nodes\r\n if (frag.childNodes.length === 1) {\r\n return frag.firstChild;\r\n }\r\n return frag;\r\n }\r\n\r\n if (tagName.toLowerCase() === 'style' && document.createStyleSheet) {\r\n // IE requires this interface for styles\r\n patch(document.createStyleSheet(), jml, filter);\r\n // in IE styles are effective immediately\r\n return null;\r\n }\r\n\r\n var elem = patch(createElement(tagName), jml, filter);\r\n\r\n // trim extraneous whitespace\r\n trimWhitespace(elem);\r\n return (elem && isFunction(filter)) ? filter(elem) : elem;\r\n } catch (ex) {\r\n try {\r\n // handle error with complete context\r\n var err = isFunction(JsonML.onerror) ? JsonML.onerror : onError;\r\n return err(ex, jml, filter);\r\n } catch (ex2) {\r\n return document.createTextNode('[' + ex2 + ']');\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Not super efficient.\r\n * TODO: port render.js from DUEL\r\n * @ignore\r\n * @param {string|array} jml JsonML structure\r\n * @return {string} HTML text\r\n */\r\n JsonML.toHTMLText = function (jml, filter) {\r\n var elem = toHTML(jml, filter);\r\n if (elem.outerHTML) {\r\n return elem.outerHTML;\r\n }\r\n\r\n var parent = createElement('div');\r\n parent.appendChild(elem);\r\n\r\n var html = parent.innerHTML;\r\n parent.removeChild(elem);\r\n\r\n return html;\r\n };\r\n\r\n })(JsonML, document);\r\n}\r\n\r\nexport default JsonML;","/**\r\n * @class Point\r\n * @classdesc Class represents pair of x and y coordinates that define a point in 2D plane.\r\n * \r\n * @param {Point} arg0 Point object to clone.\r\n * \r\n * @param {number} arg0 The x coordinate.\r\n * @param {number} arg1 The y coordinate.\r\n */\r\nexport default function Point(arg0, arg1) {\r\n /**\r\n * The x coordinate\r\n * @type {number}\r\n */\r\n this.x = null;\r\n /**\r\n * The y coordinate\r\n * @type {number}\r\n */\r\n this.y = null;\r\n\r\n /**\r\n * Reference to the context object associated with this point.\r\n * @type {object}\r\n */\r\n this.context = null;\r\n\r\n switch (arguments.length) {\r\n case 1:\r\n this.x = arg0.x;\r\n this.y = arg0.y;\r\n this.context = arg0.context;\r\n break;\r\n case 2:\r\n this.x = arg0;\r\n this.y = arg1;\r\n break;\r\n default:\r\n break;\r\n }\r\n};\r\n\r\n/**\r\n * Scales the point location by the specified value\r\n * \r\n * @param {number} scale\r\n * @returns {Point} Returns reference to the current point.\r\n */\r\nPoint.prototype.scale = function (scale) {\r\n this.x = this.x * scale;\r\n this.y = this.y * scale;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates distance to the specified point\r\n * \r\n * @param {Point} arg0 Point\r\n * \r\n * @param {number} arg0 X coordinate\r\n * @param {number} arg1 Y coordinate\r\n * \r\n * @returns {number} Returns distance to the specified point\r\n */\r\nPoint.prototype.distanceTo = function (arg0, arg1) {\r\n var x2 = 0,\r\n y2 = 0,\r\n a,\r\n b;\r\n switch (arguments.length) {\r\n case 1:\r\n x2 = arg0.x;\r\n y2 = arg0.y;\r\n break;\r\n case 2:\r\n x2 = arg0;\r\n y2 = arg1;\r\n break;\r\n default:\r\n break;\r\n }\r\n a = this.x - x2;\r\n b = this.y - y2;\r\n return Math.sqrt(a * a + b * b);\r\n};\r\n\r\n/**\r\n * Checks if points are equal\r\n * \r\n * @param {Point} point Point\r\n * @returns {boolean} Returns true if points are equal.\r\n */\r\nPoint.prototype.equalTo = function (point) {\r\n return this.x == point.x && this.y == point.y;\r\n};\r\n\r\n/**\r\n * Swaps values of 2 points\r\n * \r\n * @param {Point} point The point to swap values with\r\n */\r\nPoint.prototype.swap = function (point) {\r\n var x = point.x,\r\n y = point.y;\r\n\r\n point.x = this.x;\r\n point.y = this.y;\r\n\r\n this.x = x;\r\n this.y = y;\r\n};\r\n\r\n/**\r\n * Clones the point\r\n * \r\n * @returns {Point} Returns copy of the point.\r\n */\r\nPoint.prototype.clone = function () {\r\n return new Point(this);\r\n};\r\n\r\n/**\r\n * Returns point in form of CSS style string.\r\n * \r\n * @param {string} [units=\"px\"] The string name of units.\r\n * @returns {string} CSS style string.\r\n */\r\nPoint.prototype.toString = function (units) {\r\n var result = \"\";\r\n\r\n units = (units !== undefined) ? units : \"px\";\r\n\r\n result += \"left:\" + this.x + units + \";\";\r\n result += \"top:\" + this.y + units + \";\";\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Returns size in form of CSS style object.\r\n * \r\n * @param {string} [units=\"px\"] The string name of units.\r\n * @returns {object} CSS style object\r\n */\r\nPoint.prototype.getCSS = function (units) {\r\n units = (units !== undefined) ? units : \"px\";\r\n\r\n var result = {\r\n left: this.x + units,\r\n top: this.y + units\r\n };\r\n return result;\r\n};","/**\r\n * @class Matrix\r\n * @classdesc Square matrix having 2 rows and 2 columns.\r\n * \r\n * @param {Matrix} arg0 Matrix to clone\r\n * \r\n * @param {number} arg0 A1 - top left.\r\n * @param {number} arg1 B1 - top right.\r\n * @param {number} arg2 A2 - bottom left.\r\n * @param {number} arg3 B2 - bottom right.\r\n */\r\nexport default function Matrix(arg0, arg1, arg2, arg3) {\r\n\r\n this.a1 = null;\r\n this.b1 = null;\r\n this.a2 = null;\r\n this.b2 = null;\r\n\r\n switch (arguments.length) {\r\n case 1:\r\n this.a1 = arg0.a1;\r\n this.b1 = arg0.b1;\r\n this.a2 = arg0.a2;\r\n this.b2 = arg0.b2;\r\n break;\r\n case 4:\r\n this.a1 = arg0;\r\n this.b1 = arg1;\r\n this.a2 = arg2;\r\n this.b2 = arg3;\r\n break;\r\n default:\r\n break;\r\n }\r\n};\r\n\r\n/**\r\n * Finds matrix determinant\r\n * \r\n * @returns {number} Returns matrix determinant\r\n */\r\nMatrix.prototype.determinant = function () {\r\n return this.a1 * this.b2 - this.b1 * this.a2;\r\n};","import Matrix from './Matrix';\r\nimport Point from './Point';\r\nimport { VectorRelationType } from '../../enums';\r\n\r\n/**\r\n * @class Vector\r\n * @classdesc Class defines a vector in 2D plane.\r\n * \r\n * @param {Vector} arg0 Vector object to clone.\r\n * \r\n * @param {Point} arg0 From point.\r\n * @param {Point} arg1 To point\r\n */\r\nexport default function Vector(arg0, arg1) {\r\n /**\r\n * The start point\r\n */\r\n this.from = null;\r\n\r\n /**\r\n * The end point\r\n */\r\n this.to = null;\r\n\r\n /**\r\n * Reference to context object associated with this vector.\r\n * @type {object}\r\n */\r\n this.context = null;\r\n\r\n switch (arguments.length) {\r\n case 1:\r\n this.from = arg0.from;\r\n this.to = arg0.to;\r\n break;\r\n case 2:\r\n this.from = arg0;\r\n this.to = arg1;\r\n break;\r\n default:\r\n break;\r\n }\r\n};\r\n\r\n/**\r\n * Checks if start and end points are the same\r\n * \r\n * @returns {boolean} Returns true if start and end points are the same.\r\n */\r\nVector.prototype.isNull = function () {\r\n return this.from.x == this.to && this.from.y == this.to.y;\r\n};\r\n\r\n/**\r\n * Vector length\r\n * \r\n * @returns {number} Returns vector length\r\n */\r\nVector.prototype.length = function () {\r\n return this.from.distanceTo(this.to);\r\n};\r\n\r\n/**\r\n * Checks if vectors are equal\r\n * \r\n * @param {Vector} vector Vector\r\n * @returns {boolean} Returns true if vectors are equal.\r\n */\r\nVector.prototype.equalTo = function (vector) {\r\n return this.from.equalTo(vector.from) && this.to.equalTo(vector.to);\r\n};\r\n\r\n/**\r\n * Returns middle point of the current vector\r\n * \r\n * @returns {Point} Returns middle point\r\n */\r\nVector.prototype.getMiddlePoint = function () {\r\n return new Point((this.from.x + this.to.x) / 2, (this.from.y + this.to.y) / 2);\r\n};\r\n\r\n/**\r\n * Finds how two vectors relate to each other\r\n * \r\n * @param {Vector} vector The vector to relate with\r\n * @returns {VectorRelationType} Returns how the vector relates to the specified vector\r\n */\r\nVector.prototype.relateTo = function (vector) {\r\n var result = VectorRelationType.None,\r\n x1 = this.to.x - this.from.x,\r\n y1 = this.to.y - this.from.y,\r\n x2 = vector.to.x - vector.from.x,\r\n y2 = vector.to.y - vector.from.y,\r\n key = (x1 ? 8 : 0) + (y1 ? 4 : 0) + (x2 ? 2 : 0) + (y2 ? 1 : 0);\r\n\r\n switch (key) {\r\n case 0: //0000\r\n case 1: //0001\r\n case 2: //0010\r\n case 3: //0011\r\n case 4: //0100\r\n case 8: //1000\r\n case 12://1100\r\n result = VectorRelationType.Null;\r\n break;\r\n case 5: //0101\r\n if (y1 * y2 > 0) {\r\n result = VectorRelationType.Collinear;\r\n } else {\r\n result = VectorRelationType.Opposite;\r\n }\r\n break;\r\n case 10://1010\r\n if (x1 * x2 > 0) {\r\n result = VectorRelationType.Collinear;\r\n } else {\r\n result = VectorRelationType.Opposite;\r\n }\r\n break;\r\n case 15://1111\r\n if (x1 / x2 == y1 / y2) {\r\n if (x1 / x2 > 0) {\r\n result = VectorRelationType.Collinear;\r\n } else {\r\n result = VectorRelationType.Opposite;\r\n }\r\n }\r\n break;\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Offsets vector coordinates\r\n * \r\n * @param {number} offset Offset\r\n */\r\nVector.prototype.offset = function (offset) {\r\n var length = this.length(),\r\n /* in order to rotate right multiply vector on 3D vector (0, 0, -1)*/\r\n x = (this.to.y - this.from.y) * offset / length,\r\n y = - (this.to.x - this.from.x) * offset / length;\r\n\r\n this.from.x += x;\r\n this.from.y += y;\r\n this.to.x += x;\r\n this.to.y += y;\r\n};\r\n\r\n/**\r\n * Gets line\r\n * \r\n * @returns {number[]} Returns line coefficients\r\n */\r\nVector.prototype.getLine = function () {\r\n var x1 = this.from.x,\r\n y1 = this.from.y,\r\n x2 = this.to.x,\r\n y2 = this.to.y,\r\n a = y2 - y1,\r\n b = x1 - x2,\r\n c = x1 * (y1 - y2) + y1 * (x2 - x1);\r\n\r\n return [a, b, c];\r\n};\r\n\r\n/**\r\n * Gets line key\r\n * \r\n * @returns {string} Returns unique line key\r\n */\r\nVector.prototype.getLineKey = function () {\r\n var line = this.getLine(),\r\n a = line[0],\r\n b = line[1],\r\n c = line[2],\r\n r = 10000;\r\n if (b !== 0) {\r\n line = [Math.floor(a / b * r), 1, Math.floor(c / b * r)];\r\n } else {\r\n line = [1, 0, Math.floor(c / a * r)];\r\n }\r\n return line.toString();\r\n};\r\n\r\n/**\r\n * Checks if two vectors have intersection point\r\n * \r\n * @param {vector} vector The vector to check intersection with\r\n * @returns {boolean} Returns true if vectors intersect\r\n */\r\nVector.prototype.intersect = function (vector) {\r\n var v1 = this.getLine(),\r\n v2 = vector.getLine(),\r\n m = new Matrix(v1[0], v1[1], v2[0], v2[1]),\r\n d = m.determinant(),\r\n mx, my, dx, dy,\r\n x, y,\r\n result = false;\r\n\r\n if (d !== 0) {\r\n mx = new Matrix(-v1[2], v1[1], -v2[2], v2[1]);\r\n dx = mx.determinant();\r\n my = new Matrix(v1[0], -v1[2], v2[0], -v2[2]);\r\n dy = my.determinant();\r\n x = dx / d;\r\n y = dy / d;\r\n\r\n vector.to.x = x;\r\n vector.to.y = y;\r\n\r\n this.from.x = x;\r\n this.from.y = y;\r\n\r\n result = true;\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Finds intersection point of two vectors\r\n * \r\n * @param {Vector} vector The vector to find intersection with\r\n * @param {boolean} strict If true then intersection point should belong to both vectors\r\n * @param {number} rounding The precision of calculations\r\n * @returns {Point|null} Returns intersection point or null if intersection does not exists\r\n */\r\nVector.prototype.getIntersectionPoint = function (vector, strict, rounding) {\r\n var v1 = this.getLine(),\r\n v2 = vector.getLine(),\r\n m = new Matrix(v1[0], v1[1], v2[0], v2[1]),\r\n d = m.determinant(),\r\n mx, my, dx, dy,\r\n x, y,\r\n result = null;\r\n\r\n if (d !== 0) {\r\n mx = new Matrix(-v1[2], v1[1], -v2[2], v2[1]);\r\n dx = mx.determinant();\r\n my = new Matrix(v1[0], -v1[2], v2[0], -v2[2]);\r\n dy = my.determinant();\r\n x = dx / d;\r\n y = dy / d;\r\n\r\n if (strict) {\r\n if (vector._contains(x, y, rounding) && this._contains(x, y, rounding)) {\r\n result = new Point(x, y);\r\n }\r\n } else {\r\n result = new Point(x, y);\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * @ignore\r\n */\r\nVector.prototype._contains = function (x, y, rounding) {\r\n var x1 = Math.min(this.from.x, this.to.x),\r\n y1 = Math.min(this.from.y, this.to.y),\r\n x2 = Math.max(this.from.x, this.to.x),\r\n y2 = Math.max(this.from.y, this.to.y);\r\n\r\n return x1 - rounding <= x && x <= x2 + rounding && y1 - rounding <= y && y <= y2 + rounding;\r\n};\r\n\r\n","/**\r\n * @class Interval\r\n * @classdesc Class represents interval defined by two values.\r\n * \r\n * @param {Interval} arg0 Interval object to clone.\r\n * \r\n * @param {number} arg0 The from value.\r\n * @param {number} arg1 The to value.\r\n */\r\nexport default function Interval(arg0, arg1, arg2) {\r\n /**\r\n * The from value\r\n * @type {number}\r\n */\r\n this.from = null;\r\n /**\r\n * The to value\r\n * @type {number}\r\n */\r\n this.to = null;\r\n\r\n /**\r\n * Reference to the context object associated with this Interval.\r\n * @type {object}\r\n */\r\n this.context = null;\r\n\r\n switch (arguments.length) {\r\n case 1:\r\n this.from = arg0.from;\r\n this.to = arg0.to;\r\n this.context = arg0.context;\r\n break;\r\n case 2:\r\n this.from = arg0;\r\n this.to = arg1;\r\n break;\r\n case 3:\r\n this.from = arg0;\r\n this.to = arg1;\r\n this.context = arg2;\r\n break;\r\n default:\r\n break;\r\n }\r\n};\r\n\r\n/**\r\n * Width\r\n * \r\n * @returns {number} Returns interval width\r\n */\r\nInterval.prototype.width = function () {\r\n return this.to - this.from;\r\n};\r\n\r\n/**\r\n * Checks if intervals are equal\r\n * \r\n * @param {Interval} interval Interval\r\n * @returns {boolean} Returns true if intervals are equal.\r\n */\r\nInterval.prototype.equalTo = function (interval) {\r\n return this.from == interval.from && this.to == interval.to;\r\n};\r\n\r\n\r\n/**\r\n * Clones the interval\r\n * \r\n * @returns {Interval} Returns copy of the interval.\r\n */\r\nInterval.prototype.clone = function () {\r\n return new Interval(this);\r\n};\r\n\r\n/**\r\n * Returns interval in form of user friendly string \r\n * \r\n * @returns {string} Returns string interval representation.\r\n */\r\nInterval.prototype.toString = function () {\r\n return this.from + \", \" + this.to;\r\n};\r\n\r\n/**\r\n * Checks if the interval overlaps the specified interval\r\n * \r\n * @param {Interval} interval The interval to check overlapping for.\r\n * @returns {boolean} Returns true if two intervals overlap each other.\r\n */\r\nInterval.prototype.overlaps = function (interval) {\r\n var result = true;\r\n if (this.to < interval.from || interval.to < this.from) {\r\n result = false;\r\n }\r\n return result;\r\n};\r\n","import Point from './Point';\r\nimport Vector from './Vector';\r\nimport Interval from './Interval';\r\nimport { PlacementType } from '../../enums'\r\n\r\n/**\r\n * @class Rect\r\n * @classdesc Class describes the width, height and location of rectangle.\r\n * \r\n * @param {Rect} arg0 Rectangle to clone.\r\n * \r\n * @param {Point} arg0 The top left point.\r\n * @param {Point} arg1 The bottom right point.\r\n * \r\n * @param {number} arg0 The x coordinate of top left corner.\r\n * @param {number} arg1 The y coordinate of top left corner.\r\n * @param {number} arg2 Rect width.\r\n * @param {number} arg3 Rect height.\r\n */\r\nexport default function Rect(arg0, arg1, arg2, arg3) {\r\n /**\r\n * The location x coordinate\r\n * @type {number}\r\n */\r\n this.x = null;\r\n /**\r\n * The location y coordinate\r\n * @type {number}\r\n */\r\n this.y = null;\r\n /**\r\n * The width of rectangle.\r\n * @type {number}\r\n */\r\n this.width = null;\r\n /**\r\n * The height of rectangle.\r\n * @type {number}\r\n */\r\n this.height = null;\r\n /**\r\n * Reference to context object associated with this rectangle.\r\n * @type {object}\r\n */\r\n this.context = null;\r\n\r\n switch (arguments.length) {\r\n case 1:\r\n this.x = arg0.x;\r\n this.y = arg0.y;\r\n this.width = arg0.width;\r\n this.height = arg0.height;\r\n break;\r\n case 2:\r\n this.x = Math.min(arg0.x, arg1.x);\r\n this.y = Math.min(arg0.y, arg1.y);\r\n this.width = Math.abs(arg1.x - arg0.x);\r\n this.height = Math.abs(arg1.y - arg0.y);\r\n break;\r\n case 4:\r\n this.x = arg0;\r\n this.y = arg1;\r\n this.width = arg2;\r\n this.height = arg3;\r\n break;\r\n default:\r\n break;\r\n }\r\n};\r\n\r\n/**\r\n * Left\r\n * \r\n * @returns {number} Returns x coordinate of the rectangle\r\n */\r\nRect.prototype.left = function () {\r\n return this.x;\r\n};\r\n\r\n/**\r\n * Top\r\n * \r\n * @returns {number} Returns y coordinate of the rectangle\r\n */\r\nRect.prototype.top = function () {\r\n return this.y;\r\n};\r\n\r\n/**\r\n * Right\r\n * \r\n * @returns {number} Returns x-axis coordinate of the right side of the rectangle\r\n */\r\nRect.prototype.right = function () {\r\n return this.x + this.width;\r\n};\r\n\r\n/**\r\n * Bottom\r\n * \r\n * @returns {number} Returns y-axis coordinate of the bottom side of the rectangle\r\n */\r\nRect.prototype.bottom = function () {\r\n return this.y + this.height;\r\n};\r\n\r\n/**\r\n * Vertical center\r\n * \r\n * @returns {number} Returns y-axis coordinate of the center point of the rectangle.\r\n */\r\nRect.prototype.verticalCenter = function () {\r\n return this.y + this.height / 2.0;\r\n};\r\n\r\n/**\r\n * Horizontal center\r\n * \r\n * @returns {number} Returns x-axis coordinate of the center point of the rectangle.\r\n */\r\nRect.prototype.horizontalCenter = function () {\r\n return this.x + this.width / 2.0;\r\n};\r\n\r\n/**\r\n * Center point\r\n * \r\n * @returns {Point} Returns center point of the rectangle.\r\n */\r\nRect.prototype.centerPoint = function () {\r\n return new Point(this.horizontalCenter(), this.verticalCenter());\r\n};\r\n\r\n/**\r\n * Checks if rectangle is empty. Rectangle is empty if one of its sizes is undefined or less than zero.\r\n * \r\n * @returns {boolean} Returns true if rectangle is empty.\r\n */\r\nRect.prototype.isEmpty = function () {\r\n return this.x === null || this.y === null || this.width === null || this.height === null || this.width < 0 || this.height < 0;\r\n};\r\n\r\n/**\r\n * Expands rectangle boundaries by using specified value in all directions. Value can be negative.\r\n * \r\n * @param {number} arg0 The amount by which to expand or shrink the sides of the rectangle.\r\n * @param {number} arg0 Left side\r\n * @param {number} arg1 Top side\r\n * @param {number} arg2 Right side\r\n * @param {number} arg3 Bottom side\r\n */\r\nRect.prototype.offset = function (arg0, arg1, arg2, arg3) {\r\n switch (arguments.length) {\r\n case 1:\r\n if (arg0 !== null && typeof arg0 == \"object\") {\r\n this.x = this.x - arg0.left;\r\n this.y = this.y - arg0.top;\r\n\r\n this.width = this.width + arg0.left + arg0.right;\r\n this.height = this.height + arg0.top + arg0.bottom;\r\n } else {\r\n this.x = this.x - arg0;\r\n this.y = this.y - arg0;\r\n\r\n this.width = this.width + arg0 * 2.0;\r\n this.height = this.height + arg0 * 2.0;\r\n }\r\n break;\r\n case 4:\r\n this.x = this.x - arg0;\r\n this.y = this.y - arg1;\r\n\r\n this.width = this.width + arg0 + arg2;\r\n this.height = this.height + arg1 + arg3;\r\n break;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Scales the rectangle by the specified value\r\n * \r\n * @param {number} scale\r\n * @returns {Rect} Returns reference to the current rectangle.\r\n */\r\nRect.prototype.scale = function (scale) {\r\n this.x = this.x * scale;\r\n this.y = this.y * scale;\r\n this.width = this.width * scale;\r\n this.height = this.height * scale;\r\n return this;\r\n};\r\n\r\n/**\r\n * Moves the rectangle by the specified horizontal and vertical offsets.\r\n * \r\n * @param {number} x Horizontal offset\r\n * @param {number} y Vertical offset\r\n * \r\n * @returns {Rect} Returns reference to the current rectangle.\r\n */\r\nRect.prototype.translate = function (x, y) {\r\n this.x = this.x + x;\r\n this.y = this.y + y;\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Inverts rectangle coordinates\r\n * \r\n * @returns {Rect} Returns reference to the current rectangle.\r\n */\r\nRect.prototype.invert = function () {\r\n var width = this.width,\r\n x = this.x;\r\n this.width = this.height;\r\n this.height = width;\r\n this.x = this.y;\r\n this.y = x;\r\n return this;\r\n};\r\n\r\n/**\r\n * Callback for iterating rectangle's sides\r\n *\r\n * @callback loopRectEdgesCallback\r\n * @param {Vector} vector Vector connecting two corners of the rectangle's side\r\n * @param {PlacementType} placementType The current side\r\n * @returns {boolean} Returns true to break iteration process\r\n */\r\n\r\n/**\r\n * Loops edges of the rectangle in the clockwise order: Top, Right, Bottom, Left\r\n *\r\n * @param {loopRectEdgesCallback} callback A callback function to iterate over sides of the rectangle. \r\n * @returns {Rect} Returns reference to the current rectangle.\r\n*/\r\nRect.prototype.loopEdges = function (callback) { // function(vector, placementType) {}\r\n var vertexes = [\r\n new Point(this.left(), this.top()),\r\n new Point(this.right(), this.top()),\r\n new Point(this.right(), this.bottom()),\r\n new Point(this.left(), this.bottom())\r\n ],\r\n placements = [\r\n PlacementType.Top,\r\n PlacementType.Right,\r\n PlacementType.Bottom,\r\n PlacementType.Left\r\n ];\r\n\r\n vertexes.push(vertexes[0]);\r\n\r\n\r\n\r\n if (callback != null) {\r\n for (var index = 1, len = vertexes.length; index < len; index += 1) {\r\n if (callback(new Vector(vertexes[index - 1], vertexes[index]), placements[index - 1])) {\r\n break;\r\n }\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Checks if the rectangle contains given point\r\n * \r\n * @param {Point} arg0 The point to check.\r\n * \r\n * @param {number} arg0 The x coordinate of the point to check.\r\n * @param {number} arg1 The y coordinate of the point to check.\r\n * @returns {boolean} Returns true if the rectangle contains the specified point; otherwise, false.\r\n */\r\nRect.prototype.contains = function (arg0, arg1) {\r\n switch (arguments.length) {\r\n case 1:\r\n return this.x <= arg0.x && arg0.x <= this.x + this.width && this.y <= arg0.y && arg0.y <= this.y + this.height;\r\n case 2:\r\n return this.x <= arg0 && arg0 <= this.x + this.width && this.y <= arg1 && arg1 <= this.y + this.height;\r\n default:\r\n return false;\r\n }\r\n};\r\n\r\n/**\r\n * Crops the rectangle by the boundaries of the specified rectangle.\r\n * \r\n * @param {Rect} rect The rectangle that is used to crop boundaries by\r\n * @returns {Rect} Returns reference to the current rectangle.\r\n */\r\nRect.prototype.cropByRect = function (rect) {\r\n if (this.x < rect.x) {\r\n this.width -= (rect.x - this.x);\r\n this.x = rect.x;\r\n }\r\n\r\n if (this.right() > rect.right()) {\r\n this.width -= (this.right() - rect.right());\r\n }\r\n\r\n if (this.y < rect.y) {\r\n this.height -= (rect.y - this.y);\r\n this.y = rect.y;\r\n }\r\n\r\n if (this.bottom() > rect.bottom()) {\r\n this.height -= this.bottom() - rect.bottom();\r\n }\r\n\r\n if (this.isEmpty()) {\r\n this.x = null;\r\n this.y = null;\r\n this.width = null;\r\n this.height = null;\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Checks if the rectangle overlaps the specified rectangle\r\n * \r\n * @param {Rect} rect The rectangle to check overlapping for.\r\n * @returns {boolean} Returns true if two rectangles overlap each other.\r\n */\r\nRect.prototype.overlaps = function (rect) {\r\n var result = true;\r\n if (this.x + this.width < rect.x || rect.x + rect.width < this.x || this.y + this.height < rect.y || rect.y + rect.height < this.y) {\r\n result = false;\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Expands the rectangle boundaries to contain the specified rectangle.\r\n * \r\n * @param {Rect} arg0 The rectangle to contain.\r\n * \r\n * @param {number} arg0 The x coordinate of top left corner.\r\n * @param {number} arg1 The y coordinate of top left corner.\r\n * @param {number} [arg2=undefined] Width.\r\n * @param {number} [arg3=undefined] Height.\r\n * @returns {Rect} Returns reference to the current rectangle.\r\n */\r\nRect.prototype.addRect = function (arg0, arg1, arg2, arg3) {\r\n var right,\r\n bottom;\r\n switch (arguments.length) {\r\n case 1:\r\n if (!arg0.isEmpty()) {\r\n if (this.isEmpty()) {\r\n this.x = arg0.x;\r\n this.y = arg0.y;\r\n this.width = arg0.width;\r\n this.height = arg0.height;\r\n }\r\n else {\r\n right = Math.max(this.right(), arg0.right());\r\n bottom = Math.max(this.bottom(), arg0.bottom());\r\n\r\n this.x = Math.min(this.x, arg0.x);\r\n this.y = Math.min(this.y, arg0.y);\r\n this.width = right - this.x;\r\n this.height = bottom - this.y;\r\n }\r\n }\r\n break;\r\n case 2:\r\n if (this.isEmpty()) {\r\n this.x = arg0;\r\n this.y = arg1;\r\n this.width = 0;\r\n this.height = 0;\r\n }\r\n else {\r\n right = Math.max(this.right(), arg0);\r\n bottom = Math.max(this.bottom(), arg1);\r\n\r\n this.x = Math.min(this.x, arg0);\r\n this.y = Math.min(this.y, arg1);\r\n this.width = right - this.x;\r\n this.height = bottom - this.y;\r\n }\r\n break;\r\n case 4:\r\n if (this.isEmpty()) {\r\n this.x = arg0;\r\n this.y = arg1;\r\n this.width = arg2;\r\n this.height = arg3;\r\n }\r\n else {\r\n right = Math.max(this.right(), arg0 + arg2);\r\n bottom = Math.max(this.bottom(), arg1 + arg3);\r\n\r\n this.x = Math.min(this.x, arg0);\r\n this.y = Math.min(this.y, arg1);\r\n this.width = right - this.x;\r\n this.height = bottom - this.y;\r\n }\r\n break;\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Returns rectangle location and size in form of CSS style object.\r\n * \r\n * @param {string} [units=\"px\"] The string name of units.\r\n * @returns {object} CSS style object\r\n */\r\nRect.prototype.getCSS = function (units) {\r\n units = (units !== undefined) ? units : \"px\";\r\n\r\n var result = {\r\n left: this.x + units,\r\n top: this.y + units,\r\n width: this.width + units,\r\n height: this.height + units\r\n };\r\n return result;\r\n};\r\n\r\n/**\r\n * Returns rectangle location and size in form of CSS style string.\r\n * \r\n * @param {string} [units=\"px\"] The string name of units.\r\n * @returns {string} CSS style string.\r\n */\r\nRect.prototype.toString = function (units) {\r\n var result = \"\";\r\n\r\n units = (units !== undefined) ? units : \"px\";\r\n\r\n result += \"left:\" + this.x + units + \";\";\r\n result += \"top:\" + this.y + units + \";\";\r\n result += \"width:\" + this.width + units + \";\";\r\n result += \"height:\" + this.height + units + \";\";\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Validates rectangle properties\r\n * \r\n * @returns {boolean} Returns true if rectangle properties are valid.\r\n */\r\nRect.prototype.validate = function () {\r\n if (isNaN(this.x) || isNaN(this.y) || isNaN(this.width) || isNaN(this.height)) {\r\n throw \"Invalid rect position.\";\r\n }\r\n};\r\n\r\n/**\r\n * Checks if rectangles are equal\r\n * \r\n * @param {Rect} rect Rectangle\r\n * @returns {boolean} Returns true if rectangles are equal.\r\n */\r\nRect.prototype.equalTo = function (rect) {\r\n return this.x == rect.x && this.y == rect.y && this.width == rect.width && this.height == rect.height;\r\n};\r\n\r\n/**\r\n * Find intersection point between rectangle's perimeter and line connecting the given point and center of the rectangle\r\n * \r\n * @param {Point} point Point to project\r\n * @returns {Point} Returns point or null if point is inside rectangle.\r\n */\r\nRect.prototype.getProjectionPoint = function (point) {\r\n var result = null;\r\n if(!this.contains(point)) {\r\n var vector = new Vector(this.centerPoint(), point);\r\n this.loopEdges(function(edge) {\r\n result = vector.getIntersectionPoint(edge, true, 1.0);\r\n return (result != null);\r\n });\r\n }\r\n return result;\r\n};\r\n\r\n/**\r\n * Vertical Interval\r\n * \r\n * @returns {Interval} Returns vertical interval of the rectangle\r\n */\r\nRect.prototype.verticalInterval = function () {\r\n return new Interval( this.y, this.bottom() );\r\n};","/**\r\n * Callback for finding distance for a collection item\r\n *\r\n * @callback funcDistance\r\n * @param {Object} item A collection item\r\n * @param {number} index An index of the collection item\r\n * @returns {number} Returns a distance for the item \r\n */\r\n\r\n/**\r\n* @typedef {Object} BinarySearchResult\r\n* @property {number} index The index of the nearest item in the collection\r\n* @property {Object} item The nearest item\r\n*/\r\n\r\n/**\r\n * Search sorted list of elements for the nearest item.\r\n *\r\n * @param {Object[]} items - The collection of elements.\r\n * @param {funcDistance} callback - A callback function to get distance for the collection item. \r\n * @param {number} [startMinimum=undefined] - The minimum index in the array to start search from\r\n * @param {number} [startMaximum=undefined] - The maximum index in the array to start search from\r\n * @returns {BinarySearchResult} Returns an item of the collection, which is nearest to optimal measured by callback function\r\n*/\r\nexport default function binarySearch(items, callback, startMinimum, startMaximum) {\r\n var result = null,\r\n distance,\r\n bestDistance,\r\n minimum = startMinimum || 0,\r\n maximum = startMaximum || (items.length - 1),\r\n middle,\r\n item;\r\n\r\n if (items.length > 0) {\r\n item = items[minimum];\r\n result = { index: minimum, item: item };\r\n distance = callback(item, minimum);\r\n if (distance > 0) {\r\n bestDistance = Math.abs(distance);\r\n\r\n item = items[maximum];\r\n distance = callback(item, maximum);\r\n if (distance >= 0) {\r\n result = { index: maximum, item: item };\r\n } else {\r\n distance = Math.abs(distance);\r\n if (bestDistance > distance) {\r\n bestDistance = distance;\r\n result = { index: maximum, item: item };\r\n }\r\n while (minimum + 1 < maximum) {\r\n middle = Math.round((minimum + maximum) / 2.0);\r\n item = items[middle];\r\n distance = callback(item, middle);\r\n if (distance === 0) {\r\n result = { index: middle, item: item };\r\n break;\r\n } else {\r\n if (distance > 0) {\r\n minimum = middle;\r\n } else {\r\n maximum = middle;\r\n }\r\n distance = Math.abs(distance);\r\n if (bestDistance > distance) {\r\n bestDistance = distance;\r\n result = { index: middle, item: item };\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n};","/**\r\n * Creates self-balancing binary search tree structure.\r\n * @class SortedList\r\n * \r\n * @returns {SortedList} Returns sorted list collection. \r\n */\r\nexport default function SortedList() {\r\n var _rootNode = null;\r\n\r\n function Node(value, context) {\r\n this.value = value;\r\n this.context = context;\r\n\r\n this.left = null;\r\n this.right = null;\r\n\r\n this.balance = 0;\r\n }\r\n\r\n function _rebalance(node) {\r\n var balance;\r\n if (node.balance == 2) {\r\n var right = node.right;\r\n balance = right.balance;\r\n if (balance >= 0) {\r\n _rotateSmallLeft(right, node);\r\n } else {\r\n _rotateBigLeft(right, node);\r\n }\r\n } else if (node.balance == -2) {\r\n var left = node.left;\r\n balance = left.balance;\r\n if (balance <= 0) {\r\n _rotateSmallRight(node.left, node);\r\n } else {\r\n _rotateBigRight(node.left, node);\r\n }\r\n }\r\n return balance;\r\n }\r\n\r\n function _rotateSmallLeft(node, parent) {\r\n _rotateLeft(node, parent);\r\n\r\n if (node.balance == 1) {\r\n parent.balance = 0;\r\n node.balance = 0;\r\n } else {\r\n parent.balance = -1;\r\n node.balance = 1;\r\n }\r\n }\r\n\r\n function _rotateLeft(node, parent) {\r\n _swap(node, parent);\r\n parent.right = node.right;\r\n node.right = node.left;\r\n node.left = parent.left;\r\n parent.left = node;\r\n }\r\n\r\n function _rotateSmallRight(node, parent) {\r\n _rotateRight(node, parent);\r\n\r\n if (node.balance == -1) {\r\n parent.balance = 0;\r\n node.balance = 0;\r\n } else {\r\n parent.balance = 1;\r\n node.balance = -1;\r\n }\r\n }\r\n\r\n function _rotateRight(node, parent) {\r\n _swap(node, parent);\r\n parent.left = node.left;\r\n node.left = node.right;\r\n node.right = parent.right;\r\n parent.right = node;\r\n }\r\n\r\n function _rotateBigLeft(node, parent) {\r\n var bottom = node.left;\r\n _rotateRight(bottom, node);\r\n _rotateLeft(node, parent);\r\n\r\n parent.balance = 0;\r\n switch (bottom.balance) {\r\n case 1:\r\n node.balance = -1;\r\n bottom.balance = 0;\r\n break;\r\n case 0:\r\n bottom.balance = 0;\r\n node.balance = 0;\r\n break;\r\n default:\r\n bottom.balance = 1;\r\n node.balance = 0;\r\n break;\r\n }\r\n }\r\n\r\n function _rotateBigRight(node, parent) {\r\n var bottom = node.right;\r\n _rotateLeft(bottom, node);\r\n _rotateRight(node, parent);\r\n\r\n parent.balance = 0;\r\n switch (bottom.balance) {\r\n case -1:\r\n bottom.balance = 0;\r\n node.balance = 1;\r\n break;\r\n case 0:\r\n bottom.balance = 0;\r\n node.balance = 0;\r\n break;\r\n default:\r\n bottom.balance = -1;\r\n node.balance = 0;\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Callback function to notify about duplicate values\r\n * \r\n * @callback onSortedListDuplicateCallback\r\n * @param {object} context The context object of the duplicate value\r\n */\r\n\r\n /**\r\n * Adds value to sorted list collection\r\n * @param {number} value The value \r\n * @param {object} context The value context object\r\n * @param {object} thisArg The callback function invocation context \r\n * @param {onSortedListDuplicateCallback} onDuplicate Callback function for duplicates values notification\r\n */\r\n function add(value, context, thisArg, onDuplicate) {\r\n if (_rootNode == null) {\r\n _rootNode = new Node(value, context);\r\n } else {\r\n var trace = [];\r\n var node = null;\r\n var next = _rootNode;\r\n while (next != null) {\r\n if (node != null) {\r\n trace.push(node);\r\n }\r\n node = next;\r\n if (node.value == value) {\r\n if (onDuplicate != null) {\r\n onDuplicate.call(thisArg, node.context);\r\n } else {\r\n throw \"Structure does not support duplicates.\";\r\n }\r\n } else {\r\n if (node.value > value) {\r\n next = node.left;\r\n } else {\r\n next = node.right;\r\n }\r\n }\r\n }\r\n trace.push(node);\r\n var newNode = new Node(value, context);\r\n if (node.value > value) {\r\n node.left = newNode;\r\n } else {\r\n node.right = newNode;\r\n }\r\n node = newNode;\r\n\r\n while ((next = trace.pop()) != null) {\r\n if (node.value < next.value) {\r\n if (next.balance < 0) {\r\n next.balance -= 1;\r\n _rebalance(next);\r\n break;\r\n } else {\r\n if (next.balance > 0) {\r\n next.balance -= 1;\r\n break;\r\n }\r\n next.balance -= 1;\r\n }\r\n } else {\r\n if (next.balance > 0) {\r\n next.balance += 1;\r\n _rebalance(next);\r\n break;\r\n } else {\r\n if (next.balance < 0) {\r\n next.balance += 1;\r\n break;\r\n }\r\n next.balance += 1;\r\n }\r\n }\r\n node = next;\r\n }\r\n }\r\n }\r\n\r\n function _delete(node, parent) {\r\n var child = node.right != null ? node.right : node.left;\r\n if (parent != null) {\r\n if (parent.value > node.value) {\r\n parent.left = child;\r\n } else {\r\n parent.right = child;\r\n }\r\n } else {\r\n _rootNode = child;\r\n }\r\n }\r\n\r\n function _swap(node1, node2) {\r\n var value = node1.value;\r\n node1.value = node2.value;\r\n node2.value = value;\r\n\r\n var context = node1.context;\r\n node1.context = node2.context;\r\n node2.context = context;\r\n }\r\n\r\n function _copy(fromNode, toNode) {\r\n toNode.value = fromNode.value;\r\n toNode.context = fromNode.context;\r\n }\r\n\r\n /**\r\n * Removes value from the sorted list\r\n * @param {number} value The removed value \r\n */\r\n function remove(value) {\r\n var trace = [];\r\n var node = _rootNode;\r\n while (node != null) {\r\n if (node.value == value) {\r\n if (node.right != null && node.left != null) {\r\n trace.push(node);\r\n var next = node.right;\r\n while (next.left != null) {\r\n trace.push(next);\r\n next = next.left;\r\n }\r\n _copy(next, node);\r\n _delete(next, trace[trace.length - 1]);\r\n trace.push(next);\r\n } else {\r\n _delete(node, trace[trace.length - 1]);\r\n trace.push(node);\r\n }\r\n for (var index = trace.length - 2; index >= 0; index -= 1) {\r\n var parent = trace[index];\r\n node = trace[index + 1];\r\n if (parent.value > node.value) {\r\n if (parent.balance > 0) {\r\n parent.balance += 1;\r\n if (_rebalance(parent) === 0) {\r\n break;\r\n }\r\n } else {\r\n if (parent.balance === 0) {\r\n parent.balance += 1;\r\n break;\r\n }\r\n parent.balance += 1;\r\n }\r\n } else {\r\n if (parent.balance < 0) {\r\n parent.balance -= 1;\r\n if (_rebalance(parent) === 0) {\r\n break;\r\n }\r\n } else {\r\n if (parent.balance === 0) {\r\n parent.balance -= 1;\r\n break;\r\n }\r\n parent.balance -= 1;\r\n }\r\n }\r\n }\r\n break;\r\n } else {\r\n trace.push(node);\r\n if (node.value > value) {\r\n node = node.left;\r\n } else {\r\n node = node.right;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Returns context object of the next value following the given one\r\n * @param {number} fromValue The value to start search from\r\n * @returns {object} Returns context object of the first value in sorted list greater than the start value.\r\n */\r\n function nextContext(fromValue) {\r\n var result = null;\r\n loopForward(this, fromValue, function (value, context) {\r\n result = context;\r\n return true;\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * Callback function for iterating values of the sorted list\r\n * \r\n * @callback onSortedListItemCallback\r\n * @param {number} value The value\r\n * @param {object} context The value context object\r\n * @returns {boolean} Returns true to break loop operation \r\n */\r\n\r\n /**\r\n * Loops sorted list values\r\n * @param {object} thisArg The callback function invocation context \r\n * @param {number} fromValue The start value to loop items of sorted list\r\n * @param {onSortedListItemCallback} onItem Callback function to iterate over sorted list values\r\n */\r\n function loopForward(thisArg, fromValue, onItem) { //function onItem(value, context)\r\n if (onItem != null) {\r\n var trace = [];\r\n var node = null;\r\n var next = _rootNode;\r\n while (next != null) {\r\n node = next;\r\n if (node.value >= fromValue || fromValue == null) {\r\n trace.push(node);\r\n next = node.left;\r\n } else {\r\n next = node.right;\r\n }\r\n }\r\n while ((node = trace.pop()) != null) {\r\n if (onItem.call(thisArg, node.value, node.context)) {\r\n return;\r\n }\r\n next = node.right;\r\n while (next != null) {\r\n node = next;\r\n if (node.left != null) {\r\n trace.push(node);\r\n next = node.left;\r\n } else {\r\n if (onItem.call(thisArg, node.value, node.context)) {\r\n return;\r\n }\r\n next = node.right;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Returns context object of the previous value preceding the given one\r\n * @param {number} fromValue The value to start search from\r\n * @returns {object} Returns context object of the first value in sorted list less than the start value.\r\n */\r\n function previousContext(fromValue) {\r\n var result = null;\r\n loopBackward(this, fromValue, function (nextValue, context) {\r\n result = context;\r\n return true;\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * Loops sorted list values backward\r\n * @param {object} thisArg The callback function invocation context \r\n * @param {number} fromValue The start value to loop items of sorted list\r\n * @param {onSortedListItemCallback} onItem Callback function to iterate over sorted list values\r\n */\r\n function loopBackward(thisArg, fromValue, onItem) {\r\n if (onItem != null) {\r\n var trace = [];\r\n var node = null;\r\n var next = _rootNode;\r\n while (next != null) {\r\n node = next;\r\n if (node.value <= fromValue || fromValue == null) {\r\n trace.push(node);\r\n next = node.right;\r\n } else {\r\n next = node.left;\r\n }\r\n }\r\n while ((node = trace.pop()) != null) {\r\n if (onItem.call(thisArg, node.value, node.context)) {\r\n return;\r\n }\r\n next = node.left;\r\n while (next != null) {\r\n node = next;\r\n if (node.right != null) {\r\n trace.push(node);\r\n next = node.right;\r\n } else {\r\n if (onItem.call(thisArg, node.value, node.context)) {\r\n return;\r\n }\r\n next = node.left;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function _getValidationDepth(node) {\r\n var level = [],\r\n result = 0;\r\n if (node != null) {\r\n level.push(node);\r\n while (level.length > 0) {\r\n var newLevel = [];\r\n\r\n for (var index = 0; index < level.length; index += 1) {\r\n node = level[index];\r\n\r\n if (node.left != null) {\r\n newLevel.push(node.left);\r\n }\r\n\r\n if (node.right != null) {\r\n newLevel.push(node.right);\r\n }\r\n }\r\n\r\n level = newLevel;\r\n result += 1;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Validate internal data consistency of the self-balancing binary search tree structure\r\n * \r\n * @returns {boolean} Returns true if structure pass validation\r\n */\r\n function validate() {\r\n if (_rootNode != null) {\r\n var level = [_rootNode];\r\n while (level.length > 0) {\r\n var newLevel = [];\r\n\r\n for (var index = 0; index < level.length; index += 1) {\r\n var node = level[index];\r\n\r\n if (node.value == null) {\r\n return false;\r\n }\r\n\r\n if (node.left != null) {\r\n newLevel.push(node.left);\r\n if (node.left.value >= node.value) {\r\n return false;\r\n }\r\n }\r\n\r\n if (node.right != null) {\r\n newLevel.push(node.right);\r\n if (node.right.value <= node.value) {\r\n return false;\r\n }\r\n }\r\n\r\n if (node.balance != (_getValidationDepth(node.right) - _getValidationDepth(node.left))) {\r\n // eslint-disable-next-line no-console\r\n console.log(\"Disbalanced node: \" + node.value + \" - \" + JSON.stringify(_rootNode));\r\n return false;\r\n }\r\n }\r\n\r\n level = newLevel;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n return {\r\n add: add,\r\n remove: remove,\r\n loopForward: loopForward,\r\n loopBackward: loopBackward,\r\n nextContext: nextContext,\r\n previousContext: previousContext,\r\n validate: validate\r\n };\r\n};","import SortedList from './SortedList';\r\n/**\r\n * Callback function to iterate over pairs of crossing rectangles\r\n * \r\n * @callback onCrossingRectanglesItemCallback\r\n * @param {Rect} rect1 First rectangle\r\n * @param {Rect} rect2 Second rectangle\r\n */\r\n\r\n/**\r\n * Finds pairs of crossing rectangles.\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {Rect[]} rectangles Collection of rectangles.\r\n * @param {onCrossingRectanglesItemCallback} onCrossing Callback function to pass pair of crossing rectangles.\r\n */\r\nexport default function getCrossingRectangles(thisArg, rectangles, onCrossing) {\r\n function Action(isStart, index, x, rect) {\r\n this.isStart = isStart;\r\n this.index = index;\r\n this.x = x;\r\n this.rect = rect;\r\n }\r\n\r\n function Level() {\r\n this.count = 0;\r\n this.rectangles = {};\r\n\r\n this.add = function (index) {\r\n this.count += 1;\r\n this.rectangles[index] = true;\r\n };\r\n\r\n this.remove = function (index) {\r\n this.count -= 1;\r\n delete this.rectangles[index];\r\n return this.count == 0;\r\n };\r\n }\r\n\r\n function _findCrossedRectangles(buffer, from, to, rectIndex, rect) {\r\n buffer.loopForward(this, from, function (value, level) {\r\n if (value > to) {\r\n return true;\r\n }\r\n for (var index in level.rectangles) {\r\n if (level.rectangles.hasOwnProperty(index)) {\r\n var key = rectIndex > index ? rectIndex + \"-\" + index : index + \"-\" + rectIndex;\r\n if (!processed.hasOwnProperty(key)) {\r\n processed[key] = true;\r\n onCrossing.call(thisArg, rect, rectangles[index]);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (onCrossing != null) {\r\n\r\n // Create action items out of rectangles\r\n var actions = [];\r\n for (var index = 0; index < rectangles.length; index += 1) {\r\n var rect = rectangles[index];\r\n\r\n actions.push(new Action(1, index, rect.x, rect));\r\n actions.push(new Action(0, index, rect.right(), rect));\r\n }\r\n\r\n actions.sort(function (a, b) {\r\n if (a.x == b.x) {\r\n return b.isStart - a.isStart;\r\n }\r\n return a.x - b.x;\r\n });\r\n\r\n /* find intersections */\r\n var buffer = SortedList();\r\n var levels = {};\r\n var processed = {};\r\n\r\n for (index = 0; index < actions.length; index += 1) {\r\n var action = actions[index];\r\n var actionLevels = [action.rect.y, action.rect.bottom()];\r\n\r\n if (action.isStart == 1) {\r\n // Search for intersections of the left side of the rectangle with existing horizontal segments\r\n _findCrossedRectangles(buffer, actionLevels[0], actionLevels[1], action.index, action.rect);\r\n\r\n // add rectangle's horizontal segments\r\n for (var index2 = 0, len2 = actionLevels.length; index2 < len2; index2 += 1) {\r\n var value = actionLevels[index2];\r\n var level = levels[value];\r\n if (level == null) {\r\n level = new Level();\r\n levels[value] = level;\r\n\r\n buffer.add(value, level);\r\n }\r\n level.add(action.index);\r\n }\r\n } else {\r\n // remove rectangle's horizontal segments\r\n for (index2 = 0, len2 = actionLevels.length; index2 < len2; index2 += 1) {\r\n value = actionLevels[index2];\r\n level = levels[value];\r\n if (level.remove(action.index)) {\r\n delete levels[value];\r\n buffer.remove(value);\r\n }\r\n }\r\n\r\n // Search for intersections of the right side of rectangle with existing horizontal segments\r\n _findCrossedRectangles(buffer, actionLevels[0], actionLevels[1], action.index, action.rect);\r\n }\r\n }\r\n }\r\n};\r\n\r\n","/**\r\n * Graph edge structure\r\n * @class Edge\r\n * @property {string} from From node id\r\n * @property {string} to To node id\r\n */\r\nexport function Edge(from, to) {\r\n this.from = from;\r\n this.to = to;\r\n}\r\n\r\n/**\r\n * This function finds [optimal collection of feedback edges](https://en.wikipedia.org/wiki/Feedback_arc_set) needed to be cut in \r\n * order to eliminate loops in family structure.\r\n * \r\n * @param {Family} family Family structure\r\n * @returns {Edge[]} Returns optimal collection of feedback loops \r\n */\r\nexport default function getFamilyLoops(family, debug) {\r\n var loops = [], loop,\r\n index, len,\r\n index2, len2,\r\n fromNode, toNode, edge;\r\n\r\n var tempFamily = family.clone();\r\n\r\n family.loopTopo(this, function (itemid) {\r\n tempFamily.removeNode(itemid);\r\n })\r\n family.loopTopoReversed(this, function (itemid) {\r\n tempFamily.removeNode(itemid);\r\n })\r\n var cleanFamily = tempFamily.clone();\r\n\r\n cleanFamily.loop(this, function (itemid) {\r\n if (tempFamily.node(itemid) != null) {\r\n tempFamily.loopParents(this, itemid, function (parentid) {\r\n loops.push(new Edge(parentid, itemid));\r\n tempFamily.removeChildRelation(parentid, itemid);\r\n return tempFamily.SKIP;\r\n });\r\n var itemsToRemove = [];\r\n tempFamily.loopTopo(this, function (itemid) {\r\n itemsToRemove.push(itemid);\r\n });\r\n tempFamily.loopTopoReversed(this, function (itemid) {\r\n itemsToRemove.push(itemid);\r\n });\r\n for (var index = 0; index < itemsToRemove.length; index += 1) {\r\n tempFamily.removeNode(itemsToRemove[index]);\r\n }\r\n }\r\n });\r\n\r\n /* Invert loops */\r\n for (index = 0, len = loops.length; index < len; index += 1) {\r\n loop = loops[index];\r\n if (!cleanFamily.removeChildRelation(loop.from, loop.to)) {\r\n throw \"Relation does not exists\";\r\n }\r\n }\r\n\r\n if (debug && cleanFamily.hasLoops()) {\r\n throw \"Failed to clean loops in family\";\r\n }\r\n\r\n var graph = cleanFamily.getGraph(this, function (from, to) {\r\n return { from: from, to: to, capacity: 1, flow: 0 };\r\n });\r\n\r\n var from = \"__1000__\";\r\n var to = \"__2000__\";\r\n var defaultMinimalFlow = loops.length;\r\n for (index = 0, len = loops.length; index < len; index += 1) {\r\n loop = loops[index];\r\n edge = graph.edge(loop.from, to);\r\n if (edge == null) {\r\n graph.addEdge(loop.from, to, { from: loop.from, to: to, capacity: 1, flow: 0, tos: [loop.to] });\r\n } else {\r\n edge.capacity += 1;\r\n edge.tos.push(loop.to);\r\n }\r\n edge = graph.edge(from, loop.to);\r\n if (edge == null) {\r\n graph.addEdge(from, loop.to, { from: from, to: loop.to, capacity: 1, flow: 0, froms: [loop.from] });\r\n } else {\r\n edge.capacity += 1;\r\n edge.froms.push(loop.from);\r\n }\r\n }\r\n\r\n var totalFlow = 0;\r\n var levelGraph = null;\r\n while (true) {\r\n levelGraph = graph.getLevelGraph(this, from, function (fromNode, toNode, edge) {\r\n if (fromNode == edge.from) {\r\n return edge.capacity > edge.flow;\r\n } else {\r\n return edge.flow > 0;\r\n }\r\n });\r\n\r\n if (!levelGraph.hasNode(to)) {\r\n break;\r\n }\r\n\r\n while (true) {\r\n var connectionPath = graph.dfsPath(this, from, to, function (fromNode, toNode, edge) {\r\n if (fromNode == edge.from) {\r\n return edge.capacity > edge.flow;\r\n } else {\r\n return edge.flow > 0;\r\n }\r\n });\r\n\r\n if (connectionPath.length == 0) {\r\n break;\r\n }\r\n\r\n // Find maximum flow for given path\r\n var flow = Infinity;\r\n for (index = 0, len = connectionPath.length; index < len - 1; index += 1) {\r\n fromNode = connectionPath[index];\r\n toNode = connectionPath[index + 1];\r\n edge = graph.edge(fromNode, toNode);\r\n var edgeFlow = 0;\r\n if (edge.from == fromNode) {\r\n edgeFlow = edge.capacity - edge.flow;\r\n } else {\r\n edgeFlow = edge.flow;\r\n }\r\n if (edgeFlow == 0) {\r\n throw \"Broken flow path\";\r\n }\r\n flow = Math.min(flow, edgeFlow);\r\n }\r\n\r\n // Update graph\r\n for (index = 0, len = connectionPath.length; index < len - 1; index += 1) {\r\n fromNode = connectionPath[index];\r\n toNode = connectionPath[index + 1];\r\n edge = graph.edge(fromNode, toNode);\r\n if (edge.from == fromNode) {\r\n edge.flow += flow;\r\n } else {\r\n edge.flow -= flow;\r\n }\r\n }\r\n totalFlow += flow;\r\n }\r\n }\r\n\r\n if (totalFlow < defaultMinimalFlow) {\r\n var residueGraph = graph.getLevelGraph(this, from, function (fromNode, toNode, edge) {\r\n if (fromNode == edge.from) {\r\n return edge.capacity > edge.flow;\r\n }\r\n return false;\r\n });\r\n\r\n // graph.loopNodes(this, from, function (nodeid) {\r\n // console.log(\"Nodeid: \" + nodeid);\r\n // graph.loopNodeEdges(this, nodeid, function (neighbour, edge) {\r\n // if (edge.to == neighbour) {\r\n // console.log(\"neighbour: \" + neighbour + \", edge=\" + JSON.stringify(edge));\r\n // }\r\n // })\r\n // });\r\n\r\n // var resedueNodes = [];\r\n // residueGraph.loopNodes(this, from, function (nodeid) {\r\n // resedueNodes.push(nodeid);\r\n // });\r\n // console.log(\"Residue graph: \" + resedueNodes.join(\", \"));\r\n\r\n var edgesToBreak = [];\r\n residueGraph.loopNodes(this, from, function (nodeid) {\r\n graph.loopNodeEdges(this, nodeid, function (toNode, edge) {\r\n if (edge.to == toNode) {\r\n if (!residueGraph.hasNode(toNode)) {\r\n // console.log(\"Edge to test: from: \" + nodeid + \", to \" + toNode);\r\n var isIsolated = false;\r\n graph.dfsLoop(this, toNode, function (fromNode, toNode2, edge) {\r\n if (edge.from == fromNode && !residueGraph.hasNode(fromNode)) {\r\n return true;\r\n }\r\n return false;\r\n }, function (foundid) {\r\n if (foundid == to) {\r\n // console.log(\"Isolated: \" + toNode + \", may access exit node\" + foundid);\r\n isIsolated = true;\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (isIsolated) {\r\n edgesToBreak.push(new Edge(nodeid, toNode));\r\n }\r\n }\r\n }\r\n });\r\n });\r\n\r\n // collect loops to break\r\n var optimizedLoops = [];\r\n var validatedFlow = 0;\r\n for (index = 0, len = edgesToBreak.length; index < len; index += 1) {\r\n var edgeToBreak = edgesToBreak[index];\r\n\r\n if (edgeToBreak.from == from) {\r\n edge = graph.edge(edgeToBreak.from, edgeToBreak.to);\r\n for (index2 = 0, len2 = edge.froms.length; index2 < len2; index2 += 1) {\r\n optimizedLoops.push(new Edge(edge.froms[index2], edgeToBreak.to));\r\n validatedFlow += 1;\r\n }\r\n } else if (edgeToBreak.to == to) {\r\n edge = graph.edge(edgeToBreak.from, edgeToBreak.to);\r\n for (index2 = 0, len2 = edge.tos.length; index2 < len2; index2 += 1) {\r\n optimizedLoops.push(new Edge(edgeToBreak.from, edge.tos[index2]));\r\n validatedFlow += 1;\r\n }\r\n } else {\r\n optimizedLoops.push(edgeToBreak);\r\n validatedFlow += 1;\r\n }\r\n }\r\n if (validatedFlow == totalFlow) {\r\n loops = optimizedLoops;\r\n }\r\n }\r\n return loops;\r\n};","export default function getFamilyUnits(family) {\r\n var familyUnits = [],\r\n familyUnitByParent = {},\r\n index,\r\n len;\r\n\r\n function FamilySiblings() {\r\n this.fromIndex = 0;\r\n this.toIndex = 0;\r\n this.items = [];\r\n this.hash = {};\r\n }\r\n\r\n function FamilyUnit(id) {\r\n this.id = id;\r\n this.parents = new FamilySiblings();\r\n this.children = new FamilySiblings();\r\n\r\n this.loopSiblings = function (thisArg, itemid, onItem) {\r\n this._loop(thisArg, this.parents.hash.hasOwnProperty(itemid) ? this.parents.items : this.children.items, onItem);\r\n };\r\n\r\n this.loopNonSiblings = function (thisArg, itemid, onItem) {\r\n this._loop(thisArg, !this.parents.hash.hasOwnProperty(itemid) ? this.parents.items : this.children.items, onItem);\r\n };\r\n\r\n this.loop = function (thisArg, onItem) {\r\n this._loop(thisArg, this.parents.items, onItem);\r\n this._loop(thisArg, this.children.items, onItem);\r\n };\r\n\r\n this._loop = function (thisArg, items, onItem) {\r\n if (onItem != null) {\r\n for (var index = 0, len = items.length; index < len; index += 1) {\r\n var sibling = items[index];\r\n onItem.call(thisArg, sibling);\r\n }\r\n }\r\n };\r\n\r\n this.addParent = function (itemid) {\r\n this._add(itemid, this.parents);\r\n };\r\n\r\n this.addChild = function (itemid) {\r\n this._add(itemid, this.children);\r\n };\r\n\r\n this._add = function (itemid, siblings) {\r\n if (!siblings.hash.hasOwnProperty(itemid)) {\r\n siblings.items.push(itemid);\r\n siblings.hash[itemid] = true;\r\n }\r\n };\r\n }\r\n\r\n index = 0;\r\n family.loop(this, function (itemid, item) {\r\n var childrenCount = family.countChildren(itemid);\r\n if (childrenCount > 0) {\r\n if (!familyUnitByParent.hasOwnProperty(itemid)) {\r\n var familyUnit = new FamilyUnit(index);\r\n index += 1;\r\n familyUnit.addParent(itemid);\r\n family.loopChildren(this, itemid, function (childid, child) {\r\n familyUnit.addChild(childid);\r\n if (childrenCount == 1) {\r\n family.loopParents(this, childid, function (parentid) {\r\n familyUnit.addParent(parentid);\r\n familyUnitByParent[parentid] = familyUnit;\r\n return family.SKIP;\r\n });\r\n }\r\n return family.SKIP;\r\n });\r\n familyUnits.push(familyUnit);\r\n familyUnitByParent[itemid] = familyUnit;\r\n }\r\n }\r\n });\r\n\r\n var familyUnitByItemId = {};\r\n for (index = 0, len = familyUnits.length; index < len; index += 1) {\r\n var familyUnit = familyUnits[index];\r\n familyUnit.loop(this, function (itemid) {\r\n if (!familyUnitByItemId.hasOwnProperty(itemid)) {\r\n familyUnitByItemId[itemid] = [familyUnit];\r\n } else {\r\n familyUnitByItemId[itemid].push(familyUnit);\r\n }\r\n });\r\n }\r\n\r\n return familyUnitByItemId;\r\n};","import binarySearch from './binarySearch';\r\n/**\r\n * Breaks collection of values into 3 intervals, so values stay close to each other within interval.\r\n * \r\n * @param {number[]} values Array of values\r\n * @returns {number[]} Returns array containing 3 indexes. The first 2 break values into 3 intervals, \r\n * the last index is actual index of the last element in the values collection. \r\n */\r\nexport default function getLiniarBreaks(values) {\r\n var _leftTotal = [],\r\n _len = values.length;\r\n\r\n // Sum up values from left to right\r\n var total = 0;\r\n for (var index = 0; index < _len; index += 1) {\r\n total += values[index];\r\n _leftTotal[index] = total;\r\n }\r\n\r\n function getLinearDeviation(leftIndex, rightIndex) {\r\n var result = 0;\r\n\r\n var avg = (_leftTotal[rightIndex] - _leftTotal[leftIndex] + values[leftIndex]) / (rightIndex - leftIndex + 1);\r\n\r\n var median = binarySearch(values, function (item) {\r\n return avg - item;\r\n }, leftIndex, rightIndex);\r\n\r\n if (median.item <= avg) {\r\n result += (avg * (median.index + 1 - leftIndex) - (_leftTotal[median.index] - _leftTotal[leftIndex] + values[leftIndex]));\r\n result += (_leftTotal[rightIndex] - _leftTotal[median.index] - avg * (rightIndex - median.index));\r\n } else {\r\n result += (avg * (median.index - leftIndex) - (_leftTotal[median.index] - _leftTotal[leftIndex] - values[median.index] + values[leftIndex]));\r\n result += (_leftTotal[rightIndex] - _leftTotal[median.index] + values[median.index] - avg * (rightIndex - median.index + 1));\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function getScore(leftIndex, rightIndex) {\r\n var score = 0;\r\n\r\n score += getLinearDeviation(0, leftIndex);\r\n if (rightIndex > leftIndex + 1) {\r\n score += getLinearDeviation(leftIndex + 1, rightIndex - 1);\r\n }\r\n score += getLinearDeviation(rightIndex, _len - 1);\r\n\r\n return score;\r\n }\r\n\r\n var leftIndex = 0,\r\n rightIndex = _len - 1;\r\n\r\n var score = getScore(leftIndex, rightIndex);\r\n\r\n while (leftIndex < rightIndex + 1) {\r\n var leftScore = getScore(leftIndex + 1, rightIndex);\r\n var rightScore = getScore(leftIndex, rightIndex - 1);\r\n\r\n if (leftScore < rightScore) {\r\n if (leftScore >= score) {\r\n break;\r\n }\r\n leftIndex += 1;\r\n score = leftScore;\r\n } else {\r\n if (rightScore >= score) {\r\n break;\r\n }\r\n rightIndex -= 1;\r\n score = rightScore;\r\n }\r\n }\r\n\r\n return [leftIndex, rightIndex - 1, _len - 1];\r\n};\r\n\r\n","/**\r\n * Creates linked hash list collection.\r\n * @class LinkedHashItems\r\n * \r\n * @returns {LinkedHashItems} Returns linked hash list structure\r\n */\r\nexport default function LinkedHashItems() {\r\n var segmentsHash = {},\r\n nextKeys = {},\r\n prevKeys = {},\r\n startSegmentKey = null,\r\n endSegmentKey = null;\r\n\r\n /**\r\n * Adds new item to collection\r\n * @param {string} key The new item key \r\n * @param {object} item The new item context object value\r\n */\r\n function add(key, item) {\r\n if (segmentsHash.hasOwnProperty(key)) {\r\n throw \"Duplicate segments are not supported!\";\r\n }\r\n segmentsHash[key] = item;\r\n nextKeys[key] = null;\r\n if (endSegmentKey == null) {\r\n startSegmentKey = key;\r\n prevKeys[key] = null;\r\n } else {\r\n nextKeys[endSegmentKey] = key;\r\n prevKeys[key] = endSegmentKey;\r\n }\r\n endSegmentKey = key;\r\n }\r\n\r\n /**\r\n * Checks if collection is empty\r\n * \r\n * @returns {boolean} Returns true if collection is empty\r\n */\r\n function isEmpty() {\r\n return startSegmentKey == null;\r\n }\r\n\r\n /**\r\n * Item context object\r\n * \r\n * @param {string} key The item's key\r\n * @returns {object} Returns context object\r\n */\r\n function item(key) {\r\n return segmentsHash[key];\r\n }\r\n\r\n /**\r\n * Gets next key\r\n * \r\n * @param {string} key The item key\r\n * @returns {string} Returns key of the next collection item\r\n */\r\n function nextKey(key) {\r\n return nextKeys[key];\r\n }\r\n\r\n /**\r\n * Gets previous key\r\n * \r\n * @param {string} key The item key\r\n * @returns {string} Returns key of the previous collection item\r\n */\r\n function prevKey(key) {\r\n return prevKeys[key];\r\n }\r\n\r\n /**\r\n * First collection item key\r\n * \r\n * @returns {string} Returns the key of the first item in the collection\r\n */\r\n function startKey() {\r\n return startSegmentKey;\r\n }\r\n\r\n /**\r\n * Last collection item key\r\n * \r\n * @returns {string} Returns key of the last item in the collection\r\n */\r\n function endKey() {\r\n return endSegmentKey;\r\n }\r\n\r\n /**\r\n * Adds new item to the head of the list\r\n * \r\n * @param {string} key The new item key \r\n * @param {object} item The new item context object value\r\n * @returns {string} Returns key of the last item in the collection\r\n */\r\n function unshift(key, item) {\r\n if (segmentsHash.hasOwnProperty(key)) {\r\n throw \"Duplicate segments are not supported!\";\r\n }\r\n segmentsHash[key] = item;\r\n prevKeys[key] = null;\r\n if (startSegmentKey == null) {\r\n endSegmentKey = key;\r\n nextKeys[key] = null;\r\n } else {\r\n prevKeys[startSegmentKey] = key;\r\n nextKeys[key] = startSegmentKey;\r\n }\r\n startSegmentKey = key;\r\n }\r\n\r\n /**\r\n * Inserts new item into the list after the given key \r\n * \r\n * @param {string} afterKey The key that the new element is placed after \r\n * @param {string} key The new item key \r\n * @param {object} item The new item context object value\r\n */\r\n function insertAfter(afterKey, key, item) {\r\n if (segmentsHash.hasOwnProperty(key)) {\r\n throw \"Duplicate segments are not supported!\";\r\n }\r\n\r\n if (afterKey == null) {\r\n unshift(key, item);\r\n } else {\r\n var nextKey = nextKeys[afterKey];\r\n if (nextKey == null) {\r\n add(key, item);\r\n } else {\r\n segmentsHash[key] = item;\r\n nextKeys[afterKey] = key;\r\n nextKeys[key] = nextKey;\r\n prevKeys[nextKey] = key;\r\n prevKeys[key] = afterKey;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Inserts new item into the list before the given key \r\n * \r\n * @param {string} beforeKey The key that the new element is placed before \r\n * @param {string} key The new item key \r\n * @param {object} item The new item context object value\r\n */\r\n function insertBefore(beforeKey, key, item) {\r\n if (segmentsHash.hasOwnProperty(key)) {\r\n throw \"Duplicate segments are not supported!\";\r\n }\r\n if (beforeKey == null || !segmentsHash.hasOwnProperty(beforeKey)) {\r\n throw \"Before key should be defined!\";\r\n }\r\n var prevKey = prevKeys[beforeKey];\r\n if (prevKey == null) {\r\n unshift(key, item);\r\n } else {\r\n insertAfter(prevKey, key, item)\r\n }\r\n }\r\n\r\n /**\r\n * Removes item\r\n * @param {string} key The key of the item \r\n */\r\n function remove(key) {\r\n var prevKey = prevKeys[key],\r\n nextKey = nextKeys[key];\r\n\r\n if (prevKey != null) {\r\n nextKeys[prevKey] = nextKey;\r\n } else {\r\n startSegmentKey = nextKey;\r\n }\r\n\r\n if (nextKey != null) {\r\n prevKeys[nextKey] = prevKey;\r\n } else {\r\n endSegmentKey = prevKey;\r\n }\r\n\r\n delete segmentsHash[key];\r\n delete nextKeys[key];\r\n delete prevKeys[key];\r\n }\r\n\r\n /**\r\n * Empties collection\r\n */\r\n function empty() {\r\n segmentsHash = {};\r\n nextKeys = {};\r\n prevKeys = {};\r\n startSegmentKey = null;\r\n endSegmentKey = null;\r\n }\r\n\r\n function _iterate(forward, onItem, startKey, endKey) {\r\n var key = startKey,\r\n segment;\r\n\r\n if (key == null) {\r\n key = forward ? startSegmentKey : endSegmentKey;\r\n }\r\n\r\n if (onItem != null) {\r\n while (key != null) {\r\n segment = segmentsHash[key];\r\n if (segment != null) {\r\n if (onItem(segment, key)) {\r\n return;\r\n }\r\n }\r\n\r\n if (key == endKey) {\r\n key = null;\r\n } else {\r\n key = forward ? nextKeys[key] : prevKeys[key];\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Appends one list to another\r\n * \r\n * @param {LinkedHashItems} list A list to append to the end of the current list \r\n */\r\n function attach(list) {\r\n list.iterate(function (segment, key) {\r\n add(key, segment);\r\n });\r\n }\r\n\r\n /**\r\n * Callback function for iterating list items\r\n * \r\n * @callback onLinkedHashItemsCallback\r\n * @param {object} item The item context object\r\n * @param {string} key The item key\r\n * @returns {boolean} Returns true to break the iteration process\r\n */\r\n\r\n /**\r\n * Loops items of the collection\r\n * @param {onLinkedHashItemsCallback} onItem Callback function for iterating collection items\r\n * @param {string} startKey The key to start iteration from \r\n * @param {string} endKey The key to end iteration at\r\n */\r\n function iterate(onItem, startKey, endKey) {\r\n _iterate(true, onItem, startKey, endKey);\r\n }\r\n\r\n /**\r\n * Loops items of the collection backward\r\n * @param {onLinkedHashItemsCallback} onItem Callback function for iterating collection items\r\n * @param {string} startKey The key to start iteration from \r\n * @param {string} endKey The key to end iteration at\r\n */\r\n function iterateBack(onItem, startKey, endKey) {\r\n _iterate(false, onItem, startKey, endKey);\r\n }\r\n\r\n /**\r\n * Validates internal data consistency of the structure\r\n * @returns {boolean} Returns true if it pass validation\r\n */\r\n function validate(info) {\r\n var key, prevKey, nextKey;\r\n for (key in segmentsHash) {\r\n if (segmentsHash.hasOwnProperty(key)) {\r\n if (!nextKeys.hasOwnProperty(key) || !prevKeys.hasOwnProperty(key)) {\r\n if (info != null) {\r\n info.message = \"Orphant key found!\";\r\n }\r\n return false;\r\n }\r\n }\r\n }\r\n if (!segmentsHash.hasOwnProperty(startSegmentKey) || !segmentsHash.hasOwnProperty(endSegmentKey)) {\r\n if (info != null) {\r\n info.message = \"Start or end values are missing!\";\r\n }\r\n return false;\r\n }\r\n for (key in nextKeys) {\r\n if (nextKeys.hasOwnProperty(key)) {\r\n if (!segmentsHash.hasOwnProperty(key) || !prevKeys.hasOwnProperty(key)) {\r\n if (info != null) {\r\n info.message = \"Orphant key found!\";\r\n }\r\n return false;\r\n }\r\n nextKey = nextKeys[key];\r\n if (nextKey && !nextKeys.hasOwnProperty(nextKey)) {\r\n if (info != null) {\r\n info.message = \"Next key not found!\";\r\n }\r\n return false;\r\n }\r\n }\r\n }\r\n for (key in prevKeys) {\r\n if (prevKeys.hasOwnProperty(key)) {\r\n if (!segmentsHash.hasOwnProperty(key) || !nextKeys.hasOwnProperty(key)) {\r\n if (info != null) {\r\n info.message = \"Orphant key found!\";\r\n }\r\n return false;\r\n }\r\n prevKey = prevKeys[key];\r\n if (prevKey && !prevKeys.hasOwnProperty(prevKey)) {\r\n if (info != null) {\r\n info.message = \"Prev key not found!\";\r\n }\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Returns a regular javascript array of collection items\r\n * \r\n * @returns {object[]} Returns array containing items of the collection\r\n */\r\n function toArray() {\r\n var result = [];\r\n\r\n iterate(function (item) {\r\n result.push(item);\r\n });\r\n\r\n return result;\r\n }\r\n\r\n return {\r\n add: add,\r\n item: item,\r\n nextKey: nextKey,\r\n prevKey: prevKey,\r\n startKey: startKey,\r\n endKey: endKey,\r\n unshift: unshift,\r\n insertAfter: insertAfter,\r\n insertBefore: insertBefore,\r\n remove: remove,\r\n isEmpty: isEmpty,\r\n attach: attach,\r\n\r\n iterate: iterate,\r\n iterateBack: iterateBack,\r\n empty: empty,\r\n toArray: toArray,\r\n validate: validate\r\n };\r\n};","import Point from '../graphics/structs/Point';\r\nimport Vector from '../graphics/structs/Vector';\r\nimport LinkedHashItems from './LinkedHashItems';\r\n/**\r\n * Callback function to iterate over result shapes\r\n * \r\n * @callback onMergedRectangleItemCallback\r\n * @param {Point[]} points Collection of points tracing margin around result area formed via merge of rectangles.\r\n * The outer shape margin has clock wise sequence of data points. Internal holes inside of the shape are formed by counter clock wise \r\n * sequence of data points.\r\n */\r\n\r\n/**\r\n * Merges collection of rectangles into shapes. Calls callback function to pass result sequences of data points.\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {Rect[]} items Collection of rectangles.\r\n * @param {onMergedRectangleItemCallback} onItem Callback function to pass result sequences of margin data points.\r\n */\r\nexport default function getMergedRectangles(thisArg, items, onItem) {\r\n var index, len,\r\n index2, len2,\r\n point;\r\n\r\n items.sort(function (a, b) {\r\n if (a.x == b.x) {\r\n return a.y - b.y;\r\n }\r\n return a.x - b.x;\r\n });\r\n\r\n var points = [];\r\n var pointsHash = {};\r\n\r\n for (index = 0, len = items.length; index < len; index += 1) {\r\n var item = items[index];\r\n var xs = [item.x, item.right()];\r\n for (var k = 0; k < xs.length; k += 1) {\r\n var x = xs[k];\r\n point = pointsHash[x];\r\n if (point == null) {\r\n point = {\r\n x: x,\r\n add: [],\r\n remove: []\r\n };\r\n pointsHash[x] = point;\r\n points.push(point);\r\n }\r\n if (x == item.x) {\r\n point.add.push(index);\r\n } else {\r\n point.remove.push(index);\r\n }\r\n }\r\n }\r\n\r\n points.sort(function (a, b) {\r\n return a.x - b.x;\r\n });\r\n\r\n function Range(start, end) {\r\n this.start = start;\r\n this.startHead = null;\r\n\r\n this.end = end;\r\n this.endHead = null;\r\n\r\n this.overlap = function (range) {\r\n return !(this.end < range.start || this.start > range.end);\r\n };\r\n }\r\n\r\n function Stripe(x, ranges) {\r\n this.x = x;\r\n this.ranges = ranges;\r\n }\r\n\r\n var active = {};\r\n var stripes = [];\r\n stripes.push(new Stripe(null, []));\r\n\r\n for (index = 0, len = points.length; index < len; index += 1) {\r\n point = points[index];\r\n\r\n for (index2 = 0, len2 = point.add.length; index2 < len2; index2 += 1) {\r\n active[point.add[index2]] = true;\r\n }\r\n for (index2 = 0, len2 = point.remove.length; index2 < len2; index2 += 1) {\r\n delete active[point.remove[index2]];\r\n }\r\n\r\n var activeRects = [];\r\n for (var key in active) {\r\n if (active.hasOwnProperty(key)) {\r\n activeRects.push(items[key]);\r\n }\r\n }\r\n\r\n activeRects.sort(function (a, b) {\r\n return a.y - b.y;\r\n });\r\n\r\n var ranges = [];\r\n\r\n var start = null;\r\n var end = null;\r\n\r\n for (index2 = 0, len2 = activeRects.length; index2 < len2; index2 += 1) {\r\n var activeRect = activeRects[index2];\r\n\r\n if (start == null) {\r\n start = activeRect.y;\r\n end = activeRect.bottom();\r\n } else {\r\n if (end < activeRect.y) {\r\n ranges.push(new Range(start, end));\r\n start = activeRect.y;\r\n end = activeRect.bottom();\r\n } else {\r\n end = Math.max(end, activeRect.bottom());\r\n }\r\n }\r\n }\r\n if (start != null) {\r\n ranges.push(new Range(start, end));\r\n }\r\n\r\n stripes.push(new Stripe(point.x, ranges));\r\n }\r\n\r\n var lists = [];\r\n var heads = {};\r\n var counter = 1;\r\n\r\n function Head(isHead, list) {\r\n this.isHead = isHead;\r\n this.list = list;\r\n\r\n if (!heads.hasOwnProperty(list)) {\r\n heads[list] = [];\r\n }\r\n heads[list].push(this);\r\n\r\n this.add = function (segment) {\r\n if (!segment.from.equalTo(segment.to)) {\r\n if (this.isHead) {\r\n lists[this.list].add(counter, segment);\r\n counter += 1;\r\n } else {\r\n lists[this.list].unshift(counter, segment);\r\n counter += 1;\r\n }\r\n }\r\n };\r\n\r\n this.getTail = function () {\r\n return new Head(!this.isHead, this.list);\r\n };\r\n\r\n this.attach = function (head) {\r\n if (this.list != head.list) {\r\n lists[this.list].attach(lists[head.list]);\r\n\r\n var refs = heads[head.list];\r\n delete heads[head.list];\r\n if (refs != null) {\r\n for (var index = 0, len = refs.length; index < len; index += 1) {\r\n var ref = refs[index];\r\n if (ref != head) {\r\n ref.list = this.list;\r\n heads[this.list].push(ref);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }\r\n\r\n function createHead(isHead) {\r\n lists.push(new LinkedHashItems());\r\n return new Head(isHead, lists.length - 1);\r\n }\r\n\r\n for (index = 1, len = stripes.length; index < len; index += 1) {\r\n var prev = stripes[index - 1];\r\n var curr = stripes[index];\r\n\r\n var pi = 0, ci = 0;\r\n while (pi < prev.ranges.length || ci < curr.ranges.length) {\r\n var pr = pi < prev.ranges.length ? prev.ranges[pi] : null;\r\n var cr = ci < curr.ranges.length ? curr.ranges[ci] : null;\r\n\r\n if (cr == null) {\r\n // close pr\r\n points = [\r\n new Point(prev.x, pr.end),\r\n new Point(curr.x, pr.end),\r\n new Point(curr.x, pr.start),\r\n new Point(prev.x, pr.start)\r\n ];\r\n for (var pindex = 1; pindex < points.length; pindex += 1) {\r\n pr.endHead.add(new Vector(points[pindex - 1], points[pindex]));\r\n }\r\n pr.endHead.attach(pr.startHead);\r\n pi += 1;\r\n continue;\r\n }\r\n\r\n if (pr == null) {\r\n // open cr\r\n cr.endHead = createHead(true);\r\n cr.endHead.add(new Vector(new Point(curr.x, cr.start), new Point(curr.x, cr.end)));\r\n cr.startHead = cr.endHead.getTail();\r\n ci += 1;\r\n continue;\r\n }\r\n\r\n if (!cr.overlap(pr)) {\r\n if (pr.start < cr.start) {\r\n // close pr\r\n points = [\r\n new Point(prev.x, pr.end),\r\n new Point(curr.x, pr.end),\r\n new Point(curr.x, pr.start),\r\n new Point(prev.x, pr.start)\r\n ];\r\n for (pindex = 1; pindex < points.length; pindex += 1) {\r\n pr.endHead.add(new Vector(points[pindex - 1], points[pindex]));\r\n }\r\n pr.endHead.attach(pr.startHead);\r\n pi += 1;\r\n continue;\r\n } else {\r\n // open cr\r\n cr.endHead = createHead(true);\r\n cr.endHead.add(new Vector(new Point(curr.x, cr.start), new Point(curr.x, cr.end)));\r\n cr.startHead = cr.endHead.getTail();\r\n ci += 1;\r\n continue;\r\n }\r\n } else {\r\n // ovelaps\r\n // extend pr.start to cr.start\r\n points = [\r\n new Point(prev.x, pr.start),\r\n new Point(curr.x, pr.start),\r\n new Point(curr.x, cr.start)\r\n ];\r\n for (pindex = 1; pindex < points.length; pindex += 1) {\r\n pr.startHead.add(new Vector(points[pindex], points[pindex - 1]));\r\n }\r\n cr.startHead = pr.startHead;\r\n\r\n var loop = true;\r\n while (loop) {\r\n loop = false;\r\n\r\n if (pr.end > cr.end) {\r\n var nextcr = (ci + 1) < curr.ranges.length ? curr.ranges[ci + 1] : null;\r\n if (nextcr != null && nextcr.overlap(pr)) {\r\n // open loop cr.end to nextcr.start\r\n var p1 = new Point(curr.x, nextcr.start);\r\n var p2 = new Point(curr.x, cr.end);\r\n cr.endHead = createHead(true);\r\n cr.endHead.add(new Vector(p1, p2));\r\n nextcr.startHead = cr.endHead.getTail();\r\n\r\n ci += 1;\r\n cr = nextcr;\r\n loop = true;\r\n }\r\n } else {\r\n var nextpr = (pi + 1) < prev.ranges.length ? prev.ranges[pi + 1] : null;\r\n if (nextpr != null && nextpr.overlap(cr)) {\r\n // close loop pr.end to nextpr.start\r\n points = [\r\n new Point(prev.x, pr.end),\r\n new Point(curr.x, pr.end),\r\n new Point(curr.x, nextpr.start),\r\n new Point(prev.x, nextpr.start)\r\n ];\r\n for (pindex = 1; pindex < points.length; pindex += 1) {\r\n pr.endHead.add(new Vector(points[pindex - 1], points[pindex]));\r\n }\r\n pr.endHead.attach(nextpr.startHead);\r\n pi += 1;\r\n pr = nextpr;\r\n loop = true;\r\n }\r\n }\r\n }\r\n // extend pr.end to cr.end\r\n points = [\r\n new Point(prev.x, pr.end),\r\n new Point(curr.x, pr.end),\r\n new Point(curr.x, cr.end)\r\n ];\r\n for (pindex = 1; pindex < points.length; pindex += 1) {\r\n pr.endHead.add(new Vector(points[pindex - 1], points[pindex]));\r\n }\r\n cr.endHead = pr.endHead;\r\n pi += 1;\r\n ci += 1;\r\n }\r\n }\r\n }\r\n if (onItem != null) {\r\n for (index = 0; index < lists.length; index += 1) {\r\n if (heads.hasOwnProperty(index)) {\r\n var list = lists[index];\r\n points = [];\r\n list.iterate(function (segment, key) {\r\n if (points.length == 0) {\r\n points.push(segment.from);\r\n points.push(segment.to);\r\n } else {\r\n points.push(segment.to);\r\n }\r\n });\r\n onItem.call(thisArg, points);\r\n }\r\n }\r\n }\r\n};\r\n","/**\r\n * Callback for iterating rows\r\n * \r\n * @callback onRowCallback\r\n * @param {number} row The y coordinate of the horizontal line\r\n */\r\n\r\n/**\r\n * Finds minimum number of horizontal lines crossing all rectangles\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {React[]} rectangles Collection of rectangles\r\n * @param {onRowCallback} onItem Callback function to call for every found row\r\n */\r\nexport default function getMinimumCrossingRows(thisArg, rectangles, onItem) {\r\n var from = null;\r\n var to = null;\r\n if (onItem != null) {\r\n rectangles.sort(function (a, b) {\r\n return a.y - b.y;\r\n });\r\n\r\n for (var index = 0; index < rectangles.length; index += 1) {\r\n var rect = rectangles[index];\r\n var bottom = rect.bottom();\r\n if (from === null) {\r\n from = rect.y;\r\n to = bottom;\r\n } else {\r\n if (rect.y >= to) {\r\n onItem.call(thisArg, from);\r\n from = rect.y;\r\n to = bottom;\r\n } else {\r\n if (rect.y > from) {\r\n from = rect.y;\r\n }\r\n\r\n if (bottom < to) {\r\n to = bottom;\r\n }\r\n }\r\n }\r\n }\r\n if (from !== null) {\r\n onItem.call(thisArg, from);\r\n }\r\n }\r\n};\r\n\r\n","/**\r\n * Callback function to measure item weights of merged arrays.\r\n * \r\n * @callback getItemWeightCallback\r\n * @param {object} item The item to weight\r\n * @returns {number} Returns item's weight.\r\n */\r\n\r\n/**\r\n * Merges array of sorted arrays into one using call back function for comparison.\r\n * \r\n * @param {object[][]} arrays Array of sorted arrays of objects.\r\n * @param {getItemWeightCallback} getItemWeight Callback function to measure item weight. \r\n * @param {boolean} ignoreDuplicates If true returns distinct weight items only.\r\n * @returns {object[]} Returns merged sorted array.\r\n */\r\nexport default function mergeSort(arrays, getItemWeight, ignoreDuplicates) {\r\n var result = null,\r\n firstArray, secondArray, mergedArray, arrayIndex,\r\n firstIndex, secondIndex, firstLen, secondLen, firstItem, secondItem,\r\n firstItemWeight, secondItemWeight,\r\n currentValue;\r\n\r\n switch (arrays.length) {\r\n case 0:\r\n result = [];\r\n break;\r\n default:\r\n firstArray = [];\r\n for (arrayIndex = 0; arrayIndex < arrays.length; arrayIndex += 1) {\r\n secondArray = arrays[arrayIndex];\r\n mergedArray = [];\r\n\r\n firstLen = firstArray.length;\r\n secondLen = secondArray.length;\r\n\r\n firstIndex = 0;\r\n secondIndex = 0;\r\n\r\n firstItem = null;\r\n firstItemWeight = null;\r\n secondItem = null;\r\n secondItemWeight = null;\r\n\r\n if (firstLen > 0) {\r\n firstItem = firstArray[firstIndex];\r\n firstItemWeight = !getItemWeight ? firstItem : getItemWeight(firstItem);\r\n }\r\n\r\n if (secondLen > 0) {\r\n secondItem = secondArray[secondIndex];\r\n secondItemWeight = !getItemWeight ? secondItem : getItemWeight(secondItem);\r\n }\r\n currentValue = null;\r\n while (firstIndex < firstLen || secondIndex < secondLen) {\r\n\r\n if (firstIndex >= firstLen) {\r\n if (!ignoreDuplicates || currentValue != secondItem) {\r\n mergedArray.push(secondItem);\r\n currentValue = secondItem;\r\n }\r\n secondIndex += 1;\r\n\r\n\r\n if (secondIndex < secondLen) {\r\n secondItem = secondArray[secondIndex];\r\n secondItemWeight = !getItemWeight ? secondItem : getItemWeight(secondItem);\r\n }\r\n } else {\r\n if (secondIndex >= secondLen) {\r\n if (!ignoreDuplicates || currentValue != firstItem) {\r\n mergedArray.push(firstItem);\r\n currentValue = firstItem;\r\n }\r\n firstIndex += 1;\r\n\r\n\r\n if (firstIndex < firstLen) {\r\n firstItem = firstArray[firstIndex];\r\n firstItemWeight = !getItemWeight ? firstItem : getItemWeight(firstItem);\r\n }\r\n } else {\r\n if (firstItemWeight < secondItemWeight) {\r\n if (!ignoreDuplicates || currentValue != firstItem) {\r\n mergedArray.push(firstItem);\r\n currentValue = firstItem;\r\n }\r\n firstIndex += 1;\r\n\r\n if (firstIndex < firstLen) {\r\n firstItem = firstArray[firstIndex];\r\n firstItemWeight = !getItemWeight ? firstItem : getItemWeight(firstItem);\r\n }\r\n } else {\r\n if (!ignoreDuplicates || currentValue != secondItem) {\r\n mergedArray.push(secondItem);\r\n currentValue = secondItem;\r\n }\r\n secondIndex += 1;\r\n\r\n if (secondIndex < secondLen) {\r\n secondItem = secondArray[secondIndex];\r\n secondItemWeight = !getItemWeight ? secondItem : getItemWeight(secondItem);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n firstArray = mergedArray;\r\n }\r\n result = firstArray;\r\n break;\r\n }\r\n return result;\r\n};\r\n","import Interval from '../graphics/structs/Interval';\r\n\r\nfunction IntervalPoint(value, index, isStart) {\r\n this.value = value;\r\n this.index = index;\r\n this.isStart = isStart;\r\n}\r\n\r\n/**\r\n * Callback function to iterate over result intervals\r\n * \r\n * @callback onMergedIntervalItemCallback\r\n * @param {Interval} interval Merged interval\r\n * @param {Object} context First interval context.\r\n */\r\n\r\n/**\r\n * Merges collection of overlapping intervals into continuous group of intervals. Calls callback \r\n * function to pass result interval per group of overlapping intervals.\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {Interval[]} items Collection of intervals.\r\n * @param {onMergedIntervalItemCallback} onItem Callback function to pass result group of merged intervals.\r\n */\r\nexport default function getMergedIntervals(thisArg, items, onItem) {\r\n var points = [];\r\n for(var index = 0; index < items.length; index+=1) {\r\n var item = items[index];\r\n points.push(new IntervalPoint(item.from, index, true));\r\n points.push(new IntervalPoint(item.to, index, false));\r\n }\r\n\r\n points.sort(function(a, b) {\r\n if(a.value === b.value) {\r\n return b.isStart - a.isStart;\r\n }\r\n return a.value - b.value;\r\n })\r\n\r\n var counter = 0;\r\n var interval = null;\r\n var logicalIndex = null;\r\n for(var index = 0, len = points.length; index < len; index+=1) {\r\n var point = points[index];\r\n if(interval == null) {\r\n interval = new Interval(items[point.index]);\r\n }\r\n interval.to = point.value;\r\n\r\n if(point.isStart) {\r\n counter++;\r\n\r\n if(logicalIndex === null || logicalIndex > point.index) {\r\n logicalIndex = point.index;\r\n interval.context = items[point.index].context;\r\n }\r\n } else {\r\n counter--;\r\n }\r\n if(!counter) {\r\n if(onItem != null) {\r\n onItem.call(thisArg, interval);\r\n }\r\n interval = null;\r\n logicalIndex = null;\r\n }\r\n }\r\n};\r\n","import { isObject, cloneObject, isEmptyObject } from '../common'\r\n/**\r\n * Creates tree structure\r\n * @class Tree\r\n * \r\n * @param {Tree} source A source tree structure to clone properties from\r\n * @returns {Tree} Returns new tree structure\r\n */\r\nexport default function Tree(source) {\r\n var _nodes = {}, // objects attached to nodes\r\n _parents = {}, // parent node id for every node id. Both of them should exists in the tree.\r\n _children = {}, // children node ids for every node id. All children and node itself should be in the tree.\r\n _roots = {}, // id of non existing parent. If parent does not exists in the tree this hash contains its id.\r\n _rootChildren = {}, // children of non existing parent. If parent id does not exists in the tree this collection contains it existing children.\r\n /** @constant\r\n @type {number}\r\n @default\r\n */\r\n BREAK = 1,\r\n /** @constant\r\n @type {number}\r\n @default\r\n */\r\n SKIP = 2;\r\n \r\n _init(source);\r\n \r\n function _init(source) {\r\n if (isObject(source)) {\r\n _nodes = cloneObject(source.nodes, true);\r\n _parents = cloneObject(source.parents, true);\r\n _children = cloneObject(source.children, false);\r\n _roots = cloneObject(source.roots, false);\r\n _rootChildren = cloneObject(source.rootChildren, true);\r\n }\r\n }\r\n \r\n /**\r\n * Callback for iterating tree nodes\r\n * \r\n * @callback onTreeItemCallback\r\n * @param {string} itemid The node id\r\n * @param {object} item The node\r\n * @returns {boolean} Returns true to break the loop\r\n */\r\n \r\n /**\r\n * Loops through nodes of tree structure\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {onTreeItemCallback} onItem Callback function to call for every tree node \r\n */\r\n function loop(thisArg, onItem) {\r\n var item;\r\n if (onItem != null) {\r\n for (item in _nodes) {\r\n if (_nodes.hasOwnProperty(item)) {\r\n if (onItem.call(thisArg, item, _nodes[item])) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Callback for iterating the tree nodes level by level\r\n * \r\n * @callback onTreeItemWithLevelCallback\r\n * @param {string} nodeid The node id\r\n * @param {object} node The node context object\r\n * @param {number} levelIndex The node level index\r\n * @returns {number} Returns BREAK to break the loop and exit. Returns SKIP to skip node's branch traversing.\r\n */\r\n \r\n /**\r\n * Loops through child nodes of the tree structure level by level\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {string} arg0 The node id to start children traversing\r\n * @param {onTreeItemWithLevelCallback} arg1 Callback function to call for every child node \r\n */\r\n function loopLevels(thisArg, arg0, arg1) {\r\n var levelIndex = 0,\r\n items = [],\r\n itemid,\r\n onItem,\r\n newItems,\r\n key,\r\n index, len;\r\n \r\n switch (arguments.length) {\r\n case 2:\r\n onItem = arg0;\r\n break;\r\n case 3:\r\n itemid = arg0;\r\n onItem = arg1;\r\n break;\r\n }\r\n \r\n if (onItem != null) {\r\n \r\n if (itemid == null) {\r\n for (key in _rootChildren) {\r\n if (_rootChildren.hasOwnProperty(key)) {\r\n items = items.concat(_rootChildren[key]);\r\n }\r\n }\r\n } else {\r\n if (_children[itemid] != null) {\r\n items = items.concat(_children[itemid]);\r\n }\r\n }\r\n \r\n while (items.length > 0) {\r\n newItems = [];\r\n \r\n for (index = 0, len = items.length; index < len; index += 1) {\r\n itemid = items[index];\r\n switch (onItem.call(thisArg, itemid, _nodes[itemid], levelIndex)) {\r\n case BREAK:\r\n newItems = [];\r\n break;\r\n case SKIP:\r\n break;\r\n default:\r\n if (_children[itemid] != null) {\r\n newItems = newItems.concat(_children[itemid]);\r\n }\r\n break;\r\n }\r\n }\r\n \r\n items = newItems;\r\n levelIndex += 1;\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Callback for iterating nodes and providing parent in parameters\r\n * \r\n * @callback onTreeItemWithParentCallback\r\n * @param {string} nodeid The node id\r\n * @param {object} node The node context object\r\n * @param {string} parentid The parent node id\r\n * @param {object} parent The parent node context object\r\n * @returns {number} Returns BREAK to break the loop and exit. Returns SKIP to skip node's branch traversing.\r\n */\r\n \r\n /**\r\n * Traverse tree structure in post order.\r\n * Children first - parent last\r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {onTreeItemWithParentCallback} onItem Callback function to call for every node \r\n */\r\n function loopPostOrder(thisArg, onItem) {\r\n var stack = [], nodeid,\r\n key,\r\n index,\r\n prevParent,\r\n children;\r\n \r\n if (onItem != null) {\r\n \r\n for (key in _rootChildren) {\r\n if (_rootChildren.hasOwnProperty(key)) {\r\n stack = stack.concat(_rootChildren[key]);\r\n }\r\n }\r\n \r\n while (stack.length > 0) {\r\n nodeid = stack[stack.length - 1];\r\n if (nodeid != prevParent && (children = _children[nodeid]) != null) {\r\n for (index = children.length - 1; index >= 0; index -= 1) {\r\n stack.push(children[index]);\r\n }\r\n } else {\r\n stack.pop();\r\n prevParent = _parents[nodeid];\r\n \r\n if (onItem.call(thisArg, nodeid, _nodes[nodeid], prevParent, _nodes[prevParent])) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n \r\n /**\r\n * Traverse tree structure in pre order.\r\n * Parent first - children next\r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {string} arg0 The node id to start traversing\r\n * @param {onTreeItemWithParentCallback} arg1 A callback function to call for every node \r\n */\r\n function loopPreOrder(thisArg, arg0, arg1) {\r\n var stack = [], nodeid,\r\n key,\r\n index,\r\n parentid,\r\n prevParent,\r\n children,\r\n startNodeId,\r\n onItem;\r\n \r\n switch (arguments.length) {\r\n case 2:\r\n onItem = arg0;\r\n break;\r\n case 3:\r\n startNodeId = arg0;\r\n onItem = arg1;\r\n break;\r\n }\r\n\r\n if (onItem != null) {\r\n \r\n if(!node(startNodeId)) {\r\n for (key in _rootChildren) {\r\n if (_rootChildren.hasOwnProperty(key)) {\r\n stack = stack.concat(_rootChildren[key]);\r\n }\r\n }\r\n } else {\r\n stack.push(startNodeId);\r\n }\r\n \r\n while (stack.length > 0) {\r\n nodeid = stack[stack.length - 1];\r\n if (nodeid != prevParent) {\r\n parentid = _parents[nodeid];\r\n if (onItem.call(thisArg, nodeid, _nodes[nodeid], parentid, _nodes[parentid])) {\r\n break;\r\n }\r\n }\r\n if (nodeid != prevParent && (children = _children[nodeid]) != null) {\r\n for (index = children.length - 1; index >= 0; index -= 1) {\r\n stack.push(children[index]);\r\n }\r\n } else {\r\n stack.pop();\r\n prevParent = _parents[nodeid];\r\n }\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Callback for iterating nodes in euler walk order\r\n * \r\n * @callback onItemEulerWalkCallback\r\n * @param {string} nodeid The node id\r\n * @param {object} node Context object of the node\r\n * @param {number} level The node's level\r\n * @returns {boolean} Returns true to break the iteration of nodes and exit.\r\n */\r\n \r\n /**\r\n * Loops tree nodes in \"Euler Walk\" order\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {onItemEulerWalkCallback} onItem Callback function to call for every node \r\n */\r\n function loopEulerWalk(thisArg, onItem) {\r\n var stack = [],\r\n nodeid,\r\n levels = [],\r\n level = 0,\r\n key,\r\n index, len,\r\n prevParent,\r\n children;\r\n \r\n if (onItem != null) {\r\n \r\n for (key in _rootChildren) {\r\n if (_rootChildren.hasOwnProperty(key)) {\r\n children = _rootChildren[key];\r\n for (index = 0, len = children.length; index < len; index += 1) {\r\n stack.push(children[index]);\r\n levels.push(0);\r\n }\r\n }\r\n }\r\n while (stack.length > 0) {\r\n index = stack.length - 1;\r\n nodeid = stack[index];\r\n level = levels[index];\r\n \r\n if (onItem.call(thisArg, nodeid, _nodes[nodeid], level)) {\r\n break;\r\n }\r\n \r\n if (nodeid != prevParent && (children = _children[nodeid]) != null) {\r\n for (index = children.length - 1; index >= 0; index -= 1) {\r\n stack.push(children[index]);\r\n levels.push(level + 1);\r\n if (index > 0) {\r\n stack.push(nodeid);\r\n levels.push(level);\r\n }\r\n }\r\n } else {\r\n stack.pop();\r\n levels.pop();\r\n \r\n prevParent = _parents[nodeid];\r\n }\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Callback function to return pairs of nodes\r\n * \r\n * @callback onZipUpPairCallback\r\n * @param {string} firstNodeId First node id\r\n * @param {string} firstParentId Parent id of the first node\r\n * @param {string} secondNodeid Second node id\r\n * @param {string} secondParentId Parent id of the second node\r\n * @returns {boolean} Returns true to break the iteration of nodes and exit.\r\n */\r\n \r\n /**\r\n * Iterates hierarchy nodes by pairs starting with given pair of start and second nodes and up to the root of the hierarchy.\r\n * Breaks iteration when callback function returns true.\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {string} firstNodeId The first node to start iteration\r\n * @param {string} secondNodeid The second node to start iteration\r\n * @param {onZipUpPairCallback} onZip Callback function to call for every pair of nodes on the way up in the tree structure\r\n */\r\n function zipUp(thisArg, firstNodeId, secondNodeid, onZip) {\r\n var firstParentId,\r\n secondParentId;\r\n \r\n if (onZip != null) {\r\n while (firstNodeId != null && secondNodeid != null && firstNodeId != secondNodeid) {\r\n firstParentId = _parents[firstNodeId];\r\n secondParentId = _parents[secondNodeid];\r\n if (onZip.call(thisArg, firstNodeId, firstParentId, secondNodeid, secondParentId)) {\r\n break;\r\n }\r\n firstNodeId = firstParentId;\r\n secondNodeid = secondParentId;\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Loops parents up to the root of the hierarchy starting with the given node.\r\n * Breaks iteration if callback function returns true.\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {string} nodeid The node id to start iteration from\r\n * @param {onTreeItemCallback} onItem Callback function to call for every parent node\r\n * @param {boolean} includingStartItem If true the first call to callback function is made with start node id\r\n */\r\n function loopParents(thisArg, nodeid, onItem, includingStartItem) { // onItem(nodeid, node)\r\n var parentid = nodeid;\r\n if (_nodes[parentid] != null) {\r\n if (onItem != null) {\r\n if (includingStartItem === true) {\r\n if (onItem.call(thisArg, parentid, _nodes[parentid])) {\r\n return;\r\n }\r\n }\r\n while ((parentid = _parents[parentid]) != null) {\r\n if (onItem.call(thisArg, parentid, _nodes[parentid])) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Callback function to loop through children of the given node\r\n * \r\n * @callback onTreeChildItemCallback\r\n * @param {string} nodeid Child node id\r\n * @param {object} node Context object of the child node\r\n * @param {number} index Index of the child node\r\n * @param {number} lastIndex Index of the last child\r\n * @returns {boolean} Returns true to break the iteration of nodes and exit.\r\n */\r\n \r\n /**\r\n * Loops immediate children of the given node.\r\n * Breaks iteration if callback function returns true.\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {string} nodeid The parent node id to loop children of\r\n * @param {onTreeChildItemCallback} onItem Callback function to call for every child node\r\n */\r\n function loopChildren(thisArg, nodeid, onItem) { // onItem(nodeid, node, index, lastIndex)\r\n var items,\r\n itemid,\r\n index, len;\r\n if (_nodes[nodeid] != null) {\r\n items = _children[nodeid];\r\n if (items != null) {\r\n for (index = 0, len = items.length; index < len; index += 1) {\r\n itemid = items[index];\r\n if (onItem.call(thisArg, itemid, _nodes[itemid], index, len - 1)) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Callback function to loop through range of children for the given node\r\n * \r\n * @callback onTreeNodeWithIndexItemCallback\r\n * @param {string} nodeid Child node id\r\n * @param {object} node Context object of the child node\r\n * @param {number} index Index of the child node\r\n * @returns {boolean} Returns true to break the iteration of nodes and exit.\r\n */\r\n \r\n /**\r\n * Loops range of immediate children of the given node.\r\n * Breaks iteration if callback function returns true.\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {string} nodeid The parent node id to loop children of\r\n * @param {number} fromIndex Start index of iteration\r\n * @param {number} toIndex End index of iteration\r\n * @param {onTreeNodeWithIndexItemCallback} onItem Callback function to call for every child node\r\n */\r\n function loopChildrenRange(thisArg, nodeid, fromIndex, toIndex, onItem) {\r\n var items,\r\n itemid,\r\n index, len;\r\n if (_nodes[nodeid] != null) {\r\n items = _children[nodeid];\r\n if (items != null) {\r\n if (fromIndex < toIndex) {\r\n fromIndex = Math.max(fromIndex, 0);\r\n toIndex = Math.min(toIndex, items.length - 1);\r\n for (index = fromIndex; index <= toIndex; index += 1) {\r\n itemid = items[index];\r\n if (onItem.call(thisArg, itemid, _nodes[itemid], index, len - 1)) {\r\n break;\r\n }\r\n }\r\n } else {\r\n fromIndex = Math.min(fromIndex, items.length - 1);\r\n toIndex = Math.max(0, toIndex);\r\n for (index = fromIndex; index >= toIndex; index -= 1) {\r\n itemid = items[index];\r\n if (onItem.call(thisArg, itemid, _nodes[itemid], index, len - 1)) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Loops immediate children of the given node in reversed order.\r\n * Breaks iteration if callback function returns true.\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {string} nodeid The parent node id to loop children of\r\n * @param {onTreeChildItemCallback} onItem Callback function to call for every child node\r\n */\r\n function loopChildrenReversed(thisArg, nodeid, onItem) {\r\n var items,\r\n itemid,\r\n index, lastIndex;\r\n if (_nodes[nodeid] != null) {\r\n items = _children[nodeid];\r\n lastIndex = items.length - 1;\r\n if (items != null) {\r\n for (index = lastIndex; index >= 0; index -= 1) {\r\n itemid = items[index];\r\n if (onItem.call(thisArg, itemid, _nodes[itemid], index, lastIndex)) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Orders children of the given node\r\n * \r\n * @param {string} nodeid The node id of the parent node which children should be ordered in the tree structure\r\n * @param {string[]} children Collection of ordered children\r\n */\r\n function arrangeChildren(nodeid, children) {\r\n var childid,\r\n index, len;\r\n \r\n children = children.slice(0);\r\n if (_nodes[nodeid] != null) {\r\n if (_children[nodeid] != null) {\r\n if (_children[nodeid].length == children.length) {\r\n for (index = 0, len = children.length; index < len; index += 1) {\r\n childid = children[index];\r\n if (_parents[childid] != nodeid) {\r\n throw \"Child \" + childid + \" does not belong to given node!\";\r\n }\r\n }\r\n _children[nodeid] = children;\r\n } else {\r\n throw \"Collections of children don't match each other!\";\r\n }\r\n } else {\r\n if (children.length > 0) {\r\n throw \"Collections of children don't match each other!\";\r\n }\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Adds new tree item\r\n * @param {string} parentid Parent id\r\n * @param {string} nodeid New node id\r\n * @param {object} node Context object of the new node\r\n * @param {number} position Position of the new node in the collection of children\r\n */\r\n function add(parentid, nodeid, node, position) {\r\n var index, len, children, childid;\r\n \r\n if (_nodes[nodeid] != null) {\r\n throw \"Node already exists\";\r\n }\r\n \r\n if (nodeid != null && node != null && _nodes[nodeid] == null) {\r\n \r\n if (_nodes[parentid] != null) {\r\n _parents[nodeid] = parentid;\r\n \r\n // existing parent\r\n if (_children[parentid] != null) {\r\n if (position == null) {\r\n _children[parentid].push(nodeid);\r\n } else {\r\n _children[parentid].splice(position, 0, nodeid);\r\n }\r\n } else {\r\n _children[parentid] = [nodeid];\r\n }\r\n } else {\r\n _roots[nodeid] = parentid;\r\n \r\n // missing parent\r\n if (_rootChildren[parentid] != null) {\r\n if (position == null) {\r\n _rootChildren[parentid].push(nodeid);\r\n } else {\r\n _rootChildren[parentid].splice(position, 0, nodeid);\r\n }\r\n } else {\r\n _rootChildren[parentid] = [nodeid];\r\n }\r\n }\r\n \r\n _nodes[nodeid] = node;\r\n \r\n if (_rootChildren[nodeid] != null) {\r\n _children[nodeid] = _rootChildren[nodeid];\r\n delete _rootChildren[nodeid];\r\n \r\n children = _children[nodeid];\r\n for (index = 0, len = children.length; index < len; index += 1) {\r\n childid = children[index];\r\n \r\n delete _roots[childid];\r\n \r\n _parents[childid] = nodeid;\r\n }\r\n \r\n }\r\n \r\n }\r\n }\r\n \r\n /**\r\n * Inserts bundle node into the tree structure. The new bundle node becomes only child node of the parent node.\r\n * All immediate children of the parent node become children of the inserted bundle node.\r\n * \r\n * @param {string} nodeid Parent node id\r\n * @param {string} bundleid New bundle node id\r\n * @param {object} bundle Context object of the bundle node\r\n */\r\n function insert(nodeid, bundleid, bundle) {\r\n if (_nodes[nodeid] != null && bundleid != null && _nodes[bundleid] == null && bundle != null) {\r\n \r\n _nodes[bundleid] = bundle;\r\n \r\n if (_children[nodeid] != null) {\r\n _children[bundleid] = _children[nodeid];\r\n }\r\n _children[nodeid] = [bundleid];\r\n \r\n loopChildren(this, bundleid, function (childid, node, index) {\r\n _parents[childid] = bundleid;\r\n });\r\n _parents[bundleid] = nodeid;\r\n }\r\n }\r\n \r\n /**\r\n * Moves children form one node to another.\r\n * \r\n * @param {string} fromNodeid Source node node id\r\n * @param {string} toNodeId Destination node id\r\n */\r\n function moveChildren(fromNodeid, toNodeId) {\r\n if (_nodes[fromNodeid] != null && _nodes[toNodeId] != null && fromNodeid != toNodeId) {\r\n \r\n if (_children[fromNodeid] != null) {\r\n \r\n loopChildren(this, fromNodeid, function (childid, node, index) {\r\n _parents[childid] = toNodeId;\r\n });\r\n \r\n if (_children[toNodeId] != null) {\r\n _children[toNodeId] = _children[toNodeId].concat(_children[fromNodeid]);\r\n } else {\r\n _children[toNodeId] = _children[fromNodeid];\r\n }\r\n delete _children[fromNodeid];\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Return true if structure has nodes\r\n * \r\n * @returns {boolean} Returns true if structure has nodes\r\n */\r\n function hasNodes() {\r\n return !isEmptyObject(_rootChildren);\r\n }\r\n \r\n /**\r\n * Returns parent node id\r\n * \r\n * @param {string} nodeid Node id\r\n * @returns {string} Returns parent node id\r\n */\r\n function parentid(nodeid) {\r\n var result = null;\r\n \r\n if (_parents[nodeid] != null) {\r\n result = _parents[nodeid];\r\n }\r\n \r\n return result;\r\n }\r\n \r\n /**\r\n * Returns context object of the parent node\r\n * \r\n * @param {string} nodeid Node id\r\n * @returns {object} Returns context object of the parent node\r\n */\r\n function parent(nodeid) {\r\n var result = null;\r\n \r\n if (_parents[nodeid] != null) {\r\n result = _nodes[_parents[nodeid]];\r\n }\r\n \r\n return result;\r\n }\r\n \r\n /**\r\n * Returns true if node has children\r\n * \r\n * @param {string} nodeid Node id\r\n * @returns {boolean} Returns true if node has children\r\n */\r\n function hasChildren(nodeid) {\r\n return _children[nodeid] != null;\r\n }\r\n \r\n /**\r\n * Returns number of children\r\n * \r\n * @param {string} nodeid Node id\r\n * @returns {number} Returns number of child nodes\r\n */\r\n function countChildren(nodeid) {\r\n return _children[nodeid] != null ? _children[nodeid].length : 0;\r\n }\r\n \r\n /**\r\n * Returns number of siblings\r\n * \r\n * @param {string} nodeid Node id\r\n * @returns {number} Returns number of siblings\r\n */\r\n function countSiblings(nodeid) {\r\n var parent = parentid(nodeid);\r\n return parent != null ? _children[parent].length : 0;\r\n }\r\n \r\n /**\r\n * Returns index of the node in the children's collection\r\n * \r\n * @param {string} nodeid Node id\r\n * @returns {number} Returns node index\r\n */\r\n function indexOf(nodeid) {\r\n var parent = parentid(nodeid);\r\n return parent != null ? _children[parent].findIndex( itemid => itemid === nodeid) : null;\r\n }\r\n \r\n /**\r\n * Returns child node by index in the children's collection\r\n * \r\n * @param {string} nodeid Node id\r\n * @param {number} index Child index\r\n * @returns {object} Returns child node\r\n */\r\n function getChild(parentid, index) {\r\n var result = null,\r\n children;\r\n if ((children = _children[parentid]) != null) {\r\n result = _nodes[children[index]];\r\n }\r\n return result;\r\n }\r\n \r\n function _splice(collection, nodeid) {\r\n var index, len = collection.length;\r\n for (index = 0; index < len; index += 1) {\r\n if (collection[index] == nodeid) {\r\n collection.splice(index, 1);\r\n return len - 1;\r\n }\r\n }\r\n return len;\r\n }\r\n \r\n /**\r\n * Adds existing node to the children of the parent node\r\n * \r\n * @param {string} parentid Parent Node id\r\n * @param {string} nodeid Node id\r\n */\r\n function adopt(parentid, nodeid) {\r\n if (_nodes[parentid] != null && _nodes[nodeid] != null) {\r\n if (parentid != nodeid) {\r\n if (_roots.hasOwnProperty(nodeid)) {\r\n if (!_splice(_rootChildren[_roots[nodeid]], nodeid)) {\r\n delete _rootChildren[_roots[nodeid]];\r\n }\r\n delete _roots[nodeid];\r\n }\r\n \r\n if (_parents.hasOwnProperty(nodeid)) {\r\n if (!_splice(_children[_parents[nodeid]], nodeid)) {\r\n delete _children[_parents[nodeid]];\r\n }\r\n }\r\n \r\n _parents[nodeid] = parentid;\r\n if (_children[parentid] != null) {\r\n _children[parentid].push(nodeid);\r\n } else {\r\n _children[parentid] = [nodeid];\r\n }\r\n }\r\n else {\r\n throw \"Item cannot be parent of itself!\";\r\n }\r\n } else {\r\n throw \"Both parent and child should be in hierarchy!\";\r\n }\r\n }\r\n \r\n /**\r\n * Returns context object\r\n * @param {string} nodeid Node id\r\n * @returns {object} Context object of the node\r\n */\r\n function node(nodeid) {\r\n return _nodes[nodeid];\r\n }\r\n \r\n /**\r\n * Validates internal data integrity of the structure\r\n * \r\n * @returns {boolean} Returns true if structure pass validation\r\n */\r\n function validate() {\r\n var result = true,\r\n key;\r\n \r\n for (key in _roots) {\r\n if (_roots.hasOwnProperty(key)) {\r\n if (_roots[key] != null) {\r\n result = false;\r\n break;\r\n }\r\n }\r\n }\r\n \r\n return result;\r\n }\r\n \r\n /**\r\n * Clones tree structure\r\n * \r\n * @returns {tree} Returns clone of the tree\r\n */\r\n function clone() {\r\n return Tree({\r\n nodes: _nodes,\r\n parents: _parents,\r\n children: _children,\r\n roots: _roots,\r\n rootChildren: _rootChildren\r\n });\r\n }\r\n \r\n \r\n /**\r\n * Callback for iterating tree node neighbours level by level\r\n * \r\n * @callback onTreeItemNeighbourCallback\r\n * @param {string} itemid The node id\r\n * @param {object} item The node\r\n * @param {number} distance The neigbour node distance from the start node\r\n * @returns {number} Returns true to skip further neighbous traversing.\r\n */\r\n \r\n /**\r\n * Loops through the node neighbours of the tree structure level by level\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {string} itemid The node id to start traversing neighbour nodes\r\n * @param {number} distance Stop iteration of neighbours when distance exceeds the given value\r\n * @param {onTreeItemNeighbourCallback} onItem A callback function to call for every neighbour node \r\n */\r\n function loopNeighbours(thisArg, itemid, distance, onItem) {\r\n var processed = {},\r\n margin = [itemid],\r\n newMargin,\r\n currentDistance = 0;\r\n \r\n if (onItem != null) {\r\n if (_nodes.hasOwnProperty(itemid)) {\r\n processed[itemid] = true;\r\n while (margin.length > 0) {\r\n newMargin = [];\r\n for (var index = 0, len = margin.length; index < len; index += 1) {\r\n var marginid = margin[index];\r\n if (currentDistance > 0) {\r\n if (onItem.call(thisArg, marginid, _nodes[marginid], currentDistance)) {\r\n return;\r\n }\r\n }\r\n if (currentDistance < distance) {\r\n _loopNeighbours(this, marginid, function (neighbourid, neighbour) {\r\n if (!processed.hasOwnProperty(neighbourid)) {\r\n newMargin.push(neighbourid);\r\n processed[neighbourid] = true;\r\n }\r\n });\r\n }\r\n }\r\n margin = newMargin;\r\n currentDistance += 1;\r\n }\r\n }\r\n }\r\n }\r\n \r\n function _loopNeighbours(thisArg, itemid, onItem) {\r\n if (onItem != null) {\r\n if (_nodes.hasOwnProperty(itemid)) {\r\n /* loop parent */\r\n var parentItemId = parentid(itemid);\r\n if (parentItemId != null) {\r\n if (onItem.call(thisArg, parentItemId, _nodes[parentItemId])) {\r\n return;\r\n }\r\n }\r\n /* loop siblings */\r\n loopChildren(thisArg, parentItemId, function (childItemId, childItem) {\r\n if (childItemId != itemid) {\r\n if (onItem.call(thisArg, childItemId, childItem)) {\r\n return;\r\n }\r\n }\r\n });\r\n /* loop actual children */\r\n loopChildren(thisArg, itemid, function (childItemId, childItem) {\r\n if (onItem.call(thisArg, childItemId, childItem)) {\r\n return;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n \r\n return {\r\n loop: loop,\r\n loopLevels: loopLevels,\r\n loopParents: loopParents,\r\n loopChildren: loopChildren,\r\n loopChildrenRange: loopChildrenRange,\r\n loopChildrenReversed: loopChildrenReversed,\r\n loopPostOrder: loopPostOrder, /* children first - parent last */\r\n loopPreOrder: loopPreOrder, /* parent first - children next */\r\n loopEulerWalk: loopEulerWalk, /* pre order loop with every parent revisited for every child */\r\n loopNeighbours: loopNeighbours, /* loop items by distance. Siblings are as far as parent and children */\r\n zipUp: zipUp,\r\n parentid: parentid,\r\n parent: parent,\r\n adopt: adopt,\r\n moveChildren: moveChildren,\r\n node: node,\r\n add: add,\r\n insert: insert,\r\n hasNodes: hasNodes,\r\n hasChildren: hasChildren,\r\n countChildren: countChildren,\r\n countSiblings: countSiblings,\r\n indexOf: indexOf,\r\n getChild: getChild,\r\n arrangeChildren: arrangeChildren,\r\n \r\n /* force validation */\r\n validate: validate,\r\n clone: clone,\r\n \r\n // callback return codes\r\n BREAK: BREAK, // break loop immidiatly\r\n SKIP: SKIP // skip loop of current node children \r\n };\r\n };","/**\r\n* Heap result object\r\n* @class HeapResult\r\n* @property {string} key Key\r\n* @property {number} priority Priority\r\n* @property {Object} item Context object\r\n*/\r\nexport function HeapResult (node) {\r\n this.key = node.key;\r\n this.priority = node.priority;\r\n this.item = node.item;\r\n}\r\n\r\n/**\r\n * Creates Fibonacci Heap structure\r\n * @class FibonacciHeap\r\n * \r\n * @param {boolean} isMaximum Is maximum heap\r\n * @returns {FibonacciHeap} Returns new FibonacciHeap object\r\n */\r\nexport default function FibonacciHeap(isMaximum) {\r\n var root = null,\r\n count = 0,\r\n nodes = {};\r\n\r\n function Node(key, priority, item) {\r\n this.key = key;\r\n this.priority = priority;\r\n this.item = item;\r\n this.degree = 0;\r\n this.marked = false;\r\n\r\n this.parent = null;\r\n this.child = null;\r\n this.left = null;\r\n this.right = null;\r\n }\r\n\r\n /**\r\n * Validates internal structure consistency.\r\n * \r\n * @returns {boolean} Returns true if structure pass data consistency check.\r\n */\r\n function validate() {\r\n var totalNodes = 0;\r\n for (var key in nodes) {\r\n if (nodes.hasOwnProperty(key)) {\r\n var node = nodes[key];\r\n\r\n totalNodes += 1;\r\n\r\n if (node.child != null) {\r\n if (!nodes.hasOwnProperty(node.child)) {\r\n throw \"Child does not exists\";\r\n }\r\n var ref = nodes[node.child];\r\n if (ref.parent != node.key) {\r\n throw \"Child references wrong parent\";\r\n }\r\n }\r\n if (node.parent != null) {\r\n if (!nodes.hasOwnProperty(node.parent)) {\r\n throw \"Parent does not exists\";\r\n }\r\n\r\n }\r\n if (node.left != null) {\r\n if (!nodes.hasOwnProperty(node.left)) {\r\n throw \"Left does not exists\";\r\n }\r\n ref = nodes[node.left];\r\n if (ref.right != node.key) {\r\n throw \"Left references wrong right\";\r\n }\r\n }\r\n\r\n if (node.right != null) {\r\n if (!nodes.hasOwnProperty(node.right)) {\r\n throw \"Right does not exists\";\r\n }\r\n ref = nodes[node.right];\r\n if (ref.left != node.key) {\r\n throw \"Right references wrong left\";\r\n }\r\n }\r\n }\r\n }\r\n if (root == null && totalNodes > 0) {\r\n throw \"Orphans\";\r\n }\r\n\r\n if (root != null) {\r\n if (!nodes.hasOwnProperty(root)) {\r\n throw \"Root node does not exists\";\r\n }\r\n\r\n node = nodes[root];\r\n if (node.parent != null) {\r\n throw \"Root node has parent reference\";\r\n }\r\n\r\n var children = [root];\r\n var processed = {};\r\n var totalChildren = 0;\r\n while (children.length > 0) {\r\n var newChildren = [];\r\n for (var index = 0, len = children.length; index < len; index += 1) {\r\n var child = nodes[children[index]];\r\n while (!processed.hasOwnProperty(child.key)) {\r\n processed[child.key] = true;\r\n totalChildren += 1;\r\n if (child.child != null) {\r\n newChildren.push(child.child);\r\n }\r\n child = nodes[child.right];\r\n }\r\n }\r\n children = newChildren;\r\n }\r\n\r\n if (totalNodes != totalChildren) {\r\n throw \"Tree has loops or orpants\";\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Adds a new item into the heap\r\n * @param {string} key A key of the new element \r\n * @param {number} priority A priority of the new element\r\n * @param {object} item A context object of the new element \r\n */\r\n function add(key, priority, item) {\r\n if (nodes.hasOwnProperty(key)) {\r\n throw \"Duplicate keys are not supported!\";\r\n }\r\n\r\n var newNode = new Node(key, priority, item);\r\n nodes[key] = newNode;\r\n\r\n if (root == null) {\r\n newNode.left = key;\r\n newNode.right = key;\r\n root = key;\r\n } else {\r\n var rootNode = nodes[root];\r\n _insert(rootNode, newNode);\r\n if (isMaximum ? rootNode.priority < newNode.priority : rootNode.priority > newNode.priority) {\r\n root = key;\r\n }\r\n }\r\n count += 1;\r\n }\r\n\r\n function _insert(node, newNode) {\r\n var rightNode = nodes[node.right];\r\n newNode.right = node.right;\r\n newNode.left = node.key;\r\n node.right = newNode.key;\r\n rightNode.left = newNode.key;\r\n }\r\n\r\n function _exclude(node) {\r\n var prevNode = nodes[node.left],\r\n nextNode = nodes[node.right];\r\n\r\n prevNode.right = nextNode.key;\r\n nextNode.left = prevNode.key;\r\n node.right = node.key;\r\n node.left = node.key;\r\n }\r\n\r\n /**\r\n * Gets priority of element by key\r\n * @param {string} key The element key\r\n * @returns {number} Returns priority of the element\r\n */\r\n function getPriority(key) {\r\n var result = null;\r\n if (nodes.hasOwnProperty(key)) {\r\n result = nodes[key].priority;\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns heap root element\r\n * \r\n * @returns {HeapResult} Returns root element of the heap \r\n */\r\n function heapRoot() {\r\n var result = null;\r\n if (root != null) {\r\n result = new HeapResult(nodes[root]);\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns heap root element with removal\r\n * \r\n * @returns {HeapResult} Returns root element of the heap \r\n */\r\n function extractRoot() {\r\n var result = heapRoot();\r\n if (result != null) {\r\n var rootNode = nodes[root],\r\n nextNode = nodes[rootNode.right];\r\n\r\n if (rootNode.child != null) {\r\n var childNode = nodes[rootNode.child],\r\n childNodeLeft = nodes[childNode.left];\r\n\r\n rootNode.right = childNode.key;\r\n nextNode.left = childNodeLeft.key;\r\n childNode.left = rootNode.key;\r\n childNodeLeft.right = nextNode.key;\r\n\r\n _exclude(rootNode);\r\n delete nodes[rootNode.key];\r\n\r\n root = null;\r\n _consolidate(childNode.key);\r\n } else {\r\n _exclude(rootNode);\r\n delete nodes[rootNode.key];\r\n\r\n root = null;\r\n if (nextNode.key != rootNode.key) {\r\n _consolidate(nextNode.key);\r\n }\r\n }\r\n count -= 1;\r\n }\r\n return result;\r\n }\r\n\r\n function _consolidate(startKey) {\r\n var pairs = [], pairedNode,\r\n processed = {},\r\n key = startKey;\r\n while (!processed.hasOwnProperty(key)) {\r\n var node = nodes[key],\r\n nextKey = node.right;\r\n\r\n processed[key] = true;\r\n node.parent = null;\r\n\r\n while ((pairedNode = pairs[node.degree]) != null) {\r\n if (isMaximum ? node.priority > pairedNode.priority : node.priority < pairedNode.priority) {\r\n _union(node, pairedNode);\r\n } else {\r\n _union(pairedNode, node);\r\n node = pairedNode;\r\n }\r\n pairs[node.degree - 1] = null;\r\n }\r\n pairs[node.degree] = node;\r\n\r\n if (root == null || nodes[root] == null || (isMaximum ? nodes[root].priority <= node.priority : nodes[root].priority >= node.priority)) {\r\n root = node.key;\r\n }\r\n\r\n key = nextKey;\r\n }\r\n }\r\n\r\n function _union(node1, node2) {\r\n node1.degree += 1;\r\n _exclude(node2);\r\n var child = nodes[node1.child];\r\n if (child != null) {\r\n _insert(child, node2);\r\n if (isMaximum ? child.priority < node2.priority : child.priority > node2.priority) {\r\n node1.child = node2.key;\r\n }\r\n } else {\r\n node1.child = node2.key;\r\n }\r\n node2.parent = node1.key;\r\n }\r\n\r\n /**\r\n * Sets priority of an element by key\r\n * @param {string} key The key of the element \r\n * @param {number} priority Priority\r\n */\r\n function setPriority(key, priority) {\r\n var node = nodes[key];\r\n if (isMaximum ? node.priority > priority : node.priority < priority) {\r\n throw \"Priority increase is not supported\";\r\n }\r\n node.priority = priority;\r\n\r\n if (node.parent != null) {\r\n var parentNode = nodes[node.parent];\r\n if (isMaximum ? parentNode.priority < node.priority : parentNode.priority > node.priority) {\r\n _cut(parentNode, node);\r\n _cascadeCut(parentNode);\r\n }\r\n }\r\n if (isMaximum ? nodes[root].priority < node.priority : nodes[root].priority > node.priority) {\r\n root = node.key;\r\n }\r\n }\r\n\r\n function _cut(parentNode, node) {\r\n node.marked = false;\r\n node.parent = null;\r\n if (node.right == node.key) {\r\n parentNode.child = null;\r\n } else {\r\n parentNode.child = node.right;\r\n _exclude(node);\r\n }\r\n parentNode.degree -= 1;\r\n _insert(nodes[root], node);\r\n }\r\n\r\n function _cascadeCut(node) {\r\n if (node.parent != null) {\r\n if (node.marked) {\r\n var parentNode = nodes[node.parent];\r\n _cut(parentNode, node);\r\n _cascadeCut(parentNode);\r\n } else {\r\n node.marked = true;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Deletes heap element by key\r\n * @param {string} key The Key \r\n */\r\n function deleteKey(key) {\r\n setPriority(key, isMaximum ? Infinity : -1);\r\n extractRoot();\r\n }\r\n\r\n return {\r\n add: add,\r\n getPriority: getPriority,\r\n setPriority: setPriority,\r\n heapRoot: heapRoot,\r\n extractRoot: extractRoot,\r\n deleteKey: deleteKey,\r\n validate: validate\r\n };\r\n};","import Tree from './Tree';\r\nimport FibonacciHeap from './FibonacciHeap';\r\n/**\r\n * Creates graph structure\r\n * @class Graph\r\n * \r\n * @returns {Graph} Returns graph object\r\n */\r\nexport default function Graph() {\r\n var _edges = {},\r\n MAXIMUMTOTALWEIGHT = 1,\r\n MINIMUMWEIGHT = 2;\r\n\r\n /**\r\n * Adds edge to the graph\r\n * @param {string} from The id of the start node \r\n * @param {string} to The id of the end node\r\n * @param {object} edge The edge contextual object\r\n */\r\n function addEdge(from, to, edge) {\r\n if ((_edges[from] == null || _edges[from][to] == null) && edge != null) {\r\n\r\n if (_edges[from] == null) {\r\n _edges[from] = {};\r\n }\r\n _edges[from][to] = edge;\r\n\r\n if (_edges[to] == null) {\r\n _edges[to] = {};\r\n }\r\n _edges[to][from] = edge;\r\n }\r\n }\r\n\r\n /**\r\n * Returns edge context object\r\n * \r\n * @param {string} from The edge's from node id\r\n * @param {string} to The edge's to node id\r\n * @returns {object} The edge's context object\r\n */\r\n function edge(from, to) {\r\n var result = null;\r\n if (_edges[from] != null && _edges[from][to]) {\r\n result = _edges[from][to];\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns true if node exists in the graph\r\n * \r\n * @param {string} from The node id\r\n * @returns {boolean} Returns true if node exists\r\n */\r\n function hasNode(from) {\r\n return _edges.hasOwnProperty(from);\r\n }\r\n\r\n /**\r\n * Callback for iterating edges of the graph's node\r\n * \r\n * @callback onEdgeCallback\r\n * @param {string} to The neighboring node id\r\n * @param {Object} edge The edge's context object\r\n */\r\n\r\n /**\r\n * Loop edges of the node\r\n * \r\n * @param {object} thisArg The callback function invocation context\r\n * @param {string} itemid The node id\r\n * @param {onEdgeCallback} onEdge A callback function to call for every edge of the node\r\n */\r\n function loopNodeEdges(thisArg, itemid, onEdge) {\r\n var neighbours, neighbourKey;\r\n if (onEdge != null) {\r\n neighbours = _edges[itemid];\r\n if (neighbours != null) {\r\n for (neighbourKey in neighbours) {\r\n if (neighbours.hasOwnProperty(neighbourKey)) {\r\n onEdge.call(thisArg, neighbourKey, neighbours[neighbourKey]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Callback function for iterating graphs nodes\r\n * \r\n * @callback onNodeCallback\r\n * @param {string} to The next neighboring node id\r\n * @returns {boolean} Returns true to break loop\r\n */\r\n\r\n /**\r\n * Loop nodes of the graph\r\n * \r\n * @param {object} thisArg The callback function invocation context\r\n * @param {string} [itemid=undefined] The optional start node id. If start node is undefined, \r\n * function loops graphs node starting from first available node\r\n * @param {onNodeCallback} onItem A callback function to be called for every neighboring node\r\n */\r\n function loopNodes(thisArg, startNode, onItem) {\r\n var processed = {};\r\n if (startNode == null) {\r\n for (startNode in _edges) {\r\n if (_edges.hasOwnProperty(startNode)) {\r\n if (!processed.hasOwnProperty[startNode]) {\r\n _loopNodes(thisArg, startNode, processed, onItem);\r\n }\r\n }\r\n }\r\n } else {\r\n _loopNodes(thisArg, startNode, processed, onItem);\r\n }\r\n }\r\n\r\n function _loopNodes(thisArg, startNode, processed, onItem) {\r\n var margin = [],\r\n marginKey,\r\n newMargin,\r\n index, len,\r\n neighbours, neighbourKey;\r\n\r\n margin.push(startNode);\r\n processed[startNode] = true;\r\n if (onItem != null) {\r\n while (margin.length > 0) {\r\n newMargin = [];\r\n\r\n /* iterate neighbours of every node on margin */\r\n for (index = 0, len = margin.length; index < len; index += 1) {\r\n marginKey = margin[index];\r\n\r\n if (onItem.call(thisArg, marginKey)) {\r\n return;\r\n }\r\n\r\n neighbours = _edges[marginKey];\r\n for (neighbourKey in neighbours) {\r\n if (neighbours.hasOwnProperty(neighbourKey) && !processed.hasOwnProperty(neighbourKey)) {\r\n processed[neighbourKey] = true;\r\n newMargin.push(neighbourKey);\r\n }\r\n }\r\n }\r\n margin = newMargin;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Callback for finding edge weight\r\n * \r\n * @callback getGraphEdgeWeightCallback\r\n * @param {object} edge The edge context object\r\n * @param {string} fromItem The edge's start node id\r\n * @param {string} toItem The edge's end node id\r\n * @returns {number} Returns weight of the edge\r\n */\r\n\r\n /**\r\n * Get maximum spanning tree. Graph may have disconnected sub graphs, so start node is necessary.\r\n * \r\n * @param {string} startNode The node to start searching for maximum spanning tree. Graph is not necessary connected\r\n * @param {getGraphEdgeWeightCallback} getWeightFunc Callback function to get weight of an edge.\r\n * @returns {tree} Returns tree structure containing maximum spanning tree of the graph\r\n */\r\n function getSpanningTree(startNode, getWeightFunc) {\r\n var result = Tree(),\r\n margin = FibonacciHeap(true),\r\n marginNode,\r\n parents = {}, /* if parent for item is set then it was laready visited */\r\n neighbours, neighbourKey, neighbourWeight, currentWeight;\r\n\r\n /* add start node to margin */\r\n margin.add(startNode, 0, null /*parent of root node is null*/);\r\n parents[startNode] = null;\r\n\r\n /* search graph */\r\n while ((marginNode = margin.extractRoot()) != null) {\r\n\r\n /* iterate neighbours of every node on margin */\r\n neighbours = _edges[marginNode.key];\r\n\r\n for (neighbourKey in neighbours) {\r\n if (neighbours.hasOwnProperty(neighbourKey) && !result.node(neighbourKey)) {\r\n neighbourWeight = getWeightFunc != null ? getWeightFunc(neighbours[neighbourKey]) : neighbours[neighbourKey];\r\n\r\n currentWeight = margin.getPriority(neighbourKey);\r\n if (currentWeight == null) {\r\n margin.add(neighbourKey, neighbourWeight, null);\r\n parents[neighbourKey] = marginNode.key.toString();\r\n } else {\r\n if (currentWeight <= neighbourWeight) {\r\n /* improve node distance */\r\n margin.setPriority(neighbourKey, neighbourWeight);\r\n parents[neighbourKey] = marginNode.key.toString();\r\n }\r\n }\r\n }\r\n }\r\n\r\n /* add next margin item to resul tree */\r\n result.add(parents[marginNode.key], marginNode.key.toString(), {});\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function _findStartNode(thisArg, onEdgeWeight) {\r\n var result = null,\r\n fromItem, toItems, toItem,\r\n weight = 0,\r\n maxWeight = null;\r\n\r\n for (fromItem in _edges) {\r\n if (_edges.hasOwnProperty(fromItem)) {\r\n toItems = _edges[fromItem];\r\n\r\n weight = 0;\r\n for (toItem in toItems) {\r\n if (toItems.hasOwnProperty(toItem)) {\r\n weight += onEdgeWeight.call(thisArg, toItems[toItem], fromItem, toItem);\r\n }\r\n }\r\n if (weight > maxWeight || maxWeight == null) {\r\n result = fromItem;\r\n maxWeight = weight;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Get graph growth sequence. The sequence of graph traversing order.\r\n * \r\n * @param {object} thisArg The callback function invocation context\r\n * @param {getGraphEdgeWeightCallback} getWeightFunc Callback function to get weight of an edge. \r\n * @param {onNodeCallback} onItem A callback function to be called for every node of the growth sequence \r\n */\r\n function getTotalWeightGrowthSequence(thisArg, onEdgeWeight, onItem) {\r\n var startNode = _findStartNode(thisArg, onEdgeWeight);\r\n\r\n _getGrowthSequence(thisArg, startNode, onEdgeWeight, onItem, MAXIMUMTOTALWEIGHT);\r\n }\r\n\r\n /**\r\n * Get minimum weight graph growth sequence. The sequence of the traversing order of the graph nodes.\r\n * \r\n * @param {object} thisArg The callback function invocation context\r\n * @param {string} [startNode=undefined] The optional start node id \r\n * @param {getGraphEdgeWeightCallback} onEdgeWeight Callback function to get weight of an edge. \r\n * @param {onNodeCallback} onItem A callback function to be called for every node of the growth sequence\r\n */\r\n function getMinimumWeightGrowthSequence(thisArg, startNode, onEdgeWeight, onItem) {\r\n _getGrowthSequence(thisArg, startNode, onEdgeWeight, onItem, MINIMUMWEIGHT);\r\n }\r\n\r\n function _getGrowthSequence(thisArg, startNode, onEdgeWeight, onItem, growsMode) {\r\n var margin = {}, marginKey,\r\n itemsToRemove = [], /* if margin item has no neighbours to expand we remove it from margin*/\r\n hasNeighbours,\r\n processed = {}, /* if item is set then it was already visited */\r\n marginLength = 0, /* curent margin length */\r\n nextMarginKey,\r\n nextMarginWeight,\r\n bestWeight,\r\n neighbours, neighbourKey, neighbourWeight,\r\n index, len;\r\n\r\n if (onEdgeWeight != null && onItem != null) {\r\n if (startNode == null) {\r\n startNode = _findStartNode(thisArg, onEdgeWeight);\r\n }\r\n\r\n if (startNode != null) {\r\n\r\n onItem.call(thisArg, startNode);\r\n\r\n /* add start node to margin */\r\n margin[startNode] = true;\r\n marginLength += 1;\r\n\r\n /* add startNode to result tree */\r\n processed[startNode] = null;\r\n\r\n /* search graph */\r\n while (marginLength > 0) {\r\n itemsToRemove = [];\r\n nextMarginKey = null;\r\n nextMarginWeight = null;\r\n bestWeight = {};\r\n /* iterate neighbours of every node on margin */\r\n for (marginKey in margin) {\r\n if (margin.hasOwnProperty(marginKey)) {\r\n neighbours = _edges[marginKey];\r\n hasNeighbours = false;\r\n\r\n for (neighbourKey in neighbours) {\r\n if (neighbours.hasOwnProperty(neighbourKey) && !processed.hasOwnProperty(neighbourKey)) {\r\n neighbourWeight = onEdgeWeight.call(thisArg, neighbours[neighbourKey], marginKey, neighbourKey);\r\n hasNeighbours = true;\r\n\r\n switch (growsMode) {\r\n case MAXIMUMTOTALWEIGHT:\r\n if (bestWeight[neighbourKey] == null) {\r\n bestWeight[neighbourKey] = 0;\r\n }\r\n bestWeight[neighbourKey] += neighbourWeight;\r\n\r\n if (!nextMarginWeight || bestWeight[neighbourKey] > nextMarginWeight) {\r\n nextMarginKey = neighbourKey;\r\n nextMarginWeight = bestWeight[neighbourKey];\r\n }\r\n break;\r\n case MINIMUMWEIGHT:\r\n if (bestWeight[neighbourKey] == null) {\r\n bestWeight[neighbourKey] = neighbourWeight;\r\n } else {\r\n bestWeight[neighbourKey] = Math.min(bestWeight[neighbourKey], neighbourWeight);\r\n }\r\n\r\n if (!nextMarginWeight || bestWeight[neighbourKey] < nextMarginWeight) {\r\n nextMarginKey = neighbourKey;\r\n nextMarginWeight = bestWeight[neighbourKey];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (!hasNeighbours) {\r\n itemsToRemove.push(marginKey);\r\n }\r\n }\r\n }\r\n\r\n if (nextMarginKey == null) {\r\n /* no items to expand to exit*/\r\n break;\r\n } else {\r\n margin[nextMarginKey] = true;\r\n marginLength += 1;\r\n processed[nextMarginKey] = true;\r\n\r\n /* add next margin item to result sequence */\r\n onItem.call(thisArg, nextMarginKey);\r\n }\r\n\r\n for (index = 0, len = itemsToRemove.length; index < len; index += 1) {\r\n /* delete visited node from margin */\r\n delete margin[itemsToRemove[index]];\r\n marginLength -= 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Callback for returning optimal connection path for every end node.\r\n * \r\n * @callback onPathFoundCallback\r\n * @param {string[]} path An array of connection path node ids.\r\n * @param {string} to The end node id, the connection path is found for.\r\n */\r\n\r\n /**\r\n * Get shortest path between two nodes in graph. The start and the end nodes are supposed to have connection path.\r\n * \r\n * @param {object} thisArg The callback function invocation context\r\n * @param {string} startNode The start node id \r\n * @param {string[]} endNodes The array of end node ids.\r\n * @param {getGraphEdgeWeightCallback} getWeightFunc Callback function to get weight of an edge. \r\n * @param {onPathFoundCallback} onPathFound A callback function to be called for every end node \r\n * with the optimal connection path\r\n */\r\n function getShortestPath(thisArg, startNode, endNodes, getWeightFunc, onPathFound) {\r\n var margin = FibonacciHeap(false),\r\n distance = {},\r\n breadcramps = {},\r\n bestNodeOnMargin,\r\n key,\r\n children,\r\n newDistance,\r\n weight,\r\n path,\r\n currentNode,\r\n endNodesHash = {},\r\n index, len,\r\n endsCount = 0, endsFound = 0;\r\n\r\n /* create hash table of end nodes to find */\r\n for (index = 0, len = endNodes.length; index < len; index += 1) {\r\n key = endNodes[index];\r\n\r\n if (!endNodesHash.hasOwnProperty(key)) {\r\n endsCount += 1;\r\n endNodesHash[key] = true;\r\n }\r\n }\r\n\r\n /* add start node to margin */\r\n margin.add(startNode, 0, null);\r\n breadcramps[startNode] = null;\r\n\r\n /* search graph */\r\n while ((bestNodeOnMargin = margin.extractRoot()) != null) {\r\n /* iterate neighbours of selected node on margin */\r\n children = _edges[bestNodeOnMargin.key];\r\n for (key in children) {\r\n if (children.hasOwnProperty(key)) {\r\n weight = 1;\r\n if (getWeightFunc != null) {\r\n weight = getWeightFunc.call(thisArg, children[key], bestNodeOnMargin, key);\r\n newDistance = bestNodeOnMargin.priority + weight;\r\n } else {\r\n newDistance = bestNodeOnMargin.priority + 1;\r\n }\r\n if (weight >= 0) {\r\n distance = margin.getPriority(key);\r\n if (distance != null) {\r\n if (distance > newDistance) {\r\n margin.setPriority(key, newDistance);\r\n breadcramps[key] = bestNodeOnMargin.key;\r\n }\r\n } else {\r\n if (!breadcramps.hasOwnProperty(key)) {\r\n margin.add(key, newDistance, null);\r\n breadcramps[key] = bestNodeOnMargin.key;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (endNodesHash.hasOwnProperty(bestNodeOnMargin.key)) {\r\n /* trace path */\r\n path = [];\r\n currentNode = bestNodeOnMargin.key;\r\n while (currentNode != null) {\r\n path.push(currentNode);\r\n currentNode = breadcramps[currentNode];\r\n }\r\n onPathFound.call(thisArg, path, bestNodeOnMargin.key);\r\n\r\n endsFound += 1;\r\n if (endsFound >= endsCount) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Callback for iterating path edges\r\n * \r\n * @callback onPathEdgeCallback\r\n * @param {string} from The from node id\r\n * @param {string} to The to node id\r\n * @param {Object} edge The edge's context object\r\n * @returns {boolean} Returns true if edge is usable\r\n */\r\n\r\n /**\r\n * Search any path from node to node using depth first search\r\n * \r\n * @param {object} thisArg The callback function invocation context\r\n * @param {string} startNode The start node id \r\n * @param {string} endNode The end node id.\r\n * @param {onPathEdgeCallback} onEdge A callback function to call for every edge of the node\r\n */\r\n function dfsPath(thisArg, startNode, endNode, onEdge) {\r\n var margin = [],\r\n backtrace = {};\r\n\r\n margin.push(startNode);\r\n backtrace[startNode] = null;\r\n\r\n if (startNode != endNode) {\r\n /* search graph */\r\n while (margin.length > 0 && !backtrace.hasOwnProperty(endNode)) {\r\n // Remove last node out of margin\r\n var currentNode = margin[margin.length - 1];\r\n margin.length -= 1;\r\n\r\n // search its neighbours and add them to margin\r\n var neighbours = _edges[currentNode];\r\n for (var neighbour in neighbours) {\r\n if (neighbours.hasOwnProperty(neighbour)) {\r\n if (!backtrace.hasOwnProperty(neighbour)) {\r\n // node is not passed yet, check edge capacity and add new neighbour to the margin\r\n if (onEdge.call(thisArg, currentNode, neighbour, neighbours[neighbour])) {\r\n margin.push(neighbour);\r\n backtrace[neighbour] = currentNode;\r\n if (neighbour == endNode) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n currentNode = endNode;\r\n var path = [];\r\n while (backtrace.hasOwnProperty(currentNode)) {\r\n path.push(currentNode);\r\n currentNode = backtrace[currentNode];\r\n }\r\n var result = [];\r\n if (path.length > 0) {\r\n for (var index = path.length - 1; index >= 0; index -= 1) {\r\n result.push(path[index]);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Get Level Graph starting with `startNode`\r\n * \r\n * @param {object} thisArg The callback function invocation context\r\n * @param {string} startNode The start node id \r\n * @param {onPathEdgeCallback} onEdge A callback function to call for every edge of the graph\r\n */\r\n function getLevelGraph(thisArg, startNode, onEdge) {\r\n var level = {},\r\n margin = [],\r\n currentNode,\r\n currentLevel,\r\n neighbours;\r\n\r\n margin.push(startNode);\r\n level[startNode] = 1;\r\n\r\n /* search graph level by level */\r\n while (margin.length > 0) {\r\n var newMargin = [];\r\n for (var index = 0, len = margin.length; index < len; index += 1) {\r\n currentNode = margin[index];\r\n currentLevel = level[currentNode];\r\n neighbours = _edges[currentNode];\r\n for (var neighbour in neighbours) {\r\n if (neighbours.hasOwnProperty(neighbour)) {\r\n if (!level.hasOwnProperty(neighbour)) {\r\n if (onEdge.call(thisArg, currentNode, neighbour, neighbours[neighbour])) {\r\n newMargin.push(neighbour);\r\n level[neighbour] = currentLevel + 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n margin = newMargin;\r\n }\r\n\r\n // Create level graph, copy existing edges to the new graph\r\n var levelGraph = Graph();\r\n for (currentNode in _edges) {\r\n if (level.hasOwnProperty(currentNode)) {\r\n currentLevel = level[currentNode];\r\n neighbours = _edges[currentNode];\r\n for (neighbour in neighbours) {\r\n if (level.hasOwnProperty(neighbour)) {\r\n var neighbourLevel = level[neighbour];\r\n if (currentLevel + 1 == neighbourLevel) {\r\n levelGraph.addEdge(currentNode, neighbour, neighbours[neighbour]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return levelGraph;\r\n }\r\n\r\n /**\r\n * Depth first search loop\r\n * \r\n * @param {object} thisArg The callback function invocation context\r\n * @param {string} startNode The start node id \r\n * @param {onPathEdgeCallback} onEdge A callback function to call for every edge of the graph\r\n * @param {onNodeCallback} onNode A callback function to be called for every neighboring node\r\n */\r\n function dfsLoop(thisArg, startNode, onEdge, onNode) {\r\n var margin = [],\r\n visited = {},\r\n currentNode;\r\n\r\n margin.push(startNode);\r\n visited[startNode] = true;\r\n\r\n /* search graph */\r\n while (margin.length > 0) {\r\n // Remove last node out of margin\r\n currentNode = margin[margin.length - 1];\r\n margin.length -= 1;\r\n\r\n // search its neighbours and add them to margin\r\n var neighbours = _edges[currentNode];\r\n for (var neighbour in neighbours) {\r\n if (neighbours.hasOwnProperty(neighbour)) {\r\n if (!visited.hasOwnProperty(neighbour)) {\r\n // node is not passed yet, check edge capacity and add new neighbour to the margin\r\n if (onEdge.call(thisArg, currentNode, neighbour, neighbours[neighbour])) {\r\n margin.push(neighbour);\r\n visited[neighbour] = true;\r\n if (onNode.call(thisArg, neighbour)) {\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return {\r\n addEdge: addEdge,\r\n edge: edge,\r\n hasNode: hasNode,\r\n loopNodes: loopNodes,\r\n loopNodeEdges: loopNodeEdges,\r\n getSpanningTree: getSpanningTree,\r\n getTotalWeightGrowthSequence: getTotalWeightGrowthSequence,\r\n getMinimumWeightGrowthSequence: getMinimumWeightGrowthSequence,\r\n getShortestPath: getShortestPath,\r\n dfsPath: dfsPath,\r\n getLevelGraph: getLevelGraph,\r\n dfsLoop: dfsLoop\r\n };\r\n};\r\n","import { isObject, cloneObject, isEmptyObject } from '../common';\r\nimport Graph from './Graph';\r\nimport LinkedHashItems from './LinkedHashItems';\r\n /**\r\n * Family node\r\n * @class FamilyNode\r\n * @property {string} id Id\r\n * @property {object} node Node\r\n */\r\n function FamilyNode(id, node) {\r\n this.id = id;\r\n this.node = node;\r\n }\r\n\r\n/**\r\n * Creates a family object\r\n * \r\n * @class Family\r\n * \r\n * @param {Family} [source=undefined] Reference to optional family object to clone properties from\r\n * \r\n * @returns {Family} Returns new instance of family structure\r\n */\r\nexport default function Family(source) {\r\n var _roots = {}, // children hash of orphant parent id\r\n _rootsCount = {},\r\n _children = {}, // children hash by node id\r\n _childrenCount = {},\r\n _parents = {}, // parents hash by node id\r\n _parentsCount = {},\r\n _nodes = {}, // nodes by node id\r\n /** @constant\r\n @type {number}\r\n @default\r\n */\r\n BREAK = 1,\r\n /** @constant\r\n @type {number}\r\n @default\r\n */\r\n SKIP = 2;\r\n\r\n _init(source);\r\n\r\n function _init(source) {\r\n if (isObject(source)) {\r\n _roots = cloneObject(source.roots, false);\r\n _rootsCount = cloneObject(source.rootsCount, true);\r\n _children = cloneObject(source.children, false);\r\n _childrenCount = cloneObject(source.childrenCount, true);\r\n _parents = cloneObject(source.parents, false);\r\n _parentsCount = cloneObject(source.parentsCount, true);\r\n _nodes = cloneObject(source.nodes, true);\r\n }\r\n }\r\n\r\n function _loop(thisArg, collection, itemid, onItem) {\r\n var item, items;\r\n if (onItem != null) {\r\n items = collection[itemid];\r\n if (items != null) {\r\n for (item in items) {\r\n if (items.hasOwnProperty(item)) {\r\n if (onItem.call(thisArg, item, items[item])) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Adds new family member\r\n * @param {string[]} parents A collection of parents ids\r\n * @param {string} nodeid An id of the new node\r\n * @param {object} node A reference to the new node\r\n */\r\n function add(parents, nodeid, node) {\r\n var index, len,\r\n parentid,\r\n processed = {};\r\n\r\n if (!parents || parents.length === 0) {\r\n parents = [null];\r\n }\r\n\r\n if (_nodes[nodeid] == null && node != null) {\r\n _nodes[nodeid] = node;\r\n for (index = 0, len = parents.length; index < len; index += 1) {\r\n parentid = parents[index];\r\n\r\n\r\n if (processed[parentid] == null && parentid != nodeid) {\r\n processed[parentid] = true;\r\n if (_nodes[parentid] != null) {\r\n if (_parents[nodeid] == null) {\r\n _parents[nodeid] = {};\r\n _parentsCount[nodeid] = 0;\r\n }\r\n if (!_parents[nodeid][parentid]) {\r\n _parents[nodeid][parentid] = true;\r\n _parentsCount[nodeid] += 1;\r\n }\r\n\r\n if (_children[parentid] == null) {\r\n _children[parentid] = {};\r\n _childrenCount[parentid] = 0;\r\n }\r\n if (!_children[parentid][nodeid]) {\r\n _children[parentid][nodeid] = true;\r\n _childrenCount[parentid] += 1;\r\n }\r\n } else {\r\n if (_roots[parentid] == null) {\r\n _roots[parentid] = {};\r\n _rootsCount[parentid] = 0;\r\n }\r\n if (!_roots[parentid][nodeid]) {\r\n _roots[parentid][nodeid] = true;\r\n _rootsCount[parentid] += 1;\r\n }\r\n }\r\n }\r\n }\r\n if (_roots[nodeid] != null) {\r\n _children[nodeid] = _roots[nodeid];\r\n _childrenCount[nodeid] = _rootsCount[nodeid];\r\n delete _roots[nodeid];\r\n delete _rootsCount[nodeid];\r\n _loop(this, _children, nodeid, function (itemid) {\r\n if (_parents[itemid] == null) {\r\n _parents[itemid] = {};\r\n _parentsCount[itemid] = 0;\r\n }\r\n if (!_parents[itemid][nodeid]) {\r\n _parents[itemid][nodeid] = true;\r\n _parentsCount[itemid] += 1;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Returns family node by id\r\n * @param {string} nodeid The id of the node\r\n * @returns {object|undefined} A reference to the node or undefined if id does not exists\r\n */\r\n function node(nodeid) {\r\n return _nodes[nodeid];\r\n }\r\n\r\n /**\r\n * Makes node to be a child of every parent in the collection of parents\r\n * @param {string[]} parents A collection of parents ids\r\n * @param {string} nodeid An id of the new node\r\n */\r\n function adopt(parents, nodeid) {\r\n var index, len,\r\n parentid;\r\n if (_nodes[nodeid] != null) {\r\n for (index = 0, len = parents.length; index < len; index += 1) {\r\n parentid = parents[index];\r\n\r\n if (_parents[nodeid] == null) {\r\n _parents[nodeid] = {};\r\n _parentsCount[nodeid] = 0;\r\n }\r\n\r\n if (parentid != nodeid && _nodes[parentid] != null) {\r\n if (!_parents[nodeid][parentid]) {\r\n _parents[nodeid][parentid] = true;\r\n _parentsCount[nodeid] += 1;\r\n }\r\n\r\n if (_children[parentid] == null) {\r\n _children[parentid] = {};\r\n _childrenCount[parentid] = 0;\r\n }\r\n if (!_children[parentid][nodeid]) {\r\n _children[parentid][nodeid] = true;\r\n _childrenCount[parentid] += 1;\r\n }\r\n } else {\r\n throw \"Item cannot be parent of itself and parent should exist in the structure!\";\r\n }\r\n }\r\n } else {\r\n throw \"Child should be in hierarchy!\";\r\n }\r\n }\r\n\r\n /**\r\n * Removes node\r\n * @param {string} nodeid The id of the node\r\n */\r\n function removeNode(nodeid) {\r\n if (_nodes[nodeid] != null) {\r\n _loop(this, _children, nodeid, function (itemid) {\r\n delete _parents[itemid][nodeid];\r\n _parentsCount[itemid] -= 1;\r\n\r\n if (!_parentsCount[itemid]) {\r\n delete _parents[itemid];\r\n delete _parentsCount[itemid];\r\n\r\n if (_roots[null] == null) {\r\n _roots[null] = {};\r\n _rootsCount[null] = 0;\r\n }\r\n if (!_roots[null][itemid]) {\r\n _roots[null][itemid] = true;\r\n _rootsCount[null] += 1;\r\n }\r\n }\r\n });\r\n _loop(this, _parents, nodeid, function (itemid) {\r\n delete _children[itemid][nodeid];\r\n _childrenCount[itemid] -= 1;\r\n if (!_childrenCount[itemid]) {\r\n delete _children[itemid];\r\n delete _childrenCount[itemid];\r\n }\r\n });\r\n if (_roots[null] != null && _roots[null][nodeid] != null) {\r\n delete _roots[null][nodeid];\r\n _rootsCount[null] -= 1;\r\n\r\n if (!_rootsCount[null]) {\r\n delete _roots[null];\r\n delete _rootsCount[null];\r\n }\r\n }\r\n delete _children[nodeid];\r\n delete _childrenCount[nodeid];\r\n delete _parents[nodeid];\r\n delete _parentsCount[nodeid];\r\n delete _nodes[nodeid];\r\n }\r\n }\r\n\r\n function _removeChildReference(parentid, childid) {\r\n var result = false;\r\n if (_children[parentid] != null && _children[parentid][childid] != null) {\r\n delete _children[parentid][childid];\r\n _childrenCount[parentid] -= 1;\r\n\r\n delete _parents[childid][parentid];\r\n _parentsCount[childid] -= 1;\r\n\r\n if (!_childrenCount[parentid]) {\r\n delete _children[parentid];\r\n delete _childrenCount[parentid];\r\n }\r\n\r\n if (!_parents[childid]) {\r\n delete _parents[childid];\r\n delete _parentsCount[childid];\r\n\r\n if (_roots[null] == null) {\r\n _roots[null] = {};\r\n _rootsCount[null] = 0;\r\n }\r\n _roots[null][childid] = true;\r\n _rootsCount[null] += 1;\r\n }\r\n result = true;\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Removes first available parent child or child parent relation\r\n * \r\n * @param {string} fromid From node id\r\n * @param {string} toid To node id\r\n * @returns {true} If relation was broken\r\n */\r\n function removeRelation(fromid, toid) {\r\n var result = false;\r\n if (_nodes[fromid] != null && _nodes[toid] != null) {\r\n result = _removeChildReference(fromid, toid) || _removeChildReference(toid, fromid);\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Removes child relation\r\n * \r\n * @param {string} parentid The parent node id\r\n * @param {string} childid The child node id\r\n * @returns {true} If relation was broken\r\n */\r\n function removeChildRelation(parentid, childid) {\r\n var result = false;\r\n if (_nodes[parentid] != null && _nodes[childid] != null) {\r\n result = _removeChildReference(parentid, childid);\r\n }\r\n return result;\r\n }\r\n\r\n\r\n /**\r\n * Returns true if structure has nodes.\r\n * \r\n * @returns {boolean} Returns true if family structure has nodes\r\n */\r\n function hasNodes() {\r\n return !isEmptyObject(_nodes);\r\n }\r\n\r\n /**\r\n * Callback for iterating family nodes\r\n * \r\n * @callback onFamilyItemCallback\r\n * @param {string} itemid The node id\r\n * @param {object} item The node\r\n * @returns {boolean} Returns true to break the loop\r\n */\r\n\r\n /**\r\n * Loops through nodes of family structure\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {onFamilyItemCallback} onItem A callback function to call for every family node \r\n */\r\n function loop(thisArg, onItem) {\r\n var item;\r\n if (onItem != null) {\r\n for (item in _nodes) {\r\n if (_nodes.hasOwnProperty(item)) {\r\n if (onItem.call(thisArg, item, _nodes[item])) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function _loopItems(thisArg, collection, items, onItem) { // onItem(itemid, item, levelIndex)\r\n var newItems, itemid,\r\n processed = {},\r\n levelIndex = 0,\r\n hasItems = true;\r\n\r\n\r\n while (hasItems) {\r\n newItems = {};\r\n hasItems = false;\r\n\r\n for (itemid in items) {\r\n if (items.hasOwnProperty(itemid)) {\r\n if (!processed[itemid]) {\r\n processed[itemid] = true;\r\n\r\n switch (onItem.call(thisArg, itemid, _nodes[itemid], levelIndex)) {\r\n case 1/*BREAK*/:\r\n newItems = {};\r\n hasItems = false;\r\n break;\r\n case 2/*SKIP*/:\r\n break;\r\n default:\r\n _loop(this, collection, itemid, function (newItemId) {\r\n if (!processed[newItemId]) {\r\n newItems[newItemId] = true;\r\n hasItems = true;\r\n }\r\n }); //ignore jslint\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n items = newItems;\r\n levelIndex += 1;\r\n }\r\n }\r\n\r\n /**\r\n * Callback for iterating family nodes level by level\r\n * \r\n * @callback onFamilyItemWithLevelCallback\r\n * @param {string} itemid The node id\r\n * @param {object} item The node\r\n * @param {number} levelIndex The node level index\r\n * @returns {number} Returns BREAK to break the loop and exit. Returns SKIP to skip node's branch traversing.\r\n */\r\n\r\n /**\r\n * Loops through child nodes of family structure level by level\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {string} nodeid The node id to start children traversing\r\n * @param {onFamilyItemWithLevelCallback} onItem A callback function to call for every child node \r\n */\r\n function loopChildren(thisArg, nodeid, onItem) {\r\n if (onItem != null) {\r\n if (nodeid != null && _nodes[nodeid] != null && _children[nodeid] != null) {\r\n _loopItems(thisArg, _children, _children[nodeid], onItem);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Loops through parent nodes of family structure level by level\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {string} nodeid The node id to start parents traversing\r\n * @param {onFamilyItemWithLevelCallback} onItem A callback function to call for every parent node \r\n */\r\n function loopParents(thisArg, nodeid, onItem) {\r\n if (onItem != null) {\r\n if (nodeid != null && _nodes[nodeid] != null && _parents[nodeid] != null) {\r\n _loopItems(thisArg, _parents, _parents[nodeid], onItem);\r\n }\r\n }\r\n }\r\n\r\n function _loopTopo(thisArg, backwardCol, backwardCount, forwardCol, forwardCount, onItem) { // onItem(itemid, item, position)\r\n var index, len, nodeid, references,\r\n queue, newQueue, position;\r\n\r\n if (onItem != null) {\r\n /* count parents for every node */\r\n queue = [];\r\n references = {};\r\n for (nodeid in _nodes) {\r\n if (_nodes.hasOwnProperty(nodeid)) {\r\n references[nodeid] = (backwardCount[nodeid] || 0);\r\n\r\n if (!references[nodeid]) {\r\n queue.push(nodeid);\r\n }\r\n }\r\n }\r\n\r\n /* iterate queue and reduce reference counts via children */\r\n position = 0;\r\n while (queue.length > 0) {\r\n newQueue = [];\r\n\r\n for (index = 0, len = queue.length; index < len; index += 1) {\r\n nodeid = queue[index];\r\n\r\n if (onItem.call(thisArg, nodeid, _nodes[nodeid], position)) {\r\n newQueue = [];\r\n break;\r\n }\r\n\r\n position += 1;\r\n\r\n _loop(this, forwardCol, nodeid, function (itemid) {\r\n references[itemid] -= 1;\r\n if (references[itemid] === 0) {\r\n newQueue.push(itemid);\r\n }\r\n }); //ignore jslint\r\n }\r\n queue = newQueue;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Callback for iterating family nodes in topological sort order\r\n * \r\n * @callback onFamilyTopoCallback\r\n * @param {string} itemid The node id\r\n * @param {object} item The node\r\n * @param {number} position The node position in the sequence\r\n * @returns {boolean} Returns true to break the loop and exit.\r\n */\r\n\r\n /**\r\n * Loops through topologically sorted nodes of family structure\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {onFamilyTopoCallback} onItem A callback function to call for every node \r\n */\r\n function loopTopo(thisArg, onItem) {\r\n _loopTopo(thisArg, _parents, _parentsCount, _children, _childrenCount, onItem);\r\n }\r\n\r\n /**\r\n * Loops through reversed order topologically sorted nodes of family structure\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {onFamilyTopoCallback} onItem A callback function to call for every node \r\n */\r\n function loopTopoReversed(thisArg, onItem) {\r\n _loopTopo(thisArg, _children, _childrenCount, _parents, _parentsCount, onItem);\r\n }\r\n\r\n\r\n /**\r\n * Loops through nodes of family structure level by level. This function aligns nodes top or bottom.\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {boolean} parentAligned True if nodes should be placed at the next level after their parents level,\r\n * otherwise nodes placed at levels close to their children.\r\n * @param {onFamilyItemWithLevelCallback} onItem A callback function to call for every node \r\n */\r\n function loopLevels(thisArg, parentAligned, onItem) {\r\n var topoSorted = [],\r\n topoSortedPositions = {},\r\n processed = {},\r\n margin = [],\r\n /* result items distribution by levels */\r\n levels = {}, levelIndex,\r\n groups = {}, hasGroups, newGroups, groupIndex, group,\r\n itemsAtLevel, itemid,\r\n minimumLevel = null,\r\n loopFunc = parentAligned ? loopTopo : loopTopoReversed,\r\n index, len,\r\n mIndex, mLen, mItem, mLevel,\r\n topoSortedItem,\r\n bestPosition, bestItem, bestLevel, bestIsParent,\r\n newMargin, hasNeighbours;\r\n\r\n function Group() {\r\n this.items = {};\r\n this.minimumLevel = null;\r\n }\r\n\r\n Group.prototype.addItemToLevel = function (itemid, level) {\r\n var items = this.items[level];\r\n if (!items) {\r\n items = [itemid];\r\n this.items[level] = items;\r\n } else {\r\n items.push(itemid);\r\n }\r\n this.minimumLevel = this.minimumLevel == null ? level : Math.min(this.minimumLevel, level);\r\n };\r\n\r\n function addItemToLevel(itemid, index, level) {\r\n var group = groups[index];\r\n if (!group) {\r\n group = new Group();\r\n groups[index] = group;\r\n }\r\n\r\n group.addItemToLevel(itemid, level);\r\n\r\n minimumLevel = minimumLevel == null ? level : Math.min(minimumLevel, level);\r\n\r\n levels[itemid] = level;\r\n processed[itemid] = true;\r\n }\r\n\r\n\r\n if (onItem != null) {\r\n /* sort items topologically */\r\n loopFunc(this, function (itemid, item, position) {\r\n topoSorted.push(itemid);\r\n topoSortedPositions[itemid] = position;\r\n });\r\n\r\n /* search for the first available non processed item in topological order */\r\n for (index = 0, len = topoSorted.length; index < len; index += 1) {\r\n topoSortedItem = topoSorted[index];\r\n if (processed[topoSortedItem] == null) {\r\n margin.push(topoSortedItem);\r\n\r\n addItemToLevel(topoSortedItem, index, 0);\r\n\r\n /* use regular graph breadth first search */\r\n while (margin.length > 0) {\r\n bestPosition = null;\r\n bestItem = null;\r\n bestLevel = null;\r\n bestIsParent = !parentAligned;\r\n newMargin = [];\r\n for (mIndex = 0, mLen = margin.length; mIndex < mLen; mIndex += 1) {\r\n mItem = margin[mIndex];\r\n mLevel = levels[mItem];\r\n hasNeighbours = false;\r\n\r\n if (parentAligned) {\r\n _loop(this, _parents, mItem, function (parentid) {\r\n var topoSortedPosition;\r\n if (!processed[parentid]) {\r\n hasNeighbours = true;\r\n topoSortedPosition = topoSortedPositions[parentid];\r\n if (bestPosition == null || !bestIsParent || bestPosition < topoSortedPosition || (bestPosition == topoSortedPosition && bestLevel > mLevel - 1)) {\r\n bestPosition = topoSortedPosition;\r\n bestItem = parentid;\r\n bestLevel = mLevel - 1;\r\n bestIsParent = true;\r\n }\r\n }\r\n }); //ignore jslint\r\n _loop(this, _children, mItem, function (childid) {\r\n var topoSortedPosition;\r\n if (!processed[childid]) {\r\n hasNeighbours = true;\r\n topoSortedPosition = topoSortedPositions[childid];\r\n if (bestPosition == null || (!bestIsParent && (bestPosition > topoSortedPosition || (bestPosition == topoSortedPosition && bestLevel < mLevel + 1)))) {\r\n bestPosition = topoSortedPosition;\r\n bestItem = childid;\r\n bestLevel = mLevel + 1;\r\n bestIsParent = false;\r\n }\r\n }\r\n }); //ignore jslint\r\n } else {\r\n _loop(this, _children, mItem, function (childid) {\r\n var topoSortedPosition;\r\n if (!processed[childid]) {\r\n hasNeighbours = true;\r\n topoSortedPosition = topoSortedPositions[childid];\r\n if (bestPosition == null || bestIsParent || bestPosition < topoSortedPosition || (bestPosition == topoSortedPosition && bestLevel < mLevel + 1)) {\r\n bestPosition = topoSortedPosition;\r\n bestItem = childid;\r\n bestLevel = mLevel + 1;\r\n bestIsParent = false;\r\n }\r\n }\r\n }); //ignore jslint\r\n _loop(this, _parents, mItem, function (parentid) {\r\n var topoSortedPosition;\r\n if (!processed[parentid]) {\r\n hasNeighbours = true;\r\n topoSortedPosition = topoSortedPositions[parentid];\r\n if (bestPosition == null || (bestIsParent && (bestPosition > topoSortedPosition || (bestPosition == topoSortedPosition && bestLevel > mLevel - 1)))) {\r\n bestPosition = topoSortedPosition;\r\n bestItem = parentid;\r\n bestLevel = mLevel - 1;\r\n bestIsParent = true;\r\n }\r\n }\r\n }); //ignore jslint\r\n }\r\n if (hasNeighbours) {\r\n newMargin.push(mItem);\r\n }\r\n }\r\n if (bestItem != null) {\r\n newMargin.push(bestItem);\r\n\r\n addItemToLevel(bestItem, index, bestLevel);\r\n }\r\n margin = newMargin;\r\n }\r\n }\r\n }\r\n\r\n hasGroups = true;\r\n levelIndex = minimumLevel;\r\n while (hasGroups) {\r\n newGroups = {};\r\n hasGroups = false;\r\n for (groupIndex in groups) {\r\n if (groups.hasOwnProperty(groupIndex)) {\r\n group = groups[groupIndex];\r\n itemsAtLevel = group.items[(group.minimumLevel - minimumLevel) + levelIndex];\r\n if (itemsAtLevel != null) {\r\n newGroups[groupIndex] = group;\r\n hasGroups = true;\r\n\r\n for (index = 0, len = itemsAtLevel.length; index < len; index += 1) {\r\n itemid = itemsAtLevel[index];\r\n if (onItem.call(thisArg, itemid, _nodes[itemid], levelIndex - minimumLevel)) {\r\n hasGroups = false;\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n groups = newGroups;\r\n levelIndex += 1;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Loops root nodes of family structure. \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {onFamilyItemCallback} onItem A callback function to call for every family root node \r\n */\r\n function loopRoots(thisArg, onItem) {\r\n var result = null,\r\n minimum, counter = 0,\r\n famMembers = {},\r\n famCount = {},\r\n isRoot,\r\n roots = {},\r\n processed = {},\r\n famItemId, member, members, rootid,\r\n membersRoots, memberRoots, memberRoot,\r\n index, len;\r\n\r\n loopTopoReversed(this, function (famItemId, famItem, position) {\r\n /* every node has at least itself in members */\r\n if (!famMembers.hasOwnProperty(famItemId)) {\r\n famMembers[famItemId] = {};\r\n famCount[famItemId] = 0;\r\n }\r\n famMembers[famItemId][famItemId] = true;\r\n famCount[famItemId] += 1;\r\n\r\n isRoot = true;\r\n loopParents(this, famItem.id, function (parentid, parent, levelIndex) {\r\n var items, itemid;\r\n isRoot = false;\r\n if (!famMembers.hasOwnProperty(parentid)) {\r\n famMembers[parentid] = {};\r\n famCount[parentid] = 0;\r\n }\r\n /* push famItem members to parent members collection */\r\n if (!famCount[parentid] && _parentsCount[famItemId] == 1) {\r\n famMembers[parentid] = famMembers[famItemId];\r\n famCount[parentid] = famCount[famItemId];\r\n } else {\r\n items = famMembers[famItemId];\r\n for (itemid in items) {\r\n if (items.hasOwnProperty(itemid)) {\r\n if (!famMembers[parentid][itemid]) {\r\n famMembers[parentid][itemid] = true;\r\n famCount[parentid] += 1;\r\n }\r\n }\r\n }\r\n }\r\n return SKIP;\r\n });\r\n if (isRoot) {\r\n roots[famItemId] = true;\r\n counter += 1;\r\n\r\n\r\n }\r\n });\r\n\r\n /* create collection of roots per member */\r\n membersRoots = {};\r\n for (rootid in roots) {\r\n if (roots.hasOwnProperty(rootid)) {\r\n members = famMembers[rootid];\r\n\r\n for (member in members) {\r\n if (members.hasOwnProperty(member)) {\r\n\r\n if (!membersRoots[member]) {\r\n membersRoots[member] = [];\r\n }\r\n membersRoots[member].push(rootid.toString());\r\n }\r\n }\r\n }\r\n }\r\n\r\n /* loop minimal sub tree roots */\r\n while (counter > 0) {\r\n minimum = null;\r\n for (famItemId in roots) {\r\n if (roots.hasOwnProperty(famItemId)) {\r\n if (!minimum || famCount[famItemId] < minimum) {\r\n minimum = famCount[famItemId];\r\n result = famItemId;\r\n }\r\n }\r\n }\r\n if (result != null) {\r\n if (onItem != null) {\r\n onItem.call(thisArg, result, _nodes[result]);\r\n }\r\n members = famMembers[result];\r\n\r\n for (member in members) {\r\n if (members.hasOwnProperty(member)) {\r\n if (!processed[member]) {\r\n memberRoots = membersRoots[member];\r\n for (index = 0, len = memberRoots.length; index < len; index += 1) {\r\n memberRoot = memberRoots[index];\r\n famCount[memberRoot] -= 1;\r\n }\r\n processed[member] = true;\r\n }\r\n }\r\n }\r\n\r\n delete roots[result];\r\n counter -= 1;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Finds root node having largest number of nodes in its hierarchy\r\n * \r\n * @returns {string} Returns largest sub-hierarchy root node id. \r\n */\r\n function findLargestRoot() {\r\n var result = null,\r\n maximum,\r\n famMembers = {},\r\n famCount = {},\r\n isRoot;\r\n\r\n maximum = null;\r\n\r\n loopTopoReversed(this, function (famItemId, famItem, position) {\r\n /* every node has at least itself in members */\r\n if (!famMembers.hasOwnProperty(famItemId)) {\r\n famMembers[famItemId] = {};\r\n famCount[famItemId] = 0;\r\n }\r\n famMembers[famItemId][famItemId] = true;\r\n famCount[famItemId] += 1;\r\n\r\n isRoot = true;\r\n loopParents(this, famItem.id, function (parentid, parent, levelIndex) {\r\n var items, itemid;\r\n isRoot = false;\r\n if (!famMembers.hasOwnProperty(parentid)) {\r\n famMembers[parentid] = {};\r\n famCount[parentid] = 0;\r\n }\r\n /* push famItem members to parent members collection */\r\n if (!famCount[parentid] && _parentsCount[famItemId] == 1) {\r\n famMembers[parentid] = famMembers[famItemId];\r\n famCount[parentid] = famCount[famItemId];\r\n } else {\r\n items = famMembers[famItemId];\r\n for (itemid in items) {\r\n if (items.hasOwnProperty(itemid)) {\r\n famMembers[parentid][itemid] = true;\r\n famCount[parentid] += 1;\r\n }\r\n }\r\n }\r\n return SKIP;\r\n });\r\n if (isRoot && (!maximum || famCount[famItemId] > maximum)) {\r\n maximum = famCount[famItemId];\r\n result = famItemId;\r\n }\r\n\r\n });\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Checks whether parents share a child node. Common child should belong only to the given collection\r\n * of parents, if child's parents don't match given collection of parents, \r\n * it is not considered as common child. \r\n * @param {string[]} parents Collection of parents\r\n * @returns {boolean} Returns true if common child exist. \r\n */\r\n function hasCommonChild(parents) {\r\n var result = false,\r\n parentsHash, childrenHash,\r\n parentsCount,\r\n pIndex, pLen,\r\n parent, child;\r\n\r\n /* convert parents collection to hash, remove duplicates and ignore non-existing items */\r\n parentsHash = {};\r\n parentsCount = 0;\r\n for (pIndex = 0, pLen = parents.length; pIndex < pLen; pIndex += 1) {\r\n parent = parents[pIndex];\r\n if (_nodes[parent] != null && !parentsHash[parent]) {\r\n parentsHash[parent] = true;\r\n parentsCount += 1;\r\n }\r\n }\r\n\r\n /* collect number of parents referencing each child */\r\n childrenHash = {};\r\n for (parent in parentsHash) {\r\n if (parentsHash.hasOwnProperty(parent)) {\r\n _loop(this, _children, parent, function (child) {\r\n if (!childrenHash[child]) {\r\n childrenHash[child] = 1;\r\n } else {\r\n childrenHash[child] += 1;\r\n }\r\n }); //ignore jslint\r\n }\r\n }\r\n\r\n /* find common child having number of references equal to number of existing parents */\r\n for (child in childrenHash) {\r\n if (childrenHash.hasOwnProperty(child)) {\r\n if (_parents[child] != null && (_parentsCount[child] || 0) == childrenHash[child] && childrenHash[child] == parentsCount) {\r\n result = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function _bundleNodes(fromItem, items, bundleItemId, bundleItem, backwardCol, backwardCount, forwardCol, forwardCount, checkChildren) {\r\n var isValid = false,\r\n index, len,\r\n child;\r\n\r\n if (_nodes[fromItem] != null && forwardCol[fromItem] != null) {\r\n /* validate target items */\r\n isValid = true;\r\n if (checkChildren) {\r\n /* if we add new bundle all items should present */\r\n for (index = 0, len = items.length; index < len; index += 1) {\r\n child = items[index];\r\n if (_nodes[child] == null || forwardCol[fromItem][child] == null) {\r\n isValid = false;\r\n }\r\n }\r\n }\r\n if (isValid) {\r\n if (bundleItem != null) {\r\n /* add bundle node */\r\n _nodes[bundleItemId] = bundleItem;\r\n }\r\n\r\n if (_nodes[bundleItemId] != null) {\r\n /* update references */\r\n if (!backwardCol[bundleItemId]) {\r\n backwardCol[bundleItemId] = {};\r\n backwardCount[bundleItemId] = 0;\r\n }\r\n if (!forwardCol[bundleItemId]) {\r\n forwardCol[bundleItemId] = {};\r\n forwardCount[bundleItemId] = 0;\r\n }\r\n\r\n if (!backwardCol[bundleItemId][fromItem]) {\r\n backwardCol[bundleItemId][fromItem] = true;\r\n backwardCount[bundleItemId] += 1;\r\n }\r\n\r\n if (!forwardCol[fromItem][bundleItemId]) {\r\n forwardCol[fromItem][bundleItemId] = true;\r\n forwardCount[fromItem] += 1;\r\n }\r\n\r\n for (index = 0, len = items.length; index < len; index += 1) {\r\n child = items[index];\r\n\r\n if (bundleItemId != child) {\r\n if (forwardCol[fromItem][child] != null) {\r\n delete forwardCol[fromItem][child];\r\n forwardCount[fromItem] -= 1;\r\n }\r\n\r\n if (backwardCol[child][fromItem] != null) {\r\n delete backwardCol[child][fromItem];\r\n backwardCount[child] -= 1;\r\n }\r\n\r\n if (!backwardCol[child][bundleItemId]) {\r\n backwardCol[child][bundleItemId] = true;\r\n backwardCount[child] += 1;\r\n }\r\n\r\n if (!forwardCol[bundleItemId][child]) {\r\n forwardCol[bundleItemId][child] = true;\r\n forwardCount[bundleItemId] += 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return isValid;\r\n }\r\n\r\n /**\r\n * Adds extra bundle item in between parent and its children. The parent node becomes parent of the bundle node,\r\n * and bundle becomes parent of the children. Existing parent child relations are removed.\r\n * @param {string} parent The parent node id\r\n * @param {string[]} children The collection of child nodes ids\r\n * @param {string} bundleItemId The bundle node id\r\n * @param {object} bundleItem The bundle item context object\r\n * @returns {boolean} Returns true if nodes bundle is valid\r\n */\r\n function bundleChildren(parent, children, bundleItemId, bundleItem) {\r\n return _bundleNodes(parent, children, bundleItemId, bundleItem, _parents, _parentsCount, _children, _childrenCount, true);\r\n }\r\n\r\n /**\r\n * Adds extra bundle item in between child node and its parents. The child node becomes child of the bundle node,\r\n * and bundle becomes child of the parents. Existing parent child relations are removed.\r\n * @param {string} child The parent node id\r\n * @param {string[]} parents The collection of child nodes ids\r\n * @param {string} bundleItemId The bundle node id\r\n * @param {object} bundleItem The bundle item context object\r\n * @returns {boolean} Returns true if the bundle is valid\r\n */\r\n function bundleParents(child, parents, bundleItemId, bundleItem) {\r\n return _bundleNodes(child, parents, bundleItemId, bundleItem, _children, _childrenCount, _parents, _parentsCount, true);\r\n }\r\n\r\n function ReferenceItem() {\r\n this.id = \"\";\r\n this.key = \"\";\r\n this.children = [];\r\n this.childrenHash = {};\r\n this.processed = false;\r\n }\r\n\r\n function ReferencesEdge(arg0) {\r\n this.items = [];\r\n this.weight = 0;\r\n this.difference = 0;\r\n\r\n if (arguments.length > 0) {\r\n this.difference = arg0;\r\n }\r\n }\r\n\r\n function _getReferencesGraph(currentItems) {\r\n var result = Graph(),\r\n item, parents,\r\n index1, index2, len,\r\n from, to, difference,\r\n processed = {};\r\n\r\n for (item in currentItems) {\r\n if (currentItems.hasOwnProperty(item)) {\r\n\r\n _loop(this, _children, item, function (child) {\r\n if (!processed.hasOwnProperty(child)) {\r\n processed[child] = true;\r\n /* create array of parents from hash references */\r\n parents = [];\r\n _loop(this, _parents, child, function (parent) {\r\n parents.push(parent);\r\n });\r\n\r\n /* create all possible combinations between items */\r\n for (index1 = 0, len = parents.length; index1 < len - 1; index1 += 1) {\r\n from = parents[index1];\r\n if (currentItems.hasOwnProperty(from)) {\r\n\r\n for (index2 = index1 + 1; index2 < len; index2 += 1) {\r\n to = parents[index2];\r\n if (currentItems.hasOwnProperty(to)) {\r\n difference = Math.abs(currentItems[from].children.length - currentItems[to].children.length);\r\n\r\n var edge = result.edge(from, to);\r\n if (edge == null) {\r\n edge = new ReferencesEdge(difference);\r\n result.addEdge(from, to, edge);\r\n }\r\n edge.items.push(child);\r\n edge.weight += 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }); //ignore jslint\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Callback function for creation of new family nodes\r\n * \r\n * @callback onNewFamilyNodeCallback\r\n * @returns {object} Returns new family node.\r\n */\r\n\r\n /**\r\n * Optimizes references between family members.\r\n * It creates bundles eliminating excessive intersections between nodes relations.\r\n * \r\n * @param {onNewFamilyNodeCallback} onNewBundleItem Callback function to create a new family node context object. \r\n */\r\n function optimizeReferences(onNewBundleItem) {\r\n var sharedItemsByKey = {},\r\n sharedItemsById = {},\r\n currentItems = {},\r\n nodeid, newReferenceItem,\r\n nextItems, graph, node,\r\n maximumTree,\r\n counter = 0,\r\n power = 10,\r\n processed;\r\n\r\n if (onNewBundleItem != null) {\r\n for (nodeid in _nodes) {\r\n counter += 1;\r\n if (_nodes.hasOwnProperty(nodeid)) {\r\n newReferenceItem = new ReferenceItem();\r\n\r\n _loop(this, _children, nodeid, function (child) {\r\n newReferenceItem.children.push(child);\r\n newReferenceItem.childrenHash[child] = true;\r\n }); //ignore jslint\r\n\r\n newReferenceItem.children.sort();\r\n newReferenceItem.id = nodeid;\r\n newReferenceItem.key = newReferenceItem.children.join(\",\");\r\n\r\n currentItems[newReferenceItem.id] = newReferenceItem;\r\n }\r\n }\r\n\r\n power = Math.pow(10, (counter).toString().length);\r\n\r\n while (!isEmptyObject(currentItems)) {\r\n nextItems = {};\r\n processed = {};\r\n\r\n graph = _getReferencesGraph(currentItems);\r\n\r\n for (nodeid in currentItems) {\r\n if (currentItems.hasOwnProperty(nodeid)) {\r\n node = currentItems[nodeid];\r\n\r\n if (!node.processed) {\r\n\r\n maximumTree = graph.getSpanningTree(nodeid, function (edge) {\r\n return edge.weight * power + power - edge.difference;\r\n }); //ignore jslint\r\n\r\n maximumTree.loopLevels(this, function (treeKey, treeKeyNode, levelid) {\r\n currentItems[treeKey].processed = true;\r\n\r\n maximumTree.loopChildren(this, treeKey, function (child, childNode) {\r\n var relation = graph.edge(treeKey, child),\r\n nextBundleItem = null, newItem,\r\n key, index, len,\r\n childrenToBind, isSharedItem,\r\n relationItem;\r\n\r\n currentItems[child].processed = true;\r\n\r\n if (relation.weight > 1) {\r\n relation.items.sort();\r\n key = relation.items.join(',');\r\n\r\n if (!sharedItemsByKey.hasOwnProperty(key)) {\r\n newItem = onNewBundleItem();\r\n _nodes[newItem.id] = newItem; /* add new bundle node to the family */\r\n\r\n nextBundleItem = new ReferenceItem();\r\n nextBundleItem.id = newItem.id;\r\n nextBundleItem.key = key;\r\n for (index = 0, len = relation.items.length; index < len; index += 1) {\r\n relationItem = relation.items[index];\r\n nextBundleItem.children.push(relationItem);\r\n nextBundleItem.childrenHash[relationItem] = true;\r\n processed[relationItem] = true;\r\n }\r\n nextBundleItem.children.sort();\r\n\r\n sharedItemsByKey[nextBundleItem.key] = nextBundleItem;\r\n sharedItemsById[nextBundleItem.id] = nextBundleItem;\r\n nextItems[nextBundleItem.id] = nextBundleItem;\r\n processed[nextBundleItem.id] = nextBundleItem;\r\n\r\n childrenToBind = nextBundleItem.children.slice(0);\r\n loopChildren(this, treeKeyNode.replacementItem || treeKey, function (childid, child, level) {\r\n // if child item is bundle and it is not child of new bundle item\r\n if (!nextBundleItem.childrenHash[childid] && sharedItemsById[childid] != null) {\r\n isSharedItem = true;\r\n // if all children of that child are in the next bundle item we add it to that new bundle item as well\r\n loopChildren(this, childid, function (childid, child, level) {\r\n if (!nextBundleItem.childrenHash[childid]) {\r\n isSharedItem = false;\r\n return 1/*BREAK*/;\r\n }\r\n if (!processed.hasOwnProperty(childid)) {\r\n return SKIP;\r\n }\r\n });\r\n if (isSharedItem) {\r\n childrenToBind.push(childid);\r\n }\r\n }\r\n return 2/*SKIP*/;\r\n });\r\n\r\n _bundleNodes(treeKeyNode.replacementItem || treeKey, childrenToBind, nextBundleItem.id, newItem, _parents, _parentsCount, _children, _childrenCount, false);\r\n\r\n if ((_childrenCount[treeKey] || 0) <= 1 && treeKeyNode.replacementItem == null) {\r\n treeKeyNode.replacementItem = nextBundleItem.id;\r\n }\r\n } else {\r\n nextBundleItem = sharedItemsByKey[key];\r\n }\r\n\r\n /* don't add shared item to itself on next items loop*/\r\n if (nextBundleItem.id != child) {\r\n\r\n childrenToBind = nextBundleItem.children.slice(0);\r\n loopChildren(this, childNode.replacementItem || child, function (childid, child, level) {\r\n if (sharedItemsById[childid] != null && !nextBundleItem.childrenHash[childid]) {\r\n\r\n isSharedItem = true;\r\n loopChildren(this, childid, function (childid, child, level) {\r\n if (!nextBundleItem.childrenHash[childid]) {\r\n isSharedItem = false;\r\n return 1/*BREAK*/;\r\n }\r\n if (!processed.hasOwnProperty(childid)) {\r\n return 2/*SKIP*/;\r\n }\r\n return SKIP;\r\n });\r\n if (isSharedItem) {\r\n childrenToBind.push(childid);\r\n }\r\n }\r\n return 2/*SKIP*/;\r\n });\r\n\r\n\r\n _bundleNodes(childNode.replacementItem || child, childrenToBind, nextBundleItem.id, null, _parents, _parentsCount, _children, _childrenCount, false);\r\n\r\n /* if all items bundled then use bundle item for following transformations of references instead of original item if references graph*/\r\n if ((_childrenCount[child] || 0) <= 1 && childNode.replacementItem == null) {\r\n childNode.replacementItem = nextBundleItem.id;\r\n }\r\n }\r\n }\r\n });\r\n }); //ignore jslint\r\n }\r\n }\r\n }\r\n currentItems = nextItems;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Eliminates many to many relations in family structure\r\n * It is needed to simplify layout process of the diagram\r\n * \r\n * @param {onNewFamilyNodeCallback} onNewBundleItem Callback function for creation of new bundle node \r\n */\r\n function eliminateManyToMany(onNewBundleItem) {\r\n var parent, bundleNode;\r\n\r\n for (parent in _children) {\r\n if (_children.hasOwnProperty(parent)) {\r\n\r\n if ((_childrenCount[parent] || 0) > 1) {\r\n _loop(this, _children, parent, function (child) {\r\n if ((_parentsCount[child] || 0) > 1) {\r\n bundleNode = onNewBundleItem();\r\n bundleChildren(parent, [child], bundleNode.id, bundleNode);\r\n }\r\n }); //ignore jslint\r\n }\r\n }\r\n }\r\n }\r\n\r\n function FamilyEdge(parentid, childid) {\r\n this.parentid = parentid;\r\n this.childid = childid;\r\n this.key = parentid + \",\" + childid;\r\n }\r\n\r\n /**\r\n * Eliminates crossing parent child relations between nodes based of nodes order in treeLevels structure.\r\n * @param {treeLevels} treeLevels Tree levels structure keeps orders of nodes level by level.\r\n * @returns {family} Returns planar family structure. \r\n */\r\n function getPlanarFamily(treeLevels) {\r\n var result = new Family(),\r\n familyEdgeIndex, familyEdgeLen,\r\n familyEdgeKey;\r\n\r\n treeLevels.loopLevels(this, function (levelIndex, treeLevel) {\r\n var sequence = new LinkedHashItems(),\r\n crossings = {},\r\n familyEdges = {},\r\n firstBucket = [];\r\n\r\n treeLevels.loopLevelItems(this, levelIndex, function (parentid, parentItem, position) {\r\n loopChildren(this, parentid, function (childid, childItem) {\r\n var childPosition = treeLevels.getItemPosition(childid);\r\n var familyEdge = new FamilyEdge(parentid, childid);\r\n\r\n familyEdges[familyEdge.key] = familyEdge;\r\n\r\n var crossEdges = [];\r\n if (sequence.isEmpty()) {\r\n sequence.add(childPosition, [familyEdge]);\r\n } else {\r\n sequence.iterateBack(function (sequenceItem, itemPosition) {\r\n if (itemPosition < childPosition) {\r\n // add new sequence after itemPosition and exit\r\n sequence.insertAfter(itemPosition, childPosition, [familyEdge]);\r\n return true;\r\n } else if (itemPosition == childPosition) {\r\n // add new link to existing sequenceItem and exit\r\n sequenceItem.push(familyEdge);\r\n return true;\r\n } else {\r\n // merge links into output\r\n for (var crossEdgesIndex = 0, crossEdgesLen = sequenceItem.length; crossEdgesIndex < crossEdgesLen; crossEdgesIndex += 1) {\r\n var crossEdge = sequenceItem[crossEdgesIndex];\r\n if (crossEdge.parentid != parentid) {\r\n crossEdges.push(crossEdge);\r\n }\r\n }\r\n }\r\n });\r\n if (sequence.startKey() > childPosition) {\r\n sequence.unshift(childPosition, [familyEdge]);\r\n }\r\n }\r\n\r\n crossings[familyEdge.key] = crossEdges;\r\n for (var crossEdgesIndex = 0, crossEdgesLen = crossEdges.length; crossEdgesIndex < crossEdgesLen; crossEdgesIndex += 1) {\r\n crossings[crossEdges[crossEdgesIndex].key].push(familyEdge);\r\n }\r\n\r\n return SKIP;\r\n });\r\n\r\n if (countChildren(parentid) == 1) {\r\n var childid = firstChild(parentid);\r\n if (countParents(childid) == 1) {\r\n var familyEdge = new FamilyEdge(parentid, childid);\r\n firstBucket.push(familyEdge.key);\r\n }\r\n }\r\n });\r\n\r\n // distribute edges by number of crossings into buckets\r\n var buckets = [],\r\n crossEdges;\r\n for (var familyEdgeKey in crossings) {\r\n crossEdges = crossings[familyEdgeKey];\r\n var len = crossEdges.length;\r\n if (buckets[len] != null) {\r\n buckets[len].push(familyEdgeKey);\r\n } else {\r\n buckets[len] = [familyEdgeKey];\r\n }\r\n }\r\n\r\n var processed = {};\r\n\r\n // leave single parent child relations\r\n buckets.unshift(firstBucket);\r\n\r\n // break relations having \r\n for (var bucketIndex = 0, bucketsLen = buckets.length; bucketIndex < bucketsLen; bucketIndex += 1) {\r\n var bucket = buckets[bucketIndex];\r\n if (bucket != null) {\r\n for (familyEdgeIndex = 0, familyEdgeLen = bucket.length; familyEdgeIndex < familyEdgeLen; familyEdgeIndex += 1) {\r\n familyEdgeKey = bucket[familyEdgeIndex];\r\n if (!processed.hasOwnProperty(familyEdgeKey)) {\r\n processed[familyEdgeKey] = true;\r\n\r\n var familyEdge = familyEdges[familyEdgeKey];\r\n\r\n if (result.node(familyEdge.parentid) == null) {\r\n result.add(null, familyEdge.parentid, {});\r\n }\r\n if (result.node(familyEdge.childid) == null) {\r\n result.add([familyEdge.parentid], familyEdge.childid, {});\r\n } else {\r\n result.adopt([familyEdge.parentid], familyEdge.childid);\r\n }\r\n\r\n crossEdges = crossings[familyEdgeKey];\r\n for (var crossEdgesIndex = 0, crossEdgesLen = crossEdges.length; crossEdgesIndex < crossEdgesLen; crossEdgesIndex += 1) {\r\n processed[crossEdges[crossEdgesIndex].key] = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n function Link(from, to, distance) {\r\n this.from = from;\r\n this.to = to;\r\n this.distance = 0;\r\n }\r\n\r\n /**\r\n * Eliminates direct relations between grand parent nodes.\r\n * \r\n * @returns {family} Returns family structure without direct grand parent relations. \r\n */\r\n function getFamilyWithoutGrandParentsRelations() {\r\n var result = new Family();\r\n\r\n var hash = {};\r\n var links = [];\r\n var level = 0;\r\n for (var from in _parents) {\r\n if (_parents.hasOwnProperty(from)) {\r\n _loop(this, _parents, from, function (to) {\r\n var fromHash = hash[from];\r\n if (fromHash == null) {\r\n fromHash = {};\r\n hash[from] = fromHash;\r\n }\r\n if (!fromHash.hasOwnProperty(to)) {\r\n var link = new Link(from, to, level);\r\n links.push(link);\r\n hash[from][to] = link;\r\n }\r\n }); //ignore jslint\r\n }\r\n }\r\n\r\n while (links.length > 0) {\r\n var newLinks = [];\r\n level += 1;\r\n for (var index = 0, len = links.length; index < len; index += 1) {\r\n var link = links[index];\r\n from = link.to;\r\n if (_parents.hasOwnProperty(from)) {\r\n _loop(this, _parents, from, function (to) {\r\n var fromHash = hash[link.from];\r\n if (fromHash == null) {\r\n fromHash = {};\r\n hash[link.from] = fromHash;\r\n }\r\n if (fromHash.hasOwnProperty(to)) {\r\n fromHash[to].distance = level;\r\n } else {\r\n var newLink = new Link(from, to, level);\r\n newLinks.push(newLink);\r\n fromHash[to] = newLink;\r\n }\r\n });\r\n }\r\n }\r\n links = newLinks;\r\n }\r\n\r\n // return only references to immidiate parents\r\n loop(this, function (nodeid, node) {\r\n var parents = [];\r\n _loop(this, _parents, nodeid, function (to) {\r\n if (hash[nodeid][to].distance === 0) {\r\n parents.push(to);\r\n }\r\n });\r\n result.add(parents, nodeid, node);\r\n });\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns number of children\r\n * @param {string} parent The parent node id\r\n * @returns {number} Number of children\r\n */\r\n function countChildren(parent) {\r\n return _childrenCount[parent] || 0;\r\n }\r\n\r\n /**\r\n * Returns number of parents\r\n * @param {string} child The child node id\r\n * @returns {number} Number of parents\r\n */\r\n function countParents(child) {\r\n return _parentsCount[child] || 0;\r\n }\r\n\r\n /**\r\n * First available child\r\n * @param {string} parent The parent node id\r\n * @returns {string} Returns first available child id or null.\r\n */\r\n function firstChild(parent) {\r\n var result = null,\r\n children = _children[parent] || {};\r\n for (result in children) {\r\n if (children.hasOwnProperty(result)) {\r\n return result; //ignore jslint\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * First available parent\r\n * @param {string} child The child node id\r\n * @returns {string} Returns first available parent id or null.\r\n */\r\n function firstParent(child) {\r\n var result = null,\r\n parents = _parents[child] || {};\r\n for (result in parents) {\r\n if (parents.hasOwnProperty(result)) {\r\n return result; //ignore jslint\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Callback for iterating family node neighbours level by level\r\n * \r\n * @callback onFamilyItemNeighbourCallback\r\n * @param {string} itemid The node id\r\n * @param {object} item The node\r\n * @param {number} levelIndex The neigbour node distance from the start node\r\n * @returns {number} Returns true to skip further neighbous traversing.\r\n */\r\n\r\n /**\r\n * Loops through the node neighbours of the family structure level by level\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {string} itemid The node id to start traversing neighbour nodes\r\n * @param {onFamilyItemNeighbourCallback} onItem A callback function to call for every neighbour node \r\n */\r\n function loopNeighbours(thisArg, itemid, onItem) {\r\n var processed = {};\r\n\r\n if (onItem != null) {\r\n loopChildren(this, itemid, function (childid, child, childLevel) {\r\n if (!processed.hasOwnProperty(childid)) {\r\n processed[childid] = null;\r\n\r\n if (onItem.call(thisArg, childid, child, 1)) {\r\n processed[childid] = SKIP;\r\n }\r\n\r\n loopParents(this, childid, function (parentid, parent, parentLevel) {\r\n if (!processed.hasOwnProperty(parentid)) {\r\n processed[parentid] = null;\r\n\r\n if (onItem.call(thisArg, parentid, parent, 2)) {\r\n processed[parentid] = SKIP;\r\n }\r\n }\r\n return processed[parentid];\r\n });\r\n }\r\n return processed[childid];\r\n });\r\n\r\n loopParents(this, itemid, function (parentid, parent, parentLevel) {\r\n if (!processed.hasOwnProperty(parentid)) {\r\n processed[parentid] = null;\r\n\r\n if (onItem.call(thisArg, parentid, parent, 1)) {\r\n processed[parentid] = SKIP;\r\n }\r\n\r\n loopChildren(this, parentid, function (childid, child, childLevel) {\r\n if (!processed.hasOwnProperty(childid)) {\r\n processed[childid] = true;\r\n\r\n if (onItem.call(thisArg, childid, child, 2)) {\r\n processed[childid] = SKIP;\r\n }\r\n }\r\n return processed[childid];\r\n });\r\n\r\n }\r\n return processed[parentid];\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Callback for getting default edge value\r\n * \r\n * @callback onFamilyEdgeCallback\r\n * @param {string} from From node id\r\n * @param {string} to The node\r\n * @returns {object} Returns new edge object.\r\n */\r\n\r\n /**\r\n * Creates graph structure out of the family structure.\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {onFamilyEdgeCallback} onEdge A callback function to call for every new edge added to the final graph\r\n * @returns {graph} Returns graph structure of the family.\r\n */\r\n function getGraph(thisArg, onEdge) {\r\n var result = Graph(),\r\n from, to;\r\n\r\n for (from in _children) {\r\n if (_children.hasOwnProperty(from)) {\r\n _loop(this, _children, from, function (to) {\r\n var edge = result.edge(from, to);\r\n if (edge == null) {\r\n if (onEdge == null) {\r\n edge = new ReferencesEdge({});\r\n } else {\r\n edge = onEdge.call(thisArg, from, to);\r\n }\r\n result.addEdge(from, to, edge);\r\n }\r\n }); //ignore jslint\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n\r\n\r\n function GroupBy(parents, children) {\r\n this.parents = parents;\r\n this.children = children;\r\n this.nodes = [];\r\n }\r\n\r\n /**\r\n * Callback for grouping nodes having common single parent and child\r\n * \r\n * @callback onFamilyGroupCallback\r\n * @param {string} parent The common parent node id\r\n * @param {string} child The common child node id\r\n * @param {Array.>} nodes Collection of collections of grouped items\r\n */\r\n\r\n /**\r\n * Callback for getting group id for group of nodes\r\n * \r\n * @callback onFamilyGroupIdCallback\r\n * @param {Array.} nodes Collection of nodes to get group id for.\r\n * @returns {string} Returns group id or null. Null adds node to default group. Return -1 to disable grouping.\r\n */\r\n\r\n /**\r\n * Creates graph structure out of the family structure.\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {onFamilyGroupCallback} onGroup A callback function to call for every new group of nodes found\r\n * @param {onFamilyGroupIdCallback} onGroupId A callback function to call for every new group of nodes found\r\n */\r\n function groupBy(thisArg, size, onGroup, onGroupId) {\r\n if (onGroup != null) {\r\n var groups = {};\r\n var processed = {};\r\n for (var nodeid in _nodes) {\r\n if(!processed.hasOwnProperty(nodeid) ) {\r\n processed[nodeid] = true;\r\n if ((_parentsCount[nodeid] || 0) <= 1 && (_childrenCount[nodeid] || 0) <= 1) {\r\n var nodes = [new FamilyNode(nodeid, _nodes[nodeid])];\r\n loopChainParents(this, nodeid, (parentId) => {\r\n processed[parentId] = true;\r\n nodes.unshift({id: parentId, node: _nodes[parentId]});\r\n });\r\n loopChainChildren(this, nodeid, (childId) => {\r\n processed[childId] = true;\r\n nodes.push(new FamilyNode(childId, _nodes[childId]));\r\n });\r\n\r\n /* find group id*/\r\n var groupId = null;\r\n if(onGroupId != null) {\r\n groupId = onGroupId.call(thisArg, nodes);\r\n }\r\n \r\n /* add node or list of nodes to group */\r\n if(groupId !== -1) {\r\n\r\n var parents = [];\r\n loopParents(this, nodes[0].id, function(parentId, parent, levelIndex) {\r\n if(levelIndex == 0) {\r\n parents.push(parentId);\r\n return;\r\n }\r\n return BREAK;\r\n });\r\n parents.sort();\r\n\r\n var children = [];\r\n loopChildren(this, nodes[nodes.length-1].id, function(childId, child, levelIndex) {\r\n if(levelIndex == 0) {\r\n children.push(childId);\r\n return;\r\n }\r\n return BREAK;\r\n });\r\n children.sort();\r\n\r\n var key = parents.join(\",\") + \" * \" + children.join(\",\");\r\n\r\n if(groupId !== null) {\r\n key += \" * \" + groupId;\r\n }\r\n if (!groups.hasOwnProperty(key)) {\r\n groups[key] = new GroupBy(parents, children);\r\n }\r\n groups[key].nodes.push(nodes);\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (key in groups) {\r\n if (groups.hasOwnProperty(key)) {\r\n var group = groups[key];\r\n if (group.nodes.length >= size) {\r\n if (onGroup.call(thisArg, group.parents, group.children, group.nodes)) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function loopChainParents(thisArg, nodeid, onItem) {\r\n while(_parentsCount[nodeid] === 1) {\r\n var parentId = firstParent(nodeid);\r\n if(_childrenCount[parentId] === 1) {\r\n onItem.call(thisArg, parentId);\r\n nodeid = parentId;\r\n } else {\r\n break;\r\n } \r\n }\r\n }\r\n\r\n function loopChainChildren(thisArg, nodeid, onItem) {\r\n while(_childrenCount[nodeid] === 1) {\r\n var childId = firstChild(nodeid);\r\n if(_parentsCount[childId] === 1) {\r\n onItem.call(thisArg, childId);\r\n nodeid = childId;\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Validates internal data structure consistency of the family.\r\n * @param {object} info Optional validation object. \r\n */\r\n function validate(info) {\r\n var parent, child;\r\n\r\n function _count(items) {\r\n var result = 0, key;\r\n if (items != null) {\r\n for (key in items) {\r\n if (items.hasOwnProperty(key)) {\r\n result += 1;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n loop(this, function (nodeId, node) {\r\n _loop(this, _children, nodeId, function (child) {\r\n if (!_parents.hasOwnProperty(child) || !_parents[child].hasOwnProperty(nodeId)) {\r\n if (info != null) {\r\n info.message = \"Child #\" + child + \" does not reference parent #\" + nodeId;\r\n }\r\n return false;\r\n }\r\n });\r\n _loop(this, _parents, nodeId, function (parent) {\r\n if (!_children.hasOwnProperty(parent) || !_children[parent].hasOwnProperty(nodeId)) {\r\n if (info != null) {\r\n info.message = \"Parent #\" + parent + \" does not reference child #\" + nodeId;\r\n }\r\n return false;\r\n }\r\n });\r\n });\r\n\r\n for (parent in _parents) {\r\n if (_parents.hasOwnProperty(parent)) {\r\n if ((_parentsCount[parent] || 0) != _count(_parents[parent])) {\r\n if (info != null) {\r\n info.message = \"Parents count for item #\" + parent + \" missmatch.\";\r\n }\r\n return false;\r\n }\r\n if (_parents.hasOwnProperty(parent) && !_nodes.hasOwnProperty(parent)) {\r\n if (info != null) {\r\n info.message = \"Orphant parents for item #\" + parent;\r\n }\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n for (child in _children) {\r\n if (_children.hasOwnProperty(child)) {\r\n if ((_childrenCount[child] || 0) != _count(_children[child])) {\r\n if (info != null) {\r\n info.message = \"Children count for item \" + child + \" missmatch.\";\r\n }\r\n return false;\r\n }\r\n if (_children.hasOwnProperty(child) && !_nodes.hasOwnProperty(child)) {\r\n if (info != null) {\r\n info.message = \"Orphant children of item \" + child;\r\n }\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n for (child in _roots) {\r\n if (_roots.hasOwnProperty(child)) {\r\n if ((_rootsCount[child] || 0) != _count(_roots[child])) {\r\n if (info != null) {\r\n info.message = \"Root children count for item @\" + child + \" missmatch.\";\r\n }\r\n return false;\r\n }\r\n _loop(this, _roots, child, function (nodeid) {\r\n if (!_nodes.hasOwnProperty(nodeid)) {\r\n if (info != null) {\r\n info.message = \"Child #\" + nodeid + \"of root #\" + child + \" does not exists.\";\r\n }\r\n return false;\r\n }\r\n }); //ignore jslint\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Checks if family structure has loops in references. \r\n * @returns {boolean} Returns true if family structure contains loops in references.\r\n */\r\n function hasLoops() {\r\n var tempFamily = clone();\r\n loopTopo(this, function (itemid, item, levelIndex) {\r\n tempFamily.removeNode(itemid);\r\n });\r\n\r\n return tempFamily.hasNodes();\r\n }\r\n\r\n /**\r\n * Clones family structure.\r\n * \r\n * @returns {family} Returns copy of the family structure.\r\n */\r\n function clone() {\r\n return Family({\r\n roots: _roots,\r\n rootsCount: _rootsCount,\r\n children: _children,\r\n childrenCount: _childrenCount,\r\n parents: _parents,\r\n parentsCount: _parentsCount,\r\n nodes: _nodes\r\n });\r\n }\r\n\r\n return {\r\n /* family structure modification */\r\n add: add,\r\n adopt: adopt,\r\n bundleChildren: bundleChildren,\r\n bundleParents: bundleParents,\r\n optimizeReferences: optimizeReferences,\r\n eliminateManyToMany: eliminateManyToMany,\r\n groupBy: groupBy,\r\n getPlanarFamily: getPlanarFamily,\r\n getFamilyWithoutGrandParentsRelations: getFamilyWithoutGrandParentsRelations,\r\n getGraph: getGraph,\r\n\r\n removeNode: removeNode,\r\n removeRelation: removeRelation,\r\n removeChildRelation: removeChildRelation,\r\n\r\n /* referencing and looping */\r\n node: node,\r\n loop: loop,\r\n loopLevels: loopLevels,\r\n loopTopo: loopTopo,\r\n loopTopoReversed: loopTopoReversed,\r\n loopChildren: loopChildren,\r\n loopParents: loopParents,\r\n findLargestRoot: findLargestRoot,\r\n loopRoots: loopRoots,\r\n hasNodes: hasNodes,\r\n hasCommonChild: hasCommonChild,\r\n loopNeighbours: loopNeighbours,\r\n countChildren: countChildren,\r\n countParents: countParents,\r\n firstParent: firstParent,\r\n firstChild: firstChild,\r\n\r\n /* force validation */\r\n validate: validate,\r\n hasLoops: hasLoops,\r\n clone: clone,\r\n\r\n // callback return codes\r\n BREAK: BREAK, // break loop immidiatly\r\n SKIP: SKIP // skip loop of current node children \r\n };\r\n};","export default function FamilyMargins() {\r\n this.items = [];\r\n\r\n function Margin(left, right, leftIndex, rightIndex) {\r\n this.left = left;\r\n this.right = right;\r\n this.leftIndex = leftIndex;\r\n this.rightIndex = rightIndex;\r\n }\r\n\r\n this.add = function (arg0, arg1, arg2, arg3) {\r\n switch (arguments.length) {\r\n case 2:\r\n this.items.push(new Margin(-arg0 / 2, arg0 / 2, arg1, arg1));\r\n break;\r\n case 4:\r\n this.items.push(new Margin(arg0, arg1, arg2, arg3));\r\n break;\r\n }\r\n };\r\n\r\n this.merge = function (from, interval) {\r\n var distance = this.getDistanceTo(from);\r\n var leftOffset = 0;\r\n var rightOffset = 0;\r\n\r\n var len1 = this.items.length;\r\n var len2 = from.items.length;\r\n var min = Math.min(len1, len2);\r\n var max = Math.max(len1, len2);\r\n\r\n for (var index = 0; index < min; index += 1) {\r\n var leftMargin = this.items[len1 - 1 - index];\r\n var rightMargin = from.items[len2 - 1 - index];\r\n\r\n if (index === 0) {\r\n var width = (leftMargin.right - leftMargin.left + (distance || 0) + (interval || 0) + rightMargin.right - rightMargin.left);\r\n leftOffset = width / 2 + leftMargin.left;\r\n rightOffset = width / 2 - rightMargin.right;\r\n }\r\n leftMargin.left -= leftOffset;\r\n leftMargin.right = rightMargin.right + rightOffset;\r\n\r\n leftMargin.rightIndex = rightMargin.rightIndex;\r\n\r\n this.items[max - 1 - index] = leftMargin;\r\n }\r\n for (index = min; index < max; index += 1) {\r\n leftMargin = this.items[len1 - 1 - index];\r\n rightMargin = from.items[len2 - 1 - index];\r\n\r\n if (leftMargin == null) {\r\n this.items[max - 1 - index] = new Margin(rightMargin.left + rightOffset, rightMargin.right + rightOffset,\r\n rightMargin.leftIndex, rightMargin.rightIndex);\r\n } else {\r\n leftMargin.left -= leftOffset;\r\n leftMargin.right -= leftOffset;\r\n }\r\n\r\n }\r\n return distance;\r\n };\r\n\r\n this.attach = function (from, interval) {\r\n var distance = this.getDistanceTo(from);\r\n var rightOffset = interval || 0;\r\n\r\n var len1 = this.items.length;\r\n var len2 = from.items.length;\r\n var min = Math.min(len1, len2);\r\n var max = Math.max(len1, len2);\r\n\r\n for (var index = 0; index < min; index += 1) {\r\n var leftMargin = this.items[len1 - 1 - index];\r\n var rightMargin = from.items[len2 - 1 - index];\r\n\r\n if (index === 0) {\r\n rightOffset = (leftMargin.right + (distance || 0) + (interval || 0) - rightMargin.left);\r\n }\r\n leftMargin.right = rightMargin.right + rightOffset;\r\n\r\n leftMargin.rightIndex = rightMargin.rightIndex;\r\n\r\n this.items[max - 1 - index] = leftMargin;\r\n }\r\n for (index = min; index < max; index += 1) {\r\n leftMargin = this.items[len1 - 1 - index];\r\n if (leftMargin == null) {\r\n rightMargin = from.items[len2 - 1 - index];\r\n\r\n this.items[max - 1 - index] = new Margin(rightMargin.left + rightOffset, rightMargin.right + rightOffset,\r\n rightMargin.leftIndex, rightMargin.rightIndex);\r\n }\r\n }\r\n return distance;\r\n };\r\n\r\n this.getDistanceTo = function (to) {\r\n var distance = null;\r\n var baseDistance = 0;\r\n var len1 = this.items.length;\r\n var len2 = to.items.length;\r\n var len = Math.min(len1, len2);\r\n if (len > 0) {\r\n for (var index = 0; index < len; index += 1) {\r\n var leftMargins = this.items[len1 - 1 - index];\r\n var rightMargins = to.items[len2 - 1 - index];\r\n\r\n\r\n if (index === 0) {\r\n baseDistance = leftMargins.right - rightMargins.left;\r\n distance = baseDistance;\r\n } else {\r\n if (leftMargins.rightIndex < rightMargins.leftIndex) {\r\n distance = Math.max(distance, leftMargins.right - rightMargins.left);\r\n }\r\n }\r\n }\r\n distance = distance - baseDistance;\r\n }\r\n\r\n return distance;\r\n };\r\n\r\n this.loop = function (thisArg, onItem) {\r\n if (onItem != null) {\r\n for (var index = 0, len = this.items.length; index < len; index += 1) {\r\n var margin = this.items[len - 1 - index];\r\n if (onItem.call(thisArg, index, margin.left, margin.right, margin.leftIndex, margin.rightIndex)) {\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n\r\n this.getLeft = function (level) {\r\n var maximum = this.items.length - 1;\r\n if (maximum >= level) {\r\n return this.items[maximum - level].left;\r\n }\r\n };\r\n};","import getFamilyUnits from './getFamilyUnits';\r\nimport FamilyMargins from './FamilyMargins';\r\n/**\r\n * Callback function for getting family node width\r\n * \r\n * @callback onFamilyAlignmentItemSizeCallback\r\n * @param {string} itemid Family node id\r\n * @param {object} item Family node context object\r\n * @returns {number} Family node width\r\n */\r\n\r\n/**\r\n * Creates family alignment data structure. This structure aligns horizontally planar family of nodes.\r\n * @class FamilyAlignment\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {family} family Family data structure\r\n * @param {TreeLevels} treeLevels Three levels data structure\r\n * @param {onFamilyAlignmentItemSizeCallback} onItemSize Callback function to measure family node width\r\n * @returns {FamilyAlignment} Returns family alignment structure\r\n */\r\nexport default function FamilyAlignment(thisArg, family, treeLevels, onItemSize) {\r\n var offsets,\r\n sizes = {},\r\n childrenDistances;\r\n\r\n if (onItemSize != null) {\r\n treeLevels.loopItems(this, function (itemid, item, position, levelIndex, level) {\r\n sizes[itemid] = onItemSize.call(thisArg, itemid, item);\r\n });\r\n }\r\n\r\n childrenDistances = getDistancesBetweenChildren(family, treeLevels);\r\n offsets = getTreeLevelsOffsets(family, treeLevels, childrenDistances);\r\n\r\n function _getNodeMargins(margins, nodeid) {\r\n // create margins for node if it does not exists\r\n var nodeMargins = margins[nodeid];\r\n if (nodeMargins == null) {\r\n nodeMargins = new FamilyMargins();\r\n margins[nodeid] = nodeMargins;\r\n }\r\n return nodeMargins;\r\n }\r\n\r\n function getDistancesBetweenChildren(family, treeLevels) {\r\n var distances = {};\r\n var margins = {};\r\n var levelMargins = null;\r\n\r\n treeLevels.loopLevelsReversed(this, function (levelIndex, level) {\r\n var newMargins = new FamilyMargins();\r\n if (levelMargins != null) {\r\n levelMargins.add(0, Number.MAX_VALUE);\r\n newMargins.merge(levelMargins, 0);\r\n }\r\n levelMargins = newMargins;\r\n\r\n var previousParentMargins = levelMargins;\r\n treeLevels.loopLevelItems(this, levelIndex, function (nodeid, node, position) {\r\n var nodeMargins = _getNodeMargins(margins, nodeid);\r\n\r\n // add node size into its margin\r\n nodeMargins.add(sizes[nodeid], position);\r\n\r\n switch (family.countParents(nodeid)) {\r\n case 0:\r\n if (previousParentMargins != null) {\r\n distances[nodeid] = previousParentMargins.attach(nodeMargins);\r\n }\r\n break;\r\n case 1:\r\n family.loopParents(this, nodeid, function (parentid, parent, levelIndex) {\r\n var parentMargins = _getNodeMargins(margins, parentid);\r\n distances[nodeid] = parentMargins.merge(nodeMargins);\r\n\r\n previousParentMargins = parentMargins;\r\n return family.BREAK;\r\n });\r\n break;\r\n default:\r\n // loop parents and find total size of them\r\n var totalSize = 0;\r\n var fromIndex = null;\r\n var toIndex = null;\r\n var hash = {};\r\n family.loopParents(this, nodeid, function (parentid, parent, levelIndex) {\r\n if (levelIndex > 0) {\r\n return family.BREAK;\r\n }\r\n totalSize += sizes[parentid];\r\n\r\n var position = treeLevels.getItemPosition(parentid);\r\n fromIndex = fromIndex == null ? position : Math.min(fromIndex, position);\r\n toIndex = toIndex == null ? position : Math.max(toIndex, position);\r\n hash[position] = parentid;\r\n });\r\n\r\n var offset = -totalSize / 2;\r\n for (var index = fromIndex; index <= toIndex; index += 1) {\r\n var parentid = hash[index];\r\n\r\n offset += sizes[parentid] / 2.0;\r\n\r\n var parentMargins = _getNodeMargins(margins, parentid);\r\n\r\n parentMargins.attach(nodeMargins, -offset);\r\n\r\n previousParentMargins = parentMargins;\r\n\r\n offset += sizes[parentid] / 2.0;\r\n }\r\n break;\r\n }\r\n });\r\n });\r\n\r\n return distances;\r\n }\r\n\r\n function getTreeLevelsOffsets(family, treeLevels, childrenDistances) {\r\n var offsets = {};\r\n\r\n var familyUnitsById = getFamilyUnits(family);\r\n var processedFamilyUnits = {};\r\n\r\n treeLevels.loopLevels(this, function (levelIndex, level) {\r\n treeLevels.loopLevelItems(this, levelIndex, function (nodeid, node, position) {\r\n if (!offsets.hasOwnProperty(nodeid)) {\r\n var offset = 0;\r\n if (position === 0) {\r\n if (childrenDistances[nodeid] != null) {\r\n offset += childrenDistances[nodeid] + sizes[nodeid] / 2;\r\n }\r\n } else {\r\n var prevNodeId = treeLevels.getItemAtPosition(levelIndex, position - 1);\r\n offset += offsets[prevNodeId] + sizes[prevNodeId] / 2 + (childrenDistances[nodeid] || 0) + sizes[nodeid] / 2;\r\n }\r\n offsets[nodeid] = offset;\r\n }\r\n var familyUnits = familyUnitsById[nodeid];\r\n if (familyUnits != null) {\r\n for (var index = 0; index < familyUnits.length; index += 1) {\r\n var familyUnit = familyUnits[index];\r\n if (!processedFamilyUnits.hasOwnProperty(familyUnit.id)) {\r\n processedFamilyUnits[familyUnit.id] = true;\r\n\r\n setFamilyOffsets(offsets, nodeid, familyUnit, levelIndex, levelIndex + 1, position, treeLevels, childrenDistances);\r\n }\r\n }\r\n }\r\n });\r\n });\r\n\r\n return offsets;\r\n }\r\n\r\n function setFamilyOffsets(offsets, itemid, familyUnit, fromLevel, toLevel, itemIndex, treeLevels, childrenDistances) {\r\n var fromIndex = itemIndex;\r\n var toIndex = itemIndex;\r\n\r\n familyUnit.loopSiblings(this, itemid, function (siblingid) {\r\n var position = treeLevels.getItemPosition(siblingid);\r\n fromIndex = Math.min(fromIndex, position);\r\n toIndex = Math.max(toIndex, position);\r\n });\r\n\r\n // Place nodes on the left side of start node\r\n for (var index = itemIndex - 1; index >= fromIndex; index -= 1) {\r\n var siblingid = treeLevels.getItemAtPosition(fromLevel, index);\r\n\r\n if (!offsets.hasOwnProperty(siblingid)) {\r\n var nodeid = treeLevels.getItemAtPosition(fromLevel, index + 1);\r\n offsets[siblingid] = offsets[nodeid] - (sizes[siblingid] / 2 + (childrenDistances[nodeid] || 0) + sizes[nodeid] / 2);\r\n }\r\n }\r\n // Place nodes on the right side of start node\r\n for (index = itemIndex + 1; index <= toIndex; index += 1) {\r\n siblingid = treeLevels.getItemAtPosition(fromLevel, index);\r\n\r\n if (!offsets.hasOwnProperty(siblingid)) {\r\n nodeid = treeLevels.getItemAtPosition(fromLevel, index - 1);\r\n offsets[siblingid] = offsets[nodeid] + (sizes[nodeid] / 2 + (childrenDistances[siblingid] || 0) + sizes[siblingid] / 2);\r\n }\r\n }\r\n siblingid = treeLevels.getItemAtPosition(fromLevel, fromIndex);\r\n var siblingsMedian = offsets[siblingid] - sizes[siblingid] / 2;\r\n siblingid = treeLevels.getItemAtPosition(fromLevel, toIndex);\r\n siblingsMedian += offsets[siblingid] + sizes[siblingid] / 2;\r\n\r\n siblingsMedian /= 2;\r\n\r\n fromIndex = null;\r\n toIndex = null;\r\n familyUnit.loopNonSiblings(this, itemid, function (siblingid) {\r\n var position = treeLevels.getItemPosition(siblingid);\r\n fromIndex = fromIndex != null ? Math.min(fromIndex, position) : position;\r\n toIndex = toIndex != null ? Math.max(toIndex, position) : position;\r\n });\r\n\r\n var nonSiblingsWidth = 0;\r\n for (index = fromIndex; index <= toIndex; index += 1) {\r\n var relatedItemId = treeLevels.getItemAtPosition(toLevel, index);\r\n nonSiblingsWidth += sizes[relatedItemId];\r\n if (index > fromIndex) {\r\n nonSiblingsWidth += (childrenDistances[relatedItemId] || 0);\r\n }\r\n }\r\n\r\n var offset = siblingsMedian - nonSiblingsWidth / 2;\r\n relatedItemId = treeLevels.getItemAtPosition(toLevel, fromIndex);\r\n if (!offsets.hasOwnProperty(relatedItemId)) {\r\n offsets[relatedItemId] = offset + sizes[relatedItemId] / 2;\r\n }\r\n for (index = fromIndex + 1; index <= toIndex; index += 1) {\r\n relatedItemId = treeLevels.getItemAtPosition(toLevel, index);\r\n if (!offsets.hasOwnProperty(relatedItemId)) {\r\n nodeid = treeLevels.getItemAtPosition(toLevel, index - 1);\r\n offsets[relatedItemId] = offsets[nodeid] + (sizes[nodeid] / 2 + (childrenDistances[relatedItemId] || 0) + sizes[relatedItemId] / 2);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Returns horizontal node offset from left margin of the family diagram\r\n * \r\n * @param {string} nodeid Family node id\r\n * @returns {number} Node offset\r\n */\r\n function getOffset(nodeid) {\r\n return offsets[nodeid];\r\n }\r\n\r\n return {\r\n getOffset: getOffset\r\n };\r\n};","/**\r\n * Creates range minimum query structure\r\n * @class RMQ\r\n * \r\n * @param {number[]} items Collection of numbers\r\n * @returns {RMQ} Returns range minimum query structure\r\n */\r\nexport default function RMQ(items) {\r\n var _lookup = [];\r\n var _log2 = Math.log(2);\r\n\r\n preprocess();\r\n\r\n function preprocess() {\r\n var power;\r\n\r\n for (var index = 0, len = items.length; index < len; index += 1) {\r\n _lookup[index] = [index];\r\n }\r\n for (power = 1, len = items.length; (1 << power) < len; power += 1) {\r\n for (index = 0; (index + (1 << power) - 1) < len; index += 1) {\r\n if (items[_lookup[index][power - 1]] < items[_lookup[index + (1 << (power - 1))][power - 1]]) {\r\n _lookup[index][power] = _lookup[index][power - 1];\r\n } else {\r\n _lookup[index][power] = _lookup[index + (1 << (power - 1))][power - 1];\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Returns index of minimum item for the given range of items\r\n * \r\n * @param {number} from The left margin index\r\n * @param {number} to The right margin index\r\n * @returns {number} Returns index of the minimum item\r\n */\r\n function getRangeMinimumIndex(from, to) {\r\n var power = Math.floor(Math.log(to - from + 1) / _log2);\r\n\r\n if (items[_lookup[from][power]] <= items[_lookup[to - (1 << power) + 1][power]]) {\r\n return _lookup[from][power];\r\n } else {\r\n return _lookup[to - (1 << power) + 1][power];\r\n }\r\n }\r\n\r\n /**\r\n * Return minimum value for the given range\r\n * \r\n * @param {number} from The left index of the range\r\n * @param {number} to The right index of the range\r\n * @returns {number} Returns minimum value in the range\r\n */\r\n function getRangeMinimum(from, to) {\r\n return items[getRangeMinimumIndex(from, to)];\r\n }\r\n\r\n return {\r\n getRangeMinimumIndex: getRangeMinimumIndex,\r\n getRangeMinimum: getRangeMinimum\r\n };\r\n};","import RMQ from './RMQ';\r\n\r\n/**\r\n * Creates Lowest Common Ancestor Structure for the given tree\r\n * @class LCA\r\n * \r\n * @param {Tree} tree The tree structure\r\n * @returns {LCA} Returns Lowest Common Ancestor Structure\r\n */\r\nexport default function LCA(tree) {\r\n var _eulerSequence = [];\r\n var _levels = [];\r\n var _fai = {};\r\n var _rmq;\r\n\r\n\r\n preprocess();\r\n\r\n function preprocess() {\r\n var counter = 0;\r\n tree.loopEulerWalk(this, function (nodeid, node, level) {\r\n _eulerSequence.push(nodeid);\r\n _levels.push(level);\r\n\r\n if (!_fai.hasOwnProperty(nodeid)) {\r\n _fai[nodeid] = counter;\r\n }\r\n counter += 1;\r\n });\r\n _rmq = RMQ(_levels);\r\n }\r\n\r\n /**\r\n * Returns lowest common ancestor for the given pair of tree nodes\r\n * @param {string} from The first tree node id\r\n * @param {string} to The second tree node id\r\n * @returns {string} Returns the lowest common ancestor tree node id\r\n */\r\n function getLowestCommonAncestor(from, to) {\r\n var fromIndex = _fai[from],\r\n toIndex = _fai[to],\r\n index;\r\n\r\n if (fromIndex < toIndex) {\r\n index = _rmq.getRangeMinimumIndex(fromIndex, toIndex);\r\n } else {\r\n index = _rmq.getRangeMinimumIndex(toIndex, fromIndex);\r\n }\r\n\r\n return _eulerSequence[index];\r\n }\r\n\r\n return {\r\n getLowestCommonAncestor: getLowestCommonAncestor\r\n };\r\n};","/**\r\n * Creates pile structure used to sort and stack segments on top of each other \r\n * so they occupy minimum number of rows.\r\n * @class Pile\r\n * \r\n * @returns {Pile} Returns pile structure\r\n */\r\nexport default function Pile () {\r\n var _items = [];\r\n\r\n /**\r\n * Adds new segment to pile object.\r\n * \r\n * @param {number} from Left margin of segment.\r\n * @param {number} to Right margin of segment.\r\n * @param {object} context Any reference to user object. It is returned as parameter in callback function of resolve method.\r\n */\r\n function add(from, to, context) {\r\n if (from < to) {\r\n _items.push(new Segment(from, to, context, 1));\r\n } else {\r\n _items.push(new Segment(to, from, context, -1));\r\n }\r\n }\r\n\r\n /**\r\n * Callback function or iterating result offsets of the pile items in the stack.\r\n * \r\n * @callback onPileItemCallback\r\n * @param {number} from The left margin of the segment \r\n * @param {number} to The right margin of the segment\r\n * @param {object} context The context of the pile item\r\n * @param {number} offset Index of the pile item in the stack\r\n */\r\n\r\n /**\r\n * Sorts and stack segments on top of each other so they occupy minimum number of rows.\r\n * \r\n * @param {object} thisArg A context object of the callback function invocation.\r\n * @param {onPileItemCallback} onItem Callback function for setting segments offsets in the pile.\r\n * @returns {number} Number of stacked rows in pile.\r\n */\r\n function resolve(thisArg, onItem) {\r\n var hash,\r\n backtraceNext,\r\n backtraceTaken,\r\n items, item,\r\n rowItems,\r\n rows,\r\n rowIndex, index,\r\n offset = 0;\r\n\r\n if (onItem != null) {\r\n items = _items.slice(0);\r\n items.sort(function (a, b) {\r\n return a.from - b.from;\r\n });\r\n\r\n rows = [];\r\n while (items.length > 0) {\r\n hash = {};\r\n backtraceNext = {};\r\n backtraceTaken = {};\r\n\r\n getMax(0, items, hash, backtraceNext, backtraceTaken);\r\n\r\n rowItems = [];\r\n rows[offset] = [];\r\n index = 0;\r\n while (backtraceNext.hasOwnProperty(index)) {\r\n if (backtraceTaken[index]) {\r\n rowItems.push(index);\r\n\r\n rows[offset].push(items[index]);\r\n }\r\n index = backtraceNext[index];\r\n }\r\n\r\n for (index = rowItems.length - 1; index >= 0; index -= 1) {\r\n items.splice(rowItems[index], 1);\r\n }\r\n offset += 1;\r\n }\r\n\r\n for (rowIndex = 0; rowIndex < offset; rowIndex += 1) {\r\n rowItems = rows[rowIndex];\r\n for (index = 0; index < rowItems.length; index += 1) {\r\n item = rowItems[index];\r\n if (onItem.call(thisArg, item.from, item.to, item.context, rowIndex, offset, item.direction)) {\r\n return offset;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return offset;\r\n }\r\n\r\n function Segment(from, to, context, direction) {\r\n this.context = context;\r\n this.from = from;\r\n this.to = to;\r\n this.offset = null;\r\n this.direction = direction;\r\n }\r\n\r\n function getMax(index, items, hash, backtraceNext, backtraceTaken) {\r\n var result = 0;\r\n\r\n if (index >= items.length) {\r\n return 0;\r\n }\r\n\r\n if (hash.hasOwnProperty(index)) {\r\n return hash[index];\r\n }\r\n\r\n var item = items[index];\r\n var withoutItem = getMax(index + 1, items, hash, backtraceNext, backtraceTaken);\r\n\r\n var nextIndex = index + 1;\r\n while (nextIndex < items.length) {\r\n var nextItem = items[nextIndex];\r\n if (nextItem.from >= item.to) {\r\n break;\r\n }\r\n nextIndex += 1;\r\n }\r\n var withItem = 1 + getMax(nextIndex, items, hash, backtraceNext, backtraceTaken);\r\n\r\n if (withItem > withoutItem) {\r\n hash[index] = withItem;\r\n backtraceNext[index] = nextIndex;\r\n backtraceTaken[index] = true;\r\n } else {\r\n hash[index] = withoutItem;\r\n backtraceNext[index] = index + 1;\r\n backtraceTaken[index] = false;\r\n }\r\n\r\n return hash[index];\r\n }\r\n\r\n return {\r\n add: add,\r\n resolve: resolve\r\n };\r\n};","import Rect from '../graphics/structs/Rect';\r\n/**\r\n * Creates Quad Tree data structure. It distributes points into equal quadrants. \r\n * So it is equivalent to 2 dimensional binary search tree. \r\n * @class QuadTree\r\n * \r\n * @param {number} minimalSize Defines minimal size of the quadrant. This protects structure against unnecessary depth.\r\n * @returns {QuadTree} Returns Quad Tree data structure.\r\n */\r\nexport default function QuadTree(minimalSize) {\r\n var _minimalScale = Math.max(1, scale(minimalSize)),\r\n _rootScale = 8,\r\n _rootSize = 256,\r\n _rootCell = null;\r\n\r\n // Create root cell\r\n _rootCell = new Cell(0, 0, _rootScale, _rootSize);\r\n\r\n function Cell(x, y, scale, size) {\r\n this.x = x;\r\n this.y = y;\r\n this.scale = scale;\r\n this.size = size;\r\n this.quadrants = [];\r\n this.points = [];\r\n }\r\n\r\n Cell.prototype.notEnclosed = function (rect) {\r\n if (this.x < rect.x || this.x + this.size > rect.x + rect.width || this.y < rect.y || this.y + this.size > rect.y + rect.height) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n Cell.prototype.overlaps = function (rect) {\r\n if (this.x + this.size < rect.x || rect.x + rect.width < this.x || this.y + this.size < rect.y || rect.y + rect.height < this.y) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n Cell.prototype.getQuadrantIndex = function (x, y) {\r\n var shift = this.scale - 1;\r\n return ((x >> shift) & 1) | (((y >> shift) & 1) << 1);\r\n };\r\n\r\n function scale(value) {\r\n return Math.floor(Math.log(value) / Math.log(2));\r\n }\r\n\r\n /**\r\n * Adds point\r\n * \r\n * @param {Point} point Point\r\n */\r\n function addPoint(point) {\r\n var x = Math.floor(point.x),\r\n y = Math.floor(point.y),\r\n size = Math.max(x, y);\r\n\r\n while (_rootSize <= size) {\r\n _rootScale += 1;\r\n _rootSize *= 2;\r\n var parent = new Cell(0, 0, _rootScale, _rootSize);\r\n _splitCell(parent);\r\n parent.quadrants[0] = _rootCell;\r\n _rootCell = parent;\r\n }\r\n _addPoint(point);\r\n }\r\n\r\n function _addPoint(point) {\r\n var x = Math.floor(point.x),\r\n y = Math.floor(point.y),\r\n cell = _rootCell;\r\n if (x < 0 || y < 0) {\r\n throw \"Negative values are not supported in the quad tree.\";\r\n }\r\n while (cell.points == null || cell.points.length > 0) {\r\n if (cell.scale == _minimalScale && cell.points != null) {\r\n break;\r\n }\r\n if (cell.points != null && cell.points.length > 0) {\r\n _splitCell(cell);\r\n }\r\n cell = cell.quadrants[cell.getQuadrantIndex(x, y)];\r\n }\r\n cell.points.push(point);\r\n }\r\n\r\n function _splitCell(parent) {\r\n var size = parent.size / 2;\r\n parent.quadrants = [\r\n new Cell(parent.x, parent.y, parent.scale - 1, size),\r\n new Cell(parent.x + size, parent.y, parent.scale - 1, size),\r\n new Cell(parent.x, parent.y + size, parent.scale - 1, size),\r\n new Cell(parent.x + size, parent.y + size, parent.scale - 1, size)\r\n ];\r\n for (var index = 0, len = parent.points.length; index < len; index += 1) {\r\n var point = parent.points[index],\r\n x = Math.floor(point.x),\r\n y = Math.floor(point.y);\r\n\r\n parent.quadrants[parent.getQuadrantIndex(x, y)].points.push(point);\r\n }\r\n\r\n // indicates that cell has quadrants\r\n parent.points = null;\r\n }\r\n\r\n /**\r\n * Callback function for iteration of points\r\n * \r\n * @callback onQuadTreePointCallback\r\n * @param {Point} point Rectangle\r\n * @returns {boolean} Returns true to break iteration process.\r\n */\r\n\r\n /**\r\n * Loops rectangular area of quad tree structure\r\n * \r\n * @param {object} thisArg The callback function invocation context\r\n * @param {Rect} rect Rectangular search area\r\n * @param {onQuadTreePointCallback} onItem Callback function to call for every point within the search area\r\n */\r\n function loopArea(thisArg, rect, onItem) {\r\n var cell,\r\n index, len;\r\n if (onItem != null) {\r\n var check = [_rootCell],\r\n nocheck = [];\r\n while (check.length > 0 || nocheck.length > 0) {\r\n var newCheck = [],\r\n newNocheck = [];\r\n for (index = 0, len = check.length; index < len; index += 1) {\r\n cell = check[index];\r\n if (cell.overlaps(rect)) {\r\n if (cell.notEnclosed(rect)) {\r\n if (cell.points == null) {\r\n for (var quadrantIndex = 0; quadrantIndex < 4; quadrantIndex += 1) {\r\n newCheck.push(cell.quadrants[quadrantIndex]);\r\n }\r\n } else {\r\n for (var pointIndex = 0, pointsLen = cell.points.length; pointIndex < pointsLen; pointIndex += 1) {\r\n var point = cell.points[pointIndex];\r\n if (rect.contains(point)) {\r\n if (onItem.call(thisArg, point)) {\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n nocheck.push(cell);\r\n }\r\n }\r\n }\r\n for (index = 0, len = nocheck.length; index < len; index += 1) {\r\n cell = nocheck[index];\r\n if (cell.points == null) {\r\n for (quadrantIndex = 0; quadrantIndex < 4; quadrantIndex += 1) {\r\n newNocheck.push(cell.quadrants[quadrantIndex]);\r\n }\r\n } else {\r\n for (pointIndex = 0, pointsLen = cell.points.length; pointIndex < pointsLen; pointIndex += 1) {\r\n if (onItem.call(thisArg, cell.points[pointIndex])) {\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n check = newCheck;\r\n nocheck = newNocheck;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Validates internal data consistency of quad tree data structure\r\n * \r\n * @returns {boolean} Returns true if structure pass validation\r\n */\r\n function validate() {\r\n var level = [_rootCell];\r\n while (level.length > 0) {\r\n var newLevel = [];\r\n for (var index = 0, len = level.length; index < len; index += 1) {\r\n var cell = level[index];\r\n var rect = new Rect(cell.x, cell.y, cell.size, cell.size);\r\n if (cell.points != null && cell.quadrants.length > 0) {\r\n return false;\r\n }\r\n if (cell.points == null) {\r\n for (var quadrantIndex = 0; quadrantIndex < 4; quadrantIndex += 1) {\r\n newLevel.push(cell.quadrants[quadrantIndex]);\r\n }\r\n } else {\r\n for (var pointIndex = 0, pointsLen = cell.points.length; pointIndex < pointsLen; pointIndex += 1) {\r\n var point = cell.points[pointIndex];\r\n if (!rect.contains(point)) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n level = newLevel;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Returns collection of quadrants created in the data structure\r\n * Quadrants exists only when elements exists in them.\r\n * This method is used for visual debugging of the structure.\r\n * \r\n * @param {React} selection Rectangular test area to highlight quadrants\r\n * @returns {Rect[]} Returns collection of available quadrants.\r\n * Quadrants containing points within selection area have context.highlight property set to true.\r\n */\r\n function getPositions(selection) {\r\n var result = [];\r\n var count = 0;\r\n var level = [_rootCell];\r\n while (level.length > 0) {\r\n var newLevel = [];\r\n for (var index = 0, len = level.length; index < len; index += 1) {\r\n var cell = level[index];\r\n var rect = new Rect(cell.x, cell.y, cell.size, cell.size);\r\n rect.context = {\r\n isHighlighted: false\r\n };\r\n count += 1;\r\n if (selection != null && selection.overlaps(rect) && cell.points != null && cell.points.length > 0) {\r\n rect.context.isHighlighted = true;\r\n }\r\n\r\n result.push(rect);\r\n for (var quadrantIndex = 0; quadrantIndex < 4; quadrantIndex += 1) {\r\n var quadrant = cell.quadrants[quadrantIndex];\r\n if (quadrant != null) {\r\n newLevel.push(quadrant);\r\n }\r\n }\r\n }\r\n level = newLevel;\r\n }\r\n return result;\r\n }\r\n\r\n return {\r\n addPoint: addPoint,\r\n loopArea: loopArea,\r\n validate: validate,\r\n getPositions: getPositions\r\n };\r\n};","import getLiniarBreaks from './getLiniarBreaks';\r\nimport QuadTree from './QuadTree';\r\nimport Rect from '../graphics/structs/Rect';\r\n/**\r\n * Create spatial index structure. It uses collection of sizes to distribute \r\n * rectangles into buckets of similar size elements. Elements of the same bucket \r\n * are approximated to points. The search of rectangles is transformed to search of points \r\n * within given range plus offset for maximum linear rectangle size.\r\n * \r\n * @class SpatialIndex\r\n * \r\n * @param {Array} sizes Reference to optional collection of possible sizes of items we plan to store\r\n * in the index\r\n * \r\n * @returns {SpatialIndex} Returns spacial index data structure.\r\n */\r\nexport default function SpatialIndex(sizes) {\r\n var _buckets = [];\r\n\r\n sizes.sort(function (a, b) { return a - b; });\r\n\r\n switch (sizes.length) {\r\n case 0:\r\n _buckets.push(new Bucket(0, 1000000));\r\n break;\r\n case 1:\r\n var size1 = sizes[0];\r\n _buckets.push(new Bucket(0, size1));\r\n break;\r\n case 2:\r\n size1 = sizes[0];\r\n var size2 = sizes[1];\r\n if (size2 > size1 * 2) {\r\n _buckets.push(new Bucket(0, size1));\r\n _buckets.push(new Bucket(size1, size2));\r\n } else {\r\n _buckets.push(new Bucket(0, size2));\r\n }\r\n break;\r\n default:\r\n var breaks = getLiniarBreaks(sizes);\r\n var minimum = 0;\r\n for (var index = 0; index < breaks.length; index += 1) {\r\n var maximum = sizes[breaks[index]];\r\n _buckets.push(new Bucket(minimum, maximum));\r\n minimum = maximum;\r\n }\r\n break;\r\n }\r\n\r\n function Bucket(minimum, maximum) {\r\n this.minimum = minimum;\r\n this.maximum = maximum;\r\n this.quadTree = QuadTree(maximum * 2);\r\n }\r\n\r\n /**\r\n * Adds rectangle to spacial index\r\n * @param {Rect} rect Rectangle\r\n */\r\n function addRect(rect) {\r\n var size = Math.max(rect.width, rect.height);\r\n var point = rect.centerPoint();\r\n\r\n for (var index = 0, len = _buckets.length; index < len; index += 1) {\r\n var bucket = _buckets[index];\r\n\r\n if (size <= bucket.maximum || index == len - 1) {\r\n point.context = rect;\r\n bucket.quadTree.addPoint(point);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Callback function for iteration of spacial index rectangles\r\n * \r\n * @callback onSpatialIndexItemCallback\r\n * @param {React} rect Rectangle\r\n * @returns {boolean} Returns true to break iteration process.\r\n */\r\n\r\n /**\r\n * Loops rectangular area of spacial index\r\n * \r\n * @param {object} thisArg The callback function invocation context\r\n * @param {Rect} rect Rectangular search area\r\n * @param {onSpatialIndexItemCallback} onItem Callback function to call for every rectangle intersecting given rectangular search area\r\n */\r\n function loopArea(thisArg, rect, onItem) { // onItem = function(itemid) {}\r\n if (onItem != null) {\r\n for (var index = 0, len = _buckets.length; index < len; index += 1) {\r\n var bucket = _buckets[index];\r\n var bucketRect = new Rect(rect);\r\n bucketRect.offset(bucket.maximum / 2.0);\r\n bucket.quadTree.loopArea(this, bucketRect, function (point) {\r\n var pointRect = point.context;\r\n\r\n if (rect.overlaps(pointRect)) {\r\n return onItem.call(thisArg, pointRect);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Validates internal data consistency of spacial index data structure\r\n * \r\n * @ignore\r\n * @returns {boolean} Returns true if structure pass validation\r\n */\r\n function validate() {\r\n var result = true;\r\n for (var index = 0, len = _buckets.length; index < len; index += 1) {\r\n var bucket = _buckets[index];\r\n\r\n result = result && bucket.quadTree.validate();\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns collection of quadrants created in spacial index\r\n * Quadrants exists only when elements exists in them.\r\n * This method is used for visual debugging of the structure.\r\n * \r\n * @ignore\r\n * @param {React} selection Rectangular test area to highlight quadrants\r\n * @returns {Rect[]} Returns collection of available quadrants.\r\n * Quadrants containing points within selection area have context.highlight property set to true.\r\n */\r\n function getPositions(selection) {\r\n var result = [];\r\n for (var index = 0, len = _buckets.length; index < len; index += 1) {\r\n var bucket = _buckets[index];\r\n\r\n result = result.concat(bucket.quadTree.getPositions(selection));\r\n }\r\n return result;\r\n }\r\n\r\n return {\r\n addRect: addRect,\r\n loopArea: loopArea,\r\n validate: validate,\r\n getPositions: getPositions\r\n };\r\n};","import { isObject, cloneObject } from '../common';\r\nimport commonBinarySearch from './binarySearch';\r\nimport commonMergeSort from './mergeSort';\r\n/**\r\n * Creates Tree Levels structure. It is diagraming specific auxiliary structure\r\n * that keeps tree nodes order level by level.\r\n * @class TreeLevels\r\n * \r\n * @param {TreeLevels} [source=undefined] Optional source object to clone content from into the new instance of the structure.\r\n * @returns {TreeLevels} Returns tree levels structure.\r\n */\r\nexport default function TreeLevels(source) {\r\n var _levels = [],\r\n _items = {},\r\n _minimum = null,\r\n _maximum = null;\r\n\r\n _init(source);\r\n\r\n function _init(source) {\r\n if (isObject(source)) {\r\n _levels = cloneObject(source.levels, true);\r\n _items = cloneObject(source.items, true);\r\n _minimum = cloneObject(source.minimum, true);\r\n _maximum = cloneObject(source.maximum, true);\r\n }\r\n }\r\n\r\n function LevelContext(context) {\r\n this.context = context;\r\n this.items = [];\r\n }\r\n\r\n function ItemContext(context, position, level) {\r\n this.context = context;\r\n this.positions = {};\r\n this.positions[level] = position;\r\n this.startLevel = level;\r\n this.endLevel = level;\r\n }\r\n\r\n /**\r\n * Checks if structure has elements.\r\n * \r\n * @returns {boolean} Returns true if structure has elements.\r\n */\r\n function isEmpty() {\r\n return !_levels.length;\r\n }\r\n\r\n /**\r\n * Number of levels\r\n * \r\n * @returns {number} Returns number of levels in structure.\r\n */\r\n function length() {\r\n return _levels.length;\r\n }\r\n\r\n /**\r\n * Adds new level. Structure keeps levels sorted by their indexes. The level index can be positive and negative as well.\r\n * Structure auto expands collection of levels in both directions and keeps them ordered.\r\n * @param {number} level New level index\r\n * @param {object} context Context object\r\n */\r\n function addLevel(level, context) {\r\n var treeLevel = createLevel(level);\r\n treeLevel.context = context;\r\n }\r\n\r\n /**\r\n * Returns element's start level index in the structure. Element may occupy multiple levels of the tree levels structure.\r\n * \r\n * @param {string} itemid The element id\r\n * @returns {number} Returns start level index\r\n */\r\n function getStartLevelIndex(itemid) {\r\n return _items.hasOwnProperty(itemid) ? _items[itemid].startLevel : null;\r\n }\r\n\r\n /**\r\n * Returns element's end level index in the structure. Element may occupy multiple levels of the tree levels structure.\r\n * \r\n * @param {string} itemid Element id\r\n * @returns {number} Returns end level index\r\n */\r\n function getEndLevelIndex(itemid) {\r\n return _items.hasOwnProperty(itemid) ? _items[itemid].endLevel : null;\r\n }\r\n\r\n /**\r\n * Gets element position at level\r\n * \r\n * @param {string} itemid Element id\r\n * @param {number} level Level index\r\n * @returns {number} Returns position of the element \r\n */\r\n function getItemPosition(itemid, level) {\r\n var context = _items[itemid];\r\n if (context != null) {\r\n if (level != null) {\r\n return context.positions[level];\r\n } else {\r\n return context.positions[context.startLevel];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets element at position\r\n * \r\n * @param {number} levelIndex Level index\r\n * @param {number} position Item position\r\n * @returns {number} Returns element id\r\n */\r\n function getItemAtPosition(levelIndex, position) {\r\n var level = _levels[levelIndex],\r\n itemid = null;\r\n if (level != null) {\r\n itemid = level.items[position];\r\n }\r\n return itemid;\r\n }\r\n\r\n /**\r\n * Gets previous element\r\n * \r\n * @param {string} itemid Element id\r\n * @param {number} itemLevel Level index\r\n * @returns {number} Returns previous element id\r\n */\r\n function getPrevItem(itemid, itemLevel) {\r\n var result = null;\r\n if (_items.hasOwnProperty(itemid)) {\r\n var item = _items[itemid];\r\n itemLevel = itemLevel || item.startLevel;\r\n var level = _levels[itemLevel];\r\n result = level.items[item.positions[itemLevel] - 1];\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Gets next element\r\n * \r\n * @param {string} itemid Element id\r\n * @param {number} itemLevel Level index\r\n * @returns {number} Returns next element id\r\n */\r\n function getNextItem(itemid, itemLevel) {\r\n var result = null;\r\n if (_items.hasOwnProperty(itemid)) {\r\n var item = _items[itemid];\r\n itemLevel = itemLevel || item.startLevel;\r\n var level = _levels[itemLevel];\r\n result = level.items[item.positions[itemLevel] + 1];\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Checks if structure contains element\r\n * @param {string} itemid Element id\r\n * @returns {boolean} Returns true if structure contains given element id\r\n */\r\n function hasItem(itemid) {\r\n return _items.hasOwnProperty(itemid);\r\n }\r\n\r\n /**\r\n * Checks if structure contains level\r\n * @param {number} levelIndex Level index\r\n * @returns {boolean} Returns true if structure contains given level index\r\n */\r\n function hasLevel(levelIndex) {\r\n return _levels[levelIndex] != null;\r\n }\r\n\r\n /**\r\n * Gets element context object\r\n * @param {string} itemid Element id\r\n * @returns {object} Returns context object of the element\r\n */\r\n function getItemContext(itemid) {\r\n var result = null;\r\n if (_items.hasOwnProperty(itemid)) {\r\n result = _items[itemid].context;\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates new level\r\n * @param {index} index New level index\r\n * @returns {object} Returns new level empty context object\r\n */\r\n function createLevel(index) {\r\n if (_levels[index] == null) {\r\n _levels[index] = new LevelContext(null);\r\n\r\n _minimum = _minimum === null ? index : Math.min(_minimum, index);\r\n _maximum = _maximum === null ? index : Math.max(_maximum, index);\r\n }\r\n return _levels[index];\r\n }\r\n\r\n /**\r\n * Adds element\r\n * @param {number} levelIndex Level index\r\n * @param {string} itemid New element id\r\n * @param {object} context Context object\r\n */\r\n function addItem(levelIndex, itemid, context) {\r\n var level, itemContext;\r\n if (!_items.hasOwnProperty(itemid)) {\r\n level = createLevel(levelIndex);\r\n level.items.push(itemid);\r\n _items[itemid] = new ItemContext(context, level.items.length - 1, levelIndex);\r\n } else {\r\n level = createLevel(levelIndex);\r\n level.items.push(itemid);\r\n itemContext = _items[itemid];\r\n itemContext.positions[levelIndex] = level.items.length - 1;\r\n itemContext.startLevel = Math.min(itemContext.startLevel, levelIndex);\r\n itemContext.endLevel = Math.max(itemContext.endLevel, levelIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Callback function for iteration of levels\r\n * \r\n * @callback onTreeLevelCallback\r\n * @param {number} levelIndex Level index\r\n * @param {object} level Context object\r\n * @returns {boolean} Returns true to break iteration process.\r\n */\r\n\r\n /**\r\n * Loops levels\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {onTreeLevelCallback} onItem A callback function to call for every level\r\n */\r\n function loopLevels(thisArg, onItem) {\r\n var index,\r\n level;\r\n if (onItem != null) {\r\n for (index = _minimum; index <= _maximum; index += 1) {\r\n level = _levels[index];\r\n if (level != null) {\r\n if (onItem.call(thisArg, index, level.context)) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Loops levels in reversed order\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {onTreeLevelCallback} onItem A callback function to call for every level\r\n */\r\n function loopLevelsReversed(thisArg, onItem) {\r\n var index,\r\n level;\r\n if (onItem != null) {\r\n for (index = _maximum; index >= _minimum; index -= 1) {\r\n level = _levels[index];\r\n if (level != null) {\r\n if (onItem.call(thisArg, index, level.context)) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Gets number of elements at level\r\n * \r\n * @param {number} levelIndex Level index\r\n * @returns {number} Returns number of elements at the level\r\n */\r\n function getLevelLength(levelIndex) {\r\n var result = 0,\r\n level = _levels[levelIndex];\r\n if (level != null) {\r\n result = level.items.length;\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Callback function for iteration of level elements\r\n * \r\n * @callback onTreeLevelItemCallback\r\n * @param {string} itemid Element id\r\n * @param {object} item Context object of the element\r\n * @param {number} position Position of the element at level\r\n * @returns {boolean} Returns true to break iteration process.\r\n */\r\n\r\n /**\r\n * Loops level elements\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {number} levelIndex Level index\r\n * @param {onTreeLevelItemCallback} onItem A callback function to call for every item\r\n */\r\n function loopLevelItems(thisArg, levelIndex, onItem) {\r\n var index, len,\r\n level,\r\n itemid;\r\n if (onItem != null) {\r\n level = _levels[levelIndex];\r\n if (level != null) {\r\n for (index = 0, len = level.items.length; index < len; index += 1) {\r\n itemid = level.items[index];\r\n if (onItem.call(thisArg, itemid, _items[itemid].context, index)) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Callback function for iteration of elements level by level\r\n * \r\n * @callback onTreeLevelsItemCallback\r\n * @param {string} itemid Element id\r\n * @param {object} item Element context object\r\n * @param {number} position Position of the element at level\r\n * @param {number} levelIndex Level index\r\n * @param {object} level Level context object\r\n * @returns {boolean} Returns true to break iteration process.\r\n */\r\n\r\n /**\r\n * Loops elements level by level\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {onTreeLevelsItemCallback} onItem A callback function to call for every item\r\n */\r\n function loopItems(thisArg, onItem) { // function onItem(itemid, item, position, levelIndex, level)\r\n var index, len,\r\n level, levelIndex,\r\n items,\r\n itemid,\r\n processed = {};\r\n if (onItem != null) {\r\n for (levelIndex = _minimum; levelIndex <= _maximum; levelIndex += 1) {\r\n level = _levels[levelIndex];\r\n if (level != null) {\r\n items = level.items;\r\n for (index = 0, len = items.length; index < len; index += 1) {\r\n itemid = items[index];\r\n if (!processed.hasOwnProperty(itemid)) {\r\n processed[itemid] = true;\r\n if (onItem.call(thisArg, itemid, _items[itemid].context, index, levelIndex, level.context)) {\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Callback for finding distance for element\r\n *\r\n * @callback onTreeLevelDistanceCallback\r\n * @param {number} itemid Element id\r\n * @param {object} item Context object\r\n * @returns {number} Returns distance for the element\r\n */\r\n\r\n /**\r\n * Searches element at level using binary search\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {number} levelIndex Level index to search element at\r\n * @param {onTreeLevelDistanceCallback} onGetDistance A callback function to measure distance for element\r\n */\r\n function binarySearch(thisArg, levelIndex, onGetDistance) {\r\n var result = null,\r\n level;\r\n if (onGetDistance != null) {\r\n level = _levels[levelIndex];\r\n if (level != null) {\r\n result = commonBinarySearch(level.items, function (itemid) {\r\n return onGetDistance.call(thisArg, itemid, _items[itemid].context);\r\n });\r\n }\r\n }\r\n return result.item;\r\n }\r\n\r\n /**\r\n * Callback for finding weight of element\r\n *\r\n * @callback onTreeLevelItemWeightCallback\r\n * @param {number} itemid Element id\r\n * @param {object} item Context object\r\n * @returns {number} Returns distance for the element\r\n */\r\n\r\n /**\r\n * Callback for iterating items\r\n *\r\n * @callback onTreeLevelMergedItemCallback\r\n * @param {number} itemid Element id\r\n * @param {object} item Context object\r\n * @returns {number} Returns true to break iteration process.\r\n */\r\n\r\n /**\r\n * Loops merged elements of tree level structure by weight\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {onTreeLevelItemWeightCallback} getItemWeight Callback to measure weight of the element\r\n * @param {onTreeLevelMergedItemCallback} onItem Callback to iterate merged elements\r\n */\r\n function loopMerged(thisArg, getItemWeight, onItem) {\r\n var index, len,\r\n level,\r\n itemid,\r\n levelsItems = [],\r\n sortedItems;\r\n\r\n for (index = 0, len = _levels.length; index < len; index += 1) {\r\n level = _levels[index];\r\n if (level != null) {\r\n levelsItems.push(level.items);\r\n }\r\n }\r\n\r\n sortedItems = commonMergeSort(levelsItems, getItemWeight, true);\r\n\r\n if (onItem != null) {\r\n for (index = 0, len = sortedItems.length; index < len; index += 1) {\r\n itemid = sortedItems[index];\r\n if (onItem.call(thisArg, itemid, _items[itemid].context)) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Loops level elements starting with the given item\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {string} itemid Start element id\r\n * @param {boolean} isLeft If true then method loops leftward\r\n * @param {onTreeLevelMergedItemCallback} onItem Callback function to call for every item\r\n * @param {number} level Level index\r\n */\r\n function loopFromItem(thisArg, itemid, isLeft, onItem, level) {\r\n var context,\r\n index, len,\r\n items, nextItemId,\r\n itemLevel, position;\r\n if (_items.hasOwnProperty(itemid)) {\r\n context = _items[itemid];\r\n itemLevel = level || context.startLevel;\r\n items = _levels[itemLevel].items;\r\n position = context.positions[itemLevel];\r\n if (onItem != null) {\r\n if (isLeft) {\r\n for (index = position - 1; index >= 0; index -= 1) {\r\n nextItemId = items[index];\r\n if (onItem.call(thisArg, nextItemId, _items[nextItemId].context)) {\r\n break;\r\n }\r\n }\r\n } else {\r\n for (index = position + 1, len = items.length; index < len; index += 1) {\r\n nextItemId = items[index];\r\n if (onItem.call(thisArg, nextItemId, _items[nextItemId].context)) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Loops levels starting with the given element end level. Element may occupy multiple levels, \r\n * so this method starts level iteration from next level after or before item levels.\r\n * \r\n * @param {Object} thisArg The callback function invocation context\r\n * @param {string} itemid Element id\r\n * @param {boolean} isBelow If true then method loops levels backward\r\n * @param {onTreeLevelCallback} onItem Callback function to call for every level\r\n */\r\n function loopLevelsFromItem(thisArg, itemid, isBelow, onItem) { // function(levelIndex, level)\r\n var context,\r\n index, len,\r\n items, item, nextItemId,\r\n nextLevels, level;\r\n if (_items.hasOwnProperty(itemid)) {\r\n context = _items[itemid];\r\n if (onItem != null) {\r\n if (isBelow) {\r\n for (index = context.endLevel + 1; index <= _maximum; index += 1) {\r\n level = _levels[index];\r\n if (onItem.call(thisArg, index, level != null ? level.context : null)) {\r\n break;\r\n }\r\n }\r\n } else {\r\n for (index = context.startLevel - 1; index >= _minimum; index -= 1) {\r\n level = _levels[index];\r\n if (onItem.call(thisArg, index, level != null ? level.context : null)) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clones tree levels structure.\r\n * \r\n * @returns {TreeLevels} Returns cloned copy of the structure\r\n */\r\n function clone() {\r\n return TreeLevels({\r\n levels: _levels,\r\n items: _items,\r\n minimum: _minimum,\r\n maximum: _maximum\r\n });\r\n }\r\n\r\n return {\r\n addlevel: addLevel,\r\n hasLevel: hasLevel,\r\n hasItem: hasItem,\r\n addItem: addItem,\r\n getItemContext: getItemContext,\r\n getLevelIndex: getStartLevelIndex,\r\n getEndLevelIndex: getEndLevelIndex,\r\n getItemPosition: getItemPosition,\r\n getItemAtPosition: getItemAtPosition,\r\n loopLevels: loopLevels,\r\n loopLevelsReversed: loopLevelsReversed,\r\n loopLevelItems: loopLevelItems,\r\n getLevelLength: getLevelLength,\r\n loopItems: loopItems,\r\n binarySearch: binarySearch,\r\n loopMerged: loopMerged,\r\n loopFromItem: loopFromItem,\r\n loopLevelsFromItem: loopLevelsFromItem,\r\n getPrevItem: getPrevItem,\r\n getNextItem: getNextItem,\r\n length: length,\r\n isEmpty: isEmpty,\r\n\r\n clone: clone\r\n };\r\n};","import {NavigationMode, PageFitMode, Visibility, OrientationType, VerticalAlignmentType,\r\n ConnectorType, GroupByType, ElbowType, Enabled, SelectionPathMode,\r\n Colors, ShapeType, LineType, AdviserPlacementType, TextOrientationType, HorizontalAlignmentType,\r\n PlacementType, ChildrenPlacementType\r\n} from '../enums';\r\nimport Thickness from '../graphics/structs/Thickness';\r\nimport Size from '../graphics/structs/Size';\r\n\r\n/**\r\n * @class OrgConfig\r\n * @classdesc Organizational Chart configuration object. Use this object as a reference \r\n * for available properties and their default values.\r\n * \r\n * @param {string} name\r\n */\r\nexport default function OrgConfig(name) {\r\n this.name = (name !== undefined) ? name : \"OrgDiagram\";\r\n this.classPrefix = \"orgdiagram\";\r\n\r\n /**\r\n * Sets control navigation mode.\r\n * \r\n * By default control replicates interactivity of regular collection control. It has cursor to select single\r\n * item in the collection. So user can click and select any node in the diagram. The control has highlight for mouse over feedback.\r\n * So user can move mouse and see highlight frame and callout callback annotation for node under cursor.\r\n * \r\n * By `Default` the control has both cursor and highlight. If they are disabled then control is rendered as a static image.\r\n * \r\n * @type {NavigationMode}\r\n */\r\n this.navigationMode = NavigationMode.Default;\r\n\r\n /**\r\n * Page fit mode. Minimizing nodes into markers and labels. This option provides a special mode that renders the diagram\r\n * nodes in the form of markers. This is a highly scalable form that is capable of rendering large numbers of nodes\r\n * while not affecting the rendering performance. With this, huge diagrams can be fit into available screen space.\r\n * \r\n * When using a graphics editor to manually draw your diagrams, it is common place to have large gaps between the nodes.\r\n * This can make the diagram/chart unreadable, hard to edit and navigate. On top of that, on a large scale the diagram could have screen size\r\n * intervals between items. Admittedly the computer UI does allow the user to scale and fit the diagram in order to visualize it\r\n * on a single screen. But in that case, the items become small and unreadable as there is no scaling priority and the items\r\n * are just too small to be readable.\r\n * \r\n * @group Auto Layout\r\n * @type {PageFitMode}\r\n */\r\n this.pageFitMode = PageFitMode.FitToPage;\r\n\r\n /**\r\n * Minimal nodes visibility in the diagram. If auto fit of the diagram into current page size is enabled, then\r\n * this option controls minimum allowed size of the diagram nodes.\r\n * \r\n * @group Auto Layout\r\n * @type {Visibility}\r\n */\r\n this.minimalVisibility = Visibility.Dot;\r\n\r\n /**\r\n * Minimum visible levels option prevents top-level nodes from folding into markers. The option \r\n * accounts for organizational chart relations and `levelOffset` of individual items.\r\n * \r\n * @group Auto Layout\r\n * @type {number}\r\n */\r\n this.minimumVisibleLevels = 1;\r\n\r\n /**\r\n * Set diagram orientation. This option controls diagram layout orientation. The control can be rotated in any direction,\r\n * this is needed for Arabic support and various layouts.\r\n * \r\n * @group Auto Layout\r\n * @type {OrientationType}\r\n */\r\n this.orientationType = OrientationType.Top;\r\n\r\n /**\r\n * Sets children horizontal alignment relative to their parent. The children by default are measured in size and then aligned \r\n * towards the parent node. If it is `Center` aligned then parent node is placed in the middle of the children. In the `Left`\r\n * alignment mode parent is aligned to left of the children and vice versa for `Right` alignment.\r\n * \r\n * @group Auto Layout\r\n * @type {HorizontalAlignmentType}\r\n */\r\n this.horizontalAlignment = HorizontalAlignmentType.Center;\r\n\r\n /**\r\n * Sets items vertical alignment relative to each other within one level of the hierarchy. \r\n * It does not change anything if diagram nodes are all of the same size.\r\n * \r\n * @group Auto Layout\r\n * @type {VerticalAlignmentType}\r\n */\r\n this.verticalAlignment = VerticalAlignmentType.Middle;\r\n\r\n /**\r\n * Sets arrows direction for connector lines. If this property set to `Parents` then arrows are drawn\r\n * from logical children towards logical parents. By default diagram has no arrows.\r\n * \r\n * @group Relation Lines\r\n * @type {GroupByType}\r\n */\r\n this.arrowsDirection = GroupByType.None;\r\n\r\n /**\r\n * Show extra horizontal arrows on top of long horizontal connection lines for the easy visual tracing \r\n * of relations between parents and children. By default it is off.\r\n * \r\n * @group Relation Lines\r\n * @type {boolean}\r\n */\r\n this.showExtraArrows = false;\r\n\r\n /**\r\n * Set minimum space for placement of extra arrows on horizontal connection lines. See `showExtraArrows` property.\r\n * \r\n * @group Relation Lines\r\n * @type {number}\r\n */\r\n this.extraArrowsMinimumSpace = 30;\r\n\r\n /**\r\n * Connection lines style. This option is only applicable to nodes minimized to markers or lines. Full size nodes\r\n * are always connected with squared connection lines\r\n * \r\n * @group Relation Lines\r\n * @type {ConnectorType}\r\n */\r\n this.connectorType = ConnectorType.Squared;\r\n\r\n /**\r\n * The bevel size of squared connector lines.\r\n * \r\n * @group Relation Lines\r\n * @type {number}\r\n */\r\n this.bevelSize = 4;\r\n\r\n /**\r\n * Set style of squared connectors with custom elbows.\r\n * \r\n * @group Relation Lines\r\n * @type {ElbowType}\r\n */\r\n this.elbowType = ElbowType.None;\r\n\r\n /**\r\n * The size of dot markers placed in the elbows of connector lines.\r\n * \r\n * @group Relation Lines\r\n * @type {number}\r\n */\r\n this.elbowDotSize = 4;\r\n\r\n\r\n /**\r\n * Empty diagram message. This option is supposed to say user that chart is empty when no data is available for rendering.\r\n * \r\n * @type {string}\r\n */\r\n this.emptyDiagramMessage = \"Diagram is empty.\";\r\n\r\n /**\r\n * Items collection. Ths property defines data we render in the diagram.\r\n * \r\n * Every item should have set unique `id` property. They are used to create relations\r\n * between items in the diagram and for rendering of various UI elements bound to nodes.\r\n * \r\n * @type {OrgItemConfig[]}\r\n */\r\n this.items = [];\r\n\r\n /**\r\n * Annotations. Annotations are API elements attached to the diagram nodes \r\n * and designed to highlight some nodes or relations. We draw our annotations \r\n * either in front of the nodes or in the background. The annotations don't affect \r\n * the placement of the nodes in any way. We have some exceptions. As a result, the control \r\n * redraws them instantaneously without rendering or recalculating the actual diagram layout. \r\n * \r\n * @type {Array.<(ShapeAnnotationConfig | BackgroundAnnotationConfig | ConnectorAnnotationConfig | HighlightPathAnnotationConfig)>}\r\n */\r\n this.annotations = [];\r\n\r\n /**\r\n * Cursor item. Organization Chart control has API options equivalent to standard UI controls.\r\n * The cursor item is used to select a single item in the hierarchy with a mouse click, and \r\n * the highlighted item provides visual feedback on the mouse over. Selected items collection \r\n * is equivalent to checked items in ListView or TreeView controls.\r\n * \r\n * The chart's navigation work around the current cursor item. The component shows \r\n * the cursor and its neighbors regardless of page fit mode. So cursor item plays the role \r\n * of local zoom in the chart hierarchy. The user navigates around the chart via clicking \r\n * and selecting cursor items and zooming into data around the new cursor item. \r\n * \r\n * The control notifies about this property changes with `onCursorChanging` and `onCursorChanged` events.\r\n * \r\n * If the cursor item is set to null, then no cursor item is selected in the diagram.\r\n * \r\n * @type {string}\r\n */\r\n this.cursorItem = null;\r\n\r\n /**\r\n * Highlighted item. Shows highlight and callout annotation for given item id. It does not trigger diagram\r\n * layout or scrolling so it can be used to synchronize mouse over feedback of the diagram nodes with other\r\n * collection controls or UI elements. \r\n * \r\n * The control notifies about this property changes with `onHighlightChanging` and `onHighlightChanged` events.\r\n * \r\n * If `null` then no highlight shown on the diagram.\r\n * \r\n * @type {string}\r\n */\r\n this.highlightItem = null;\r\n\r\n /**\r\n * Highlight gravity radius. This property controls mouse over feedback and callout annotation visibility for nodes\r\n * rendered as markers when diagram auto fits nodes into available screen space. It makes marker highlighted when \r\n * mouse pointer is inside of the gravity radius cycle of the marker. This property is ignored when the nearest item\r\n * is outside of the screen boundaries and is not visible to the end user.\r\n *\r\n * The normal item has mouse over feedback in form of highlight border only when mouse pointer is inside of its boundaries. \r\n * \r\n * @type {number}\r\n */\r\n this.highlightGravityRadius = 40;\r\n\r\n /**\r\n * Selected items collection. Selected items is a collection of items ids having checked their check boxes.\r\n * The control always shows selected items in the full size form, regardless of enabled page fit mode.\r\n * \r\n * The control notifies about user made changes in this collection with `onSelectionChanging` and `onSelectionChanged` events.\r\n * \r\n * @type {string[]}\r\n */\r\n this.selectedItems = [];\r\n\r\n /**\r\n * Sets visibility of selection check boxes for the diagram nodes.\r\n * \r\n * `Auto` - visible for cursor item only\r\n * `True` - visible\r\n * `False` - hidden\r\n * \r\n * See `selectedItems` property. All items listed in this property are going to have checked selection checkboxes.\r\n * Checkbox can be added to item template, in that case it should be named=\"checkbox\", so control can use it as built in checkbox element.\r\n * \r\n * @type {Enabled}\r\n */\r\n this.hasSelectorCheckbox = Enabled.Auto;\r\n\r\n /**\r\n * Selection check box label. See `hasSelectorCheckbox` and `selectedItems` properties.\r\n * \r\n * @group Templates\r\n * @type {string}\r\n */\r\n this.selectCheckBoxLabel = \"Selected\";\r\n\r\n /**\r\n * Selection path mode. This property controls visibility of nodes between cursor and the root of the diagram in the auto fit mode. It allows to draw \r\n * them in full size regardless of available space and auto fit mode.\r\n * \r\n * The control supports diagram auto fit into screen view. It is achieved via drawing nodes in form of markers.\r\n * So small nodes make diagram fit into the screen space, but they have no details. Our solution is to show cursor and selected items\r\n * of the diagram in full size and draw all other diagram nodes as markers.\r\n *\r\n * @group Auto Layout\r\n * @type {SelectionPathMode}\r\n */\r\n this.selectionPathMode = SelectionPathMode.FullStack;\r\n\r\n /**\r\n * Sets selected items frame visibility. If selected item is outside of the diagram's area visible to the end user,\r\n * control displays that item in the form of the marker on frame around the diagram.\r\n * \r\n * @group Frame\r\n * @type {boolean}\r\n */\r\n this.showFrame = false;\r\n\r\n /**\r\n * Frame inner padding. Adds extra padding around markers on the inner side of the frame.\r\n * \r\n * @group Frame\r\n * @type {Thickness}\r\n */\r\n this.frameInnerPadding = new Thickness(2, 2, 2, 2);\r\n\r\n /**\r\n * Frame outer padding. Adds extra padding around markers on the outer side of the frame.\r\n * \r\n * @group Frame\r\n * @type {Thickness}\r\n */\r\n this.frameOuterPadding = new Thickness(2, 2, 2, 2);\r\n\r\n /**\r\n * Diagram padding. Adds extra padding around the diagram.\r\n * \r\n * @group Frame\r\n * @type {Thickness}\r\n */\r\n this.padding = new Thickness(10, 10, 10, 10);\r\n\r\n /**\r\n * Collection of named templates used to define content for nodes, cursor and highlight.\r\n * By default control provides templates for all types of visual elements.\r\n * \r\n * @group Templates\r\n * @type {TemplateConfig[]}\r\n */\r\n this.templates = [];\r\n\r\n /**\r\n * Name of the template used to render nodes in the diagram. See `templates` property. Template name can be set individually for every node\r\n * see `templateName` property of `OrgItemConfig`.\r\n * \r\n * @group Templates\r\n * @type {string}\r\n */\r\n this.defaultTemplateName = null;\r\n\r\n /**\r\n * Sets buttons visibility.\r\n * \r\n * `Auto` - cursor item only.\r\n * `True` - visible\r\n * `False` - hidden\r\n * \r\n * @group Templates\r\n * @type {Enabled}\r\n */\r\n this.hasButtons = Enabled.Auto;\r\n\r\n /**\r\n * On buttons panel render event. This callback function is called to render context of buttons panel.\r\n * It is used to replace `buttons` collection property in the control. So we preserve context buttons panel as a functional \r\n * concept, but eliminate buttons customization API.\r\n *\r\n * @callback\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onButtonsRender = null;\r\n\r\n /**\r\n * This callback function is called before `onHighlightChanged` event. See `highlightItem` property.\r\n * Use this event to modify diagram elements not affecting diagram layout. For example on-screen connector annotations added \r\n * in this event handler to diagram configuration would be rendered together with highlight.\r\n *\r\n * @callback\r\n * @param {Object} event Mouse event\r\n * @param {EventArgs} data Context information. Use properties of this argument to stop event propagate and further diagram layout and rendering.\r\n */\r\n this.onHighlightChanging = null;\r\n\r\n /**\r\n * On highlight item changed event. See `highlightItem` property.\r\n *\r\n * @callback\r\n * @param {Object} event Mouse event\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onHighlightChanged = null;\r\n\r\n /**\r\n * On cursor item being changed event. See `cursorItem` property. This callback function is called before `onCursorChanged` event.\r\n * Use this callback function to stop event propagation. See `EventArgs` for details.\r\n *\r\n * @callback\r\n * @param {Object} event Mouse event\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onCursorChanging = null;\r\n\r\n /**\r\n * On cursor item changed event. See `cursorItem` property.\r\n *\r\n * @callback\r\n * @param {Object} event Mouse event\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onCursorChanged = null;\r\n\r\n /**\r\n * On selected items being changed event. See `selectedItems` property.\r\n *\r\n * @callback\r\n * @param {Object} event Mouse event\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onSelectionChanging = null;\r\n\r\n /**\r\n * On selected items changed event. See `selectedItems` property.\r\n *\r\n * @callback\r\n * @param {Object} event Mouse event\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onSelectionChanged = null;\r\n\r\n /**\r\n * Button click event. See `buttons` property.\r\n *\r\n * @callback\r\n * @param {Object} event Mouse event\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onButtonClick = null;\r\n\r\n /**\r\n * Mouse click event. \r\n *\r\n * @callback\r\n * @param {Object} event Mouse event\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onMouseClick = null;\r\n\r\n /**\r\n * Mouse double click event. \r\n *\r\n * @callback\r\n * @param {Object} event Mouse event\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onMouseDblClick = null;\r\n\r\n /**\r\n * Callback function for rendering content of the diagram nodes. This callback is only \r\n * called when custom item template is defined in the template object configuration.\r\n * This callback receives reference to DOM element and context object of the rendered item.\r\n * The control reuses existing elements in the DOM, so it is applications responsibility \r\n * to properly update their content.\r\n *\r\n * @callback\r\n * @param {Object} event Event if available\r\n * @param {RenderEventArgs} data The context information\r\n */\r\n this.onItemRender = null;\r\n\r\n /**\r\n * Callback function for rendering content of the highlight template. This callback is only \r\n * called when custom highlight is defined in the template configuration.\r\n *\r\n * @callback\r\n * @param {Object} event Event if available\r\n * @param {RenderEventArgs} data The context information\r\n */\r\n this.onHighlightRender = null;\r\n\r\n /**\r\n * Callback function for rendering content of the cursor template. This callback is only \r\n * called when custom cursor is defined in the template configuration.\r\n *\r\n * @callback\r\n * @param {Object} event Event if available\r\n * @param {RenderEventArgs} data The context information\r\n */\r\n this.onCursorRender = null;\r\n\r\n /**\r\n * Sets the spacing between rows.\r\n * \r\n * @group Intervals\r\n * @type {number}\r\n */\r\n this.normalLevelShift = 20;\r\n\r\n /**\r\n * Sets the spacing after the row containing nodes minimized down to markers.\r\n * \r\n * @group Intervals\r\n * @type {number}\r\n */\r\n this.dotLevelShift = 20;\r\n\r\n /**\r\n * Sets the spacing after the row containing nodes minimized down to lines.\r\n * \r\n * @group Intervals\r\n * @type {number}\r\n */\r\n this.lineLevelShift = 10;\r\n\r\n /**\r\n * Sets interval between nodes of the same row.\r\n * \r\n * @group Intervals\r\n * @type {number}\r\n */\r\n this.normalItemsInterval = 10;\r\n\r\n /**\r\n * Sets interval between nodes of the same row, minimized down to markers.\r\n * \r\n * @group Intervals\r\n * @type {number}\r\n */\r\n this.dotItemsInterval = 1;\r\n\r\n /**\r\n * Sets interval between nodes of the same row, minimized down to lines.\r\n * \r\n * @group Intervals\r\n * @type {number}\r\n */\r\n this.lineItemsInterval = 2;\r\n\r\n /**\r\n * Set cousins interval multiplier. This values adds extra space between branches of the hierarchy.\r\n * For example nodes of the same parent have interval 20 and nodes of two different parents are going to have interval 100.\r\n * \r\n * @group Intervals\r\n * @type {number}\r\n */\r\n this.cousinsIntervalMultiplier = 5;\r\n\r\n /**\r\n * The first font color of the title.\r\n * \r\n * The title background color is designed to be one of the available dimensions to group nodes in the diagram,\r\n * so title can be unreadable if its color matches its background color. This property is created to auto resolve this issue\r\n * via automatic switch between two available font title colors.\r\n * \r\n * @group Templates\r\n * @type {string}\r\n */\r\n this.itemTitleFirstFontColor = Colors.White;\r\n\r\n /**\r\n * The second font color of the title.\r\n * \r\n * @group Templates\r\n * @type {string}\r\n */\r\n this.itemTitleSecondFontColor = Colors.Navy;\r\n\r\n /**\r\n * Markers. The shape of the markers when nodes are minimized by auto fit. The control supports auto fit of the diagram into available screen space.\r\n * When the diagram size significantly larger than available screen space, its scrolling and navigation becomes problematic,\r\n * so control supports automatic diagram fit into the screen space via rendering some of its nodes in form of small markers.\r\n * So this option sets default marker shape for nodes. It can be set individually per node in items configurations.\r\n * \r\n * The default color of shape is the same as `itemTitleColor` property set for individual items.\r\n * \r\n * @group Templates\r\n * @type {ShapeType}\r\n */\r\n this.minimizedItemShapeType = ShapeType.None;\r\n\r\n /**\r\n * The relations lines color. The control uses this lines color to render basic relations between nodes.\r\n * \r\n * @group Relation Lines\r\n * @type {string}\r\n */\r\n this.linesColor = Colors.Silver;\r\n\r\n /**\r\n * The relations lines width\r\n * \r\n * @group Relation Lines\r\n * @type {number}\r\n */\r\n this.linesWidth = 1;\r\n\r\n /**\r\n * The relations lines pattern\r\n * \r\n * @group Relation Lines\r\n * @type {LineType}\r\n */\r\n this.linesType = LineType.Solid;\r\n\r\n /**\r\n * Sets highlight lines color. The diagram uses highlight lines to render highlighted relation lines between nodes.\r\n * \r\n * @group Relation Lines\r\n * @type {string}\r\n */\r\n this.highlightLinesColor = Colors.Red;\r\n\r\n /**\r\n * Sets highlight lines width.\r\n * \r\n * @group Relation Lines\r\n * @type {number}\r\n */\r\n this.highlightLinesWidth = 1;\r\n\r\n /**\r\n * Sets highlight lines pattern.\r\n * \r\n * @group Relation Lines\r\n * @type {LineType}\r\n */\r\n this.highlightLinesType = LineType.Solid;\r\n\r\n /**\r\n * Sets callout visibility.\r\n * \r\n * @group Callout\r\n * @type {boolean}\r\n */\r\n this.showCallout = true;\r\n\r\n /**\r\n * Sets visibility of the callout annotation depending on size of a node it is shown for. See `pageFitMode` property.\r\n * \r\n * @group Callout\r\n * @type {Visibility}\r\n */\r\n this.calloutMaximumVisibility = Visibility.Dot;\r\n\r\n /**\r\n * Callout annotation placement offset. Sets how far callout content is offset from the marker it is displayed for.\r\n * \r\n * @group Callout\r\n * @type {number}\r\n */\r\n this.calloutPlacementOffset = 100;\r\n\r\n /**\r\n * Callout annotation default template name.\r\n * \r\n * Templates are HTML fragments containing layout and styles used to render diagram nodes.\r\n * They are defined with a named configuration objects. See `templates` property of control's configuration object.\r\n * \r\n * @group Callout\r\n * @type {string}\r\n */\r\n this.defaultCalloutTemplateName = null;\r\n\r\n /**\r\n * Callout annotation fill color.\r\n * \r\n * @group Callout\r\n * @type {string}\r\n */\r\n this.calloutfillColor = \"#000000\";\r\n\r\n /**\r\n * Callout annotation border color.\r\n * \r\n * @group Callout\r\n * @type {string}\r\n */\r\n this.calloutBorderColor = null;\r\n\r\n /**\r\n * Callout annotation border line offset.\r\n * \r\n * @group Callout\r\n * @type {number}\r\n */\r\n this.calloutOffset = 4;\r\n\r\n /**\r\n * Callout annotation corner radius.\r\n * \r\n * @group Callout\r\n * @type {number}\r\n */\r\n this.calloutCornerRadius = 4;\r\n\r\n /**\r\n * Callout annotation pointer width.\r\n * \r\n * @group Callout\r\n * @type {string}\r\n */\r\n this.calloutPointerWidth = \"10%\";\r\n\r\n /**\r\n * Callout annotation border line width.\r\n * \r\n * @group Callout\r\n * @type {number}\r\n */\r\n this.calloutLineWidth = 1;\r\n\r\n /**\r\n * Callout annotation opacity\r\n * \r\n * @group Callout\r\n * @type {number}\r\n */\r\n this.calloutOpacity = 0.2;\r\n\r\n /**\r\n * Enables cross branch nodes alignment. Places the same type of nodes across all branches of the diagram at the same level.\r\n * \r\n * @group Auto Layout\r\n * @type {boolean}\r\n */\r\n this.alignBranches = false;\r\n\r\n\r\n /**\r\n * Sets default formation of child nodes. By default all children that belong to a parent node are always aligned \r\n * below and placed in a horizontal line. On a large scale this may result in the end user having to scroll screens\r\n * in order to view all of the nodes. To compensate for this, we provide the option of placing all of the children\r\n * of a parent node in a square/matrix formation. This will reduce sideways screen scrolling by compacting the child\r\n * nodes into a much smaller area on the screen.\r\n * \r\n * @group Auto Layout\r\n * @type {ChildrenPlacementType}\r\n */\r\n this.childrenPlacementType = ChildrenPlacementType.Horizontal;\r\n\r\n /**\r\n * Sets formation of leave children.\r\n * \r\n * @group Auto Layout\r\n * @type {ChildrenPlacementType}\r\n */\r\n this.leavesPlacementType = ChildrenPlacementType.Horizontal;\r\n\r\n /**\r\n * Sets default placement of assistants hierarchies relative to the regular children of the parent node.\r\n * If assistant node has its own children then control adds extra levels, so assistants children are placed\r\n * above level of the parent node children.\r\n * \r\n * @group Auto Layout\r\n * @type {boolean}\r\n */\r\n this.placeAssistantsAboveChildren = true;\r\n\r\n /**\r\n * Sets default placement of advisers hierarchies relative to the regular children of the parent node.\r\n * If adviser node has its own children then control adds extra levels, so advisers children are placed\r\n * above level of the parent node children.\r\n * \r\n * @group Auto Layout\r\n * @type {boolean}\r\n */\r\n this.placeAdvisersAboveChildren = true;\r\n\r\n /**\r\n * Maximum number of columns for matrix layout of children.\r\n * \r\n * @group Auto Layout\r\n * @type {number}\r\n */\r\n this.maximumColumnsInMatrix = 6;\r\n\r\n /**\r\n * The size of the panel containing context buttons.\r\n * \r\n * @group Templates\r\n * @type {number}\r\n */\r\n this.buttonsPanelSize = 28;\r\n\r\n /**\r\n * The size of the panel containing group title.\r\n * \r\n * @group Group Titles\r\n * @type {number}\r\n */\r\n this.groupTitlePanelSize = 24;\r\n\r\n /**\r\n * The size of the panel containing selection checkbox.\r\n * \r\n * @group Templates\r\n * @type {number}\r\n */\r\n this.checkBoxPanelSize = 24;\r\n\r\n /**\r\n * Group titles placement. Defines group title and buttons panel position relative to the node.\r\n * The group title on the side of the diagram node is one of controls default easy to use features. It gives extra dimension \r\n * for nodes visual grouping in the diagram.\r\n * \r\n * @group Group Titles\r\n * @type {AdviserPlacementType}\r\n */\r\n this.groupTitlePlacementType = AdviserPlacementType.Left;\r\n\r\n /**\r\n * Group titles orientation.\r\n * \r\n * @group Group Titles\r\n * @type {TextOrientationType}\r\n */\r\n this.groupTitleOrientation = TextOrientationType.RotateRight;\r\n\r\n /**\r\n * Group titles vertical alignment.\r\n * \r\n * @group Group Titles\r\n * @type {VerticalAlignmentType}\r\n */\r\n this.groupTitleVerticalAlignment = VerticalAlignmentType.Middle;\r\n\r\n /**\r\n * Group titles horizontal alignment.\r\n * \r\n * @group Group Titles\r\n * @type {HorizontalAlignmentType}\r\n */\r\n this.groupTitleHorizontalAlignment = HorizontalAlignmentType.Center;\r\n\r\n /**\r\n * Group titles font size.\r\n * \r\n * @group Group Titles\r\n * @type {number}\r\n */\r\n this.groupTitleFontSize = \"12px\";\r\n\r\n /**\r\n * Group titles font family.\r\n * \r\n * @group Group Titles\r\n * @type {string}\r\n */\r\n this.groupTitleFontFamily = \"Arial\";\r\n\r\n /**\r\n * Group titles color.\r\n * \r\n * @group Group Titles\r\n * @type {string}\r\n */\r\n this.groupTitleColor = Colors.RoyalBlue;\r\n\r\n /**\r\n * Group titles font weight: normal, bold\r\n * \r\n * @group Group Titles\r\n * @type {string}\r\n */\r\n this.groupTitleFontWeight = \"normal\";\r\n\r\n /**\r\n * Group titles font style: normal, italic\r\n * \r\n * @group Group Titles\r\n * @type {string}\r\n */\r\n this.groupTitleFontStyle = \"normal\";\r\n\r\n /**\r\n * On group title render event. This callback function renders the group title panel.\r\n * It overwrites the default group title renderer. It is called only when the group title is visible.\r\n * See other group title options for details.\r\n *\r\n * @group Group Titles\r\n * @callback\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onGroupTitleRender = null;\r\n\r\n /**\r\n * The size of the panel containing level titles.\r\n * \r\n * @group Level Titles\r\n * @type {number}\r\n */\r\n this.levelTitlePanelSize = 24;\r\n\r\n /**\r\n * Level titles placement. Defines level title panel position relative to the diagram.\r\n * \r\n * @group Level Titles\r\n * @type {AdviserPlacementType}\r\n */\r\n this.levelTitlePlacementType = AdviserPlacementType.Left;\r\n\r\n /**\r\n * If this property is true then level titles are placed inside of the diagram's view port above or below diagram nodes.\r\n * \r\n * @group Level Titles\r\n * @type {boolean}\r\n */\r\n this.levelTitlePlaceInside = false;\r\n\r\n /**\r\n * Group titles orientation.\r\n * \r\n * @group Level Titles\r\n * @type {TextOrientationType}\r\n */\r\n this.levelTitleOrientation = TextOrientationType.Auto;\r\n\r\n /**\r\n * Level titles vertical alignment.\r\n * \r\n * @group Level Titles\r\n * @type {VerticalAlignmentType}\r\n */\r\n this.levelTitleVerticalAlignment = VerticalAlignmentType.Middle;\r\n\r\n /**\r\n * Level titles horizontal alignment.\r\n * \r\n * @group Level Titles\r\n * @type {HorizontalAlignmentType}\r\n */\r\n this.levelTitleHorizontalAlignment = HorizontalAlignmentType.Center;\r\n\r\n /**\r\n * Level titles font size.\r\n * \r\n * @group Level Titles\r\n * @type {number}\r\n */\r\n this.levelTitleFontSize = \"12px\";\r\n\r\n /**\r\n * Level titles font family.\r\n * \r\n * @group Level Titles\r\n * @type {string}\r\n */\r\n this.levelTitleFontFamily = \"Arial\";\r\n\r\n /**\r\n * Level titles font color.\r\n * \r\n * @group Level Titles\r\n * @type {string}\r\n */\r\n this.levelTitleFontColor = Colors.White;\r\n\r\n /**\r\n * Level titles color.\r\n * \r\n * @group Level Titles\r\n * @type {string}\r\n */\r\n this.levelTitleColor = Colors.RoyalBlue;\r\n\r\n /**\r\n * Level titles font weight: normal, bold\r\n * \r\n * @group Level Titles\r\n * @type {string}\r\n */\r\n this.levelTitleFontWeight = \"normal\";\r\n\r\n /**\r\n * Level titles font style: normal, italic\r\n * \r\n * @group Level Titles\r\n * @type {string}\r\n */\r\n this.levelTitleFontStyle = \"normal\";\r\n\r\n /**\r\n * On level annotation title render event. This callback function is called to render level annotation title panel. \r\n * It is used to overwrite default level title template renderer. It is called only when level annotations are visible.\r\n * See other level annotation options for details.\r\n *\r\n * @group Level Titles\r\n * @callback\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onLevelTitleRender = null;\r\n\r\n /**\r\n * On level annotation background render event. This callback function is called to render level annotation background panel. \r\n * It is used to overwrite default level background template renderer. It is called only when level annotations are visible.\r\n * See other level annotation options for details.\r\n *\r\n * @group Level Titles\r\n * @callback\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onLevelBackgroundRender = null; \r\n\r\n /**\r\n * @ignore\r\n */\r\n this.distance = 3;\r\n\r\n /**\r\n * CSS3 scale transform. Control supports content scaling using CSS scale transform. It scales everything except scroll bars.\r\n * It properly handles mouse event coordinates. The CSS scale transform produces unreadable text and corrupted lines in desktop browsers,\r\n * it looks good only in mobile browsers, so our recommendation is to use zoom with collection of item templates of various sizes.\r\n * Templates gives you better control over quality of your content at various zoom levels.\r\n * \r\n * @type {number}\r\n */\r\n this.scale = 1;\r\n\r\n /**\r\n * Minimum CSS3 scale transform.\r\n * \r\n * @ignore\r\n * @type {number}\r\n */\r\n this.minimumScale = 0.5;\r\n\r\n /**\r\n * Maximum CSS3 scale transform.\r\n * \r\n * @ignore\r\n * @type {number}\r\n */\r\n this.maximumScale = 2;\r\n\r\n /**\r\n * Sets labels visibility for nodes when they are minimized into markers by page auto fit. See `pageFitMode` property.\r\n * \r\n * The control does not preserve space for labels in the diagram layout, since that would contradict the purpose of minimizing the nodes\r\n * into markers. Use controls `dotLevelShift`, `dotItemsInterval` properties to preserve space between nodes for labels.\r\n * \r\n * Labels are displayed inside of `div`s of the fixed size, see `labelSize` property, and control provides simple conflict\r\n * resolution to avoid labels overlapping. If two labels overlap each other with their bounding rectangles then only one of them\r\n * is going to stay visible.\r\n * \r\n * Auto - displays label only when it has space to be rendered.\r\n * True - shows label regardless, even if it overlaps other labels and nodes.\r\n * False - hidden.\r\n * \r\n * @group Labels\r\n * @type {Enabled}\r\n */\r\n this.showLabels = Enabled.Auto;\r\n\r\n /**\r\n * Label size. Sets labels placeholders `div`s size. It is needed to resolve labels overlapping.\r\n * If one label overlaps another label the or item it will be hidden.\r\n * \r\n * @group Labels\r\n * @type {Size}\r\n */\r\n this.labelSize = new Size(80, 24);\r\n\r\n /**\r\n * Sets labels offset from the markers bounding rectangles.\r\n * \r\n * @group Labels\r\n * @type {number}\r\n */\r\n this.labelOffset = 1;\r\n\r\n /**\r\n * Labels orientation.\r\n * \r\n * @group Labels\r\n * @type {TextOrientationType}\r\n */\r\n this.labelOrientation = TextOrientationType.Horizontal;\r\n\r\n /**\r\n * Labels placement. Sets labels placement relative to the markers bounding rectangles.\r\n * \r\n * @group Labels\r\n * @type {PlacementType}\r\n */\r\n this.labelPlacement = PlacementType.Top;\r\n\r\n /**\r\n * Labels font size.\r\n * \r\n * @group Labels\r\n * @type {string}\r\n */\r\n this.labelFontSize = \"10px\";\r\n\r\n /**\r\n * Labels font family.\r\n * \r\n * @group Labels\r\n * @type {string}\r\n */\r\n this.labelFontFamily = \"Arial\";\r\n\r\n /**\r\n * Labels color\r\n * \r\n * @group Labels\r\n * @type {string}\r\n */\r\n this.labelColor = Colors.Black;\r\n\r\n /**\r\n * Labels font weight\r\n * Font weight: normal, bold\r\n * \r\n * @group Labels\r\n * @type {string}\r\n */\r\n this.labelFontWeight = \"normal\";\r\n\r\n /**\r\n * Labels font style. Font style: normal, italic\r\n * \r\n * @group Labels\r\n * @type {string}\r\n */\r\n this.labelFontStyle = \"normal\";\r\n\r\n /**\r\n * Enable panning. Enable chart panning with mouse drag & drop for desktop browsers.\r\n * Disable it if you need to support items Drag & Drop.\r\n * \r\n * @type {boolean}\r\n */\r\n this.enablePanning = true;\r\n\r\n /**\r\n * Sets minimum size the diagram can shrink itself in auto size mode. See `pageFitMode` property.\r\n * In the auto size mode diagram controls its placeholder size itself,\r\n * it sets its size to accommodate all nodes and render them normally.\r\n * \r\n * @group Auto Layout\r\n * @type {Size}\r\n */\r\n this.autoSizeMinimum = new Size(800, 600);\r\n\r\n /**\r\n * Sets maximum size the diagram can expand itself in auto size mode. See `pageFitMode` property.\r\n * In the auto size mode diagram controls its placeholder size itself,\r\n * it sets its size to accommodate all nodes and render them normally.\r\n * \r\n * @group Auto Layout\r\n * @type {Size}\r\n */\r\n this.autoSizeMaximum = new Size(1024, 768);\r\n};","import Size from '../graphics/structs/Size';\r\nimport { Colors, Enabled, ItemType, AdviserPlacementType, ChildrenPlacementType, TextOrientationType, PlacementType } from '../enums';\r\n\r\n/**\r\n * @class OrgItemConfig\r\n * @classdesc Item Configuration Object defines properties of individual node in the organizational chart hierarchy. See `items` collection property\r\n * of organizational chart control configuration object. \r\n * \r\n * @param {OrgItemConfig} arg0 Item config properties\r\n * \r\n * @param {string} arg0 Item id\r\n * @param {string} arg1 Parent id\r\n * @param {string} arg2 Title\r\n * @param {string} arg3 Description \r\n * @param {string} arg4 Image\r\n */\r\nexport default function OrgItemConfig(arg0, arg1, arg2, arg3, arg4) {\r\n var property;\r\n /**\r\n * Item id. It should be unique per chart.\r\n * \r\n * @type {string}\r\n */\r\n this.id = null;\r\n\r\n /**\r\n * Parent item id. If `null` then node is the root item of the hierarchy.\r\n * @type {string}\r\n */\r\n this.parent = null;\r\n\r\n /**\r\n * Title\r\n * \r\n * @group Template\r\n * @type {string}\r\n */\r\n this.title = null;\r\n\r\n /**\r\n * Description\r\n * \r\n * @group Template\r\n * @type {string}\r\n */\r\n this.description = null;\r\n\r\n /**\r\n * Image\r\n * \r\n * @group Template\r\n * @type {string}\r\n */\r\n this.image = null;\r\n\r\n /**\r\n * Context object\r\n * \r\n * @group Template\r\n * @type {object}\r\n */\r\n this.context = null;\r\n\r\n /**\r\n * Title background color. The same color is used for node marker when control has enabled auto fit mode.\r\n * \r\n * @group Template\r\n * @type {string}\r\n */\r\n this.itemTitleColor = Colors.RoyalBlue;\r\n\r\n /**\r\n * Marker type. The shape of the marker when node is minimized by auto fit. The control supports auto fit of diagram into available screen space.\r\n * When diagram size significantly larger than available screen space, its scrolling and navigation becomes problematic,\r\n * so control supports automatic diagram fit into the screen space via rendering some of its nodes in form of small markers.\r\n * So this option sets marker shape for individual node.\r\n * \r\n * @group Template\r\n * @type {ShapeType}\r\n */\r\n this.minimizedItemShapeType = null;\r\n\r\n /**\r\n * Group Title. The group title on the side of the diagram node is one of controls default easy to use features.\r\n * It gives extra dimension for nodes visual grouping in the diagram.\r\n * \r\n * @group Group Title\r\n * @type {string}\r\n */\r\n this.groupTitle = null;\r\n\r\n /**\r\n * The group title background color.\r\n * \r\n * @group Group Title\r\n * @type {string}\r\n */\r\n this.groupTitleColor = Colors.RoyalBlue;\r\n\r\n /**\r\n * If `false` it makes item invisible in the layout. If item has no visible parents then its connections are hidden as well.\r\n * From navigation perspective invisible items make all their children to be children of their parents.\r\n * \r\n * @type {boolean}\r\n */\r\n this.isVisible = true;\r\n\r\n /**\r\n * If true it makes item inactive in the diagram layout. Inactive items are regular items excluded from navigation, that means \r\n * when diagram uses auto fit mode, selection of the neighboring nodes goes through inactive items, so all nodes next to inactive item\r\n * become selected and shown in full size as well. Inactive items play a role of in layout annotations having no user interaction\r\n * and templated with HTML. For example they can be used to add titles into family diagram layout or terminator items\r\n * indicating that upon reaching them diagram would load extra nodes into layout.\r\n * \r\n * @type {boolean}\r\n */\r\n this.isActive = true;\r\n\r\n /**\r\n * Shows selection check box for the node.\r\n * If Auto then selection check box visibility depends on control's configuration.\r\n * \r\n * Auto - depends on `hasSelectorCheckbox` property of the control\r\n * True - shown\r\n * False - hidden\r\n * \r\n * @type {Enabled}\r\n */\r\n this.hasSelectorCheckbox = Enabled.Auto;\r\n\r\n /**\r\n * Shows context buttons panel for the node.\r\n * If Auto then context buttons panel visibility depends on control's configuration.\r\n * \r\n * Auto - depends on `hasButtons` property of the control\r\n * True - shown\r\n * False - hidden\r\n * \r\n * @group Template\r\n * @type {Enabled}\r\n */\r\n this.hasButtons = Enabled.Auto;\r\n\r\n /**\r\n * Item type. This property defines child node placement relative to its parent node. By default all children that belong \r\n * to a parent node are of the same rank and status between each other and due to that, are always aligned below\r\n * the parent and are organized in the same way. However for special cases were the end user wishes to have a child\r\n * that is separate from the rest of it's siblings, we provide custom child types that the end user can use to\r\n * place different ranking nodes anywhere around the parent node. These placement options give a lot of space for\r\n * the creation of roles such as an Assistant, Adviser, various Partners and co-heads that may be in the organization.\r\n * Additionally, by default `Regular` children are always placed in a horizontal line below the parent node.\r\n * \r\n * @type {ItemType}\r\n */\r\n this.itemType = ItemType.Regular;\r\n\r\n /**\r\n * Sets node level offset relative to parent node. This property is ignored if it is not applicable.\r\n * \r\n * @type {number}\r\n */\r\n this.levelOffset = null;\r\n\r\n /**\r\n * Defines leftward or rightward item placement relative to the parent item.\r\n * By default it is `Auto` and depends on general diagram layout orientation.\r\n * \r\n * @type {AdviserPlacementType}\r\n */\r\n this.adviserPlacementType = AdviserPlacementType.Auto;\r\n\r\n /**\r\n * The property defines children's layout formation. By default, control places children\r\n * in a horizontal line below the parent node. On a large scale, this may result in the end-user\r\n * having to scroll screens to view all nodes. To compensate for this, we place children \r\n * in a square/matrix formation. That will reduce sideways screen scrolling by compacting\r\n * the child nodes into a much smaller area on the screen.\r\n * \r\n * @type {ChildrenPlacementType}\r\n */\r\n this.childrenPlacementType = ChildrenPlacementType.Auto;\r\n\r\n /**\r\n * The property sets the default placement of assistants hierarchies relative to the regular \r\n * children of the node. If the assistant node has its children, then control adds extra levels,\r\n * so the assistant's children are placed above the regular children.\r\n * \r\n * @type {Enabled}\r\n */\r\n this.placeAssistantsAboveChildren = Enabled.Auto;\r\n\r\n /**\r\n * The property sets default placement of advisers hierarchies relative to the regular \r\n * children of the node. If the adviser node has its children, then control adds extra levels,\r\n * so the adviser's children are placed above the regular children.\r\n * \r\n * @type {Enabled}\r\n */\r\n this.placeAdvisersAboveChildren = Enabled.Auto;\r\n\r\n /**\r\n * Template name. Templates are HTML fragments containing layout and styles used to render diagram nodes.\r\n * They are defined with a named configuration objects. See `templates` property of control's configuration object.\r\n * This option lets individually assign rendering template per individual node of the diagram.\r\n * \r\n * @group Template\r\n * @type {string}\r\n */\r\n this.templateName = null;\r\n\r\n /**\r\n * Sets callout annotation visibility for individual node. The callout annotation is one of easy to use features of the control.\r\n * By default it is displayed for markers in order to preview their node's content. The content is displayed using\r\n * current template of the node it is rendered for.\r\n * \r\n * The callout can be forced to be displayed for regular nodes as well. In that case use `calloutTemplateName` property\r\n * to change their template.\r\n * \r\n * Auto - depends on `showCallout` property of the control\r\n * True - shown regardless of node's visibility\r\n * False - hidden\r\n * \r\n * @group Callout\r\n * @type {Enabled}\r\n */\r\n this.showCallout = Enabled.Auto;\r\n\r\n /**\r\n * Callout annotation template name. This option lets individually assign rendering callout annotation template\r\n * per individual node of the diagram.\r\n * \r\n * Templates are HTML fragments containing layout and styles used to render diagram nodes.\r\n * They are defined with a named configuration objects. See `templates` property of control's configuration object.\r\n * \r\n * @group Callout\r\n * @type {string}\r\n */\r\n this.calloutTemplateName = null;\r\n\r\n /**\r\n * Marker label.\r\n * \r\n * @group Label\r\n * @type {string}\r\n */\r\n this.label = null;\r\n\r\n /**\r\n * Sets label visibility for individual nodes. Labels are only rendered for a node's markers. \r\n * \r\n * The control does not preserve space for labels in the diagram layout, since that would contradict the purpose of minimizing the nodes\r\n * into markers. Use controls `dotLevelShift`, `dotItemsInterval` properties to preserve space between nodes for labels.\r\n * \r\n * Labels are displayed inside of `div`s of the fixed size, see `labelSize` property, and control provides simple conflict\r\n * resolution to avoid labels overlapping. If two labels overlap each other with their bounding rectangles then only one of them\r\n * is going to stay visible.\r\n * \r\n * Auto - displays label only when it has space to be rendered.\r\n * True - shows label regardless, even if it overlaps other labels and nodes.\r\n * False - hidden.\r\n * \r\n * @group Label\r\n * @type {Enabled}\r\n */\r\n this.showLabel = Enabled.Auto;\r\n\r\n /**\r\n * Label size. Sets label's placeholder `div` size and controls conflict resolution if labels overlap each other.\r\n * If `null` then it is set to `labelSize` property of the control configuration.\r\n * \r\n * @group Label\r\n * @type {Size}\r\n */\r\n this.labelSize = null;\r\n\r\n /**\r\n * Label orientation.\r\n * If `Auto` then it is set to `labelOrientation` property of the control configuration.\r\n * \r\n * @group Label\r\n * @type {TextOrientationType}\r\n */\r\n this.labelOrientation = TextOrientationType.Auto;\r\n\r\n /**\r\n * Label placement. Sets label placement relative to the marker bounding rectangle.\r\n * If `Auto` then it is set to `labelPlacement` of the control configuration.\r\n * \r\n * @group Label\r\n * @type {PlacementType}\r\n */\r\n this.labelPlacement = PlacementType.Auto;\r\n\r\n switch (arguments.length) {\r\n case 1:\r\n for (property in arg0) {\r\n if (arg0.hasOwnProperty(property)) {\r\n this[property] = arg0[property];\r\n }\r\n }\r\n break;\r\n case 5:\r\n this.id = arg0;\r\n this.parent = arg1;\r\n this.title = arg2;\r\n this.description = arg3;\r\n this.image = arg4;\r\n break;\r\n }\r\n};\r\n","/**\r\n * @class EventArgs\r\n * \r\n * Context object\r\n */\r\nexport default function OrgEventArgs() {\r\n /**\r\n * Current item\r\n * \r\n * @type {string}\r\n */\r\n this.oldContext = null;\r\n\r\n /**\r\n * New item\r\n * \r\n * @type {string}\r\n */\r\n this.context = null;\r\n\r\n /**\r\n * Parent item\r\n * \r\n * @type {string}\r\n * @ignore\r\n */\r\n this.parentItem = null;\r\n\r\n /**\r\n * Node position on the diagram.\r\n * \r\n * @type {Rect}\r\n */\r\n this.position = null;\r\n\r\n /**\r\n * Relative object name.\r\n * \r\n * @type {string}\r\n */\r\n this.name = null;\r\n\r\n /**\r\n * If true cancels subsequent event and layout update.\r\n * \r\n * @type {boolean}\r\n */\r\n this.cancel = false;\r\n};","import {NavigationMode, PageFitMode, Visibility, OrientationType, VerticalAlignmentType,\r\n GroupByType, ElbowType, Enabled, SelectionPathMode, NeighboursSelectionMode,\r\n Colors, ShapeType, LineType, AdviserPlacementType, TextOrientationType, HorizontalAlignmentType,\r\n PlacementType\r\n} from '../enums';\r\nimport Thickness from '../graphics/structs/Thickness';\r\nimport Size from '../graphics/structs/Size';\r\n\r\n/**\r\n * @class FamConfig\r\n * @classdesc Family Chart configuration object. Use this object as a reference \r\n * for available properties and their default values.\r\n * \r\n * @param {string} name\r\n */\r\nexport default function FamConfig(name) {\r\n this.name = (name !== undefined) ? name : \"FamDiagram\";\r\n this.classPrefix = \"famdiagram\";\r\n\r\n /**\r\n * Sets control navigation mode.\r\n * \r\n * By default control replicates interactivity of regular collection control. It has cursor to select single\r\n * item in the collection. So user can click and select any node in the diagram. The control has highlight for mouse over feedback.\r\n * So user can move mouse and see highlight frame and callout callback annotation for node under cursor.\r\n * \r\n * By `Default` the control has both cursor and highlight. If they are disabled then control is rendered as a static image.\r\n * \r\n * @type {NavigationMode}\r\n */\r\n this.navigationMode = NavigationMode.Default;\r\n\r\n /**\r\n * Page fit mode. Minimizing nodes into markers and labels. This option provides a special mode that renders the diagram\r\n * nodes in the form of markers. This is a highly scalable form that is capable of rendering large numbers of nodes\r\n * while not affecting the rendering performance. With this, huge diagrams can be fit into available screen space.\r\n * \r\n * When using a graphics editor to manually draw your diagrams, it is common place to have large gaps between the nodes.\r\n * This can make the diagram/chart unreadable, hard to edit and navigate. On top of that, on a large scale the diagram could have screen size\r\n * intervals between items. Admittedly the computer UI does allow the user to scale and fit the diagram in order to visualize it\r\n * on a single screen. But in that case, the items become small and unreadable as there is no scaling priority and the items\r\n * are just too small to be readable.\r\n * \r\n * @group Auto Layout\r\n * @type {PageFitMode}\r\n */\r\n this.pageFitMode = PageFitMode.FitToPage;\r\n\r\n /**\r\n * Minimal nodes visibility in the diagram. If auto fit of the diagram into current page size is enabled, then\r\n * this option controls minimum allowed size of the diagram nodes.\r\n * \r\n * @group Auto Layout\r\n * @type {Visibility}\r\n */\r\n this.minimalVisibility = Visibility.Dot;\r\n\r\n /**\r\n * Minimum visible levels option prevents top-level nodes from folding into markers. \r\n * \r\n * @group Auto Layout\r\n * @type {number}\r\n */\r\n this.minimumVisibleLevels = 0;\r\n\r\n /**\r\n * Set diagram orientation. This option controls diagram layout orientation. The control can be rotated in any direction,\r\n * this is needed for Arabic support and various layouts.\r\n * \r\n * @group Auto Layout\r\n * @type {OrientationType}\r\n */\r\n this.orientationType = OrientationType.Top;\r\n\r\n /**\r\n * Sets items vertical alignment relative to each other within one level of the hierarchy. \r\n * It does not change anything if diagram nodes are all of the same size.\r\n * \r\n * @group Auto Layout\r\n * @type {VerticalAlignmentType}\r\n */\r\n this.verticalAlignment = VerticalAlignmentType.Middle;\r\n\r\n /**\r\n * Sets arrows direction for connector lines. If this property set to `Parents` then arrows are drawn\r\n * from logical children towards logical parents. By default diagram has no arrows.\r\n * \r\n * @group Relation Lines\r\n * @type {GroupByType}\r\n */\r\n this.arrowsDirection = GroupByType.None;\r\n\r\n /**\r\n * Show extra horizontal arrows on top of long horizontal connection lines for the easy visual tracing \r\n * of relations between parents and children. By default it is off.\r\n * \r\n * @group Relation Lines\r\n * @type {boolean}\r\n */\r\n this.showExtraArrows = true;\r\n\r\n /**\r\n * Set minimum space for placement of extra arrows on horizontal connection lines. See `showExtraArrows` property.\r\n * \r\n * @group Relation Lines\r\n * @type {number}\r\n */\r\n this.extraArrowsMinimumSpace = 30;\r\n\r\n /**\r\n * This property sets loose nodes alignment between rows. Nodes can be placed close towards parents or children.\r\n * \r\n * @group Auto Layout\r\n * @type {GroupByType}\r\n */\r\n this.groupByType = GroupByType.Children;\r\n\r\n /**\r\n * This option keeps items at the same levels after connections bundling.\r\n * \r\n * @group Auto Layout\r\n * @type {boolean}\r\n */\r\n this.alignBylevels = true;\r\n\r\n /**\r\n * This option enables automatic layout of nodes sharing the same set of parents and children in form of matrix.\r\n * \r\n * @group Auto Layout\r\n * @type {boolean}\r\n */\r\n this.enableMatrixLayout = false;\r\n\r\n /**\r\n * Sets Minimum number of nodes needed to be shaped into matrix formation. In order to shape nodes in \r\n * form of matrix they should share the same set of parents and children. See `enableMatrixLayout` property.\r\n * \r\n * @group Auto Layout\r\n * @type {number}\r\n */\r\n this.minimumMatrixSize = 4;\r\n\r\n /**\r\n * Sets maximum number of columns in the matrix formation. The matrix formation stays squared as long as total number \r\n * of columns does not exceed this property value. In order to shape nodes into matrix formation they should\r\n * share the same set of parents and children. See `enableMatrixLayout` property.\r\n * \r\n * @group Auto Layout\r\n * @type {number}\r\n */\r\n this.maximumColumnsInMatrix = 6;\r\n\r\n /**\r\n * Set this property to enable hiding of direct connectors to grand parents. It helps to reduce diagrams connectors layout complexity.\r\n * \r\n * @group Auto Layout\r\n * @type {boolean}\r\n */\r\n this.hideGrandParentsConnectors = false;\r\n\r\n /**\r\n * Set style of squared connectors with custom elbows.\r\n * \r\n * @group Relation Lines\r\n * @type {ElbowType}\r\n */\r\n this.elbowType = ElbowType.Round;\r\n\r\n /**\r\n * The bevel size of squared connector lines.\r\n * \r\n * @group Relation Lines\r\n * @type {number}\r\n */\r\n this.bevelSize = 4;\r\n\r\n /**\r\n * The size of dot markers placed in the elbows of connector lines.\r\n * \r\n * @group Relation Lines\r\n * @type {number}\r\n */\r\n this.elbowDotSize = 4;\r\n\r\n /**\r\n * Empty diagram message. This option is supposed to say user that chart is empty when no data is available for rendering.\r\n * \r\n * @type {string}\r\n */\r\n this.emptyDiagramMessage = \"Diagram is empty.\";\r\n\r\n /**\r\n * Items collection. Ths property defines data we render in the diagram.\r\n * \r\n * Every items should have unique `id` property set. They are used to create relations\r\n * between items in the diagram and for rendering various UI elements bound to nodes.\r\n * \r\n * @type {FamItemConfig[]}\r\n */\r\n this.items = [];\r\n\r\n /**\r\n * Annotations. Annotations are API elements attached to the diagram nodes \r\n * and designed to highlight some nodes or relations. We draw our annotations \r\n * either in front of the nodes or in the background. The annotations don't affect \r\n * the placement of the nodes in any way. We have some exceptions. As a result, the control \r\n * redraws them instantaneously without rendering or recalculating the actual diagram layout. \r\n * \r\n * @type {Array.<(ShapeAnnotationConfig | BackgroundAnnotationConfig | ConnectorAnnotationConfig | HighlightPathAnnotationConfig)>}\r\n */\r\n this.annotations = [];\r\n\r\n /**\r\n * Cursor item. Family Chart control has API options equivalent to standard UI controls.\r\n * The cursor item is used to select a single item in the hierarchy with a mouse click, and \r\n * the highlighted item provides visual feedback on the mouse over. Selected items collection \r\n * is equivalent to checked items in ListView or TreeView controls.\r\n * \r\n * The chart's navigation work around the current cursor item. The component shows \r\n * the cursor and its neighbors regardless of page fit mode. So cursor item plays the role \r\n * of local zoom in the chart hierarchy. The user navigates around the chart via clicking \r\n * and selecting cursor items and zooming into data around the new cursor item. \r\n * \r\n * The control notifies about this property changes with `onCursorChanging` and `onCursorChanged` events.\r\n * \r\n * If the cursor item is set to null, then no cursor item is selected in the diagram.\r\n * \r\n * @type {string}\r\n */\r\n this.cursorItem = null;\r\n\r\n /**\r\n * Highlighted item. Shows highlight and callout annotation for given item id. It does not trigger diagram\r\n * layout or scrolling so it can be used to synchronize mouse over feedback of the diagram nodes with other\r\n * collection controls or UI elements. \r\n * \r\n * The control notifies about this property changes with `onHighlightChanging` and `onHighlightChanged` events.\r\n * \r\n * If `null` then no highlight shown on the diagram.\r\n * \r\n * @type {string}\r\n */\r\n this.highlightItem = null;\r\n\r\n /**\r\n * Highlight gravity radius. This property controls mouse over feedback and callout annotation visibility for nodes\r\n * rendered as markers when diagram auto fits nodes into available screen space. It makes marker highlighted when \r\n * mouse pointer is inside of the gravity radius cycle of the marker. This property is ignored when the nearest item\r\n * is outside of the screen boundaries and is not visible to the end user.\r\n *\r\n * The normal item has mouse over feedback in form of highlight border only when mouse pointer is inside of its boundaries. \r\n * \r\n * @type {number}\r\n */\r\n this.highlightGravityRadius = 40;\r\n\r\n\r\n /**\r\n * Selected items collection. Selected items is a collection of items ids having checked their check boxes.\r\n * The control always shows selected items in the full size form, regardless of enabled page fit mode.\r\n * \r\n * The control notifies about user made changes in this collection with `onSelectionChanging` and `onSelectionChanged` events.\r\n * \r\n * @type {string[]}\r\n */\r\n this.selectedItems = [];\r\n\r\n /**\r\n * Sets visibility of selection check boxes for the diagram nodes.\r\n * \r\n * `Auto` - visible for cursor item only\r\n * `True` - visible\r\n * `False` - hidden\r\n * \r\n * See `selectedItems` property. All items listed in this property are going to have checked selection checkboxes.\r\n * Checkbox can be added to item template, in that case it should be named=\"checkbox\", so control can use it as built in checkbox element.\r\n * \r\n * @type {Enabled}\r\n */\r\n this.hasSelectorCheckbox = Enabled.Auto;\r\n\r\n /**\r\n * Selection check box label. See `hasSelectorCheckbox` and `selectedItems` properties.\r\n * \r\n * @group Templates\r\n * @type {string}\r\n */\r\n this.selectCheckBoxLabel = \"Selected\";\r\n\r\n /**\r\n * Selection path mode. This property controls visibility of nodes between cursor and the root of the diagram in the auto fit mode. It allows to draw \r\n * them in full size regardless of available space and auto fit mode.\r\n * \r\n * The control supports diagram auto fit into screen view. It is achieved via drawing nodes in form of markers.\r\n * So small nodes make diagram fit into the screen space, but they have no details. Our solution is to show cursor and selected items\r\n * of the diagram in full size and draw all other diagram nodes as markers.\r\n *\r\n * @group Auto Layout\r\n * @type {SelectionPathMode}\r\n */\r\n this.selectionPathMode = SelectionPathMode.None;\r\n\r\n /**\r\n * Sets the neighbours selection mode, it defines how many neighbours are selected around cursor.\r\n * \r\n * @type {NeighboursSelectionMode}\r\n */\r\n this.neighboursSelectionMode = NeighboursSelectionMode.ParentsAndChildren;\r\n\r\n\r\n /**\r\n * Sets selected items frame visibility. If selected item is outside of the diagram's area visible to the end user,\r\n * control displays that item in the form of the marker on frame around the diagram.\r\n * \r\n * @group Frame\r\n * @type {boolean}\r\n */\r\n this.showFrame = false;\r\n\r\n /**\r\n * Frame inner padding. Adds extra padding around markers on the inner side of the frame.\r\n * \r\n * @group Frame\r\n * @type {Thickness}\r\n */\r\n this.frameInnerPadding = new Thickness(2, 2, 2, 2);\r\n\r\n /**\r\n * Frame outer padding. Adds extra padding around markers on the outer side of the frame.\r\n * \r\n * @group Frame\r\n * @type {Thickness}\r\n */\r\n this.frameOuterPadding = new Thickness(2, 2, 2, 2);\r\n\r\n /**\r\n * Diagram padding. Adds extra padding around the diagram.\r\n * \r\n * @group Frame\r\n * @type {Thickness}\r\n */\r\n this.padding = new Thickness(10, 10, 10, 10);\r\n\r\n /**\r\n * Collection of named templates used to define content for nodes, cursor and highlight.\r\n * By default control provides templates for all types of visual elements.\r\n * \r\n * @group Templates\r\n * @type {TemplateConfig[]}\r\n */\r\n this.templates = [];\r\n\r\n /**\r\n * Name of the template used to render nodes in the diagram. See `templates` property. Template name\r\n * can be set individually for every node see `templateName` property of `FamItemConfig`.\r\n * \r\n * @group Templates\r\n * @type {string}\r\n */\r\n this.defaultTemplateName = null;\r\n\r\n /**\r\n * Sets the name of template used to render label annotations. Label annotations are labels placed in layout of the diagram. \r\n * \r\n * @group Templates\r\n * @type {string}\r\n */\r\n this.defaultLabelAnnotationTemplate = null;\r\n\r\n /**\r\n * Sets buttons panel visibility.\r\n * \r\n * `Auto` - cursor item only.\r\n * `True` - visible\r\n * `False` - hidden\r\n * \r\n * @group Templates\r\n * @type {Enabled}\r\n */\r\n this.hasButtons = Enabled.Auto;\r\n\r\n /**\r\n * On buttons panel render event. This callback function is called to render context of buttons panel.\r\n * It is used to replace `buttons` collection property in ReactJS component. So we preserve context buttons panel as a functional \r\n * concept, but eliminate buttons customization API.\r\n *\r\n * @callback\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onButtonsRender = null;\r\n\r\n /**\r\n * On highlight item being changed event. See `highlightItem` property. This callback function is called before `onHighlightChanged` event.\r\n * Use this callback function to stop event propagation. See `EventArgs` for details.\r\n *\r\n * @callback\r\n * @param {Object} event Mouse event\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onHighlightChanging = null;\r\n\r\n /**\r\n * On highlight item changed event. See `highlightItem` property.\r\n *\r\n * @callback\r\n * @param {Object} event Mouse event\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onHighlightChanged = null;\r\n\r\n /**\r\n * On cursor item being changed event. See `cursorItem` property. This callback function is called before `onCursorChanged` event.\r\n * Use this callback function to stop event propagation. See `EventArgs` for details.\r\n *\r\n * @callback\r\n * @param {Object} event Mouse event\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onCursorChanging = null;\r\n\r\n /**\r\n * On cursor item changed event. See `cursorItem` property.\r\n *\r\n * @callback\r\n * @param {Object} event Mouse event\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onCursorChanged = null;\r\n\r\n /**\r\n * On selected items being changed event. See `selectedItems` property.\r\n *\r\n * @callback\r\n * @param {Object} event Mouse event\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onSelectionChanging = null;\r\n\r\n /**\r\n * On selected items changed event. See `selectedItems` property.\r\n *\r\n * @callback\r\n * @param {Object} event Mouse event\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onSelectionChanged = null;\r\n\r\n /**\r\n * Button click event. See `buttons` property.\r\n *\r\n * @callback\r\n * @param {Object} event Mouse event\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onButtonClick = null;\r\n\r\n /**\r\n * Mouse click event. \r\n *\r\n * @callback\r\n * @param {Object} event Mouse event\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onMouseClick = null;\r\n\r\n /**\r\n * Mouse double click event. \r\n *\r\n * @callback\r\n * @param {Object} event Mouse event\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onMouseDblClick = null;\r\n\r\n /**\r\n * Callback function for rendering content of the diagram nodes. This callback is only \r\n * called when custom item template is defined in the template object configuration.\r\n * This callback receives reference to DOM element and context object of the rendered item.\r\n * The control reuses existing elements in the DOM, so it is applications responsibility \r\n * to properly update their content.\r\n *\r\n * @callback\r\n * @param {Object} event Event if available\r\n * @param {RenderEventArgs} data The context information\r\n */\r\n this.onItemRender = null;\r\n\r\n /**\r\n * Callback function for rendering content of the highlight template. This callback is only \r\n * called when custom highlight is defined in the template configuration.\r\n *\r\n * @callback\r\n * @param {Object} event Event if available\r\n * @param {RenderEventArgs} data The context information\r\n */\r\n this.onHighlightRender = null;\r\n\r\n /**\r\n * Callback function for rendering content of the cursor template. This callback is only \r\n * called when custom cursor is defined in the template configuration.\r\n *\r\n * @callback\r\n * @param {Object} event Event if available\r\n * @param {RenderEventArgs} data The context information\r\n */\r\n this.onCursorRender = null;\r\n\r\n /**\r\n * Sets the spacing between rows.\r\n * \r\n * @group Intervals\r\n * @type {number}\r\n */\r\n this.normalLevelShift = 20;\r\n\r\n /**\r\n * Sets the spacing after the row containing nodes minimized down to markers.\r\n * \r\n * @group Intervals\r\n * @type {number}\r\n */\r\n this.dotLevelShift = 20;\r\n\r\n /**\r\n * Sets the spacing after the row containing nodes minimized down to lines.\r\n * \r\n * @group Intervals\r\n * @type {number}\r\n */\r\n this.lineLevelShift = 10;\r\n\r\n /**\r\n * Sets interval between nodes of the same row.\r\n * \r\n * @group Intervals\r\n * @type {number}\r\n */\r\n this.normalItemsInterval = 10;\r\n\r\n /**\r\n * Sets interval between nodes of the same row, minimized down to markers.\r\n * \r\n * @group Intervals\r\n * @type {number}\r\n */\r\n this.dotItemsInterval = 1;\r\n\r\n /**\r\n * Sets interval between nodes of the same row, minimized down to lines.\r\n * \r\n * @group Intervals\r\n * @type {number}\r\n */\r\n this.lineItemsInterval = 2;\r\n\r\n /**\r\n * Set cousins interval multiplier. This values adds extra space between branches of the hierarchy.\r\n * For example nodes of the same parent have interval 20 and nodes of two different parents are going to have interval 100.\r\n * \r\n * @group Intervals\r\n * @type {number}\r\n */\r\n this.cousinsIntervalMultiplier = 5;\r\n\r\n /**\r\n * The first font color of the title.\r\n * \r\n * The title background color is designed to be one of the available dimensions to group nodes in the diagram,\r\n * so title can be unreadable if its color matches its background color. This property is created to auto resolve this issue\r\n * via automatic switch between two available font title colors.\r\n * \r\n * @group Templates\r\n * @type {string}\r\n */\r\n this.itemTitleFirstFontColor = Colors.White;\r\n\r\n /**\r\n * The second font color of the title.\r\n * \r\n * @group Templates\r\n * @type {string}\r\n */\r\n this.itemTitleSecondFontColor = Colors.Navy;\r\n\r\n /**\r\n * Markers. The shape of the markers when nodes are minimized by auto fit. The control supports auto fit of the diagram into available screen space.\r\n * When the diagram size significantly larger than available screen space, its scrolling and navigation becomes problematic,\r\n * so control supports automatic diagram fit into the screen space via rendering some of its nodes in form of small markers.\r\n * So this option sets default marker shape for nodes. It can be set individually per node in items configurations.\r\n * \r\n * The default color of shape is the same as `itemTitleColor` property set for individual items.\r\n * \r\n * @group Templates\r\n * @type {ShapeType}\r\n */\r\n this.minimizedItemShapeType = ShapeType.None;\r\n\r\n /**\r\n * The relations lines color. The control uses this lines color to render basic relations between nodes.\r\n * \r\n * @group Relation Lines\r\n * @type {string}\r\n */\r\n this.linesColor = Colors.Silver;\r\n\r\n /**\r\n * The relations lines width\r\n * \r\n * @group Relation Lines\r\n * @type {number}\r\n */\r\n this.linesWidth = 1;\r\n\r\n /**\r\n * The relations lines pattern\r\n * \r\n * @group Relation Lines\r\n * @type {LineType}\r\n */\r\n this.linesType = LineType.Solid;\r\n\r\n /**\r\n * Shows connection lines between current cursor item and its neighbours highlighted. Neighbours selection mode\r\n * is set by `neighboursSelectionMode` property.\r\n * \r\n * Set following properties: `highlightLinesColor`, `highlightLinesWidth` and `highlightLinesType` to\r\n * style highlighted lines.\r\n * \r\n * @group Relation Lines\r\n * @type {boolean}\r\n */\r\n this.showNeigboursConnectorsHighlighted = false;\r\n\r\n /**\r\n * Sets highlight lines color. The diagram uses highlight lines to render highlighted relation lines between nodes.\r\n * See `showNeigboursConnectorsHighlighted` property.\r\n * \r\n * @group Relation Lines\r\n * @type {string}\r\n */\r\n this.highlightLinesColor = Colors.Red;\r\n\r\n /**\r\n * Sets highlight lines width. See `showNeigboursConnectorsHighlighted` property.\r\n * \r\n * @group Relation Lines\r\n * @type {number}\r\n */\r\n this.highlightLinesWidth = 1;\r\n\r\n /**\r\n * Sets highlight lines pattern. See `showNeigboursConnectorsHighlighted` property.\r\n * \r\n * @group Relation Lines\r\n * @type {LineType}\r\n */\r\n this.highlightLinesType = LineType.Solid;\r\n\r\n /**\r\n * This collection contains lines styles for rendering relations going across family hierarchy.\r\n * The purpose of this collection is to draw long horizontal parallel lines drawn between family branches in different styles.\r\n * If this collection is empty then default `linesColor`, `linesWidth` and `linesType` are used for all connector lines.\r\n * \r\n * @group Relation Lines\r\n * @type {PaletteItemConfig[]}\r\n */\r\n this.linesPalette = [];\r\n\r\n /**\r\n * Sets callout visibility.\r\n * \r\n * @group Callout\r\n * @type {boolean}\r\n */\r\n this.showCallout = true;\r\n\r\n /**\r\n * Sets visibility of the callout annotation depending on size of a node it is shown for. See `pageFitMode` property.\r\n * \r\n * @group Callout\r\n * @type {Visibility}\r\n */\r\n this.calloutMaximumVisibility = Visibility.Dot;\r\n\r\n /**\r\n * Callout annotation placement offset. Sets how far callout content is offset from the marker it is displayed for.\r\n * \r\n * @group Callout\r\n * @type {number}\r\n */\r\n this.calloutPlacementOffset = 100;\r\n\r\n /**\r\n * Callout annotation default template name.\r\n * \r\n * Templates are HTML fragments containing layout and styles used to render diagram nodes.\r\n * They are defined with a named configuration objects. See `templates` property of control's configuration object.\r\n * \r\n * @group Callout\r\n * @type {string}\r\n */\r\n this.defaultCalloutTemplateName = null;\r\n\r\n /**\r\n * Callout annotation fill color.\r\n * \r\n * @group Callout\r\n * @type {string}\r\n */\r\n this.calloutfillColor = \"#000000\";\r\n\r\n /**\r\n * Callout annotation border color.\r\n * \r\n * @group Callout\r\n * @type {string}\r\n */\r\n this.calloutBorderColor = null;\r\n\r\n /**\r\n * Callout annotation border line offset.\r\n * \r\n * @group Callout\r\n * @type {number}\r\n */\r\n this.calloutOffset = 4;\r\n\r\n /**\r\n * Callout annotation corner radius.\r\n * \r\n * @group Callout\r\n * @type {number}\r\n */\r\n this.calloutCornerRadius = 4;\r\n\r\n /**\r\n * Callout annotation pointer width.\r\n * \r\n * @group Callout\r\n * @type {string}\r\n */\r\n this.calloutPointerWidth = \"10%\";\r\n\r\n /**\r\n * Callout annotation border line width.\r\n * \r\n * @group Callout\r\n * @type {number}\r\n */\r\n this.calloutLineWidth = 1;\r\n\r\n /**\r\n * Callout annotation opacity\r\n * \r\n * @group Callout\r\n * @type {number}\r\n */\r\n this.calloutOpacity = 0.2;\r\n\r\n /**\r\n * The size of the panel containing context buttons.\r\n * \r\n * @group Templates\r\n * @type {number}\r\n */\r\n this.buttonsPanelSize = 28;\r\n\r\n /**\r\n * The size of the panel containing group title.\r\n * \r\n * @group Group Titles\r\n * @type {number}\r\n */\r\n this.groupTitlePanelSize = 24;\r\n\r\n /**\r\n * The size of the panel containing selection checkbox.\r\n * \r\n * @group Templates\r\n * @type {number}\r\n */\r\n this.checkBoxPanelSize = 24;\r\n\r\n /**\r\n * Group titles placement. Defines group title and buttons panel position relative to the node. By default it is on the left.\r\n * The group title on the side of the diagram node is one of controls default easy to use features. It gives extra dimension \r\n * for nodes visual grouping in the diagram.\r\n * \r\n * @group Group Titles\r\n * @type {AdviserPlacementType}\r\n */\r\n this.groupTitlePlacementType = AdviserPlacementType.Left;\r\n\r\n /**\r\n * Group titles orientation.\r\n * \r\n * @group Group Titles\r\n * @type {TextOrientationType}\r\n */\r\n this.groupTitleOrientation = TextOrientationType.RotateRight;\r\n\r\n /**\r\n * Group titles vertical alignment.\r\n * \r\n * @group Group Titles\r\n * @type {VerticalAlignmentType}\r\n */\r\n this.groupTitleVerticalAlignment = VerticalAlignmentType.Middle;\r\n\r\n /**\r\n * Group titles horizontal alignment.\r\n * \r\n * @group Group Titles\r\n * @type {HorizontalAlignmentType}\r\n */\r\n this.groupTitleHorizontalAlignment = HorizontalAlignmentType.Center;\r\n\r\n /**\r\n * Group titles font size.\r\n * \r\n * @group Group Titles\r\n * @type {number}\r\n */\r\n this.groupTitleFontSize = \"12px\";\r\n\r\n /**\r\n * Group titles font family.\r\n * \r\n * @group Group Titles\r\n * @type {string}\r\n */\r\n this.groupTitleFontFamily = \"Arial\";\r\n\r\n /**\r\n * Group titles color. \r\n * \r\n * @group Group Titles\r\n * @type {string}\r\n */\r\n this.groupTitleColor = Colors.RoyalBlue;\r\n\r\n /**\r\n * Group titles font weight: normal, bold\r\n * \r\n * @group Group Titles\r\n * @type {string}\r\n */\r\n this.groupTitleFontWeight = \"normal\";\r\n\r\n /**\r\n * Group titles font style: normal, italic\r\n * \r\n * @group Group Titles\r\n * @type {string}\r\n */\r\n this.groupTitleFontStyle = \"normal\";\r\n\r\n /**\r\n * On group title render event. This callback function renders the group title panel.\r\n * It overwrites the default group title renderer. It is called only when the group title is visible.\r\n * See other group title options for details.\r\n *\r\n * @group Group Titles\r\n * @callback\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onGroupTitleRender = null;\r\n\r\n /**\r\n * The size of the panel containing level titles.\r\n * \r\n * @group Level Titles\r\n * @type {number}\r\n */\r\n this.levelTitlePanelSize = 24;\r\n\r\n /**\r\n * Level titles placement. Defines level title panel position relative to the diagram.\r\n * \r\n * @group Level Titles\r\n * @type {AdviserPlacementType}\r\n */\r\n this.levelTitlePlacementType = AdviserPlacementType.Left;\r\n\r\n /**\r\n * If this property is true then level titles are placed inside of the diagram's view port above or below diagram nodes.\r\n * \r\n * @group Level Titles\r\n * @type {boolean}\r\n */\r\n this.levelTitlePlaceInside = false;\r\n\r\n /**\r\n * Group titles orientation.\r\n * \r\n * @group Level Titles\r\n * @type {TextOrientationType}\r\n */\r\n this.levelTitleOrientation = TextOrientationType.Auto;\r\n\r\n /**\r\n * Level titles vertical alignment.\r\n * \r\n * @group Level Titles\r\n * @type {VerticalAlignmentType}\r\n */\r\n this.levelTitleVerticalAlignment = VerticalAlignmentType.Middle;\r\n\r\n /**\r\n * Level titles horizontal alignment.\r\n * \r\n * @group Level Titles\r\n * @type {HorizontalAlignmentType}\r\n */\r\n this.levelTitleHorizontalAlignment = HorizontalAlignmentType.Center;\r\n\r\n /**\r\n * Level titles font size.\r\n * \r\n * @group Level Titles\r\n * @type {number}\r\n */\r\n this.levelTitleFontSize = \"12px\";\r\n\r\n /**\r\n * Level titles font family.\r\n * \r\n * @group Level Titles\r\n * @type {string}\r\n */\r\n this.levelTitleFontFamily = \"Arial\";\r\n\r\n /**\r\n * Level titles font color.\r\n * \r\n * @group Level Titles\r\n * @type {string}\r\n */\r\n this.levelTitleFontColor = Colors.White;\r\n\r\n /**\r\n * Level titles color.\r\n * \r\n * @group Level Titles\r\n * @type {string}\r\n */\r\n this.levelTitleColor = Colors.RoyalBlue;\r\n\r\n /**\r\n * Level titles font weight: normal, bold\r\n * \r\n * @group Level Titles\r\n * @type {string}\r\n */\r\n this.levelTitleFontWeight = \"normal\";\r\n\r\n /**\r\n * Level titles font style: normal, italic\r\n * \r\n * @group Level Titles\r\n * @type {string}\r\n */\r\n this.levelTitleFontStyle = \"normal\";\r\n\r\n /**\r\n * On level annotation title render event. This callback function is called to render level annotation title panel. \r\n * It is used to overwrite default level title template renderer. It is called only when level annotations are visible.\r\n * See other level annotation options for details.\r\n *\r\n * @group Level Titles\r\n * @callback\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onLevelTitleRender = null;\r\n\r\n /**\r\n * On level annotation background render event. This callback function is called to render level annotation background panel. \r\n * It is used to overwrite default level background template renderer. It is called only when level annotations are visible.\r\n * See other level annotation options for details.\r\n *\r\n * @group Level Titles\r\n * @callback\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onLevelBackgroundRender = null; \r\n\r\n /**\r\n * @ignore\r\n */\r\n this.distance = 3;\r\n\r\n /**\r\n * CSS3 scale transform. Control supports content scaling using CSS scale transform. It scales everything except scroll bars.\r\n * It properly handles mouse event coordinates. The CSS scale transform produces unreadable text and corrupted lines in desktop browsers,\r\n * it looks good only in mobile browsers, so our recommendation is to use zoom with collection of item templates of various sizes.\r\n * Templates gives you better control over quality of your content at various zoom levels.\r\n * \r\n * @type {number}\r\n */\r\n this.scale = 1;\r\n\r\n /**\r\n * Minimum CSS3 scale transform.\r\n * \r\n * @ignore\r\n */\r\n this.minimumScale = 0.5;\r\n\r\n /**\r\n * Maximum CSS3 scale transform.\r\n * \r\n * @ignore\r\n */\r\n this.maximumScale = 1;\r\n\r\n /**\r\n * Sets labels visibility for nodes when they are minimized into markers by page auto fit. See `pageFitMode` property.\r\n * \r\n * The control does not preserve space for labels in the diagram layout, since that would contradict the purpose of minimizing the nodes\r\n * into markers. Use controls `dotLevelShift`, `dotItemsInterval` properties to preserve space between nodes for labels.\r\n * \r\n * Labels are displayed inside of `div`s of the fixed size, see `labelSize` property, and control provides simple conflict\r\n * resolution to avoid labels overlapping. If two labels overlap each other with their bounding rectangles then only one of them\r\n * is going to stay visible.\r\n * \r\n * Auto - displays label only when it has space to be rendered.\r\n * True - shows label regardless, even if it overlaps other labels and nodes.\r\n * False - hidden.\r\n * \r\n * @group Labels\r\n * @type {Enabled}\r\n */\r\n this.showLabels = Enabled.Auto;\r\n\r\n /**\r\n * Label size. Sets labels placeholders `div`s size. It is needed to resolve labels overlapping.\r\n * If one label overlaps another label the or item it will be hidden.\r\n * \r\n * @group Labels\r\n * @type {Size}\r\n */\r\n this.labelSize = new Size(80, 24);\r\n\r\n /**\r\n * Sets labels offset from the markers bounding rectangles.\r\n * \r\n * @group Labels\r\n * @type {number}\r\n */\r\n this.labelOffset = 1;\r\n\r\n /**\r\n * Labels orientation.\r\n * \r\n * @group Labels\r\n * @type {TextOrientationType}\r\n */\r\n this.labelOrientation = TextOrientationType.Horizontal;\r\n\r\n /**\r\n * Labels placement. Sets labels placement relative to the markers bounding rectangles.\r\n * \r\n * @group Labels\r\n * @type {PlacementType}\r\n */\r\n this.labelPlacement = PlacementType.Top;\r\n\r\n /**\r\n * Labels font size.\r\n * \r\n * @group Labels\r\n * @type {string}\r\n */\r\n this.labelFontSize = \"10px\";\r\n\r\n /**\r\n * Labels font family.\r\n * \r\n * @group Labels\r\n * @type {string}\r\n */\r\n this.labelFontFamily = \"Arial\";\r\n\r\n /**\r\n * Labels color\r\n * \r\n * @group Labels\r\n * @type {string}\r\n */\r\n this.labelColor = Colors.Black;\r\n\r\n /**\r\n * Labels font weight\r\n * Font weight: normal, bold\r\n * \r\n * @group Labels\r\n * @type {string}\r\n */\r\n this.labelFontWeight = \"normal\";\r\n\r\n /**\r\n * Labels font style. Font style: normal, italic\r\n * \r\n * @group Labels\r\n * @type {string}\r\n */\r\n this.labelFontStyle = \"normal\";\r\n\r\n /**\r\n * Enable panning. Enable chart panning with mouse drag & drop for desktop browsers.\r\n * Disable it if you need to support items Drag & Drop.\r\n * \r\n * @type {boolean}\r\n */\r\n this.enablePanning = true;\r\n\r\n /**\r\n * Sets minimum size the diagram can shrink itself in auto size mode. See `pageFitMode` property.\r\n * In the auto size mode diagram controls its placeholder size itself,\r\n * it sets its size to accommodate all nodes and render them normally.\r\n * \r\n * @group Auto Layout\r\n * @type {Size}\r\n */\r\n this.autoSizeMinimum = new Size(800, 600);\r\n\r\n /**\r\n * Sets maximum size the diagram can expand itself in auto size mode. See `pageFitMode` property.\r\n * In the auto size mode diagram controls its placeholder size itself,\r\n * it sets its size to accommodate all nodes and render them normally.\r\n * \r\n * @group Auto Layout\r\n * @type {Size}\r\n */\r\n this.autoSizeMaximum = new Size(1024, 768);\r\n};\r\n","import {Enabled, ShapeType, AdviserPlacementType, TextOrientationType, PlacementType, Colors } from '../enums';\r\n\r\n/**\r\n * @class FamItemConfig\r\n * @classdesc Item Configuration Object defines properties of individual node in the family chart hierarchy. See `items` collection property\r\n * of family control configuration object. \r\n * \r\n * @param {FamItemConfig} arg0 Item config properties\r\n * \r\n * @param {string} arg0 Item id\r\n * @param {string[]|undefined} arg1 Parents ids\r\n * @param {string} arg2 Title\r\n * @param {string} arg3 Description \r\n * @param {string} arg4 Image\r\n */\r\nexport default function FamItemConfig(arg0, arg1, arg2, arg3, arg4) {\r\n var property;\r\n /**\r\n * Item id. It should be unique per chart.\r\n * \r\n * @type {string}\r\n */\r\n this.id = null;\r\n\r\n /**\r\n * Parents items ids. If this collection is empty then item considered as a root item.\r\n * @type {string[]}\r\n */\r\n this.parents = [];\r\n\r\n /**\r\n * Relative item id. This property is used to control items mutual placement in order to keep consistent ordering within levels. Relative item is used \r\n * for placing given item in diagram. We can place item on left or right side of relative item via setting placementType type property.\r\n * In case when multiple items use the same relative item then their order can be customized with position property.\r\n * \r\n * If this property set to null, family layout algorithm will try to choose elements order via placing connected \r\n * nodes as close to each other as possible.\r\n * \r\n * @group Order\r\n * @type {string}\r\n */\r\n this.relativeItem = null;\r\n\r\n /**\r\n * Relative placement type defines Left ot Right side placement of the node relative to the `relativeItem`.\r\n * \r\n * @group Order\r\n * @type {AdviserPlacementType}\r\n */\r\n this.placementType = AdviserPlacementType.Right;\r\n\r\n /**\r\n * Relative position defines order of elements placed relative to the same relative item on the same side.\r\n * \r\n * @group Order\r\n * @type {number}\r\n */\r\n this.position = null;\r\n\r\n /**\r\n * Primary parents id. Set this property to place item close to the selected primary parent in `parents` collection.\r\n * If property set to null or referenced parent does not exists then this property is ignored.\r\n * \r\n * @group Order\r\n * @type {string}\r\n */\r\n this.primaryParent = null;\r\n\r\n /**\r\n * Title\r\n * \r\n * @group Template\r\n * @type {string}\r\n */\r\n this.title = null;\r\n\r\n /**\r\n * Description\r\n * \r\n * @group Template\r\n * @type {string}\r\n */\r\n this.description = null;\r\n\r\n /**\r\n * Image\r\n * \r\n * @group Template\r\n * @type {string}\r\n */\r\n this.image = null;\r\n\r\n /**\r\n * Context object\r\n * \r\n * @group Template\r\n * @type {object}\r\n */\r\n this.context = null;\r\n\r\n /**\r\n * Title background color. The same color is used for node marker when control has enabled auto fit mode.\r\n * \r\n * @group Template\r\n * @type {string}\r\n */\r\n this.itemTitleColor = Colors.RoyalBlue;\r\n\r\n /**\r\n * Marker type. The shape of the marker when node is minimized by auto fit. The control supports auto fit of diagram into available screen space.\r\n * When diagram size significantly larger than available screen space, its scrolling and navigation becomes problematic,\r\n * so control supports automatic diagram fit into the screen space via rendering some of its nodes in form of small markers.\r\n * So this option sets marker shape for individual node.\r\n * \r\n * @group Template\r\n * @type {ShapeType}\r\n */\r\n this.minimizedItemShapeType = null;\r\n\r\n /**\r\n * Group Title. The group title on the side of the diagram node is one of controls default easy to use features.\r\n * It gives extra dimension for nodes visual grouping in the diagram.\r\n * \r\n * @group Group Title\r\n * @type {string}\r\n */\r\n this.groupTitle = null;\r\n\r\n /**\r\n * The group title background color.\r\n * \r\n * @group Group Title\r\n * @type {string}\r\n */\r\n this.groupTitleColor = Colors.RoyalBlue;\r\n\r\n /**\r\n * Matrix id defines grouping of multiple nodes into individual matrixes. By default all applicable nodes grouped into a single matrix.\r\n * Use this property to split nodes into multiple matrixes.\r\n * \r\n * @type {string}\r\n */\r\n this.matrixId = null;\r\n\r\n /**\r\n * Add to matrix property allows node to be grouped with other nodes into matrix. It is true by default.\r\n * \r\n * @type {boolean}\r\n */\r\n this.addToMatrix = true;\r\n\r\n /**\r\n * If true it makes item inactive in the diagram layout. Inactive items are regular items excluded from navigation, that means \r\n * when diagram uses auto fit mode, selection of the neighboring nodes goes through inactive items, so all nodes next to inactive item\r\n * become selected and shown in full size as well. Inactive items play a role of in layout annotations having no user interaction\r\n * and templated with HTML. For example they can be used to add titles into family diagram layout or terminator items\r\n * indicating that upon reaching them diagram would load extra nodes into layout.\r\n * \r\n * @type {boolean}\r\n */\r\n this.isActive = true;\r\n\r\n /**\r\n * Shows selection check box for the node.\r\n * If Auto then selection check box visibility depends on control's configuration.\r\n * \r\n * Auto - depends on `hasSelectorCheckbox` property of the control\r\n * True - shown\r\n * False - hidden\r\n * \r\n * @type {Enabled}\r\n */\r\n this.hasSelectorCheckbox = Enabled.Auto;\r\n\r\n /**\r\n * Shows context buttons panel for the node.\r\n * If Auto then context buttons panel visibility depends on control's configuration.\r\n * \r\n * Auto - depends on `hasButtons` property of the control\r\n * True - shown\r\n * False - hidden\r\n * \r\n * @group Template\r\n * @type {Enabled}\r\n */\r\n this.hasButtons = Enabled.Auto;\r\n\r\n /**\r\n * Template name. Templates are HTML fragments containing layout and styles used to render diagram nodes.\r\n * They are defined with a named configuration objects. See `templates` property of control's configuration object.\r\n * This option lets individually assign rendering template per individual node of the diagram.\r\n * \r\n * @group Template\r\n * @type {string}\r\n */\r\n this.templateName = null;\r\n\r\n /**\r\n * Sets callout annotation visibility for individual node. The callout annotation is one of easy to use features of the control.\r\n * By default it is displayed for markers in order to preview their node's content. The content is displayed using\r\n * current template of the node it is rendered for.\r\n * \r\n * The callout can be forced to be displayed for regular nodes as well. In that case use `calloutTemplateName` property\r\n * to change their template.\r\n * \r\n * Auto - depends on `showCallout` property of the control\r\n * True - shown regardless of node's visibility\r\n * False - hidden\r\n * \r\n * @group Callout\r\n * @type {Enabled}\r\n */\r\n this.showCallout = Enabled.Auto;\r\n\r\n /**\r\n * Callout annotation template name. This option lets individually assign rendering callout annotation template\r\n * per individual node of the diagram.\r\n * \r\n * Templates are HTML fragments containing layout and styles used to render diagram nodes.\r\n * They are defined with a named configuration objects. See `templates` property of control's configuration object.\r\n * \r\n * @group Callout\r\n * @type {string}\r\n */\r\n this.calloutTemplateName = null;\r\n\r\n /**\r\n * Marker label.\r\n * \r\n * @group Label\r\n * @type {string}\r\n */\r\n this.label = null;\r\n\r\n /**\r\n * Sets label visibility for individual nodes. Labels are only rendered for a node's markers. \r\n * \r\n * The control does not preserve space for labels in the diagram layout, since that would contradict the purpose of minimizing the nodes\r\n * into markers. Use controls `dotLevelShift`, `dotItemsInterval` properties to preserve space between nodes for labels.\r\n * \r\n * Labels are displayed inside of `div`s of the fixed size, see `labelSize` property, and control provides simple conflict\r\n * resolution to avoid labels overlapping. If two labels overlap each other with their bounding rectangles then only one of them\r\n * is going to stay visible.\r\n * \r\n * Auto - displays label only when it has space to be rendered.\r\n * True - shows label regardless, even if it overlaps other labels and nodes.\r\n * False - hidden.\r\n * \r\n * @group Label\r\n * @type {Enabled}\r\n */\r\n this.showLabel = Enabled.Auto;\r\n\r\n /**\r\n * Label size. Sets label's placeholder `div` size and controls conflict resolution if labels overlap each other.\r\n * If `null` then it is set to `labelSize` property of the control configuration.\r\n * \r\n * @group Label\r\n * @type {Size}\r\n */\r\n this.labelSize = null;\r\n\r\n /**\r\n * Label orientation.\r\n * If `Auto` then it is set to `labelOrientation` property of the control configuration.\r\n * \r\n * @group Label\r\n * @type {TextOrientationType}\r\n */\r\n this.labelOrientation = TextOrientationType.Auto;\r\n\r\n /**\r\n * Label placement. Sets label placement relative to the marker bounding rectangle.\r\n * If `Auto` then it is set to `labelPlacement` of the control configuration.\r\n * \r\n * @group Label\r\n * @type {PlacementType}\r\n */\r\n this.labelPlacement = PlacementType.Auto;\r\n\r\n switch (arguments.length) {\r\n case 1:\r\n for (property in arg0) {\r\n if (arg0.hasOwnProperty(property)) {\r\n this[property] = arg0[property];\r\n }\r\n }\r\n break;\r\n case 5:\r\n this.id = arg0;\r\n this.parents = arg1;\r\n this.title = arg2;\r\n this.description = arg3;\r\n this.image = arg4;\r\n break;\r\n }\r\n};\r\n","/**\r\n * @class EventArgs\r\n * \r\n * Context object\r\n */\r\nexport default function FamEventArgs() {\r\n /**\r\n * Current item\r\n * \r\n * @type {string}\r\n */\r\n this.oldContext = null;\r\n\r\n /**\r\n * New item\r\n * \r\n * @type {string}\r\n */\r\n this.context = null;\r\n\r\n /**\r\n * Parent items\r\n * \r\n * @type {string[]}\r\n * @ignore\r\n */\r\n this.parentItems = [];\r\n\r\n /**\r\n * Child items\r\n * \r\n * @type {string[]}\r\n * @ignore\r\n */\r\n this.childrenItems = [];\r\n\r\n\r\n /**\r\n * Node position on the diagram.\r\n * \r\n * @type {Rect}\r\n */\r\n this.position = null;\r\n\r\n /**\r\n * Relative object name.\r\n * \r\n * @type {string}\r\n */\r\n this.name = null;\r\n\r\n /**\r\n * If true cancels subsequent event and layout update.\r\n * \r\n * @type {boolean}\r\n */\r\n this.cancel = false;\r\n};","import Thickness from '../graphics/structs/Thickness';\r\nimport { AnnotationType, ZOrderType, LineType } from '../enums';\r\n\r\n/**\r\n * @class BackgroundAnnotationConfig\r\n * @classdesc Background annotation draws rectangular shape around annotated items. Annotations borders are offset around items, so if \r\n * two annotations overlap each other they are merged into one continuos shape having single border line.\r\n *\r\n * @param {object} arg0 Object properties.\r\n */\r\nexport default function BackgroundAnnotationConfig(arg0) {\r\n var property;\r\n\r\n /**\r\n * Annotation type. All types of annotations objects are added to `annotations` collection property of the control.\r\n * This property is needed to distinguish them when they are defined as JSON objects.\r\n * \r\n * @type {AnnotationType}\r\n */\r\n this.annotationType = AnnotationType.Background;\r\n\r\n /**\r\n * Collection of nodes ids this background annotation is drawn for.\r\n * \r\n * @type {string[]}\r\n */\r\n this.items = [];\r\n\r\n /**\r\n * If this property is true then background annotation includes all descendants of every item in `items` collection. It works in {OrgDiagram} only.\r\n * \r\n * @type {boolean}\r\n */\r\n this.includeChildren = false;\r\n\r\n /**\r\n * Sets annotation Z order placement relative to the diagram items. Diagram visual elements are drawn in layers on top of each other.\r\n * If you place annotations over diagram nodes then you block mouse events of UI elements in their templates.\r\n * Browsers don't support mouse events transparency consistently yet. So in order to avoid mouse events blocking of UI elements in item\r\n * templates you have to place annotation items under them or explicitly define maximum zindex for controls and make them rendered on top\r\n * of other visual elements. The control takes this into account and renders buttons panel on top of everything,\r\n * so they are never blocked by annotations drawn in front of diagram nodes.\r\n * \r\n * @type {ZOrderType}\r\n */\r\n this.zOrderType = ZOrderType.Auto;\r\n\r\n /**\r\n * Sets background offset around annotated items.\r\n * \r\n * @type {Thickness}\r\n */\r\n this.offset = new Thickness(18, 18, 18, 18);\r\n\r\n /**\r\n * Border line width\r\n * \r\n * @type {number}\r\n */\r\n this.lineWidth = 2;\r\n\r\n /**\r\n * Background color opacity.\r\n * \r\n * @type {number}\r\n */\r\n this.opacity = 1;\r\n\r\n /**\r\n * Shape border line color\r\n * \r\n * @type {string}\r\n */\r\n this.borderColor = null;\r\n\r\n /**\r\n * Fill Color.\r\n * \r\n * @type {string}\r\n */\r\n this.fillColor = null;\r\n\r\n /**\r\n * Border line type\r\n * \r\n * @type {LineType}\r\n */\r\n this.lineType = LineType.Solid;\r\n\r\n /**\r\n * If true then annotated nodes are shown full size regardless of controls auto fit mode and available screen space.\r\n * @type {boolean}\r\n */\r\n this.selectItems = false;\r\n\r\n switch (arguments.length) {\r\n case 1:\r\n if (arg0 !== null) {\r\n if (arg0 instanceof Array) {\r\n this.items = arg0;\r\n } else if (typeof arg0 == \"object\") {\r\n for (property in arg0) {\r\n if (arg0.hasOwnProperty(property)) {\r\n this[property] = arg0[property];\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n};","import Thickness from '../graphics/structs/Thickness';\r\nimport Size from '../graphics/structs/Size';\r\nimport {AnnotationType, LineType, Colors, ZOrderType, ConnectorShapeType,\r\n ConnectorPlacementType, ConnectorLabelPlacementType } from '../enums';\r\n/**\r\n * @class ConnectorAnnotationConfig\r\n * @classdesc Connector annotation configuration object. Connector annotations draws lines between two nodes of the diagram.\r\n * They are drawn on top of existing diagram layout and they don't affect nodes placement. So it is users responsibility to\r\n * preserve space between nodes for them. \r\n *\r\n * @param {object} arg0 Object properties.\r\n */\r\nexport default function ConnectorAnnotationConfig(arg0, arg1) {\r\n var property;\r\n\r\n /**\r\n * Annotation type. All types of annotations objects are added to `annotations` collection property of the control.\r\n * This property is needed to distinguish them when they are defined as JSON objects.\r\n * \r\n * @type {AnnotationType}\r\n */\r\n this.annotationType = AnnotationType.Connector;\r\n\r\n /**\r\n * Sets annotation Z order placement relative to the diagram items. Diagram visual elements are drawn in layers on top of each other.\r\n * If you place annotations over diagram nodes then you block mouse events of UI elements in their templates.\r\n * Browsers don't support mouse events transparency consistently yet. So in order to avoid mouse events blocking of UI elements in item\r\n * templates you have to place annotation items under them or explicitly define maximum zindex for controls and make them rendered on top\r\n * of other visual elements. The control takes this into account and renders buttons panel on top of everything,\r\n * so they are never blocked by annotations drawn in front of diagram nodes.\r\n * \r\n * @type {ZOrderType}\r\n */\r\n this.zOrderType = ZOrderType.Foreground;\r\n\r\n /**\r\n * The start node of connection line\r\n * \r\n * @type {string}\r\n */\r\n this.fromItem = null;\r\n\r\n /**\r\n * The end node of connection line\r\n * \r\n * @type {string}\r\n */\r\n this.toItem = null;\r\n\r\n /**\r\n * Connector shape type defines number of lines and arrows at their ends drawn between nodes of the connector annotation.\r\n * This feature combined with basic conflict resolution, which places overlapping annotations in parallel when they overlap each other,\r\n * gives you full flexibility over variations of possible connector lines between two given nodes of diagram.\r\n * \r\n * @type {ConnectorShapeType}\r\n */\r\n this.connectorShapeType = ConnectorShapeType.OneWay;\r\n\r\n /**\r\n * Connector placement type defines style of connector line drawing over diagram layout. It supports two options: \r\n * the `Straight` is classic direct line connecting two nodes, this is the most expected style of connector annotation\r\n * drawing over diagram, the second style is called `Offbeat` and it is designed to dynamically adopt to nodes mutual \r\n * location and gap between them. It uses free hand line style drawing going from start to the end node. Since every diagram \r\n * is packed with various connection lines, this annotation placement style is deliberately made not straight, so it can be \r\n * noticeable on top of other lines of the diagram.\r\n * \r\n * @type {ConnectorPlacementType}\r\n */\r\n this.connectorPlacementType = ConnectorPlacementType.Offbeat;\r\n\r\n /**\r\n * Label placement relative to connector annotation. Connector annotation is bound and drawn between two nodes\r\n * defined by two properties: `fromItem` and `toItem`. Label can be placed close to \"start\", \"end\" nodes or in between of them\r\n * along the connector line. \r\n * \r\n * @type {ConnectorLabelPlacementType}\r\n */\r\n this.labelPlacementType = ConnectorLabelPlacementType.Between;\r\n\r\n /**\r\n * Connector line end points offset. By default connection lines start from the margin of the node's rectangle.\r\n * If offset is positive then start point goes from outside of the rectangle, if it is negative then it starts from inside of the nodes rectangle.\r\n * \r\n * @type {Thickness}\r\n */\r\n this.offset = new Thickness(0, 0, 0, 0);\r\n\r\n /**\r\n * Border line width.\r\n * \r\n * @type {number}\r\n */\r\n this.lineWidth = 2;\r\n\r\n /**\r\n * Color\r\n * \r\n * @type {string}\r\n */\r\n this.color = Colors.Black;\r\n\r\n /**\r\n * Line pattern\r\n * \r\n * @type {LineType}\r\n */\r\n this.lineType = LineType.Solid;\r\n\r\n /**\r\n * If true then annotated nodes are shown full size regardless of controls auto fit mode and available screen space.\r\n * @type {boolean}\r\n */\r\n this.selectItems = true;\r\n\r\n /**\r\n * Label. Label styled with css class name \"bp-connector-label\".\r\n * @type {string}\r\n */\r\n this.label = null;\r\n\r\n /**\r\n * Label size\r\n * @type {Size}\r\n */\r\n this.labelSize = new Size(60, 30);\r\n\r\n switch (arguments.length) {\r\n case 1:\r\n for (property in arg0) {\r\n if (arg0.hasOwnProperty(property)) {\r\n this[property] = arg0[property];\r\n }\r\n }\r\n break;\r\n case 2:\r\n this.fromItem = arg0;\r\n this.toItem = arg1;\r\n break;\r\n }\r\n};\r\n","import { AnnotationType, ZOrderType, Colors, LineType } from '../enums';\r\n/**\r\n * @class HighlightPathAnnotationConfig\r\n * @classdesc Highlight path annotation configuration object. Highlight path annotation traces path between given sequence of nodes \r\n * over existing connector lines in the diagram.\r\n *\r\n * @param {object} arg0 Object properties.\r\n */\r\nexport default function HighlightPathAnnotationConfig(arg0) {\r\n var property;\r\n\r\n /**\r\n * Annotation type. All types of annotations objects are added to `annotations` collection property of the control.\r\n * This property is needed to distinguish them when they are defined as JSON objects.\r\n * \r\n * @type {AnnotationType}\r\n */\r\n this.annotationType = AnnotationType.HighlightPath;\r\n\r\n /**\r\n * Sets annotation Z order placement relative to the diagram items. Diagram visual elements are drawn in layers on top of each other.\r\n * If you place annotations over diagram nodes then you block mouse events of UI elements in their templates.\r\n * Browsers don't support mouse events transparency consistently yet. So in order to avoid mouse events blocking of UI elements in item\r\n * templates you have to place annotation items under them or explicitly define maximum zindex for controls and make them rendered on top\r\n * of other visual elements. The control takes this into account and renders buttons panel on top of everything,\r\n * so they are never blocked by annotations drawn in front of diagram nodes.\r\n * \r\n * @type {ZOrderType}\r\n */\r\n this.zOrderType = ZOrderType.Foreground;\r\n\r\n /**\r\n * Collection of nodes ids this annotation is drawn for. Please, pay attention that this is array of nodes ids. So if diagram finds\r\n * wrong path from start to end node you have possibility to define every intermediate node in the sequence yourself.\r\n * \r\n * @type {string[]}\r\n */\r\n this.items = [];\r\n\r\n /**\r\n * Border line width\r\n * \r\n * @type {number}\r\n */\r\n this.lineWidth = 2;\r\n\r\n /**\r\n * Line color\r\n * \r\n * @type {string}\r\n */\r\n this.color = Colors.Red;\r\n\r\n /**\r\n * Line type\r\n * \r\n * @type {LineType}\r\n */\r\n this.lineType = LineType.Solid;\r\n\r\n /**\r\n * Opacity.\r\n * \r\n * @type {number}\r\n */\r\n this.opacity = 1;\r\n\r\n /**\r\n * If true then annotation has arrows along the highlight path line.\r\n * \r\n * @type {boolean}\r\n */\r\n this.showArrows = true;\r\n\r\n /**\r\n * If true then annotated nodes are shown full size regardless of controls auto fit mode and available screen space.\r\n * @type {boolean}\r\n */\r\n this.selectItems = false;\r\n\r\n switch (arguments.length) {\r\n case 1:\r\n if (arg0 !== null) {\r\n if (arg0 instanceof Array) {\r\n this.items = arg0;\r\n } else if (typeof arg0 == \"object\") {\r\n for (property in arg0) {\r\n if (arg0.hasOwnProperty(property)) {\r\n this[property] = arg0[property];\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n};\r\n","import {AnnotationType, Colors } from '../enums';\r\n/**\r\n * @class LabelAnnotationConfig\r\n * @classdesc In-layout label annotation. Label annotations are placed in layout between nodes, they preserve\r\n * space between nodes, so they don't overlap neighboring nodes. Label annotations are designed \r\n * for auto placement and bundling of connection lines between nodes when needed.\r\n *\r\n * @param {object} arg0 Object properties.\r\n */\r\nexport default function LabelAnnotationConfig(arg0, arg1) {\r\n var property;\r\n\r\n /**\r\n * Annotation type. All types of annotations objects are added to `annotations` collection property of the control.\r\n * This property is needed to distinguish them when they are defined as JSON objects.\r\n * \r\n * @type {AnnotationType}\r\n */\r\n this.annotationType = AnnotationType.Label;\r\n\r\n /**\r\n * This is the item id you are creating annotation for.\r\n * @type {string}\r\n */\r\n this.fromItem = null;\r\n\r\n /**\r\n * This collection should contain only child or parent items of the annotated item. It cannot contain children and parents at the same time.\r\n * If it contain sub set of children then annotation label bundles children into subset and annotations form cascades \r\n * of labels over connection lines in the diagram.\r\n * \r\n * @type {string[]}\r\n */\r\n this.toItems = [];\r\n\r\n /**\r\n * Title. Annotation label text, it is styled with css class name \"bp-connector-label\".\r\n * \r\n * @type {string}\r\n */\r\n this.title = null;\r\n\r\n /**\r\n * Default template title background color.\r\n * \r\n * @type {string}\r\n */\r\n this.itemTitleColor = Colors.RoyalBlue;\r\n\r\n /**\r\n * Template name used to render this label.\r\n * \r\n * @type {string}\r\n */\r\n this.templateName = null;\r\n\r\n switch (arguments.length) {\r\n case 1:\r\n for (property in arg0) {\r\n if (arg0.hasOwnProperty(property)) {\r\n this[property] = arg0[property];\r\n }\r\n }\r\n break;\r\n case 2:\r\n this.fromItem = arg0;\r\n this.toItem = arg1;\r\n break;\r\n }\r\n};","import { LineType, Colors } from '../enums';\r\n/**\r\n * @class PaletteItemConfig\r\n * @classdesc Palette Item configuration object defines cross family connections lines styles. Multi-parent diagrams have cross hierarchy \r\n * relation lines, so in order to make their visual tracing more easy on diagram every connection line can be styled differently.\r\n * (This is the same approach as for visualization of regular classic line charts. If we have multiple lines in chart area it makes\r\n * sense to style every line individually.)\r\n * \r\n * @param {PaletteItemConfig} arg0 Palette properties object.\r\n * \r\n * @param {string} arg0 Line color\r\n * @param {number} arg1 Line width\r\n * @param {LineType} arg2 Line type\r\n */\r\nexport default function PaletteItemConfig(arg0, arg1, arg2) {\r\n var property;\r\n\r\n /**\r\n * Line color\r\n * \r\n * @type {string}\r\n */\r\n this.lineColor = Colors.Silver;\r\n\r\n /**\r\n * Line width\r\n * \r\n * @type {number}\r\n */\r\n this.lineWidth = 1;\r\n\r\n /**\r\n * Line type\r\n * \r\n * @type {LineType}\r\n */\r\n this.lineType = LineType.Solid;\r\n\r\n switch (arguments.length) {\r\n case 1:\r\n for (property in arg0) {\r\n if (arg0.hasOwnProperty(property)) {\r\n this[property] = arg0[property];\r\n }\r\n }\r\n break;\r\n case 3:\r\n this.lineColor = arg0;\r\n this.lineWidth = arg1;\r\n this.lineType = arg2;\r\n break;\r\n }\r\n};\r\n","import Thickness from '../graphics/structs/Thickness';\r\nimport Size from '../graphics/structs/Size';\r\nimport {AnnotationType, ZOrderType, ShapeType, PlacementType, LineType } from '../enums';\r\n\r\n/**\r\n * @class ShapeAnnotationConfig\r\n * @classdesc Shape annotation configuration object. Shape annotation is a possibility to draw some geometrical\r\n * shapes over nodes of the diagram. \r\n *\r\n * @param {object} arg0 Object properties.\r\n */\r\nexport default function ShapeAnnotationConfig(arg0) {\r\n var property;\r\n\r\n /**\r\n * Annotation type. All types of annotations objects are added to `annotations` collection property of the control.\r\n * This property is needed to distinguish them when they are defined as JSON objects.\r\n * \r\n * @type {AnnotationType}\r\n */\r\n this.annotationType = AnnotationType.Shape;\r\n\r\n /**\r\n * Sets annotation Z order placement relative to the diagram items. Diagram visual elements are drawn in layers on top of each other.\r\n * If you place annotations over diagram nodes then you block mouse events of UI elements in their templates.\r\n * Browsers don't support mouse events transparency consistently yet. So in order to avoid mouse events blocking of UI elements in item\r\n * templates you have to place annotation items under them or explicitly define maximum zindex for controls and make them rendered on top\r\n * of other visual elements. The control takes this into account and renders buttons panel on top of everything,\r\n * so they are never blocked by annotations drawn in front of diagram nodes.\r\n * \r\n * @type {ZOrderType}\r\n */\r\n this.zOrderType = ZOrderType.Auto;\r\n\r\n /**\r\n * Collection of nodes ids this shape annotation is drawn for.\r\n * \r\n * @type {string[]}\r\n */\r\n this.items = [];\r\n\r\n /**\r\n * Shape\r\n * \r\n * @type {ShapeType}\r\n */\r\n this.shapeType = ShapeType.Rectangle;\r\n\r\n /**\r\n * Sets shape offset around annotated items.\r\n * \r\n * @type {Thickness}\r\n */\r\n this.offset = new Thickness(0, 0, 0, 0);\r\n\r\n /**\r\n * Border line width\r\n * \r\n * @type {number}\r\n */\r\n this.lineWidth = 2;\r\n\r\n /**\r\n * Corner radius. Body corner radius in percents or pixels. For applicable shapes only.\r\n * \r\n * @type {string|number}\r\n */\r\n this.cornerRadius = \"10%\";\r\n\r\n /**\r\n * Background color opacity.\r\n * \r\n * @type {number}\r\n */\r\n this.opacity = 1;\r\n\r\n /**\r\n * Shape border line color\r\n * \r\n * @type {string}\r\n */\r\n this.borderColor = null;\r\n\r\n /**\r\n * Shape fill color\r\n * \r\n * @type {string}\r\n */\r\n this.fillColor = null;\r\n\r\n /**\r\n * Border line type\r\n * \r\n * @type {LineType}\r\n */\r\n this.lineType = LineType.Solid;\r\n\r\n /**\r\n * If true then annotated nodes are shown full size regardless of controls auto fit mode and available screen space.\r\n * @type {boolean}\r\n */\r\n this.selectItems = false;\r\n\r\n /**\r\n * Label. Label styled with css class name \"bp-connector-label\".\r\n * @type {string}\r\n */\r\n this.label = null;\r\n\r\n /**\r\n * Label size\r\n * @type {Size}\r\n */\r\n this.labelSize = new Size(60, 30);\r\n\r\n /**\r\n * Label placement relative to the annotation.\r\n * \r\n * @type {PlacementType}\r\n */\r\n this.labelPlacement = PlacementType.Auto;\r\n\r\n /**\r\n * Label offset from shape in pixels.\r\n * \r\n * @type {number}\r\n */\r\n this.labelOffset = 4;\r\n\r\n switch (arguments.length) {\r\n case 1:\r\n if (arg0 !== null) {\r\n if (arg0 instanceof Array) {\r\n this.items = arg0;\r\n } else if (typeof arg0 == \"object\") {\r\n for (property in arg0) {\r\n if (arg0.hasOwnProperty(property)) {\r\n this[property] = arg0[property];\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n};\r\n","import Thickness from '../graphics/structs/Thickness';\r\nimport Size from '../graphics/structs/Size';\r\nimport { LineType, Enabled } from '../enums';\r\n\r\n/**\r\n * @class TemplateConfig\r\n * @classdesc Template configuration object defines DOM elements for node content, cursor and highlight visual representation.\r\n * They are grouped into one configuration object because if we decide to customize cursor or highlight templates most likely\r\n * we are going to make them item template specific. At the same time control does not require all 3 of them to be defined.\r\n * If cursor or highlight templates properties are not set in template configuration object then control uses internal\r\n * default template for all of them. Generally all 3 templates can be set to null, so default templates are going to be used\r\n * by control.\r\n */\r\nexport default function TemplateConfig() {\r\n /**\r\n * Name. Every template configuration object has name property, it is being used to reference templates from items.\r\n * This name is used to as an argument of call back rendering function as well. If item has not template name set \r\n * it uses default template for rendering.\r\n * \r\n * @type {string}\r\n */\r\n this.name = null;\r\n\r\n /**\r\n * If true it makes templated items inactive in diagram layout. Inactive items are regular items excluded from navigation, that means \r\n * when use auto fit mode, selection of neighboring node to inactive item makes all nodes of inactive item shown in full\r\n * size as well. Inactive items play a role of in layout annotations having no user interaction and templated with HTML.\r\n * For example they can be used to add titles into family diagram layout or terminator items indicating that upon reaching\r\n * them diagram would load extra nodes into layout.\r\n * \r\n * @type {boolean}\r\n */\r\n this.isActive = true;\r\n\r\n /**\r\n * Size. Control deals with fixed size layout, it makes no guesses about content and size of nodes.\r\n * So we don't support in any form nodes auto sizing. In order to support such feature control should measure content\r\n * of every node before rendering cycle. Taking into account that nodes visibility depends on available space it is going\r\n * to be infinite loop of diagram layout and nodes measure iterations. The more space we provide to nodes the less number \r\n * of diagram nodes is going to be visible. So control expect that node size is hard valued in template configuration.\r\n * \r\n * @type {Size}\r\n */\r\n this.itemSize = new Size(120, 100);\r\n\r\n /**\r\n * Border width. We use archaic method to layout cursor and highlight frames around nodes, so we need to know border\r\n * width in order measure gaps between them properly.\r\n * \r\n * @type {number}\r\n */\r\n this.itemBorderWidth = 1;\r\n\r\n /**\r\n * Item template. Supported template formats: Control provide two distinct ways to define item templates.\r\n * The original one is based on setting HTML elements content via innerHTML DOM element property, see following reference \r\n * at https://developer.mozilla.org web site for more details. The modern way is to use JSON ML library that is our recommended\r\n * solution for templates definition, see following web site for more details http://www.jsonml.org/. This is only 3d party\r\n * MIT licensed code included into our code base, everything else is 100% authentic. We adopted it with minor modifications,\r\n * it generally works according to its original design.\r\n * \r\n * The control calls `onItemRender` callback function when specific node cursor needs to be rendered with this template.\r\n * \r\n * @type {string|object}\r\n */\r\n this.itemTemplate = null;\r\n\r\n /**\r\n * Marker type. The shape of the marker when node is minimized by auto fit. The control supports auto fit of the diagram into available screen space.\r\n * When diagram size significantly larger than available screen space, its scrolling and navigation becomes problematic,\r\n * so control supports automatic diagram fit into the screen space via rendering some of its nodes in form of small markers.\r\n * So this option sets marker shape for nodes templated with this template.\r\n * \r\n * @type {ShapeType}\r\n */\r\n this.minimizedItemShapeType = null;\r\n\r\n /**\r\n * Marker size.\r\n * \r\n * @type {Size}\r\n */\r\n this.minimizedItemSize = new Size(4, 4);\r\n\r\n /**\r\n * Marker corder radius for simple squares. By default it is null and dots displayed as cycles. If corner radius set to 0 then\r\n * they are displayed as regular squares.\r\n * \r\n * @type {number}\r\n */\r\n this.minimizedItemCornerRadius = null;\r\n\r\n /**\r\n * Marker border line width\r\n * \r\n * @type {number}\r\n */\r\n this.minimizedItemLineWidth = 1;\r\n\r\n /**\r\n * Marker border line color. By default it is the same as `itemTitleColor` of rendered node.\r\n * \r\n * @type {string}\r\n */\r\n this.minimizedItemBorderColor = null;\r\n\r\n /*\r\n Marker border line pattern\r\n \r\n @type {LineType}\r\n */\r\n this.minimizedItemLineType = LineType.Solid;\r\n\r\n /**\r\n * Marker fill color. By default it is the same as `itemTitleColor` of rendered node.\r\n * \r\n * @type {string}\r\n */\r\n this.minimizedItemFillColor = null;\r\n\r\n /**\r\n * Marker fill color opacity.\r\n * \r\n * @type {number}\r\n */\r\n this.minimizedItemOpacity = 1;\r\n\r\n /**\r\n * Highlight frame offset from node.\r\n * \r\n * @type {Thickness}\r\n */\r\n this.highlightPadding = new Thickness(2, 2, 2, 2);\r\n\r\n /**\r\n * Highlight frame border width.\r\n * \r\n * @type {number}\r\n */\r\n this.highlightBorderWidth = 1;\r\n\r\n /**\r\n * Highlight Template.\r\n * \r\n * The control calls `onHighlightRender` callback function when specific node highlight needs to be rendered with this template.\r\n * \r\n * @type {string|object}\r\n */\r\n this.highlightTemplate = null;\r\n\r\n /**\r\n * Cursor frame offset from node.\r\n * \r\n * @type {Thickness}\r\n */\r\n this.cursorPadding = new Thickness(3, 3, 3, 3);\r\n\r\n /**\r\n * Cursor frame border width.\r\n * \r\n * @type {number}\r\n */\r\n this.cursorBorderWidth = 2;\r\n\r\n /**\r\n * Cursor Template.\r\n * \r\n * The control calls `onCursorRender` callback function when specific node cursor needs to be rendered with this template.\r\n * \r\n * @type {string|object}\r\n */\r\n this.cursorTemplate = null;\r\n\r\n /**\r\n * Sets buttons panel visibility.\r\n * \r\n * `Auto` - depends on master config `hasButtons` property setting.\r\n * `True` - visible\r\n * `False` - hidden\r\n * \r\n * @group Templates\r\n * @type {boolean}\r\n */\r\n this.hasButtons = Enabled.Auto;\r\n\r\n /**\r\n * On buttons panel render event. This callback function is called to render context of buttons panel.\r\n * It is used to replace `buttons` collection property in the control. So we preserve context buttons panel as a functional \r\n * concept, but eliminate buttons customization API.\r\n *\r\n * @callback\r\n * @param {EventArgs} data Context information\r\n */\r\n this.onButtonsRender = null;\r\n};\r\n","import JsonML from '../../common/jsonml-html';\r\n\r\n/* jshint latedef: true, unused: false */\r\nexport default function AnnotationLabelTemplate() {\r\n var _template = [\"div\",\r\n {\r\n \"type\": \"checkbox\",\r\n \"name\": \"checkbox\",\r\n \"class\": [\"bp-item\", \"bp-corner-all\", \"bp-connector-label\"]\r\n }\r\n ];\r\n\r\n function template() {\r\n return _template;\r\n }\r\n\r\n function getHashCode() {\r\n return \"defaultAnnotationLabelTemplate\";\r\n }\r\n\r\n function render(event, data) {\r\n var annotationConfig = data.context;\r\n if (Array.isArray(annotationConfig.label)) {\r\n data.element.innerHTML = \"\";\r\n data.element.appendChild(JsonML.toHTML(annotationConfig.label));\r\n } else {\r\n data.element.innerHTML = annotationConfig.label;\r\n }\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};","export default function ButtonsTemplate(options) {\r\n var _template = [\"div\", {\r\n \"style\": {\r\n position: \"absolute\"\r\n }\r\n }\r\n ];\r\n\r\n function template() {\r\n return _template;\r\n }\r\n\r\n function getHashCode() {\r\n return \"defaultButtonsTemplate\";\r\n }\r\n\r\n function render(event, data) {\r\n var onButtonsRender = data.onButtonsRender;\r\n if(onButtonsRender != null) {\r\n onButtonsRender(data);\r\n }\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};\r\n\r\n","export default function CustomRenderTemplate(options, onRender) {\r\n var _template = [\"div\", {\r\n \"style\": {\r\n position: \"absolute\"\r\n }\r\n }\r\n ];\r\n\r\n function template() {\r\n return _template;\r\n }\r\n\r\n function getHashCode() {\r\n return \"customRenderTemplate\";\r\n }\r\n\r\n function render(event, data) {\r\n if(onRender != null) {\r\n onRender(data);\r\n }\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};\r\n\r\n","export default function CheckBoxTemplate(selectCheckBoxLabel) {\r\n var _template = [\"div\",\r\n [\"label\",\r\n [\"nobr\",\r\n [\"input\",\r\n {\r\n \"type\": \"checkbox\",\r\n \"name\": \"checkbox\",\r\n \"class\": \"bp-selectioncheckbox\"\r\n }\r\n ],\r\n '\\xa0',\r\n [\"span\",\r\n {\r\n \"name\": \"selectiontext\",\r\n \"class\": \"bp-selectiontext\"\r\n },\r\n selectCheckBoxLabel\r\n ]\r\n ]\r\n ]\r\n ];\r\n\r\n function template() {\r\n return _template;\r\n }\r\n\r\n function getHashCode() {\r\n return \"defaultCheckBoxTemplate\";\r\n }\r\n\r\n function render(event, data) {\r\n var checkBox = data.element.firstChild.firstChild.firstChild;\r\n checkBox.checked = data.isSelected;\r\n checkBox.setAttribute(\"data-id\", data.id);\r\n var label = data.element.firstChild.firstChild.childNodes[2];\r\n label.setAttribute(\"data-id\", data.id);\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};","export default function CursorTemplate(options, itemTemplateConfig) {\r\n var _template = create(itemTemplateConfig);\r\n\r\n function create(config) {\r\n return [\"div\",\r\n {\r\n \"style\": {\r\n width: (config.itemSize.width + config.cursorPadding.left + config.cursorPadding.right) + \"px\",\r\n height: (config.itemSize.height + config.cursorPadding.top + config.cursorPadding.bottom) + \"px\",\r\n \"borderWidth\": config.cursorBorderWidth + \"px\"\r\n },\r\n \"class\": [\"bp-item\", \"bp-corner-all\", \"bp-cursor-frame\"]\r\n }\r\n ];\r\n }\r\n\r\n function template() {\r\n return _template;\r\n }\r\n\r\n function getHashCode() {\r\n return \"defaultCursorTemplate\";\r\n }\r\n\r\n function render(event, data) {\r\n\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};","export default function DotHighlightTemplate(options, itemTemplateConfig) {\r\n var _template = create(itemTemplateConfig);\r\n\r\n function create(config) {\r\n var radius = config.minimizedItemCornerRadius;\r\n if (radius == null) {\r\n radius = Math.max(\r\n config.highlightPadding.left + config.minimizedItemSize.width + config.highlightPadding.right,\r\n config.highlightPadding.top + config.minimizedItemSize.height + config.highlightPadding.bottom\r\n ) + config.highlightBorderWidth;\r\n }\r\n return [\"div\",\r\n {\r\n \"style\": {\r\n \"borderWidth\": config.highlightBorderWidth + \"px\",\r\n \"MozBorderRadius\": radius + \"px\",\r\n \"WebkitBorderRadius\": radius + \"px\",\r\n \"-khtml-border-radius\": radius + \"px\",\r\n \"borderRadius\": radius + \"px\"\r\n },\r\n \"class\": [\"bp-item\", \"bp-highlight-dot-frame\"]\r\n }\r\n ];\r\n }\r\n\r\n function template() {\r\n return _template;\r\n }\r\n\r\n function getHashCode() {\r\n return \"defaultDotHighlightTemplate\";\r\n }\r\n\r\n function render(event, data) {\r\n\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};","import { VerticalAlignmentType, HorizontalAlignmentType, LineType } from '../enums';\r\n\r\nexport function getTextAlign(alignment) {\r\n var result = null;\r\n switch (alignment) {\r\n case HorizontalAlignmentType.Center:\r\n result = \"center\";\r\n break;\r\n case HorizontalAlignmentType.Left:\r\n result = \"left\";\r\n break;\r\n case HorizontalAlignmentType.Right:\r\n result = \"right\";\r\n break;\r\n }\r\n return result;\r\n}\r\n\r\nexport function getVerticalAlignment(alignment) {\r\n var result = null;\r\n switch (alignment) {\r\n case VerticalAlignmentType.Middle:\r\n result = \"middle\";\r\n break;\r\n case VerticalAlignmentType.Top:\r\n result = \"top\";\r\n break;\r\n case VerticalAlignmentType.Bottom:\r\n result = \"bottom\";\r\n break;\r\n }\r\n return result;\r\n}\r\n\r\nexport function getBorderStyle(lineType) {\r\n var result = null;\r\n switch (lineType) {\r\n case LineType.Solid:\r\n result = \"solid\";\r\n break;\r\n case LineType.Dotted:\r\n result = \"dotted\";\r\n break;\r\n case LineType.Dashed:\r\n result = \"dashed\";\r\n break;\r\n }\r\n return result;\r\n}","import { OrientationType, TextOrientationType, VerticalAlignmentType } from '../../enums';\r\nimport JsonML from '../../common/jsonml-html';\r\nimport Rect from '../../graphics/structs/Rect';\r\nimport { getTextAlign, getVerticalAlignment } from '../../graphics/EnumValues';\r\n\r\nexport function getRotatedText({orientation, textOrientation, horizontalAlignment, verticalAlignment, fontSize, fontFamily, fontWeight, fontStyle, label}) {\r\n var rotation = \"\",\r\n element;\r\n\r\n switch (textOrientation) {\r\n case TextOrientationType.Horizontal:\r\n break;\r\n case TextOrientationType.RotateLeft:\r\n rotation = \"rotate(-90deg)\";\r\n break;\r\n case TextOrientationType.RotateRight:\r\n rotation = \"rotate(90deg)\";\r\n break;\r\n case TextOrientationType.Auto:\r\n switch (orientation) {\r\n case OrientationType.Top:\r\n rotation = \"rotate(90deg)\";\r\n break;\r\n case OrientationType.Bottom:\r\n rotation = \"rotate(90deg)\";\r\n break;\r\n case OrientationType.Left:\r\n case OrientationType.Right:\r\n break;\r\n }\r\n break;\r\n }\r\n\r\n var style = {\r\n \"fontSize\": fontSize,\r\n \"fontFamily\": fontFamily,\r\n \"fontWeight\": fontWeight,\r\n \"fontStyle\": fontStyle,\r\n \"position\": \"absolute\",\r\n \"padding\": 0,\r\n \"margin\": 0,\r\n \"textAlign\": getTextAlign(horizontalAlignment),\r\n \"lineHeight\": 1,\r\n \"-webkit-transform-origin\": \"center center\",\r\n \"-moz-transform-origin\": \"center center\",\r\n \"-o-transform-origin\": \"center center\",\r\n \"-ms-transform-origin\": \"center center\",\r\n \"-webkit-transform\": rotation,\r\n \"-moz-transform\": rotation,\r\n \"-o-transform\": rotation,\r\n \"-ms-transform\": rotation,\r\n \"transform\": rotation,\r\n \"textOverflow\": \"ellipsis\",\r\n \"whiteSpace\": \"nowrap\",\r\n \"overflow\": \"hidden\",\r\n \"tableLayout\": \"fixed\"\r\n };\r\n\r\n switch (verticalAlignment) {\r\n case VerticalAlignmentType.Top:\r\n element = [\"div\",\r\n {\r\n \"style\": style\r\n },\r\n label\r\n ];\r\n break;\r\n default:\r\n style.borderCollapse = \"collapse\";\r\n\r\n element = [\"table\",\r\n {\r\n \"style\": style\r\n },\r\n [\"tbody\",\r\n [\"tr\",\r\n [\"td\",\r\n {\r\n \"style\": {\r\n \"verticalAlign\": getVerticalAlignment(verticalAlignment),\r\n \"padding\": 0,\r\n \"textOverflow\": \"ellipsis\",\r\n \"whiteSpace\": \"nowrap\",\r\n \"overflow\": \"hidden\"\r\n }\r\n },\r\n label\r\n ]\r\n ]\r\n ]\r\n ];\r\n break;\r\n }\r\n\r\n return element;\r\n }\r\n\r\nexport function updateRotatedText({element, orientation, textOrientation, verticalAlignment, width, height, label, fontColor }) {\r\n var style = {},\r\n isVertical = false;\r\n\r\n switch (textOrientation) {\r\n case TextOrientationType.RotateLeft:\r\n case TextOrientationType.RotateRight:\r\n isVertical = true;\r\n break;\r\n case TextOrientationType.Auto:\r\n switch (orientation) {\r\n case OrientationType.Top:\r\n case OrientationType.Bottom:\r\n isVertical = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n var textRect;\r\n if(isVertical) {\r\n textRect = new Rect(Math.round(width / 2.0 - height / 2.0), Math.round(height / 2.0 - width / 2.0), height, width);\r\n } else {\r\n textRect = new Rect(0, 0, width, height);\r\n }\r\n style = textRect.getCSS();\r\n style.maxWidth = style.width;\r\n style.maxHeight = style.height;\r\n\r\n var container = element.firstChild;\r\n JsonML.applyStyles(container, style);\r\n\r\n var title;\r\n switch (verticalAlignment) {\r\n case VerticalAlignmentType.Top:\r\n title = element.firstChild;\r\n break;\r\n default:\r\n title = element.firstChild.firstChild.firstChild.firstChild;\r\n title.style.borderCollapse = \"collapse\";\r\n break;\r\n }\r\n title.style.color = fontColor;\r\n title.textContent = label || \"\";\r\n }","import { OrientationType } from '../../enums';\r\nimport JsonML from '../../common/jsonml-html';\r\nimport { highestContrast } from '../../common/colors';\r\nimport { getRotatedText, updateRotatedText } from './RotatedText';\r\n\r\nexport default function GroupTitleTemplate(options) {\r\n var {groupTitleFontSize: fontSize, \r\n groupTitleFontFamily: fontFamily,\r\n groupTitleFontWeight: fontWeight,\r\n groupTitleFontStyle: fontStyle,\r\n groupTitleColor,\r\n itemTitleFirstFontColor,\r\n itemTitleSecondFontColor,\r\n groupTitleOrientation: textOrientation,\r\n groupTitleHorizontalAlignment: horizontalAlignment,\r\n groupTitleVerticalAlignment: verticalAlignment\r\n } = options;\r\n\r\n var _template = create();\r\n\r\n function create() {\r\n return [\"div\",\r\n {\r\n \"style\": {\r\n \"fontSize\": fontSize,\r\n \"fontFamily\": fontFamily,\r\n \"fontWeight\": fontWeight,\r\n \"fontStyle\": fontStyle\r\n },\r\n \"class\": [\"bp-item\", \"bp-corner-all\", \"bp-grouptitle-frame\"]\r\n },\r\n getRotatedText({orientation: OrientationType.Horizontal, textOrientation, horizontalAlignment, verticalAlignment, fontSize, fontFamily, fontWeight, fontStyle})\r\n ];\r\n }\r\n\r\n function template() {\r\n return _template;\r\n }\r\n\r\n function getHashCode() {\r\n return \"defaultGroupTitleTemplate\";\r\n }\r\n\r\n function render(event, data) {\r\n var { element, context: itemConfig, width, height } = data,\r\n label = itemConfig.groupTitle,\r\n backgroundColor = itemConfig.groupTitleColor || groupTitleColor,\r\n fontColor = highestContrast(backgroundColor, itemTitleSecondFontColor, itemTitleFirstFontColor);\r\n \r\n updateRotatedText({element, orientation: OrientationType.Horizontal, textOrientation, verticalAlignment, width, height, label, fontColor });\r\n\r\n JsonML.applyStyles(data.element, {\r\n \"backgroundColor\": backgroundColor\r\n });\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};\r\n\r\n","export default function HighlightTemplate(options, itemTemplateConfig) {\r\n var _template = create(itemTemplateConfig);\r\n\r\n function create(config) {\r\n return [\"div\",\r\n {\r\n \"style\": {\r\n \"borderWidth\": config.highlightBorderWidth + \"px\"\r\n },\r\n \"class\": [\"bp-item\", \"bp-corner-all\", \"bp-highlight-frame\"]\r\n }\r\n ];\r\n }\r\n\r\n function template() {\r\n return _template;\r\n }\r\n\r\n function getHashCode() {\r\n return \"defaultHighlightTemplate\";\r\n }\r\n\r\n function render(event, data) {\r\n\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};","import { highestContrast } from '../../common/colors';\r\nimport { Colors } from '../../enums';\r\nimport JsonML from '../../common/jsonml-html';\r\nimport Size from '../../graphics/structs/Size';\r\n\r\nexport default function ItemTemplate(options, itemTemplateConfig) {\r\n var _template = create(itemTemplateConfig);\r\n\r\n function create(config) {\r\n var contentSize = new Size(config.itemSize),\r\n itemTemplate;\r\n\r\n contentSize.width -= config.itemBorderWidth * 2;\r\n contentSize.height -= config.itemBorderWidth * 2;\r\n\r\n itemTemplate = [\"div\",\r\n {\r\n \"style\": {\r\n \"borderWidth\": config.itemBorderWidth + \"px\"\r\n },\r\n \"class\": [\"bp-item\", \"bp-corner-all\", \"bt-item-frame\"]\r\n },\r\n [\"div\",\r\n {\r\n \"name\": \"titleBackground\",\r\n \"style\": {\r\n top: \"2px\",\r\n left: \"2px\",\r\n width: (contentSize.width - 4) + \"px\",\r\n height: \"18px\"\r\n },\r\n \"class\": [\"bp-item\", \"bp-corner-all\", \"bp-title-frame\"]\r\n },\r\n [\"div\",\r\n {\r\n \"name\": \"title\",\r\n \"style\": {\r\n top: \"1px\",\r\n left: \"4px\",\r\n width: (contentSize.width - 4 - 4 * 2) + \"px\",\r\n height: \"16px\"\r\n },\r\n \"class\": [\"bp-item\", \"bp-title\"]\r\n }\r\n ]\r\n ],\r\n [\"div\", // photo border\r\n {\r\n \"name\": \"photoBorder\",\r\n \"style\": {\r\n top: \"24px\",\r\n left: \"2px\",\r\n width: \"50px\",\r\n height: \"60px\"\r\n },\r\n \"class\": [\"bp-item\", \"bp-photo-frame\"]\r\n },\r\n [\"img\", // photo\r\n {\r\n \"name\": \"photo\",\r\n \"alt\": \"\",\r\n \"style\": {\r\n width: \"50px\",\r\n height: \"60px\"\r\n }\r\n }\r\n ]\r\n ],\r\n [\"div\",\r\n {\r\n \"name\": \"description\",\r\n \"style\": {\r\n top: \"24px\",\r\n left: \"56px\",\r\n width: (contentSize.width - 4 - 56) + \"px\",\r\n height: \"74px\"\r\n },\r\n \"class\": [\"bp-item\", \"bp-description\"]\r\n }\r\n\r\n ]\r\n ];\r\n\r\n return itemTemplate;\r\n }\r\n\r\n function template() {\r\n return _template;\r\n }\r\n\r\n function getHashCode() {\r\n return \"defaultItemTemplate\";\r\n }\r\n\r\n function render(event, data) {\r\n var itemConfig = data.context,\r\n itemTitleColor = itemConfig.itemTitleColor != null ? itemConfig.itemTitleColor : Colors.RoyalBlue,\r\n color = highestContrast(itemTitleColor, options.itemTitleSecondFontColor, options.itemTitleFirstFontColor),\r\n element = data.element,\r\n titleBackground = element.firstChild,\r\n photo = element.childNodes[1].firstChild,\r\n title = titleBackground.firstChild,\r\n description = element.childNodes[2];\r\n\r\n JsonML.applyStyles(titleBackground, {\r\n \"backgroundColor\": itemTitleColor\r\n });\r\n photo.src = itemConfig.image;\r\n photo.alt = itemConfig.title;\r\n JsonML.applyStyles(title, {\r\n \"color\": color\r\n });\r\n title.textContent = itemConfig.title;\r\n description.textContent = itemConfig.description;\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};","import { getHashCode as getCommonHashCode } from '../../common';\r\nimport { highestContrast } from '../../common/colors';\r\nimport { getElementsByName } from '../../graphics/dom';\r\nimport JsonML from '../../common/jsonml-html';\r\nimport { Colors } from '../../enums';\r\n\r\nexport default function UserTemplate(options, content, onRender) {\r\n var _hashCode = getCommonHashCode(JSON.stringify(content));\r\n\r\n function template() {\r\n return content;\r\n }\r\n\r\n function getHashCode() {\r\n return _hashCode;\r\n }\r\n\r\n function render(event, data) {\r\n if (onRender != null) {\r\n onRender(event, data);\r\n } else {\r\n var itemConfig = data.context,\r\n itemTitleColor = itemConfig.itemTitleColor != null ? itemConfig.itemTitleColor : Colors.RoyalBlue,\r\n color = highestContrast(itemTitleColor, options.itemTitleSecondFontColor, options.itemTitleFirstFontColor);\r\n\r\n getElementsByName(this, data.element, \"photo\", function (node) {\r\n node.src = itemConfig.image;\r\n node.alt = itemConfig.title;\r\n });\r\n\r\n getElementsByName(this, data.element, \"titleBackground\", function (node) {\r\n JsonML.applyStyles(node, {\r\n \"background\": itemTitleColor\r\n });\r\n });\r\n\r\n getElementsByName(this, data.element, \"title\", function (node) {\r\n JsonML.applyStyles(node, {\r\n \"color\": color\r\n });\r\n node.textContent = itemConfig.title;\r\n });\r\n\r\n getElementsByName(this, data.element, \"description\", function (node) {\r\n node.textContent = itemConfig.description;\r\n });\r\n }\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};","export default function LabelAnnotationTemplate() {\r\n var _template = [\"div\",\r\n {\r\n \"class\": [\"bp-item\", \"bp-label-annotation\"]\r\n }\r\n ];\r\n\r\n function template() {\r\n return _template;\r\n }\r\n\r\n function getHashCode() {\r\n return \"defaultLabelAnnotationTemplate\";\r\n }\r\n\r\n function render(event, data) {\r\n var itemConfig = data.context;\r\n data.element.innerHTML = itemConfig.title;\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};","import { getHashCode as getCommonHashCode } from '../../common';\r\nimport { getRotatedText, updateRotatedText } from './RotatedText';\r\nimport JsonML from '../../common/jsonml-html';\r\n\r\nexport default function LevelTitleTemplate(options, orientation) {\r\n var {levelTitleFontSize: fontSize, \r\n levelTitleFontFamily: fontFamily,\r\n levelTitleFontWeight: fontWeight,\r\n levelTitleFontStyle: fontStyle,\r\n levelTitleFontColor,\r\n levelTitleOrientation: textOrientation,\r\n levelTitleHorizontalAlignment: horizontalAlignment,\r\n levelTitleVerticalAlignment: verticalAlignment,\r\n levelTitleColor \r\n } = options;\r\n\r\n var _template = create();\r\n var _hashCode = getCommonHashCode(JSON.stringify(_template));\r\n \r\n function create() {\r\n return [\"div\",\r\n {\r\n \"style\": {\r\n \"fontSize\": fontSize,\r\n \"fontFamily\": fontFamily,\r\n \"fontWeight\": fontWeight,\r\n \"fontStyle\": fontStyle\r\n },\r\n \"class\": [\"bp-item\", \"bp-corner-all\"]\r\n },\r\n getRotatedText({orientation, textOrientation, horizontalAlignment, verticalAlignment, fontSize, fontFamily, fontWeight, fontStyle})\r\n ];\r\n }\r\n\r\n function template() {\r\n return _template;\r\n }\r\n\r\n function getHashCode() {\r\n return _hashCode;\r\n }\r\n\r\n function render(event, data) {\r\n var config = data.context,\r\n { element, width, height } = data,\r\n titleColor = config.titleColor || levelTitleColor,\r\n label = config.title,\r\n fontColor = config.titleFontColor || levelTitleFontColor;\r\n\r\n updateRotatedText({element, orientation, textOrientation, width, height, label, fontColor });\r\n\r\n JsonML.applyStyles(data.element, {\r\n \"backgroundColor\": titleColor\r\n });\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};\r\n\r\n","import JsonML from '../../common/jsonml-html';\r\nimport { getBorderStyle } from '../../graphics/EnumValues';\r\n\r\nexport default function LevelBackgroundTemplate(options, levelAnnotationConfig) {\r\n var _template = create(levelAnnotationConfig);\r\n\r\n function create(config) {\r\n return [\"div\"];\r\n }\r\n\r\n function template() {\r\n return _template;\r\n }\r\n\r\n function getHashCode() {\r\n return \"levelAnnotationBackgroundTemplate\";\r\n }\r\n\r\n function render(event, data) {\r\n var annotationConfig = data.context;\r\n var style = {\r\n opacity: annotationConfig.opacity,\r\n borderColor: annotationConfig.borderColor,\r\n backgroundColor: annotationConfig.fillColor,\r\n borderWidth: annotationConfig.lineWidth.toString(),\r\n borderStyle: getBorderStyle(annotationConfig.lineType)\r\n }\r\n var container = data.element;\r\n JsonML.applyStyles(container, style);\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};","export default function DependencyManager() {\r\n var hash = {};\r\n\r\n function register(key, value) {\r\n hash[key] = value;\r\n\r\n return value;\r\n }\r\n\r\n function resolve() {\r\n var args = [],\r\n deps = arguments[0],\r\n func = arguments[1],\r\n scope = arguments[2] || {};\r\n return function () {\r\n var a = Array.prototype.slice.call(arguments, 0);\r\n for (var i = 0; i < deps.length; i += 1) {\r\n var d = deps[i];\r\n args.push(hash.hasOwnProperty(d) && d !== '' ? hash[d] : a.shift());\r\n }\r\n args = args.concat(a);\r\n return func.apply(scope || {}, args);\r\n };\r\n }\r\n\r\n return {\r\n register: register,\r\n resolve: resolve\r\n };\r\n};","import Family from '../algorithms/Family';\r\nimport DependencyManager from './DependencyManager';\r\nimport { splitCamelCaseName } from '../common';\r\n\r\nexport default function TaskManager() {\r\n var _taskFamily = new Family();\r\n var _dependencies = new DependencyManager();\r\n var _tasks = [];\r\n\r\n function TaskInfo(name, dependencies, factory, color) {\r\n this.name = name;\r\n this.dependencies = dependencies;\r\n this.factory = factory;\r\n this.task = null;\r\n this.color = color;\r\n }\r\n\r\n function addTask(taskName, taskDependencies, factory, color) {\r\n if (_tasks.length > 0) {\r\n throw \"Task Manager is already initialized\";\r\n }\r\n _taskFamily.add(taskDependencies, taskName, new TaskInfo(taskName, taskDependencies, factory, color));\r\n }\r\n\r\n function getTask(taskName) {\r\n var taskInfo = _taskFamily.node(taskName);\r\n return taskInfo && taskInfo.task;\r\n }\r\n\r\n function addDependency(name, dependency) {\r\n if (_tasks.length > 0) {\r\n throw \"Task Manager is already initialized\";\r\n }\r\n _dependencies.register(name, dependency);\r\n }\r\n\r\n function process(startTask, stopTask, debug) {\r\n var hasChanges = false,\r\n logtime = debug;\r\n if (_tasks.length === 0) {\r\n _taskFamily.loopTopo(this, function (taskName, taskInfo) {\r\n taskInfo.task = _dependencies.register(taskName, _dependencies.resolve(taskInfo.dependencies, taskInfo.factory)());\r\n _tasks.push(taskInfo);\r\n });\r\n }\r\n if (debug) {\r\n // eslint-disable-next-line no-console\r\n console.log(\"-- process --\");\r\n }\r\n var isRequired = {};\r\n for (var index = 0, len = _tasks.length; index < len; index += 1) {\r\n var taskInfo = _tasks[index],\r\n dependents = [];\r\n\r\n if (taskInfo.name == startTask || isRequired.hasOwnProperty(taskInfo.name)) {\r\n if (logtime) {\r\n var startAt = performance.now(); //ignore jslint\r\n }\r\n if ((hasChanges = taskInfo.task.process(debug))) {\r\n _taskFamily.loopChildren(this, taskInfo.name, function (childTaskName, childTaskInfo) {\r\n isRequired[childTaskName] = true;\r\n if (debug) {\r\n dependents.push(childTaskName);\r\n }\r\n return _taskFamily.SKIP;\r\n });\r\n }\r\n if (logtime) {\r\n var endAt = performance.now(); //ignore jslint\r\n }\r\n if (debug) {\r\n var spentTime = Math.round((endAt - startAt), 2);\r\n // eslint-disable-next-line no-console\r\n console.log(index + \". \" + taskInfo.name + (\", \" + spentTime + \" ms. \") + (hasChanges ? \" - forces: \" + dependents.toString() : \"\"));\r\n }\r\n }\r\n if (taskInfo.name == stopTask) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n\r\n function getProcessDiagramConfig() {\r\n var result = [];\r\n if (_tasks.length === 0) {\r\n _taskFamily.loopTopo(this, function (taskName, taskInfo) {\r\n taskInfo.task = _dependencies.register(taskName, _dependencies.resolve(taskInfo.dependencies, taskInfo.factory)());\r\n _tasks.push(taskInfo);\r\n });\r\n }\r\n for (var index = 0, len = _tasks.length; index < len; index += 1) {\r\n var taskInfo = _tasks[index];\r\n\r\n var itemConfig = {\r\n id: taskInfo.name,\r\n title: splitCamelCaseName(taskInfo.name).join(\" \"),\r\n description: taskInfo.task.description || \"\",\r\n itemTitleColor: taskInfo.color,\r\n parents: []\r\n }\r\n _taskFamily.loopParents(this, taskInfo.name, function (parentTaskName, parentTaskInfo) {\r\n itemConfig.parents.push(parentTaskName);\r\n return _taskFamily.SKIP;\r\n });\r\n result.push(itemConfig);\r\n }\r\n return result;\r\n }\r\n\r\n return {\r\n addTask: addTask,\r\n addDependency: addDependency,\r\n getTask: getTask,\r\n process: process,\r\n getProcessDiagramConfig: getProcessDiagramConfig\r\n };\r\n};","export default function OptionsTask(getOptions) {\r\n\r\n function process() {\r\n return true;\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions,\r\n description: \"Raw options.\"\r\n };\r\n};","import {isNullOrEmpty} from '../common';\r\n\r\nexport default function ArrayReader(itemTemplate, containsUniqueItems, uniquePropertyKey, createSourceHash, isOrdered) {\r\n this.itemTemplate = itemTemplate;\r\n this.containsUniqueItems = containsUniqueItems;\r\n this.uniquePropertyKey = uniquePropertyKey;\r\n this.containsPrimitiveValues = isNullOrEmpty(uniquePropertyKey);\r\n this.createSourceHash = createSourceHash;\r\n this.isOrdered = isOrdered;\r\n};\r\n\r\nArrayReader.prototype.read = function (target, source, path, context) {\r\n var result = [], resultHash = {},\r\n hash, sequence, resultSequence = {},\r\n sourceHash = {},\r\n item, itemid,\r\n index, len,\r\n newHashObject,\r\n sequencePath = path + \"-seq\";\r\n\r\n /* validate source array */\r\n if (!source || !Array.isArray(source)) {\r\n source = [];\r\n }\r\n\r\n /* hash values for tracking changes */\r\n hash = context.hash.hasOwnProperty(path) ? context.hash[path] : {};\r\n sequence = context.hash.hasOwnProperty(sequencePath) ? context.hash[sequencePath] : {};\r\n\r\n for (index = 0, len = source.length; index < len; index += 1) {\r\n item = source[index];\r\n\r\n itemid = this.containsUniqueItems ? (this.containsPrimitiveValues ? item : item[this.uniquePropertyKey]) : index;\r\n\r\n if (!resultHash.hasOwnProperty(itemid)) {\r\n newHashObject = this.itemTemplate.read(hash.hasOwnProperty(itemid) ? hash[itemid] : {}, item, path + \"-\" + index, context);\r\n\r\n result.push(newHashObject);\r\n resultHash[itemid] = newHashObject;\r\n resultSequence[index] = itemid;\r\n if (this.createSourceHash) {\r\n sourceHash[itemid] = item;\r\n }\r\n\r\n if (this.isOrdered) {\r\n if (sequence[index] != resultSequence[index]) {\r\n context.isChanged = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n context.hash[path] = resultHash;\r\n context.hash[sequencePath] = resultSequence;\r\n if (this.createSourceHash) {\r\n context.sourceHash[path] = sourceHash;\r\n }\r\n\r\n if (target == null || target.length != result.length) {\r\n context.isChanged = true;\r\n }\r\n\r\n return result;\r\n};","export default function ValueReader(acceptedTypes, isNullable, defaultValue) {\r\n this.acceptedTypes = acceptedTypes;\r\n this.isNullable = isNullable;\r\n this.defaultValue = defaultValue;\r\n\r\n this.hash = {};\r\n\r\n /* collect valid enumeration values */\r\n for (var index = 0; index < acceptedTypes.length; index += 1) {\r\n var acceptedType = acceptedTypes[index];\r\n this.hash[acceptedType] = true;\r\n }\r\n};\r\n\r\nValueReader.prototype.stringify = function (target) {\r\n if (this.hash[\"object\"] == true) {\r\n var processed = [];\r\n var result = JSON.stringify(target, function (key, value) {\r\n if (key[0] === '_') {\r\n return null;\r\n }\r\n if (value !== null && typeof value == \"object\") {\r\n if (processed.indexOf(value) == -1) {\r\n processed.push(value);\r\n return value;\r\n }\r\n return null;\r\n }\r\n return value;\r\n });\r\n return result;\r\n }\r\n return target;\r\n}\r\n\r\nValueReader.prototype.read = function (target, source, path, context) {\r\n var result = null;\r\n\r\n if (source === null || typeof source == \"undefined\" || !this.hash.hasOwnProperty(typeof source)) {\r\n source = this.isNullable ? null : this.defaultValue;\r\n }\r\n\r\n result = source;\r\n\r\n if (this.stringify(target) !== this.stringify(source)) {\r\n context.isChanged = true;\r\n }\r\n\r\n return result;\r\n};","import { isObject } from '../common';\r\n\r\nexport default function ObjectReader(dataTemplate, isNullable, defaultValue) {\r\n this.dataTemplate = dataTemplate;\r\n this.isNullable = isNullable;\r\n this.defaultValue = defaultValue;\r\n};\r\n\r\nObjectReader.prototype.read = function (target, source, path, context) {\r\n var result = null,\r\n isTargetObject = isObject(target),\r\n property,\r\n propertyDataTemplate;\r\n\r\n if (!source) {\r\n source = this.isNullable ? null : this.defaultValue;\r\n }\r\n\r\n if (isObject(source)) {\r\n result = {};\r\n\r\n for (property in this.dataTemplate) {\r\n if (this.dataTemplate.hasOwnProperty(property)) {\r\n propertyDataTemplate = this.dataTemplate[property];\r\n\r\n result[property] = propertyDataTemplate.read(isTargetObject ? target[property] : null, source[property], path + \"-\" + property, context);\r\n }\r\n }\r\n } else {\r\n result = source;\r\n\r\n if (target !== source) {\r\n context.isChanged = true;\r\n }\r\n }\r\n return result;\r\n};","export default function EnumerationReader(enumeration, isNullable, defaultValue) {\r\n this.enumeration = enumeration;\r\n this.isNullable = isNullable;\r\n this.defaultValue = defaultValue;\r\n\r\n this.hash = {};\r\n\r\n /* collect valid enumeration values */\r\n for (var key in enumeration) {\r\n this.hash[enumeration[key]] = key;\r\n }\r\n};\r\n\r\nEnumerationReader.prototype.read = function (target, source, path, context) {\r\n var result = null;\r\n\r\n if (source === null || typeof source == \"undefined\" || !this.hash.hasOwnProperty(source)) {\r\n source = this.isNullable ? null : this.defaultValue;\r\n }\r\n\r\n result = source;\r\n\r\n if (target !== source) {\r\n context.isChanged = true;\r\n }\r\n\r\n return result;\r\n};\r\n","import ArrayReader from '../../readers/ArrayReader';\r\nimport ValueReader from '../../readers/ValueReader';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\nimport EnumerationReader from '../../readers/EnumerationReader';\r\nimport { OrientationType, Enabled, Visibility } from '../../enums';\r\n\r\nexport default function CalloutOptionTask(optionsTask, defaultConfig, defaultItemConfig) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n calloutMaximumVisibility: new EnumerationReader(Visibility, false, defaultConfig.calloutMaximumVisibility),\r\n showCallout: new ValueReader([\"boolean\"], false, defaultConfig.showCallout),\r\n calloutPlacementOffset: new ValueReader([\"number\"], false, defaultConfig.calloutPlacementOffset),\r\n orientationType: new EnumerationReader(OrientationType, false, defaultConfig.orientationType),\r\n\r\n defaultTemplateName: new ValueReader([\"string\"], true),\r\n defaultCalloutTemplateName: new ValueReader([\"string\"], true),\r\n\r\n calloutfillColor: new ValueReader([\"string\"], false, defaultConfig.calloutfillColor),\r\n calloutBorderColor: new ValueReader([\"string\"], true),\r\n calloutOffset: new ValueReader([\"number\"], false, defaultConfig.calloutOffset),\r\n calloutCornerRadius: new ValueReader([\"string\"], false, defaultConfig.calloutCornerRadius),\r\n calloutPointerWidth: new ValueReader([\"string\"], false, defaultConfig.calloutPointerWidth),\r\n calloutLineWidth: new ValueReader([\"number\"], false, defaultConfig.calloutLineWidth),\r\n calloutOpacity: new ValueReader([\"number\"], false, defaultConfig.calloutOpacity),\r\n\r\n items: new ArrayReader(\r\n new ObjectReader({\r\n id: new ValueReader([\"string\", \"number\"], true),\r\n showCallout: new EnumerationReader(Enabled, false, defaultConfig.showCallout),\r\n calloutTemplateName: new ValueReader([\"string\"], true),\r\n templateName: new ValueReader([\"string\"], true)\r\n }),\r\n true,\r\n \"id\"\r\n )\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getItemOptions(itemid) {\r\n return _hash[\"options-items\"][itemid];\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions,\r\n getItemOptions: getItemOptions,\r\n description: \"Checks item callout options.\"\r\n };\r\n};","import ValueReader from '../../readers/ValueReader';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\nimport EnumerationReader from '../../readers/EnumerationReader';\r\nimport { ConnectorType, GroupByType, ElbowType, LineType } from '../../enums';\r\n\r\nexport default function ConnectorsOptionTask(optionsTask, defaultConfig) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n arrowsDirection: new EnumerationReader(GroupByType, false, defaultConfig.arrowsDirection),\r\n showExtraArrows: new ValueReader([\"boolean\"], false, defaultConfig.showExtraArrows),\r\n extraArrowsMinimumSpace: new ValueReader([\"number\"], false, defaultConfig.extraArrowsMinimumSpace),\r\n connectorType: new EnumerationReader(ConnectorType, false, defaultConfig.hasOwnProperty(\"connectorType\") ? defaultConfig.connectorType : ConnectorType.Squared),\r\n showNeigboursConnectorsHighlighted: new EnumerationReader(ConnectorType, false, defaultConfig.hasOwnProperty(\"showNeigboursConnectorsHighlighted\") ? defaultConfig.showNeigboursConnectorsHighlighted : false),\r\n elbowType: new EnumerationReader(ElbowType, false, defaultConfig.elbowType),\r\n bevelSize: new ValueReader([\"number\"], false, defaultConfig.bevelSize),\r\n elbowDotSize: new ValueReader([\"number\"], false, defaultConfig.elbowDotSize),\r\n linesColor: new ValueReader([\"string\"], false, defaultConfig.linesColor),\r\n linesWidth: new ValueReader([\"number\"], false, defaultConfig.linesWidth),\r\n linesType: new EnumerationReader(LineType, false, defaultConfig.linesType),\r\n highlightLinesColor: new ValueReader([\"string\"], false, defaultConfig.highlightLinesColor),\r\n highlightLinesWidth: new ValueReader([\"number\"], false, defaultConfig.highlightLinesWidth),\r\n highlightLinesType: new EnumerationReader(LineType, false, defaultConfig.highlightLinesType)\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions,\r\n description: \"Checks connector lines drawing options.\"\r\n };\r\n};","import ValueReader from '../../readers/ValueReader';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\nimport ArrayReader from '../../readers/ArrayReader';\r\nimport EnumerationReader from '../../readers/EnumerationReader';\r\nimport { ItemType, AdviserPlacementType, ChildrenPlacementType, Enabled } from '../../enums';\r\n\r\nexport default function OrgItemsOptionTask(optionsTask, defaultItemConfig) {\r\n var _data = {},\r\n _hash = {},\r\n _sourceHash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n items: new ArrayReader(\r\n new ObjectReader({\r\n id: new ValueReader([\"string\", \"number\"], true),\r\n parent: new ValueReader([\"string\", \"number\"], true),\r\n itemType: new EnumerationReader(ItemType, false, defaultItemConfig.itemType),\r\n adviserPlacementType: new EnumerationReader(AdviserPlacementType, false, defaultItemConfig.adviserPlacementType),\r\n childrenPlacementType: new EnumerationReader(ChildrenPlacementType, false, defaultItemConfig.childrenPlacementType),\r\n placeAdvisersAboveChildren: new EnumerationReader(Enabled, false, defaultItemConfig.placeAdvisersAboveChildren),\r\n placeAssistantsAboveChildren: new EnumerationReader(Enabled, false, defaultItemConfig.placeAssistantsAboveChildren),\r\n isVisible: new ValueReader([\"boolean\"], false, defaultItemConfig.isVisible),\r\n isActive: new ValueReader([\"boolean\"], false, defaultItemConfig.isActive),\r\n levelOffset: new ValueReader([\"number\"], false, null)\r\n }),\r\n true,\r\n \"id\",\r\n true,\r\n true\r\n )\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash,\r\n sourceHash: _sourceHash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getItems() {\r\n return _data.items;\r\n }\r\n\r\n function getConfig(itemId) {\r\n return _sourceHash[\"options-items\"][itemId];\r\n }\r\n\r\n return {\r\n process: process,\r\n getItems: getItems,\r\n getConfig: getConfig,\r\n description: \"Checks items configuration options effecting their placement in layout.\"\r\n };\r\n};","import ValueReader from '../../readers/ValueReader';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\nimport ArrayReader from '../../readers/ArrayReader';\r\n\r\nexport default function ItemsContentOptionTask(optionsTask, defaultItemConfig) {\r\n var _data = {},\r\n _hash = {},\r\n _sourceHash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n items: new ArrayReader(\r\n new ObjectReader({\r\n id: new ValueReader([\"string\", \"number\"], true),\r\n title: new ValueReader([\"string\"], true),\r\n description: new ValueReader([\"string\"], true),\r\n image: new ValueReader([\"string\"], true),\r\n context: new ValueReader([\"string\", \"number\", \"object\"], true),\r\n itemTitleColor: new ValueReader([\"string\"], false, defaultItemConfig.itemTitleColor),\r\n groupTitle: new ValueReader([\"string\"], false, defaultItemConfig.groupTitle),\r\n groupTitleColor: new ValueReader([\"string\"], false, defaultItemConfig.groupTitleColor)\r\n }),\r\n true,\r\n \"id\",\r\n true,\r\n true\r\n )\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash,\r\n sourceHash: _sourceHash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getItems() {\r\n return _data.items;\r\n }\r\n\r\n function getConfig(itemId) {\r\n return _sourceHash[\"options-items\"][itemId];\r\n }\r\n\r\n return {\r\n process: process,\r\n getItems: getItems,\r\n getConfig: getConfig,\r\n description: \"Checks items configuration options effecting their placement in layout.\"\r\n };\r\n};","export default function FunctionReader() {\r\n\r\n};\r\n\r\nFunctionReader.prototype.read = function (target, source, path, context) {\r\n var result = null;\r\n\r\n result = (typeof source == \"function\") ? source : null;\r\n\r\n return result;\r\n};\r\n","import ArrayReader from '../../readers/ArrayReader';\r\nimport ValueReader from '../../readers/ValueReader';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\nimport EnumerationReader from '../../readers/EnumerationReader';\r\nimport FunctionReader from '../../readers/FunctionReader';\r\nimport { AdviserPlacementType, Enabled, PageFitMode, Visibility, SelectionPathMode, VerticalAlignmentType } from '../../enums';\r\n\r\nexport default function ItemsSizesOptionTask(optionsTask, defaultConfig, defaultItemConfig) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n /*item template options*/\r\n defaultTemplateName: new ValueReader([\"string\"], true),\r\n defaultLabelAnnotationTemplate: new ValueReader([\"string\"], true),\r\n hasSelectorCheckbox: new EnumerationReader(Enabled, false, defaultConfig.hasSelectorCheckbox),\r\n hasButtons: new EnumerationReader(Enabled, false, defaultConfig.hasButtons),\r\n buttonsPanelSize: new ValueReader([\"number\"], false, defaultConfig.buttonsPanelSize),\r\n groupTitlePanelSize: new ValueReader([\"number\"], false, defaultConfig.groupTitlePanelSize),\r\n groupTitlePlacementType: new EnumerationReader(AdviserPlacementType, false, defaultConfig.groupTitlePlacementType),\r\n checkBoxPanelSize: new ValueReader([\"number\"], false, defaultConfig.checkBoxPanelSize),\r\n selectCheckBoxLabel: new ValueReader([\"string\"], false, defaultConfig.selectCheckBoxLabel),\r\n onButtonsRender: new FunctionReader(),\r\n /* items visibility */\r\n pageFitMode: new EnumerationReader(PageFitMode, false, defaultConfig.pageFitMode),\r\n padding: new ObjectReader({\r\n left: new ValueReader([\"number\"], false, defaultConfig.padding.left),\r\n top: new ValueReader([\"number\"], false, defaultConfig.padding.top),\r\n right: new ValueReader([\"number\"], false, defaultConfig.padding.right),\r\n bottom: new ValueReader([\"number\"], false, defaultConfig.padding.bottom)\r\n }, false, defaultConfig.padding),\r\n minimalVisibility: new EnumerationReader(Visibility, false, defaultConfig.minimalVisibility),\r\n selectionPathMode: new EnumerationReader(SelectionPathMode, false, defaultConfig.selectionPathMode),\r\n autoSizeMinimum: new ObjectReader({\r\n width: new ValueReader([\"number\"], false, defaultConfig.autoSizeMinimum.width),\r\n height: new ValueReader([\"number\"], false, defaultConfig.autoSizeMinimum.height)\r\n }, false, defaultConfig.autoSizeMinimum),\r\n autoSizeMaximum: new ObjectReader({\r\n width: new ValueReader([\"number\"], false, defaultConfig.autoSizeMaximum.width),\r\n height: new ValueReader([\"number\"], false, defaultConfig.autoSizeMaximum.height)\r\n }, false, defaultConfig.autoSizeMaximum),\r\n /* scale */\r\n scale: new ValueReader([\"number\"], false, defaultConfig.scale),\r\n maximumScale: new ValueReader([\"number\"], false, defaultConfig.maximumScale),\r\n minimumScale: new ValueReader([\"number\"], false, defaultConfig.minimumScale),\r\n /*intervals*/\r\n normalLevelShift: new ValueReader([\"number\"], false, defaultConfig.normalLevelShift),\r\n dotLevelShift: new ValueReader([\"number\"], false, defaultConfig.dotLevelShift),\r\n lineLevelShift: new ValueReader([\"number\"], false, defaultConfig.lineLevelShift),\r\n normalItemsInterval: new ValueReader([\"number\"], false, defaultConfig.normalItemsInterval),\r\n dotItemsInterval: new ValueReader([\"number\"], false, defaultConfig.dotItemsInterval),\r\n lineItemsInterval: new ValueReader([\"number\"], false, defaultConfig.lineItemsInterval),\r\n /*cousiins branches interval multiplier*/\r\n cousinsIntervalMultiplier: new ValueReader([\"number\"], false, defaultConfig.cousinsIntervalMultiplier),\r\n\r\n verticalAlignment: new EnumerationReader(VerticalAlignmentType, false, defaultConfig.verticalAlignment),\r\n\r\n items: new ArrayReader(\r\n new ObjectReader({\r\n id: new ValueReader([\"string\", \"number\"], true),\r\n groupTitle: new ValueReader([\"string\", \"number\"], true),\r\n isVisible: new ValueReader([\"boolean\", \"number\"], false, defaultItemConfig.isVisible),\r\n isActive: new ValueReader([\"boolean\", \"number\"], false, defaultItemConfig.isActive),\r\n hasSelectorCheckbox: new EnumerationReader(Enabled, false, defaultItemConfig.hasSelectorCheckbox),\r\n hasButtons: new EnumerationReader(Enabled, false, defaultItemConfig.hasButtons),\r\n templateName: new ValueReader([\"string\"], true)\r\n }),\r\n true,\r\n \"id\"\r\n )\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getItemOptions(itemid) {\r\n return _hash[\"options-items\"][itemid];\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getItemOptions: getItemOptions,\r\n getOptions: getOptions,\r\n description: \"Checks items size options.\"\r\n };\r\n};","import ValueReader from '../../readers/ValueReader';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\nimport EnumerationReader from '../../readers/EnumerationReader';\r\nimport { PageFitMode, Visibility } from '../../enums';\r\n\r\nexport default function MinimumVisibleLevelsOptionTask(optionsTask, defaultConfig) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n /* items visibility */\r\n pageFitMode: new EnumerationReader(PageFitMode, false, defaultConfig.pageFitMode),\r\n minimalVisibility: new EnumerationReader(Visibility, false, defaultConfig.minimalVisibility),\r\n minimumVisibleLevels: new ValueReader([\"number\"], false, defaultConfig.minimumVisibleLevels),\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions,\r\n description: \"Checks minimum visible levels options.\"\r\n };\r\n};","import ArrayReader from '../../readers/ArrayReader';\r\nimport ValueReader from '../../readers/ValueReader';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\nimport EnumerationReader from '../../readers/EnumerationReader';\r\nimport { TextOrientationType, PlacementType, Enabled, GroupByType } from '../../enums';\r\n\r\nexport default function LabelsOptionTask(optionsTask, defaultConfig, defaultItemConfig) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n showLabels: new EnumerationReader(Enabled, false, defaultConfig.showLabels),\r\n labelOffset: new ValueReader([\"number\"], false, defaultConfig.labelOffset),\r\n labelFontSize: new ValueReader([\"string\"], false, defaultConfig.labelFontSize),\r\n labelFontFamily: new ValueReader([\"string\"], false, defaultConfig.labelFontFamily),\r\n labelFontStyle: new ValueReader([\"string\"], false, defaultConfig.labelFontStyle),\r\n labelFontWeight: new ValueReader([\"string\"], false, defaultConfig.labelFontWeight),\r\n labelColor: new ValueReader([\"string\"], false, defaultConfig.labelColor),\r\n labelSize: new ObjectReader({\r\n width: new ValueReader([\"number\"], false, defaultConfig.labelSize.width),\r\n height: new ValueReader([\"number\"], false, defaultConfig.labelSize.height)\r\n }, false, defaultConfig.labelSize),\r\n labelOrientation: new EnumerationReader(TextOrientationType, false, defaultConfig.labelOrientation),\r\n labelPlacement: new EnumerationReader(PlacementType, false, defaultConfig.labelPlacement),\r\n arrowsDirection: new EnumerationReader(GroupByType, false, defaultConfig.arrowsDirection),\r\n items: new ArrayReader(\r\n new ObjectReader({\r\n id: new ValueReader([\"string\", \"number\"], true),\r\n label: new ValueReader([\"string\", \"number\", \"object\"], true),\r\n showLabel: new EnumerationReader(Enabled, false, defaultItemConfig.showLabel),\r\n labelSize: new ObjectReader({\r\n width: new ValueReader([\"number\"], false, 0),\r\n height: new ValueReader([\"number\"], false, 0)\r\n }, true),\r\n labelOrientation: new EnumerationReader(TextOrientationType, false, defaultItemConfig.labelOrientation),\r\n labelPlacement: new EnumerationReader(PlacementType, false, defaultItemConfig.labelPlacement)\r\n }),\r\n true,\r\n \"id\"\r\n )\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getItemsOptions() {\r\n return _hash[\"options-items\"];\r\n }\r\n\r\n function getItemOptions(itemid) {\r\n return _hash[\"options-items\"][itemid];\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getItemOptions: getItemOptions,\r\n getItemsOptions: getItemsOptions,\r\n getOptions: getOptions,\r\n description: \"Checks items labels options.\"\r\n };\r\n};","import ArrayReader from '../../readers/ArrayReader';\r\nimport ValueReader from '../../readers/ValueReader';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\nimport EnumerationReader from '../../readers/EnumerationReader';\r\nimport FunctionReader from '../../readers/FunctionReader';\r\nimport { LineType, ShapeType, TextOrientationType, HorizontalAlignmentType, VerticalAlignmentType, Enabled } from '../../enums';\r\n\r\nexport default function TemplatesOptionTask(optionsTask, defaultConfig, defaultTemplateConfig) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n groupTitleVerticalAlignment: new EnumerationReader(VerticalAlignmentType, false, defaultConfig.groupTitleVerticalAlignment),\r\n groupTitleHorizontalAlignment: new EnumerationReader(HorizontalAlignmentType, false, defaultConfig.groupTitleHorizontalAlignment),\r\n groupTitleOrientation: new EnumerationReader(TextOrientationType, false, defaultConfig.groupTitleOrientation),\r\n groupTitleFontSize: new ValueReader([\"string\"], false, defaultConfig.groupTitleFontSize),\r\n groupTitleFontFamily: new ValueReader([\"string\"], false, defaultConfig.groupTitleFontFamily),\r\n groupTitleColor: new ValueReader([\"string\"], false, defaultConfig.groupTitleColor),\r\n groupTitleFontWeight: new ValueReader([\"string\"], false, defaultConfig.groupTitleFontWeight),\r\n groupTitleFontStyle: new ValueReader([\"string\"], false, defaultConfig.groupTitleFontStyle),\r\n\r\n itemTitleFirstFontColor: new ValueReader([\"string\"], false, defaultConfig.itemTitleFirstFontColor),\r\n itemTitleSecondFontColor: new ValueReader([\"string\"], false, defaultConfig.itemTitleSecondFontColor),\r\n selectCheckBoxLabel: new ValueReader([\"string\"], false, defaultConfig.selectCheckBoxLabel),\r\n onItemRender: new FunctionReader(),\r\n onCursorRender: new FunctionReader(),\r\n onHighlightRender: new FunctionReader(),\r\n onGroupTitleRender: new FunctionReader(),\r\n templates: new ArrayReader(\r\n new ObjectReader({\r\n name: new ValueReader([\"string\"], true),\r\n isActive: new ValueReader([\"boolean\"], false, defaultTemplateConfig.isActive),\r\n itemSize: new ObjectReader({\r\n width: new ValueReader([\"number\"], false, defaultTemplateConfig.itemSize.width),\r\n height: new ValueReader([\"number\"], false, defaultTemplateConfig.itemSize.height)\r\n }, false, defaultTemplateConfig.itemSize),\r\n itemBorderWidth: new ValueReader([\"number\"], false, defaultTemplateConfig.itemBorderWidth),\r\n itemTemplate: new ValueReader([\"string\", \"object\"], true),\r\n minimizedItemShapeType: new EnumerationReader(ShapeType, true),\r\n minimizedItemSize: new ObjectReader({\r\n width: new ValueReader([\"number\"], false, defaultTemplateConfig.minimizedItemSize.width),\r\n height: new ValueReader([\"number\"], false, defaultTemplateConfig.minimizedItemSize.height)\r\n }, false, defaultTemplateConfig.minimizedItemSize),\r\n minimizedItemCornerRadius: new ValueReader([\"number\"], true),\r\n minimizedItemLineWidth: new ValueReader([\"number\"], false, defaultTemplateConfig.minimizedItemLineWidth),\r\n minimizedItemBorderColor: new ValueReader([\"string\"], true),\r\n minimizedItemLineType: new EnumerationReader(LineType, false, defaultTemplateConfig.minimizedItemLineType),\r\n minimizedItemFillColor: new ValueReader([\"string\"], true),\r\n minimizedItemOpacity: new ValueReader([\"number\"], false, defaultTemplateConfig.minimizedItemOpacity),\r\n highlightPadding: new ObjectReader({\r\n left: new ValueReader([\"number\"], false, defaultTemplateConfig.highlightPadding.left),\r\n top: new ValueReader([\"number\"], false, defaultTemplateConfig.highlightPadding.top),\r\n right: new ValueReader([\"number\"], false, defaultTemplateConfig.highlightPadding.right),\r\n bottom: new ValueReader([\"number\"], false, defaultTemplateConfig.highlightPadding.bottom)\r\n }, false, defaultTemplateConfig.highlightPadding),\r\n highlightBorderWidth: new ValueReader([\"number\"], false, defaultTemplateConfig.highlightBorderWidth),\r\n highlightTemplate: new ValueReader([\"string\", \"object\"], true),\r\n cursorPadding: new ObjectReader({\r\n left: new ValueReader([\"number\"], false, defaultTemplateConfig.cursorPadding.left),\r\n top: new ValueReader([\"number\"], false, defaultTemplateConfig.cursorPadding.top),\r\n right: new ValueReader([\"number\"], false, defaultTemplateConfig.cursorPadding.right),\r\n bottom: new ValueReader([\"number\"], false, defaultTemplateConfig.cursorPadding.bottom)\r\n }, false, defaultTemplateConfig.cursorPadding),\r\n cursorBorderWidth: new ValueReader([\"number\"], false, defaultTemplateConfig.cursorBorderWidth),\r\n cursorTemplate: new ValueReader([\"string\", \"object\"], true),\r\n hasButtons: new EnumerationReader(Enabled, false, defaultTemplateConfig.hasButtons),\r\n onButtonsRender: new FunctionReader()\r\n }),\r\n true,\r\n \"name\"\r\n )\r\n });\r\n\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions,\r\n description: \"Checks items template options.\"\r\n };\r\n};","import ObjectReader from '../../readers/ObjectReader';\r\nimport EnumerationReader from '../../readers/EnumerationReader';\r\nimport { OrientationType } from '../../enums';\r\n\r\n\r\nexport default function OrientationOptionTask(optionsTask, defaultConfig) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n orientationType: new EnumerationReader(OrientationType, false, defaultConfig.orientationType)\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions,\r\n description: \"Checks diagram orientation options.\"\r\n };\r\n};","import ValueReader from '../../readers/ValueReader';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\nimport EnumerationReader from '../../readers/EnumerationReader';\r\nimport { ChildrenPlacementType, HorizontalAlignmentType } from '../../enums';\r\n\r\nexport default function OrgVisualTreeOptionTask(optionsTask, defaultConfig) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n alignBranches: new ValueReader([\"boolean\"], false, defaultConfig.alignBranches),\r\n leavesPlacementType: new EnumerationReader(ChildrenPlacementType, false, defaultConfig.leavesPlacementType),\r\n childrenPlacementType: new EnumerationReader(ChildrenPlacementType, false, defaultConfig.childrenPlacementType),\r\n placeAdvisersAboveChildren: new ValueReader([\"boolean\"], false, defaultConfig.placeAdvisersAboveChildren),\r\n placeAssistantsAboveChildren: new ValueReader([\"boolean\"], false, defaultConfig.placeAssistantsAboveChildren),\r\n maximumColumnsInMatrix: new ValueReader([\"number\"], false, defaultConfig.maximumColumnsInMatrix),\r\n horizontalAlignment: new EnumerationReader(HorizontalAlignmentType, false, defaultConfig.horizontalAlignment)\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions,\r\n description: \"Checks items layout options.\"\r\n };\r\n};","import ObjectReader from '../../readers/ObjectReader';\r\nimport EnumerationReader from '../../readers/EnumerationReader';\r\nimport ArrayReader from '../../readers/ArrayReader';\r\nimport ValueReader from '../../readers/ValueReader';\r\nimport { ShapeType } from '../../enums';\r\n\r\nexport default function MinimizedItemsOptionTask(optionsTask) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n minimizedItemShapeType: new EnumerationReader(ShapeType, true),\r\n items: new ArrayReader(\r\n new ObjectReader({\r\n id: new ValueReader([\"string\", \"number\"], true),\r\n minimizedItemShapeType: new EnumerationReader(ShapeType, true),\r\n itemTitleColor: new ValueReader([\"string\"], true)\r\n }),\r\n true,\r\n \"id\"\r\n )\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getItemOptions(itemid) {\r\n return _hash[\"options-items\"][itemid];\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getItemOptions: getItemOptions,\r\n getOptions: getOptions,\r\n description: \"Checks minimized items drawing options.\"\r\n };\r\n};","import ValueReader from '../../../readers/ValueReader';\r\nimport ObjectReader from '../../../readers/ObjectReader';\r\nimport EnumerationReader from '../../../readers/EnumerationReader';\r\nimport {NavigationMode} from '../../../enums';\r\n\r\nexport default function CursorItemOptionTask(optionsTask, defaultConfig) {\r\n var _data = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n cursorItem: new ValueReader([\"string\", \"number\"], true),\r\n navigationMode: new EnumerationReader(NavigationMode, false, defaultConfig.navigationMode)\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getCursorItem() {\r\n return _data.cursorItem;\r\n }\r\n\r\n function hasCursorEnabled() {\r\n switch (_data.navigationMode) {\r\n case NavigationMode.Default:\r\n case NavigationMode.CursorOnly:\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n return {\r\n process: process,\r\n getCursorItem: getCursorItem,\r\n hasCursorEnabled: hasCursorEnabled,\r\n description: \"Checks currenct cursor item option.\"\r\n };\r\n};","import ValueReader from '../../../readers/ValueReader';\r\nimport ObjectReader from '../../../readers/ObjectReader';\r\nimport EnumerationReader from '../../../readers/EnumerationReader';\r\nimport {NavigationMode } from '../../../enums';\r\n\r\nexport default function HighlightItemOptionTask(optionsTask, defaultConfig) {\r\n var _data = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n highlightItem: new ValueReader([\"string\", \"number\"], true),\r\n navigationMode: new EnumerationReader(NavigationMode, false, defaultConfig.navigationMode),\r\n highlightGravityRadius: new ValueReader([\"number\"], false, defaultConfig.highlightGravityRadius)\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getHighlightItem() {\r\n return _data.highlightItem;\r\n }\r\n\r\n function getGravityRadius() {\r\n return _data.highlightGravityRadius;\r\n }\r\n\r\n function hasHighlightEnabled() {\r\n switch (_data.navigationMode) {\r\n case NavigationMode.Default:\r\n case NavigationMode.HighlightOnly:\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n return {\r\n process: process,\r\n getHighlightItem: getHighlightItem,\r\n hasHighlightEnabled: hasHighlightEnabled,\r\n getGravityRadius: getGravityRadius,\r\n description: \"Checks highlight item option.\"\r\n };\r\n};","import ValueReader from '../../../readers/ValueReader';\r\nimport ObjectReader from '../../../readers/ObjectReader';\r\nimport ArrayReader from '../../../readers/ArrayReader';\r\n\r\nexport default function SelectedItemsOptionTask(optionsTask) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n selectedItems: new ArrayReader(\r\n new ValueReader([\"string\", \"number\"], true),\r\n true\r\n )\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n },\r\n options = optionsTask.getOptions();\r\n\r\n _data = _dataTemplate.read(_data, options, \"options\", context);\r\n return context.isChanged;\r\n }\r\n\r\n function getSelectedItems() {\r\n return _data.selectedItems;\r\n }\r\n\r\n return {\r\n process: process,\r\n getSelectedItems: getSelectedItems,\r\n description: \"Checks user selected items option.\"\r\n };\r\n};","import ObjectReader from '../../../readers/ObjectReader';\r\nimport EnumerationReader from '../../../readers/EnumerationReader';\r\nimport { SelectionPathMode } from '../../../enums';\r\n\r\nexport default function CursorSelectionPathModeOptionTask(optionsTask, defaultConfig) {\r\n var _data = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n selectionPathMode: new EnumerationReader(SelectionPathMode, false, defaultConfig.selectionPathMode)\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getSelectionPathMode() {\r\n return _data.selectionPathMode;\r\n }\r\n\r\n return {\r\n process: process,\r\n getSelectionPathMode: getSelectionPathMode,\r\n description: \"Checks cursor selection path option.\"\r\n };\r\n};","import { ZOrderType, AnnotationType } from '../../../enums';\r\n\r\nexport default function SplitAnnotationsOptionTask(optionsTask) {\r\n var _data = {\r\n annotations: {}\r\n };\r\n\r\n function process() {\r\n var options = optionsTask.getOptions(),\r\n annotations = options.annotations,\r\n index, len,\r\n annotationConfig,\r\n annotationType,\r\n zOrderType,\r\n key,\r\n hash = {};\r\n\r\n if (Array.isArray(annotations)) {\r\n for (index = 0, len = annotations.length; index < len; index += 1) {\r\n annotationConfig = annotations[index];\r\n annotationType = annotationConfig.annotationType;\r\n\r\n switch (annotationType) {\r\n case AnnotationType.Shape:\r\n case AnnotationType.Connector:\r\n case AnnotationType.HighlightPath:\r\n switch (annotationConfig.zOrderType) {\r\n case ZOrderType.Background:\r\n zOrderType = ZOrderType.Background;\r\n break;\r\n case ZOrderType.Foreground:\r\n case ZOrderType.Auto: //ignore jslint\r\n default:\r\n zOrderType = ZOrderType.Foreground;\r\n break;\r\n }\r\n break;\r\n case AnnotationType.Background:\r\n case AnnotationType.Label: //ignore jslint\r\n default:\r\n zOrderType = null;\r\n break;\r\n }\r\n\r\n if (annotationType != null) {\r\n key = annotationType * 1000 + (zOrderType || 0);\r\n\r\n if (!hash.hasOwnProperty(key)) {\r\n hash[key] = [];\r\n }\r\n hash[key].push(annotationConfig);\r\n }\r\n }\r\n }\r\n\r\n _data.annotations = hash;\r\n\r\n return true;\r\n }\r\n\r\n function getAnnotations(annotationType, zOrderType) {\r\n var key = annotationType * 1000 + (zOrderType || 0);\r\n return _data.annotations[key];\r\n }\r\n\r\n return {\r\n process: process,\r\n getAnnotations: getAnnotations\r\n };\r\n};","import ArrayReader from '../../../readers/ArrayReader';\r\nimport ValueReader from '../../../readers/ValueReader';\r\nimport ObjectReader from '../../../readers/ObjectReader';\r\nimport EnumerationReader from '../../../readers/EnumerationReader';\r\nimport {ZOrderType, ShapeType, AnnotationType, LineType, PlacementType} from '../../../enums';\r\n\r\nexport default function ShapeAnnotationOptionTask(splitAnnotationsOptionTask, defaultShapeAnnotationConfig, zOrderType) {\r\n var _annotations = [],\r\n _hash = {};\r\n\r\n var _dataTemplate = new ArrayReader(\r\n new ObjectReader({\r\n zOrderType: new EnumerationReader(ZOrderType, false, defaultShapeAnnotationConfig.zOrderType),\r\n items: new ArrayReader(\r\n new ValueReader([\"string\", \"number\"], true),\r\n true\r\n ),\r\n shapeType: new EnumerationReader(ShapeType, false, defaultShapeAnnotationConfig.shapeType),\r\n offset: new ObjectReader({\r\n left: new ValueReader([\"number\"], false, defaultShapeAnnotationConfig.offset.left),\r\n top: new ValueReader([\"number\"], false, defaultShapeAnnotationConfig.offset.top),\r\n right: new ValueReader([\"number\"], false, defaultShapeAnnotationConfig.offset.right),\r\n bottom: new ValueReader([\"number\"], false, defaultShapeAnnotationConfig.offset.bottom)\r\n }, false, defaultShapeAnnotationConfig.offset),\r\n lineWidth: new ValueReader([\"number\"], false, defaultShapeAnnotationConfig.lineWidth),\r\n cornerRadius: new ValueReader([\"string\"], false, defaultShapeAnnotationConfig.cornerRadius),\r\n opacity: new ValueReader([\"number\"], false, defaultShapeAnnotationConfig.opacity),\r\n borderColor: new ValueReader([\"string\"], false, defaultShapeAnnotationConfig.borderColor),\r\n fillColor: new ValueReader([\"string\"], false, defaultShapeAnnotationConfig.fillColor),\r\n lineType: new EnumerationReader(LineType, false, defaultShapeAnnotationConfig.lineType),\r\n selectItems: new ValueReader([\"boolean\"], false, defaultShapeAnnotationConfig.selectItems),\r\n label: new ValueReader([\"string\", \"object\"], false, defaultShapeAnnotationConfig.label),\r\n labelSize: new ObjectReader({\r\n width: new ValueReader([\"number\"], false, defaultShapeAnnotationConfig.labelSize.width),\r\n height: new ValueReader([\"number\"], false, defaultShapeAnnotationConfig.labelSize.height)\r\n }, false, defaultShapeAnnotationConfig.labelSize),\r\n labelPlacement: new EnumerationReader(PlacementType, false, defaultShapeAnnotationConfig.labelPlacement),\r\n labelOffset: new ValueReader([\"number\"], false, defaultShapeAnnotationConfig.labelOffset)\r\n },\r\n false\r\n )\r\n );\r\n\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _annotations = _dataTemplate.read(_annotations, splitAnnotationsOptionTask.getAnnotations(AnnotationType.Shape, zOrderType), \"annotations\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getAnnotations() {\r\n return _annotations;\r\n }\r\n\r\n return {\r\n process: process,\r\n getAnnotations: getAnnotations\r\n };\r\n};","import ArrayReader from '../../../readers/ArrayReader';\r\nimport ValueReader from '../../../readers/ValueReader';\r\nimport ObjectReader from '../../../readers/ObjectReader';\r\nimport EnumerationReader from '../../../readers/EnumerationReader';\r\nimport {ZOrderType, AnnotationType, LineType} from '../../../enums';\r\n\r\nexport default function HighlightPathAnnotationOptionTask(splitAnnotationsOptionTask, defaultHighlightPathAnnotationConfig, zOrderType) {\r\n var _data = {},\r\n _annotations = [],\r\n _hash = {};\r\n\r\n var _dataAnnotationsTemplate = new ArrayReader(\r\n new ObjectReader({\r\n zOrderType: new EnumerationReader(ZOrderType, false, defaultHighlightPathAnnotationConfig.zOrderType),\r\n lineWidth: new ValueReader([\"number\"], false, defaultHighlightPathAnnotationConfig.lineWidth),\r\n opacity: new ValueReader([\"number\"], false, defaultHighlightPathAnnotationConfig.opacity),\r\n color: new ValueReader([\"string\"], false, defaultHighlightPathAnnotationConfig.color),\r\n lineType: new EnumerationReader(LineType, false, defaultHighlightPathAnnotationConfig.lineType),\r\n items: new ArrayReader(\r\n new ValueReader([\"string\", \"number\"], true),\r\n false\r\n ),\r\n selectItems: new ValueReader([\"boolean\"], false, defaultHighlightPathAnnotationConfig.selectItems),\r\n showArrows: new ValueReader([\"boolean\"], false, defaultHighlightPathAnnotationConfig.showArrows)\r\n },\r\n false)\r\n );\r\n\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _annotations = _dataAnnotationsTemplate.read(_annotations, splitAnnotationsOptionTask.getAnnotations(AnnotationType.HighlightPath, zOrderType), \"annotations\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getAnnotations() {\r\n return _annotations;\r\n }\r\n\r\n return {\r\n process: process,\r\n getAnnotations: getAnnotations\r\n };\r\n};","import ArrayReader from '../../../readers/ArrayReader';\r\nimport ValueReader from '../../../readers/ValueReader';\r\nimport ObjectReader from '../../../readers/ObjectReader';\r\nimport EnumerationReader from '../../../readers/EnumerationReader';\r\nimport {ConnectorPlacementType, ShapeType, ZOrderType, ConnectorLabelPlacementType, AnnotationType, LineType} from '../../../enums';\r\n\r\nexport default function ConnectorAnnotationOptionTask(splitAnnotationsOptionTask, defaultConnectorAnnotationConfig, zOrderType) {\r\n var _annotations = [],\r\n _hash = {};\r\n\r\n var _dataTemplate = new ArrayReader(\r\n new ObjectReader({\r\n zOrderType: new EnumerationReader(ZOrderType, false, defaultConnectorAnnotationConfig.zOrderType),\r\n fromItem: new ValueReader([\"string\", \"number\"], true),\r\n toItem: new ValueReader([\"string\", \"number\"], true),\r\n connectorShapeType: new EnumerationReader(ShapeType, false, defaultConnectorAnnotationConfig.connectorShapeType),\r\n connectorPlacementType: new EnumerationReader(ConnectorPlacementType, false, defaultConnectorAnnotationConfig.connectorPlacementType),\r\n labelPlacementType: new EnumerationReader(ConnectorLabelPlacementType, false, defaultConnectorAnnotationConfig.labelPlacementType),\r\n offset: new ObjectReader({\r\n left: new ValueReader([\"number\"], false, defaultConnectorAnnotationConfig.offset.left),\r\n top: new ValueReader([\"number\"], false, defaultConnectorAnnotationConfig.offset.top),\r\n right: new ValueReader([\"number\"], false, defaultConnectorAnnotationConfig.offset.right),\r\n bottom: new ValueReader([\"number\"], false, defaultConnectorAnnotationConfig.offset.bottom)\r\n }, false, defaultConnectorAnnotationConfig.offset),\r\n lineWidth: new ValueReader([\"number\"], false, defaultConnectorAnnotationConfig.lineWidth),\r\n color: new ValueReader([\"string\"], false, defaultConnectorAnnotationConfig.color),\r\n lineType: new EnumerationReader(LineType, false, defaultConnectorAnnotationConfig.lineType),\r\n selectItems: new ValueReader([\"boolean\"], false, defaultConnectorAnnotationConfig.selectItems),\r\n label: new ValueReader([\"string\", \"object\"], false, defaultConnectorAnnotationConfig.label),\r\n labelSize: new ObjectReader({\r\n width: new ValueReader([\"number\"], false, defaultConnectorAnnotationConfig.labelSize.width),\r\n height: new ValueReader([\"number\"], false, defaultConnectorAnnotationConfig.labelSize.height)\r\n }, false, defaultConnectorAnnotationConfig.labelSize)\r\n }),\r\n false\r\n );\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _annotations = _dataTemplate.read(_annotations, splitAnnotationsOptionTask.getAnnotations(AnnotationType.Connector, zOrderType), \"annotations\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getAnnotations() {\r\n return _annotations;\r\n }\r\n\r\n return {\r\n process: process,\r\n getAnnotations: getAnnotations\r\n };\r\n};","import ArrayReader from '../../../readers/ArrayReader';\r\nimport ValueReader from '../../../readers/ValueReader';\r\nimport ObjectReader from '../../../readers/ObjectReader';\r\nimport EnumerationReader from '../../../readers/EnumerationReader';\r\nimport {ZOrderType, LineType, AnnotationType} from '../../../enums';\r\n\r\nexport default function BackgroundAnnotationOptionTask(splitAnnotationsOptionTask, defaultBackgroundAnnotationConfig) {\r\n var _annotations = [],\r\n _hash = {};\r\n\r\n var _dataTemplate = new ArrayReader(\r\n new ObjectReader({\r\n items: new ArrayReader(\r\n new ValueReader([\"string\", \"number\"], true),\r\n true\r\n ),\r\n includeChildren: new ValueReader([\"boolean\"], false, defaultBackgroundAnnotationConfig.includeChildren),\r\n zOrderType: new EnumerationReader(ZOrderType, false, defaultBackgroundAnnotationConfig.zOrderType),\r\n offset: new ObjectReader({\r\n left: new ValueReader([\"number\"], false, defaultBackgroundAnnotationConfig.offset.left),\r\n top: new ValueReader([\"number\"], false, defaultBackgroundAnnotationConfig.offset.top),\r\n right: new ValueReader([\"number\"], false, defaultBackgroundAnnotationConfig.offset.right),\r\n bottom: new ValueReader([\"number\"], false, defaultBackgroundAnnotationConfig.offset.bottom)\r\n }, false, defaultBackgroundAnnotationConfig.offset),\r\n lineWidth: new ValueReader([\"number\"], false, defaultBackgroundAnnotationConfig.lineWidth),\r\n opacity: new ValueReader([\"number\"], false, defaultBackgroundAnnotationConfig.opacity),\r\n borderColor: new ValueReader([\"string\"], false, defaultBackgroundAnnotationConfig.borderColor),\r\n fillColor: new ValueReader([\"string\"], false, defaultBackgroundAnnotationConfig.fillColor),\r\n lineType: new EnumerationReader(LineType, false, defaultBackgroundAnnotationConfig.lineType),\r\n selectItems: new ValueReader([\"boolean\"], false, defaultBackgroundAnnotationConfig.selectItems)\r\n }),\r\n false\r\n );\r\n\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _annotations = _dataTemplate.read(_annotations, splitAnnotationsOptionTask.getAnnotations(AnnotationType.Background, null), \"annotations\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getAnnotations() {\r\n return _annotations;\r\n }\r\n\r\n return {\r\n process: process,\r\n getAnnotations: getAnnotations\r\n };\r\n};","import ArrayReader from '../../../readers/ArrayReader';\r\nimport ValueReader from '../../../readers/ValueReader';\r\nimport ObjectReader from '../../../readers/ObjectReader';\r\nimport EnumerationReader from '../../../readers/EnumerationReader';\r\nimport {LineType, AnnotationType} from '../../../enums';\r\n\r\nexport default function LevelAnnotationOptionTask(splitAnnotationsOptionTask, defaultLevelAnnotationConfig) {\r\n var _annotations = [],\r\n _hash = {};\r\n\r\n var _dataTemplate = new ArrayReader(\r\n new ObjectReader({\r\n levels: new ArrayReader(\r\n new ValueReader([\"string\", \"number\"], true),\r\n true\r\n ),\r\n title: new ValueReader([\"string\"], true),\r\n titleFontColor: new ValueReader([\"string\"], true),\r\n titleColor: new ValueReader([\"string\"], true),\r\n offset: new ObjectReader({\r\n left: new ValueReader([\"number\"], false, defaultLevelAnnotationConfig.offset.left),\r\n top: new ValueReader([\"number\"], false, defaultLevelAnnotationConfig.offset.top),\r\n right: new ValueReader([\"number\"], false, defaultLevelAnnotationConfig.offset.right),\r\n bottom: new ValueReader([\"number\"], false, defaultLevelAnnotationConfig.offset.bottom)\r\n }, false, defaultLevelAnnotationConfig.offset),\r\n lineWidth: new ObjectReader({\r\n left: new ValueReader([\"number\"], false, defaultLevelAnnotationConfig.lineWidth.left),\r\n top: new ValueReader([\"number\"], false, defaultLevelAnnotationConfig.lineWidth.top),\r\n right: new ValueReader([\"number\"], false, defaultLevelAnnotationConfig.lineWidth.right),\r\n bottom: new ValueReader([\"number\"], false, defaultLevelAnnotationConfig.lineWidth.bottom)\r\n }, false, defaultLevelAnnotationConfig.lineWidth),\r\n opacity: new ValueReader([\"number\"], false, defaultLevelAnnotationConfig.opacity),\r\n borderColor: new ValueReader([\"string\"], true),\r\n fillColor: new ValueReader([\"string\"], false, defaultLevelAnnotationConfig.fillColor),\r\n lineType: new EnumerationReader(LineType, false, defaultLevelAnnotationConfig.lineType)\r\n }),\r\n false\r\n );\r\n\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _annotations = _dataTemplate.read(_annotations, splitAnnotationsOptionTask.getAnnotations(AnnotationType.Level, null), \"annotations\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getAnnotations() {\r\n return _annotations;\r\n }\r\n\r\n return {\r\n process: process,\r\n getAnnotations: getAnnotations,\r\n description: \"Collects Level Annotations\"\r\n };\r\n};","import ValueReader from '../../readers/ValueReader';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\n\r\nexport default function ScaleOptionTask(optionsTask, defaultConfig) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n scale: new ValueReader([\"number\"], false, defaultConfig.scale),\r\n minimumScale: new ValueReader([\"number\"], false, defaultConfig.minimumScale),\r\n maximumScale: new ValueReader([\"number\"], false, defaultConfig.maximumScale)\r\n });\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions,\r\n description: \"Checks control scale options.\"\r\n };\r\n};","import ValueReader from '../../readers/ValueReader';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\n\r\nexport default function FrameOptionTask(optionsTask, defaultConfig) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n showFrame: new ValueReader([\"boolean\"], false, defaultConfig.showFrame),\r\n frameInnerPadding: new ObjectReader({\r\n left: new ValueReader([\"number\"], false, defaultConfig.frameInnerPadding.left),\r\n top: new ValueReader([\"number\"], false, defaultConfig.frameInnerPadding.top),\r\n right: new ValueReader([\"number\"], false, defaultConfig.frameInnerPadding.right),\r\n bottom: new ValueReader([\"number\"], false, defaultConfig.frameInnerPadding.bottom)\r\n }, false, defaultConfig.frameInnerPadding),\r\n frameOuterPadding: new ObjectReader({\r\n left: new ValueReader([\"number\"], false, defaultConfig.frameOuterPadding.left),\r\n top: new ValueReader([\"number\"], false, defaultConfig.frameOuterPadding.top),\r\n right: new ValueReader([\"number\"], false, defaultConfig.frameOuterPadding.right),\r\n bottom: new ValueReader([\"number\"], false, defaultConfig.frameOuterPadding.bottom)\r\n }, false, defaultConfig.frameOuterPadding)\r\n });\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions,\r\n description: \"Checks frame options.\"\r\n };\r\n};","import ValueReader from '../../readers/ValueReader';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\nimport EnumerationReader from '../../readers/EnumerationReader';\r\nimport { AdviserPlacementType } from '../../enums';\r\n\r\nexport default function LevelTitlePlacementOptionTask(optionsTask, defaultConfig) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n levelTitlePlaceInside: new ValueReader([\"boolean\"], false, defaultConfig.levelTitlePlaceInside),\r\n levelTitlePanelSize: new ValueReader([\"number\"], false, defaultConfig.levelTitlePanelSize),\r\n levelTitlePlacementType: new EnumerationReader(AdviserPlacementType, false, defaultConfig.levelTitlePlacementType)\r\n });\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions,\r\n description: \"Level annotation title placement options.\"\r\n };\r\n};\r\n","import ValueReader from '../../readers/ValueReader';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\nimport EnumerationReader from '../../readers/EnumerationReader';\r\nimport FunctionReader from '../../readers/FunctionReader';\r\nimport { HorizontalAlignmentType, VerticalAlignmentType, TextOrientationType } from '../../enums';\r\n\r\nexport default function LevelTitleTemplateOptionTask(optionsTask, defaultConfig) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n levelTitleOrientation: new EnumerationReader(TextOrientationType, false, defaultConfig.levelTitleOrientation),\r\n levelTitleVerticalAlignment: new EnumerationReader(VerticalAlignmentType, false, defaultConfig.levelTitleVerticalAlignment),\r\n levelTitleHorizontalAlignment: new EnumerationReader(HorizontalAlignmentType, false, defaultConfig.levelTitleHorizontalAlignment),\r\n levelTitleFontSize: new ValueReader([\"string\"], false, defaultConfig.levelTitleFontSize),\r\n levelTitleFontFamily: new ValueReader([\"string\"], false, defaultConfig.levelTitleFontFamily),\r\n levelTitleFontColor: new ValueReader([\"string\"], false, defaultConfig.levelTitleFontColor),\r\n levelTitleColor: new ValueReader([\"string\"], false, defaultConfig.levelTitleColor),\r\n levelTitleFontWeight: new ValueReader([\"string\"], false, defaultConfig.levelTitleFontWeight),\r\n levelTitleFontStyle: new ValueReader([\"string\"], false, defaultConfig.levelTitleFontStyle),\r\n onLevelTitleRender: new FunctionReader(),\r\n onLevelBackgroundRender: new FunctionReader()\r\n });\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions,\r\n description: \"Level annotation title template options.\"\r\n };\r\n};\r\n","export default function CombinedContextsTask(task1, task2) {\r\n function process() {\r\n return true;\r\n }\r\n\r\n function getConfig(itemId) {\r\n return task1.getConfig(itemId) || (task2 != null && task2.getConfig(itemId));\r\n }\r\n\r\n return {\r\n process: process,\r\n getConfig: getConfig\r\n };\r\n};","import { ItemType, AdviserPlacementType, ChildrenPlacementType, Enabled } from '../enums';\r\n\r\n/* This is model class is used to define intermediate organizational chart structure */\r\nexport default function OrgItem(options) {\r\n var index, len,\r\n property;\r\n\r\n this.id = null; // Unique org item id. \r\n\r\n this.isVisible = true; // If it is true then item is shown and selectable in hierarchy. \r\n this.isActive = true; // If it is true then item is clickable in hierarchy. \r\n\r\n this.itemType = ItemType.Regular; // This property defines how item should be placed in chart. \r\n this.adviserPlacementType = AdviserPlacementType.Auto; // Left or Right placement relative to parent\r\n this.childrenPlacementType = ChildrenPlacementType.Auto; // Children shape\r\n\r\n this.placeAdvisersAboveChildren = Enabled.Auto;\r\n this.placeAssistantsAboveChildren = Enabled.Auto;\r\n this.levelOffset = null;\r\n\r\n this.level = null;\r\n this.hideParentConnection = false;\r\n this.hideChildrenConnection = false;\r\n\r\n /* org tree balancing properties */\r\n this.childIndex = null; // Item index in array of parent's children\r\n\r\n // Following properties we copy from user's item config to new OrgItem instance\r\n // If user's property is undefined we take default value from OrgItemConfig\r\n var properties = [\r\n 'id', 'parent', 'isVisible', 'isActive',\r\n 'itemType', 'adviserPlacementType', 'childrenPlacementType',\r\n 'placeAdvisersAboveChildren', 'placeAssistantsAboveChildren',\r\n 'levelOffset'\r\n ];\r\n\r\n /* copy general org chart items properties */\r\n for (index = 0, len = properties.length; index < len; index += 1) {\r\n property = properties[index];\r\n\r\n if (options.hasOwnProperty(property)) {\r\n this[property] = options[property];\r\n }\r\n }\r\n};","import Tree from '../../algorithms/Tree';\r\nimport OrgItem from '../../models/OrgItem';\r\nimport OrgItemConfig from '../../configs/OrgItemConfig';\r\nimport { ItemType, ChildrenPlacementType } from '../../enums';\r\n\r\nexport default function OrgTreeTask(itemsOptionTask) {\r\n var _data = {\r\n orgTree: null, /*Tree OrgItem */\r\n maximumId: null /* maximum of OrgItem.id */\r\n };\r\n\r\n function process() {\r\n createOrgTree(itemsOptionTask.getItems());\r\n\r\n return true;\r\n }\r\n\r\n function createOrgTree(items) {\r\n var orgItem,\r\n orgItemRoot,\r\n userItem,\r\n index, len,\r\n maximumId = 0,\r\n parsedId,\r\n // Organizational chart definition \r\n orgTree = Tree(),\r\n rootItemConfig;\r\n\r\n /* convert items to hash table */\r\n for (index = 0, len = items.length; index < len; index += 1) {\r\n userItem = items[index];\r\n /* user should define unique id for every OrgItemConfig otherwise we ignore it\r\n if parent does not exists in the tree then item is considered as root item\r\n */\r\n if (userItem.id != null) {\r\n /* Organizational chart OrgItemConfig is almost the same as OrgItem \r\n except options used to draw connectors in multi parent chart\r\n */\r\n orgItem = new OrgItem(userItem);\r\n\r\n // OrgItem id coincides with OrgItemConfig id since we don't add any new org items to user's org chart definition\r\n parsedId = parseInt(userItem.id, 10);\r\n maximumId = Math.max(isNaN(parsedId) ? 0 : parsedId, maximumId);\r\n\r\n // Collect org items\r\n orgTree.add(userItem.parent, orgItem.id, orgItem);\r\n\r\n /* We ignore looped items, it is applications responsibility to control data consistency */\r\n }\r\n }\r\n /* create chart root item config */\r\n maximumId += 1;\r\n\r\n rootItemConfig = new OrgItemConfig();\r\n rootItemConfig.id = maximumId;\r\n rootItemConfig.title = \"internal root\";\r\n rootItemConfig.isVisible = false;\r\n rootItemConfig.isActive = false;\r\n\r\n /* create chart org root item */\r\n orgItemRoot = new OrgItem(rootItemConfig);\r\n orgItemRoot.hideParentConnection = true;\r\n orgItemRoot.hideChildrenConnection = true;\r\n /* if user needs custom root item layout, it should explicitly create invisible node and set its children layout manually up */\r\n orgItemRoot.childrenPlacementType = ChildrenPlacementType.Horizontal; \r\n\r\n orgTree.add(null, orgItemRoot.id, orgItemRoot);\r\n\r\n orgTree.loopLevels(this, function (nodeid, node, levelid) {\r\n if (levelid > 0) {\r\n return orgTree.BREAK;\r\n }\r\n if (orgItemRoot.id != nodeid) {\r\n orgTree.adopt(orgItemRoot.id, nodeid);\r\n\r\n /* root item must be regular */\r\n node.itemType = ItemType.Regular;\r\n }\r\n });\r\n\r\n hideRootConnectors(orgTree);\r\n\r\n _data.orgTree = orgTree;\r\n _data.maximumId = maximumId;\r\n\r\n return true;\r\n }\r\n\r\n function hideRootConnectors(orgTree) {\r\n orgTree.loopLevels(this, function (nodeid, node, levelid) {\r\n var allRegular = true;\r\n if (!node.isVisible) {\r\n orgTree.loopChildren(this, nodeid, function (childid, child, index) {\r\n if (child.itemType != ItemType.Regular) {\r\n allRegular = false;\r\n return true; // break\r\n }\r\n }); //ignore jslint\r\n\r\n if (allRegular) {\r\n node.hideChildrenConnection = true;\r\n\r\n orgTree.loopChildren(this, nodeid, function (childid, child, index) {\r\n child.hideParentConnection = true;\r\n });\r\n } else {\r\n return orgTree.SKIP; // skip children\r\n }\r\n } else {\r\n return orgTree.SKIP;\r\n }\r\n });\r\n }\r\n\r\n function getOrgTree() {\r\n return _data.orgTree;\r\n }\r\n\r\n function getMaximumId() {\r\n return _data.maximumId;\r\n }\r\n\r\n return {\r\n process: process,\r\n getOrgTree: getOrgTree,\r\n getMaximumId: getMaximumId\r\n };\r\n};","export default function Template(templateConfig, itemTemplate, highlightTemplate, dotHighlightTemplate, cursorTemplate) {\r\n this.templateConfig = templateConfig;\r\n this.itemTemplate = itemTemplate;\r\n this.highlightTemplate = highlightTemplate;\r\n this.dotHighlightTemplate = dotHighlightTemplate;\r\n this.cursorTemplate = cursorTemplate;\r\n};\r\n","import Size from '../../graphics/structs/Size';\r\nimport TemplateConfig from '../../configs/TemplateConfig';\r\nimport Template from '../../models/Template';\r\nimport { isNullOrEmpty } from '../../common';\r\n\r\nexport default function ReadTemplatesTask(templatesOptionTask, defaultTemplates) {\r\n var _data = {\r\n templates: {},\r\n itemTemplates: []\r\n },\r\n _defaultWidgetTemplateName = \"DefaultWidgetTemplate\",\r\n _defaultWidgetLabelAnnotationTemplateName = \"DefaultWidgetLabelAnnotationTemplate\";\r\n\r\n function process() {\r\n var index, len,\r\n templateConfig,\r\n options = templatesOptionTask.getOptions(),\r\n templates = options.templates;\r\n\r\n\r\n _data.templates = {};\r\n _data.itemTemplates = [];\r\n\r\n templateConfig = new TemplateConfig();\r\n\r\n _data.templates[_defaultWidgetTemplateName] = new Template(\r\n templateConfig,\r\n new defaultTemplates.ItemTemplate(options, templateConfig),\r\n new defaultTemplates.HighlightTemplate(options, templateConfig),\r\n new defaultTemplates.DotHighlightTemplate(options, templateConfig),\r\n new defaultTemplates.CursorTemplate(options, templateConfig)\r\n );\r\n\r\n _data.itemTemplates.push(_data.templates[_defaultWidgetTemplateName]);\r\n\r\n templateConfig = getLabelAnnotationTemplateConfig(_defaultWidgetLabelAnnotationTemplateName);\r\n\r\n _data.templates[_defaultWidgetLabelAnnotationTemplateName] = new Template(\r\n templateConfig,\r\n new defaultTemplates.LabelAnnotationTemplate(),\r\n null,\r\n new defaultTemplates.DotHighlightTemplate(options, templateConfig),\r\n null\r\n );\r\n\r\n for (index = 0, len = templates.length; index < len; index += 1) {\r\n templateConfig = templates[index];\r\n\r\n _data.templates[templateConfig.name] = new Template(\r\n templateConfig,\r\n isNullOrEmpty(templateConfig.itemTemplate) ?\r\n new defaultTemplates.ItemTemplate(options, templateConfig) :\r\n new defaultTemplates.UserTemplate(options, templateConfig.itemTemplate, options.onItemRender),\r\n isNullOrEmpty(templateConfig.highlightTemplate) ?\r\n new defaultTemplates.HighlightTemplate(options, templateConfig) :\r\n new defaultTemplates.UserTemplate(options, templateConfig.highlightTemplate, options.onHighlightRender),\r\n new defaultTemplates.DotHighlightTemplate(options, templateConfig),\r\n isNullOrEmpty(templateConfig.cursorTemplate) ?\r\n new defaultTemplates.CursorTemplate(options, templateConfig) :\r\n new defaultTemplates.UserTemplate(options, templateConfig.cursorTemplate, options.onCursorRender)\r\n );\r\n\r\n _data.itemTemplates.push(_data.templates[templateConfig.name]);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function getLabelAnnotationTemplateConfig(name) {\r\n var config = new TemplateConfig();\r\n config.name = name;\r\n config.isActive = false;\r\n config.itemSize = new Size(100, 20);\r\n config.minimizedItemSize = new Size(0, 0);\r\n config.minimizedItemCornerRadius = config.minimizedItemSize.width / 2;\r\n return config;\r\n }\r\n\r\n function getTemplate(templateName1, templateName2, templateName3) {\r\n var result = _data.templates[templateName1] || _data.templates[templateName2] || _data.templates[templateName3];\r\n return result;\r\n }\r\n\r\n function getItemTemplates() {\r\n return _data.itemTemplates;\r\n }\r\n\r\n return {\r\n process: process,\r\n getTemplate: getTemplate,\r\n getItemTemplates: getItemTemplates,\r\n DefaultWidgetTemplateName: _defaultWidgetTemplateName,\r\n DefaultWidgetLabelAnnotationTemplateName: _defaultWidgetLabelAnnotationTemplateName\r\n };\r\n};","import ArrayReader from '../../readers/ArrayReader';\r\nimport ValueReader from '../../readers/ValueReader';\r\n\r\nexport default function ActiveItemsTask(itemsSizesOptionTask, readTemplatesTask) {\r\n var _data = {\r\n items: []\r\n },\r\n _hash = {};\r\n\r\n var _dataTemplate = new ArrayReader(\r\n new ValueReader([\"string\", \"number\"], true),\r\n true\r\n );\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n },\r\n itemsSizesOptions = itemsSizesOptionTask.getOptions(),\r\n items = itemsSizesOptions.items;\r\n\r\n _data.items = _dataTemplate.read(_data.items, collectActiveItems(itemsSizesOptions, items), \"items\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function collectActiveItems(itemsSizesOptions, items) {\r\n var result = [],\r\n index, len;\r\n for (index = 0, len = items.length; index < len; index += 1) {\r\n var itemConfig = items[index],\r\n template = readTemplatesTask.getTemplate(itemConfig.templateName, itemsSizesOptions.defaultTemplateName, readTemplatesTask.DefaultWidgetTemplateName),\r\n templateConfig = template.templateConfig,\r\n isActive = itemConfig.isActive && templateConfig.isActive;\r\n\r\n if (isActive) {\r\n result.push(itemConfig.id);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function getActiveItems() {\r\n return _hash.items;\r\n }\r\n\r\n return {\r\n process: process,\r\n getActiveItems: getActiveItems\r\n };\r\n};","export default function TemplateParams() {\r\n this.template = null;\r\n this.isActive = false;\r\n this.hasSelectorCheckbox = false;\r\n this.hasButtons = false;\r\n this.hasGroupTitle = false;\r\n this.onButtonsRender = null;\r\n};","import TemplateParams from '../../models/TemplateParams';\r\nimport { isNullOrEmpty } from '../../common';\r\nimport { Enabled } from '../../enums';\r\n\r\nexport default function ItemTemplateParamsTask(itemsSizesOptionTask, cursorItemOptionTask, readTemplatesTask) {\r\n var _data = {\r\n items: {} // TemplateParams\r\n };\r\n\r\n function process() {\r\n var itemsSizesOptions = itemsSizesOptionTask.getOptions(),\r\n cursorItem = cursorItemOptionTask.getCursorItem(),\r\n items = itemsSizesOptions.items,\r\n index, len;\r\n\r\n _data.items = {};\r\n\r\n for (index = 0, len = items.length; index < len; index += 1) {\r\n var itemConfig = items[index],\r\n templateParams = new TemplateParams(),\r\n isCursor = (cursorItem == itemConfig.id),\r\n template = readTemplatesTask.getTemplate(itemConfig.templateName, itemsSizesOptions.defaultTemplateName, readTemplatesTask.DefaultWidgetTemplateName),\r\n templateConfig = template.templateConfig,\r\n hasButtonsRender = itemsSizesOptions.onButtonsRender != null || templateConfig.onButtonsRender != null;\r\n\r\n templateParams.template = template;\r\n\r\n templateParams.isActive = itemConfig.isActive && templateConfig.isActive;\r\n if (templateParams.isActive) {\r\n templateParams.hasSelectorCheckbox = getSelectionVisibility(isCursor, itemConfig.hasSelectorCheckbox, itemsSizesOptions.hasSelectorCheckbox);\r\n templateParams.hasButtons = (templateConfig.hasButtons !== Enabled.Auto) ? (templateConfig.hasButtons == Enabled.True) : (hasButtonsRender && getSelectionVisibility(isCursor, itemConfig.hasButtons, itemsSizesOptions.hasButtons));\r\n if (templateParams.hasButtons) {\r\n templateParams.onButtonsRender = templateConfig.onButtonsRender || itemsSizesOptions.onButtonsRender;\r\n }\r\n }\r\n templateParams.hasGroupTitle = !isNullOrEmpty(itemConfig.groupTitle);\r\n _data.items[itemConfig.id] = templateParams;\r\n }\r\n return true;\r\n }\r\n\r\n function getSelectionVisibility(isCursor, itemState, widgetState) {\r\n var result = false;\r\n switch (itemState) {\r\n case Enabled.Auto:\r\n switch (widgetState) {\r\n case Enabled.Auto:\r\n result = isCursor;\r\n break;\r\n case Enabled.True:\r\n result = true;\r\n break;\r\n case Enabled.False:\r\n result = false;\r\n break;\r\n }\r\n break;\r\n case Enabled.True:\r\n result = true;\r\n break;\r\n case Enabled.False:\r\n result = false;\r\n break;\r\n }\r\n return result;\r\n }\r\n\r\n function getTemplateParams(orgItemId) {\r\n return _data.items[orgItemId];\r\n }\r\n\r\n return {\r\n process: process,\r\n getTemplateParams: getTemplateParams\r\n };\r\n};","export default function GroupTitleTemplateTask(templatesOptionTask, templates) {\r\n var _data = {\r\n template: null\r\n };\r\n\r\n function process() {\r\n _data.template = null;\r\n return true;\r\n }\r\n\r\n function getTemplate() {\r\n var options;\r\n if (_data.template == null) {\r\n options = templatesOptionTask.getOptions();\r\n var { onGroupTitleRender } = options;\r\n if(onGroupTitleRender != null) {\r\n _data.template = new templates.CustomRenderTemplate(options, onGroupTitleRender); \r\n } else {\r\n _data.template = new templates.GroupTitleTemplate(options);\r\n }\r\n }\r\n return _data.template;\r\n }\r\n\r\n return {\r\n process: process,\r\n getTemplate: getTemplate\r\n };\r\n};","export default function CheckBoxTemplateTask(itemsSizesOptionTask, templates) {\r\n var _data = {\r\n template: null\r\n };\r\n\r\n function process() {\r\n _data.template = null;\r\n return true;\r\n }\r\n\r\n function getTemplate() {\r\n var options;\r\n if (_data.template == null) {\r\n options = itemsSizesOptionTask.getOptions();\r\n _data.template = new templates.CheckBoxTemplate(options.selectCheckBoxLabel);\r\n }\r\n return _data.template;\r\n }\r\n\r\n return {\r\n process: process,\r\n getTemplate: getTemplate\r\n };\r\n};","export default function ButtonsTemplateTask(itemsSizesOptionTask, templates) {\r\n var _data = {\r\n template: null\r\n };\r\n\r\n function process() {\r\n return false;\r\n }\r\n\r\n function getTemplate() {\r\n if (_data.template == null) {\r\n _data.template = new templates.ButtonsTemplate;\r\n }\r\n return _data.template;\r\n }\r\n\r\n return {\r\n process: process,\r\n getTemplate: getTemplate\r\n };\r\n};","export default function AnnotationLabelTemplateTask(itemsSizesOptionTask, templates) {\r\n var _data = {\r\n template: null\r\n };\r\n\r\n function process() {\r\n return false;\r\n }\r\n\r\n function getTemplate() {\r\n if (_data.template == null) {\r\n _data.template = new templates.AnnotationLabelTemplate();\r\n }\r\n return _data.template;\r\n }\r\n\r\n return {\r\n process: process,\r\n getTemplate: getTemplate\r\n };\r\n};","export default function LevelAnnotationTemplateTask(orientationOptionTask, levelTitleTemplateOptionTask, templates) {\r\n var _data = {\r\n backgroundTemplate: null,\r\n titleTemplate: null\r\n };\r\n\r\n function process() {\r\n _data.backgroundTemplate = null;\r\n _data.titleTemplate = null;\r\n return true;\r\n }\r\n\r\n function getBackgroundTemplate() {\r\n var options;\r\n if (_data.backgroundTemplate == null) {\r\n options = levelTitleTemplateOptionTask.getOptions();\r\n var { onLevelBackgroundRender } = options;\r\n if( onLevelBackgroundRender != null ) {\r\n _data.backgroundTemplate = new templates.CustomRenderTemplate(options, onLevelBackgroundRender); \r\n } else {\r\n _data.backgroundTemplate = new templates.LevelBackgroundTemplate(options);\r\n }\r\n }\r\n return _data.backgroundTemplate;\r\n }\r\n\r\n function getTitleTemplate() {\r\n var options;\r\n if (_data.titleTemplate == null) {\r\n var { orientationType: orientation } = orientationOptionTask.getOptions();\r\n options = levelTitleTemplateOptionTask.getOptions();\r\n var { onLevelTitleRender } = options;\r\n if( onLevelTitleRender != null ) {\r\n _data.titleTemplate = new templates.CustomRenderTemplate(options, onLevelTitleRender); \r\n } else {\r\n _data.titleTemplate = new templates.LevelTitleTemplate(options, orientation);\r\n }\r\n }\r\n return _data.titleTemplate;\r\n }\r\n\r\n return {\r\n process: process,\r\n getBackgroundTemplate: getBackgroundTemplate,\r\n getTitleTemplate: getTitleTemplate\r\n };\r\n};","export var GroupType = {\r\n Items: 0,\r\n Assistants: 1,\r\n RowChildren: 2,\r\n Children: 3\r\n};\r\n\r\nexport var RowType = {\r\n Items: 0,\r\n Advisers: 1,\r\n SubAdvisers: 2,\r\n Assistants: 3,\r\n SubAssistants: 4,\r\n RowChildren: 5,\r\n Children: 6\r\n };\r\n\r\nexport var RowTypeToGroupTypeMap = {};\r\nRowTypeToGroupTypeMap[RowType.Items] = GroupType.Items;\r\nRowTypeToGroupTypeMap[RowType.Advisers] = GroupType.Items;\r\nRowTypeToGroupTypeMap[RowType.SubAdvisers] = GroupType.Items;\r\nRowTypeToGroupTypeMap[RowType.Assistants] = GroupType.Assistants;\r\nRowTypeToGroupTypeMap[RowType.SubAssistants] = GroupType.Assistants;\r\nRowTypeToGroupTypeMap[RowType.RowChildren] = GroupType.RowChildren;\r\nRowTypeToGroupTypeMap[RowType.Children] = GroupType.Children;","import Tree from '../../../algorithms/Tree';\r\nimport { RowType, GroupType, RowTypeToGroupTypeMap } from './enums';\r\n\r\nfunction RowKeyGenerator() {\r\n var _rowsHash = {};\r\n var _rowIndex = 1;\r\n\r\n function find(parentId, rowType, index) {\r\n var key = parentId + '-' + rowType + '-' + index;\r\n if(!_rowsHash.hasOwnProperty(key)) {\r\n _rowsHash[key] = _rowIndex;\r\n _rowIndex+=1;\r\n }\r\n return _rowsHash[key];\r\n }\r\n\r\n function get() {\r\n var result = _rowIndex;\r\n _rowIndex+=1;\r\n return result;\r\n }\r\n\r\n return {\r\n find: find,\r\n get: get\r\n }\r\n}\r\n\r\nfunction Row(id) {\r\n this.id = id;\r\n this.rowType = RowType.Items;\r\n this.index = 0;\r\n this.offset = 0;\r\n this.extend = true; /* indicates that we need to keep branches of this row children above subsequent rows */\r\n this.depth = 0;\r\n \r\n this.groups = [];\r\n this.groups[GroupType.Items] = [[1,1]];\r\n \r\n this.getDepth = function() {\r\n var [currExtend, currDepth] = this.groups.reduce((acc, row) => {\r\n return row.reduce(([currExtend, currDepth], item) => {\r\n var [extend, depth] = item || [1, 1];\r\n return [currExtend + extend, Math.max(currDepth, currExtend + depth)];\r\n }, acc)\r\n }, [0,0]);\r\n return Math.max(currExtend, currDepth) || 1;\r\n };\r\n\r\n\r\n this.addRowDepth = function(rowType, extend, index, depth) {\r\n var groupIndex = RowTypeToGroupTypeMap[rowType];\r\n if(!this.groups[groupIndex]) {\r\n this.groups[groupIndex] = [];\r\n }\r\n var rows = this.groups[groupIndex];\r\n var [currExtend, currDepth] = rows[index] || [1,1];\r\n rows[index] = [Math.max(currExtend, extend ? depth : 1), Math.max(currDepth, depth)];\r\n }\r\n}\r\n\r\nfunction BranchAligner() {\r\n var _rowsTree = Tree();\r\n var _rowKeyGenerator = RowKeyGenerator();\r\n var _rowHash = {}; // rowHash[nodeId] = rowKey;\r\n\r\n function _createParentRow(parentNodeId) {\r\n var parentRowId = _rowKeyGenerator.find(null, RowType.Children, 0);\r\n var parentRow = new Row(parentRowId);\r\n parentRow.rowType = RowType.Items;\r\n parentRow.index = 0;\r\n parentRow.offset = 0;\r\n parentRow.extend = false;\r\n _rowsTree.add(null, parentRowId, parentRow);\r\n _rowHash[parentNodeId] = parentRowId;\r\n return parentRowId;\r\n }\r\n\r\n function mergeToParent(parentNodeId, nodes) {\r\n var parentRowId = _rowHash[parentNodeId] || _createParentRow(parentNodeId);\r\n nodes.forEach(child => {\r\n _rowHash[child.id] = parentRowId;\r\n });\r\n }\r\n\r\n function mergeToChild(parentNodeId, nodes, rowType, index, offset, extendChildren) {\r\n var parentRowId = _rowHash[parentNodeId] || _createParentRow(parentNodeId);\r\n var rowId = _rowKeyGenerator.find(parentRowId, rowType, index);\r\n _add(parentRowId, rowId, nodes, rowType, index, offset, extendChildren);\r\n }\r\n\r\n function addChild(parentNodeId, nodes, rowType, index, offset, extendChildren) {\r\n var parentRowId = _rowHash[parentNodeId] || _createParentRow(parentNodeId);\r\n var rowId = _rowKeyGenerator.get();\r\n _add(parentRowId, rowId, nodes, rowType, index, offset, extendChildren);\r\n }\r\n\r\n function addSplitChildren(parentNodeId, nodes, rowType, index, offset) {\r\n var parentRowId = _rowHash[parentNodeId] || _createParentRow(parentNodeId);\r\n nodes.forEach(child => {\r\n var rowId = _rowKeyGenerator.get();\r\n var row = new Row(rowId);\r\n row.extend = false;\r\n row.index = index || 0;\r\n row.offset = offset || 0;\r\n row.rowType = rowType;\r\n _rowsTree.add(parentRowId, rowId, row);\r\n _rowHash[child.id] = rowId;\r\n })\r\n }\r\n\r\n function _add(parentRowId, rowId, nodes, rowType, index, offset, extendChildren) {\r\n var row = _rowsTree.node(rowId);\r\n if(!row) {\r\n row = new Row(rowId);\r\n row.extend = extendChildren;\r\n row.index = index || 0;\r\n row.offset = offset || 0;\r\n row.rowType = rowType;\r\n _rowsTree.add(parentRowId, rowId, row);\r\n }\r\n nodes.forEach(child => {\r\n _rowHash[child.id] = rowId;\r\n });\r\n }\r\n\r\n /* measure depth of rows in rowsTree, count number of assistants and child rows, find depth of partner's branches */\r\n function align(debug) {\r\n _rowsTree.loopPostOrder(this, function (rowId, row, parentRowId, parentRow) {\r\n row.depth = row.getDepth() + row.offset;\r\n if(parentRow != null) {\r\n parentRow.addRowDepth(row.rowType, row.extend, row.index, row.depth);\r\n }\r\n });\r\n }\r\n\r\n // function loopGroupTypes(rowType, len)\r\n function loopGroupTypes(thisArg, nodeId, onGroupType) {\r\n var rowId = _rowHash[nodeId];\r\n var row = _rowsTree.node(rowId);\r\n if(row) {\r\n for(var index = 0, len = row.groups.length; index < len; index+=1) {\r\n if(row.groups[index]) {\r\n if(onGroupType.call(thisArg, index, len)) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } \r\n\r\n function getRowDepth(nodeId, groupType, index) {\r\n var rowId = _rowHash[nodeId];\r\n var row = _rowsTree.node(rowId);\r\n var childRow = (row.groups[groupType] || [])[index];\r\n return (childRow && childRow[0]) || 1;\r\n }\r\n\r\n function getGroupSize(nodeId, groupType) {\r\n var rowId = _rowHash[nodeId];\r\n var row = _rowsTree.node(rowId);\r\n if(row) {\r\n if(row.groups.hasOwnProperty(groupType)){\r\n return row.groups[groupType].length; \r\n } \r\n }\r\n return 0;\r\n } \r\n\r\n function getRowsDepth(nodeId, groupType) {\r\n var rowId = _rowHash[nodeId];\r\n var row = _rowsTree.node(rowId);\r\n var children = row.groups[groupType] || [];\r\n return children.map(item => item[0]);\r\n }\r\n\r\n // function onRow(rowDepth, index)\r\n function loopRows(thisArg, nodeId, rowType, onRow) {\r\n var rowId = _rowHash[nodeId];\r\n var row = _rowsTree.node(rowId);\r\n var groupIndex = RowTypeToGroupTypeMap[rowType];\r\n var children = row.groups[groupIndex] || [];\r\n for(var index = 0; index < children.length; index+=1) {\r\n var childRow = children[index];\r\n if(childRow) {\r\n if(onRow.call(thisArg, childRow[0], index)) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return {\r\n mergeToParent: mergeToParent,\r\n mergeToChild: mergeToChild,\r\n addChild: addChild,\r\n addSplitChildren: addSplitChildren,\r\n align: align,\r\n loopGroupTypes: loopGroupTypes,\r\n getRowDepth: getRowDepth,\r\n getRowsDepth: getRowsDepth,\r\n loopRows: loopRows,\r\n getGroupSize: getGroupSize\r\n }\r\n}\r\n\r\nexport default BranchAligner;","import { Visibility } from '../enums';\r\n\r\n/* This is model class used to define visual structure of the chart */\r\nexport default function TreeItem() {\r\n /* auto generated internal item id */\r\n this.id = null;\r\n\r\n /* Visual child id which is supposed to be straight under it */\r\n this.visualAggregatorId = null;\r\n\r\n this.partners = []; /* nodes connected with bottom line together into one family, family is group of items having common set of children */\r\n\r\n this.visibility = Visibility.Normal;\r\n\r\n this.actualItemType = null; // ItemType\r\n this.connectorPlacement = 0; // SideFlag\r\n this.gravity = 0; // HorizontalAlignmentType.Center\r\n\r\n /* This value is used to increase space on the left side of the item */\r\n this.relationDegree = 0;\r\n};","import { ItemType } from \"../../../enums\";\r\n\r\nfunction NodeTypeSorter() {\r\n var _rows = [];\r\n\r\n function getRow(itemType, index) {\r\n return (_rows[itemType] || [])[index || 0] || [];\r\n }\r\n\r\n function getRows(itemType) {\r\n return _rows[itemType] || [];\r\n }\r\n\r\n function addChild(itemType, levelOffset, orgItem) {\r\n switch (itemType) {\r\n case ItemType.SubAssistant:\r\n case ItemType.Assistant:\r\n levelOffset = levelOffset < 0 || levelOffset == null ? 0 : levelOffset;\r\n break;\r\n default:\r\n levelOffset = 0;\r\n break;\r\n }\r\n _rows[itemType] = _rows[itemType] || [];\r\n var groups = _rows[itemType];\r\n groups[levelOffset] = groups[levelOffset] || [];\r\n groups[levelOffset].push(orgItem);\r\n }\r\n\r\n return {\r\n addChild: addChild,\r\n getRow: getRow,\r\n getRows: getRows,\r\n };\r\n}\r\n\r\nexport default NodeTypeSorter;\r\n","import { ItemType } from \"../../../enums\";\r\nimport { GroupType } from \"./enums\";\r\n\r\nfunction NodeGroupSorter() {\r\n var _rows = [];\r\n\r\n function getRow(groupType, index) {\r\n return (_rows[groupType] || [])[index || 0] || [];\r\n }\r\n\r\n function getRows(groupType) {\r\n return _rows[groupType] || [];\r\n }\r\n\r\n function getLength() {\r\n return _rows.length;\r\n }\r\n\r\n function _addChild(groupType, index, orgItem) {\r\n _rows[groupType] = _rows[groupType] || [];\r\n var groups = _rows[groupType];\r\n groups[index] = groups[index] || [];\r\n groups[index].push(orgItem);\r\n }\r\n\r\n function addChild(itemType, index, orgItem) {\r\n switch (itemType) {\r\n case ItemType.SubAdviser:\r\n case ItemType.Adviser:\r\n _addChild(GroupType.Items, 0, orgItem);\r\n break;\r\n case ItemType.SubAssistant:\r\n case ItemType.Assistant:\r\n index = index < 0 || index == null ? 0 : index;\r\n _addChild(GroupType.Assistants, index, orgItem);\r\n break;\r\n case ItemType.Regular:\r\n if (index < 0 || index === undefined || index === null) {\r\n _addChild(GroupType.Children, 0, orgItem);\r\n } else {\r\n _addChild(GroupType.RowChildren, index, orgItem);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n addChild: addChild,\r\n getLength: getLength,\r\n getRow: getRow,\r\n getRows: getRows,\r\n };\r\n}\r\n\r\nexport default NodeGroupSorter;\r\n","import Tree from '../../../algorithms/Tree';\r\nimport { SideFlag, Visibility, HorizontalAlignmentType, AdviserPlacementType, \r\n Enabled, ChildrenPlacementType, ItemType } from '../../../enums';\r\nimport TreeItem from '../../../models/TreeItem';\r\nimport { RowType, GroupType } from './enums';\r\nimport NodeTypeSorter from './NodeTypeSorter';\r\nimport NodeGroupSorter from './NodeGroupSorter';\r\nimport BranchAligner from './BranchAligner';\r\nimport NavigationalFamily from './NavigationalFamily';\r\n\r\nfunction NodeProps() {\r\n this.hasVisibleChildren = false;\r\n this.hasPartners = false;\r\n this.isPartner = false;\r\n this.hasLeavesOnly = true;\r\n this.hasChildren = false;\r\n\r\n this.typeSorter = NodeTypeSorter();\r\n this.groupSorter = NodeGroupSorter();\r\n}\r\n\r\n/* method uses structures created in orgTreeTask to create visual tree used to render chart\r\n It populates visualTree structure with TreeItem objects.\r\n*/\r\nexport default function VisualTreeBuilder() {\r\n var _treeItemCounter,\r\n _activeItems;\r\n\r\n function build(orgTree, maximumId, activeItems, options) {\r\n _treeItemCounter = maximumId;\r\n _activeItems = activeItems;\r\n \r\n var {visualTree, navigationFamily, branchAligner} = createVisualTreeItems(orgTree, options, activeItems);\r\n\r\n return {\r\n visualTree: visualTree,\r\n navigationFamily: navigationFamily.getFamily(),\r\n branchAligner: branchAligner,\r\n treeItemCounter: _treeItemCounter\r\n };\r\n }\r\n\r\n function createVisualTreeItems(orgTree, options, activeItems) {\r\n var index,\r\n leftSiblingOffset,\r\n rightSiblingOffset,\r\n orgTreeProps = {},\r\n visualTree = Tree(), /* Tree(); key: TreeItem.id value: TreeItem */\r\n navigationFamily = NavigationalFamily(activeItems); /* Family structure where key: TreeItem.id and value: TreeItem */\r\n \r\n /* stage 1: orgTreeProps hash, find and set actualItemType, hasPartners, hasVisibleChildren, hasLeavesOnly */\r\n orgTree.loopPostOrder(this, function (nodeId, node, parentId, parent) {\r\n if(!orgTreeProps.hasOwnProperty(nodeId)) {\r\n orgTreeProps[nodeId] = new NodeProps();\r\n }\r\n var nodeProps = orgTreeProps[nodeId];\r\n nodeProps.actualItemType = node.itemType;\r\n if (parent != null) {\r\n if(!orgTreeProps.hasOwnProperty(parentId)) {\r\n orgTreeProps[parentId] = new NodeProps();\r\n }\r\n var parentProps = orgTreeProps[parentId];\r\n parentProps.hasVisibleChildren = parentProps.hasVisibleChildren || node.isVisible || nodeProps.hasVisibleChildren;\r\n parentProps.hasChildren = true;\r\n parentProps.hasLeavesOnly = parentProps.hasLeavesOnly && !nodeProps.hasChildren;\r\n }\r\n });\r\n\r\n /* stage 2: convert not supported combinations of child and parent items */\r\n orgTree.loopPreOrder(this, function (nodeId, node, parentId, parent) {\r\n var nodeProps = orgTreeProps[nodeId];\r\n var parentProps = orgTreeProps[parentId];\r\n if(!parentProps) {\r\n parentProps = new NodeProps();\r\n parentProps.actualItemType = ItemType.Regular;\r\n orgTreeProps[parentId] = parentProps;\r\n }\r\n switch (nodeProps.actualItemType) {\r\n case ItemType.LimitedPartner:\r\n case ItemType.AdviserPartner:\r\n case ItemType.GeneralPartner:\r\n /* Don't support partner of partner */\r\n if(parentProps.isPartner) {\r\n nodeProps.actualItemType = ItemType.Adviser;\r\n } else {\r\n nodeProps.isPartner = true;\r\n parentProps.hasPartners = true;\r\n }\r\n break;\r\n case ItemType.Regular:\r\n /* Don't support regular children of partner */\r\n if(parentProps.isPartner) {\r\n nodeProps.actualItemType = ItemType.Assistant;\r\n }\r\n break;\r\n }\r\n });\r\n\r\n /* stage 3: find nodes alignment levels, so nodes from different branches of the hierarchy will be placed at the same level */\r\n var branchAligner = BranchAligner();\r\n orgTree.loopLevels(this, function (parentOrgItemId, parentOrgItem, levelid) {\r\n var parentProps = orgTreeProps[parentOrgItemId];\r\n if (!parentProps.hasVisibleChildren) {\r\n return orgTree.SKIP;\r\n }\r\n orgTree.loopChildren(this, parentOrgItemId, function (orgItemId, orgItem, index) {\r\n var treeItemProps = orgTreeProps[orgItemId];\r\n parentProps.typeSorter.addChild(treeItemProps.actualItemType, orgItem.levelOffset, orgItem);\r\n parentProps.groupSorter.addChild(treeItemProps.actualItemType, orgItem.levelOffset, orgItem);\r\n });\r\n\r\n var partners = [];\r\n if(parentProps.hasPartners) {\r\n partners = [...parentProps.typeSorter.getRow(ItemType.AdviserPartner), ...parentProps.typeSorter.getRow(ItemType.LimitedPartner), ...parentProps.typeSorter.getRow(ItemType.GeneralPartner)];\r\n }\r\n var advisers = parentProps.typeSorter.getRow(ItemType.Adviser);\r\n if(advisers.length > 0) {\r\n /* extend advisers level */\r\n var extendChildren = partners.length > 0;\r\n if(!extendChildren) {\r\n switch (parentOrgItem.placeAdvisersAboveChildren) {\r\n case Enabled.Auto:\r\n extendChildren = options.placeAdvisersAboveChildren;\r\n break;\r\n case Enabled.True:\r\n extendChildren = true;\r\n break;\r\n }\r\n }\r\n if(options.alignBranches) {\r\n if(parentProps.isPartner) {\r\n extendChildren = true;\r\n }\r\n if(extendChildren) {\r\n branchAligner.mergeToChild(parentOrgItemId, advisers, RowType.Advisers, 0, 0, extendChildren);\r\n } else {\r\n branchAligner.mergeToParent(parentOrgItemId, advisers);\r\n }\r\n } else {\r\n branchAligner.addChild(parentOrgItemId, advisers, RowType.Advisers, 0, 0, extendChildren);\r\n }\r\n }\r\n\r\n var subAdvisers = parentProps.typeSorter.getRow(ItemType.SubAdviser);\r\n if(subAdvisers.length > 0) {\r\n /* extend advisers level */\r\n var extendChildren = partners.length > 0;\r\n if(!extendChildren) {\r\n switch (parentOrgItem.placeAdvisersAboveChildren) {\r\n case Enabled.Auto:\r\n extendChildren = options.placeAdvisersAboveChildren;\r\n break;\r\n case Enabled.True:\r\n extendChildren = true;\r\n break;\r\n }\r\n }\r\n if(options.alignBranches) {\r\n if(parentProps.isPartner) {\r\n extendChildren = true;\r\n }\r\n branchAligner.mergeToChild(parentOrgItemId, subAdvisers, RowType.SubAdvisers, 0, 1, extendChildren);\r\n\r\n } else {\r\n branchAligner.addChild(parentOrgItemId, subAdvisers, RowType.SubAdvisers, 0, 1, extendChildren);\r\n }\r\n }\r\n\r\n var assistants = parentProps.typeSorter.getRows(ItemType.Assistant);\r\n /* create assistants levels */\r\n if(assistants.length > 0) {\r\n /* extend assistants levels */\r\n var extendChildren = partners.length > 0;\r\n if(!extendChildren) {\r\n switch (parentOrgItem.placeAssistantsAboveChildren) {\r\n case Enabled.Auto:\r\n extendChildren = options.placeAssistantsAboveChildren;\r\n break;\r\n case Enabled.True:\r\n extendChildren = true;\r\n break;\r\n }\r\n }\r\n assistants.forEach((nodes, index) => {\r\n if(options.alignBranches) {\r\n branchAligner.mergeToChild(parentOrgItemId, nodes, RowType.Assistants, index, 0, extendChildren);\r\n } else {\r\n branchAligner.addChild(parentOrgItemId, nodes, RowType.Assistants, index, 0, extendChildren);\r\n }\r\n });\r\n }\r\n\r\n var subAssistants = parentProps.typeSorter.getRows(ItemType.SubAssistant);\r\n /* create assistants levels */\r\n if(subAssistants.length > 0) {\r\n /* extend assistants levels */\r\n var extendChildren = partners.length > 0;\r\n if(!extendChildren) {\r\n switch (parentOrgItem.placeAssistantsAboveChildren) {\r\n case Enabled.Auto:\r\n extendChildren = options.placeAssistantsAboveChildren;\r\n break;\r\n case Enabled.True:\r\n extendChildren = true;\r\n break;\r\n }\r\n }\r\n subAssistants.forEach((nodes, index) => {\r\n if(options.alignBranches) {\r\n branchAligner.mergeToChild(parentOrgItemId, nodes, RowType.SubAssistants, index, 1, extendChildren);\r\n } else {\r\n branchAligner.addChild(parentOrgItemId, nodes, RowType.SubAssistants, index, 1, extendChildren);\r\n }\r\n });\r\n }\r\n\r\n if(partners.length > 0) {\r\n branchAligner.mergeToParent(parentOrgItemId, partners);\r\n }\r\n\r\n var rowChildren = parentProps.groupSorter.getRows(GroupType.RowChildren);\r\n /* create row children levels */\r\n if(rowChildren.length > 0) {\r\n rowChildren.forEach((nodes, index) => {\r\n if(options.alignBranches) {\r\n branchAligner.mergeToChild(parentOrgItemId, nodes, RowType.RowChildren, index, 0, true);\r\n } else {\r\n branchAligner.addChild(parentOrgItemId, nodes, RowType.RowChildren, index, 0, true);\r\n }\r\n });\r\n }\r\n\r\n /* add remaining children in formation */\r\n var children = parentProps.groupSorter.getRow(GroupType.Children);\r\n if(children.length > 0) {\r\n var props = orgTreeProps[parentOrgItemId];\r\n var childrenRows = getRegularChildrenRows(options, children, parentOrgItem.childrenPlacementType, props.hasLeavesOnly);\r\n childrenRows.forEach((nodes, index) => {\r\n if(options.alignBranches) {\r\n branchAligner.mergeToChild(parentOrgItemId, nodes, RowType.Children, index, 0, true);\r\n } else {\r\n if(index == childrenRows.length - 1) {\r\n branchAligner.addSplitChildren(parentOrgItemId, nodes, RowType.Children, index, 0);\r\n } else {\r\n branchAligner.addChild(parentOrgItemId, nodes, RowType.Children, index, 0, true);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n /* stage 4: measure depth of alignment levels */\r\n branchAligner.align();\r\n\r\n /* stage 5: create visual tree */\r\n var visualPartners = {};\r\n orgTree.loopLevels(this, function (parentOrgItemId, parentOrgItem, levelid) {\r\n var parentProps = orgTreeProps[parentOrgItemId];\r\n\r\n var logicalParentItem = visualTree.node(parentOrgItemId);\r\n if (!logicalParentItem) {\r\n logicalParentItem = getNewTreeItem({\r\n visibility: Visibility.Invisible,\r\n connectorPlacement: 0,\r\n parentId: null,\r\n actualItemType: ItemType.Regular\r\n }, parentOrgItem);\r\n visualTree.add(null, parentOrgItemId, logicalParentItem);\r\n }\r\n\r\n /* find left and right siblings margins of logical parent item\r\n they are needed to properly place GeneralPartner & LimitedPartner nodes. */\r\n leftSiblingOffset = 0;\r\n rightSiblingOffset = 0;\r\n if ((index = visualTree.indexOf(parentOrgItemId)) != null) {\r\n leftSiblingOffset = index;\r\n rightSiblingOffset = visualTree.countSiblings(parentOrgItemId) - index - 1;\r\n }\r\n\r\n var partners = [];\r\n if(parentProps.hasPartners) {\r\n partners = [\r\n ...parentProps.typeSorter.getRow(ItemType.AdviserPartner), \r\n ...parentProps.typeSorter.getRow(ItemType.LimitedPartner), \r\n ...parentProps.typeSorter.getRow(ItemType.GeneralPartner)\r\n ];\r\n }\r\n var visualParent = logicalParentItem;\r\n var visualParent2 = null;\r\n var flagPartners = true;\r\n branchAligner.loopGroupTypes(this, parentOrgItemId, function(groupType, len) {\r\n if(!(parentProps.hasPartners || parentProps.isPartner) && groupType > parentProps.groupSorter.getLength() - 1) {\r\n return true;\r\n }\r\n if(groupType > GroupType.Assistants && flagPartners) {\r\n flagPartners = false;\r\n if(parentProps.hasPartners) {\r\n visualPartners[parentOrgItemId] = [visualParent.id];\r\n visualParent = visualParent2 || visualParent;\r\n visualParent2 = null;\r\n visualParent.partners = visualPartners[parentOrgItemId];\r\n }\r\n if(parentProps.isPartner) {\r\n visualPartners[parentOrgItem.parent].push(visualParent.id);\r\n }\r\n }\r\n var fillEmptyLevels = ((parentProps.isPartner || parentProps.hasPartners) && groupType <= GroupType.Assistants);\r\n fillEmptyLevels = fillEmptyLevels || groupType < parentProps.groupSorter.getLength() - 1;\r\n\r\n var rows = [];\r\n switch(groupType) {\r\n case GroupType.Items:\r\n var row = parentProps.groupSorter.getRows(GroupType.Items)[0] || [];\r\n var depth = branchAligner.getRowDepth(parentOrgItemId, GroupType.Items, 0);\r\n addAdvisers(visualTree, orgTreeProps, visualParent, row, leftSiblingOffset, rightSiblingOffset);\r\n row.forEach(item => navigationFamily.define(parentOrgItem, item));\r\n if(partners.length > 0) {\r\n visualParent2 = addPartners(visualTree, orgTreeProps, visualParent, partners, leftSiblingOffset, rightSiblingOffset);\r\n /* every child logically belongs to every partner */\r\n partners.forEach( partner => {\r\n navigationFamily.define(parentOrgItem, partner, true);\r\n if(partner.id != logicalParentItem.id) {\r\n var rowChildren = parentProps.groupSorter.getRows(GroupType.RowChildren);\r\n rowChildren.forEach(row => row.forEach(child => navigationFamily.define(partner, child)));\r\n var regularChildren = parentProps.groupSorter.getRow(GroupType.Children);\r\n regularChildren.forEach(child => navigationFamily.define(partner, child));\r\n }\r\n })\r\n }\r\n if(parentProps.hasPartners || parentProps.isPartner || groupType < parentProps.groupSorter.getLength() - 1) {\r\n while(depth > 1) {\r\n visualParent = createNewVisualAggregator(visualTree, visualParent, false);\r\n if(visualParent2) {\r\n visualParent2 = createNewVisualAggregator(visualTree, visualParent2, false);\r\n }\r\n depth-=1;\r\n }\r\n }\r\n break;\r\n case GroupType.Assistants:\r\n var rows = parentProps.groupSorter.getRows(GroupType.Assistants);\r\n branchAligner.loopRows(this, parentOrgItemId, RowType.Assistants, function(depth, rowIndex) {\r\n var row = rows[rowIndex] || [];\r\n if(!fillEmptyLevels && rowIndex > rows.length - 1) {\r\n return true;\r\n }\r\n visualParent = addAssistants(visualTree, orgTreeProps, visualParent, row);\r\n if(visualParent2) {\r\n visualParent2 = createNewVisualAggregator(visualTree, visualParent2, false);\r\n }\r\n row.forEach(item => navigationFamily.define(parentOrgItem, item));\r\n if(parentProps.hasPartners || parentProps.isPartner || rowIndex < rows.length - 1 || groupType < parentProps.groupSorter.getLength() - 1) {\r\n while(depth > 1) {\r\n visualParent = createNewVisualAggregator(visualTree, visualParent, false);\r\n if(visualParent2) {\r\n visualParent2 = createNewVisualAggregator(visualTree, visualParent2, false);\r\n }\r\n depth-=1;\r\n }\r\n }\r\n });\r\n break;\r\n case GroupType.RowChildren:\r\n var rows = parentProps.groupSorter.getRows(GroupType.RowChildren);\r\n branchAligner.loopRows(this, parentOrgItemId, RowType.RowChildren, function(depth, rowIndex) {\r\n var row = rows[rowIndex] || [];\r\n if(!fillEmptyLevels && rowIndex > rows.length - 1) {\r\n return true;\r\n }\r\n var hideChildConnector = (logicalParentItem.visibility == Visibility.Invisible) && (logicalParentItem.connectorPlacement === 0);\r\n visualParent = addRowChildren(visualTree, visualParent, row, fillEmptyLevels || rowIndex < rows.length - 1, hideChildConnector, options.horizontalAlignment);\r\n row.forEach(item => navigationFamily.define(parentOrgItem, item));\r\n if(rowIndex < rows.length - 1 || groupType < parentProps.groupSorter.getLength() - 1) {\r\n while(depth > 1) {\r\n visualParent = createNewVisualAggregator(visualTree, visualParent, false);\r\n depth-=1;\r\n }\r\n }\r\n });\r\n break;\r\n case GroupType.Children:\r\n var regularChildren = parentProps.groupSorter.getRow(GroupType.Children); /* children added after all other custom item types */\r\n /* add remaining children in formation */\r\n if(regularChildren.length > 0) {\r\n var props = orgTreeProps[logicalParentItem.id];\r\n var depths = branchAligner.getRowsDepth(parentOrgItemId, GroupType.Children);\r\n addChildren(orgTree, visualTree, depths, options, logicalParentItem, visualParent, regularChildren, parentOrgItem.childrenPlacementType, props.hasLeavesOnly);\r\n regularChildren.forEach(item => navigationFamily.define(parentOrgItem, item));\r\n }\r\n break;\r\n }\r\n });\r\n if(flagPartners) {\r\n flagPartners = false;\r\n if(parentProps.hasPartners) {\r\n visualPartners[parentOrgItemId] = [visualParent.id];\r\n visualParent = visualParent2 || visualParent;\r\n visualParent2 = null;\r\n visualParent.partners = visualPartners[parentOrgItemId];\r\n }\r\n if(parentProps.isPartner) {\r\n visualPartners[parentOrgItem.parent].push(visualParent.id);\r\n }\r\n }\r\n if (!parentProps.hasVisibleChildren) {\r\n return orgTree.SKIP;\r\n }\r\n });\r\n\r\n return {\r\n visualTree: visualTree,\r\n navigationFamily: navigationFamily,\r\n branchAligner: branchAligner\r\n }\r\n }\r\n\r\n function addPartners(visualTree, orgTreeProps, parent, partners, leftSiblingOffset, rightSiblingOffset) {\r\n var leftItems = [];\r\n var rightItems = [];\r\n partners.map(partner => getNewTreeItem({}, partner)).forEach(item => {\r\n var isLeft = true;\r\n if (parent.connectorPlacement & SideFlag.Right) {\r\n isLeft = true;\r\n item.connectorPlacement = SideFlag.Right | SideFlag.Bottom;\r\n } else if (parent.connectorPlacement & SideFlag.Left) {\r\n isLeft = false;\r\n item.connectorPlacement = SideFlag.Left | SideFlag.Bottom;\r\n } else {\r\n switch (item.adviserPlacementType) {\r\n case AdviserPlacementType.Left:\r\n isLeft = true;\r\n item.connectorPlacement = SideFlag.Right | SideFlag.Bottom;\r\n break;\r\n default:\r\n isLeft = false;\r\n item.connectorPlacement = SideFlag.Left | SideFlag.Bottom;\r\n break;\r\n }\r\n var itemProp = orgTreeProps[item.id];\r\n switch (itemProp.actualItemType) {\r\n case ItemType.GeneralPartner:\r\n item.connectorPlacement = SideFlag.Top | SideFlag.Bottom;\r\n break;\r\n case ItemType.LimitedPartner:\r\n item.connectorPlacement = SideFlag.Bottom;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if(isLeft) {\r\n leftItems.unshift(item);\r\n } else {\r\n rightItems.push(item);\r\n }\r\n });\r\n\r\n var partners = [...leftItems, parent, ...rightItems];\r\n var parentIndex = leftItems.length;\r\n var centerIndex = Math.floor((partners.length) / 2);\r\n var invisiblePartner = null;\r\n if(partners.length % 2 == 0) {\r\n invisiblePartner = getNewTreeItem({ visibility: Visibility.Invisible });\r\n partners.splice(centerIndex, 0, invisiblePartner);\r\n if(centerIndex <= parentIndex) {\r\n parentIndex+=1;\r\n }\r\n }\r\n\r\n var visualParent = visualTree.parent(parent.id);\r\n for (var index = parentIndex - 1; index >= 0; index -= 1) {\r\n var item = partners[index];\r\n visualTree.add(visualParent.id, item.id, item, leftSiblingOffset);\r\n\r\n item.gravity = HorizontalAlignmentType.Right;\r\n }\r\n for (var index = parentIndex + 1; index < partners.length; index += 1) {\r\n var item = partners[index];\r\n visualTree.add(visualParent.id, item.id, item, visualTree.countChildren(visualParent.id) - rightSiblingOffset);\r\n \r\n item.gravity = HorizontalAlignmentType.Left;\r\n }\r\n\r\n if(invisiblePartner != null) {\r\n var mimicPartner = null;\r\n if(centerIndex <= parentIndex) {\r\n mimicPartner = partners[centerIndex - 1];\r\n } else {\r\n mimicPartner = partners[centerIndex + 1];\r\n }\r\n invisiblePartner.connectorPlacement = mimicPartner.connectorPlacement & (SideFlag.Left | SideFlag.Right);\r\n }\r\n\r\n var centerPartner = partners[centerIndex];\r\n return centerPartner;\r\n }\r\n\r\n function addAdvisers(visualTree, orgTreeProps, parent, advisers, leftSiblingOffset, rightSiblingOffset) {\r\n advisers.map(adviser => getNewTreeItem({}, adviser)).forEach(item => {\r\n var itemProps = orgTreeProps[item.id];\r\n var alteredItem;\r\n switch(itemProps.actualItemType) {\r\n case ItemType.SubAdviser:\r\n item.connectorPlacement = SideFlag.Top | SideFlag.Bottom;\r\n alteredItem = getNewTreeItem({ visibility: Visibility.Invisible });\r\n visualTree.add(alteredItem.id, item.id, item);\r\n break;\r\n default:\r\n alteredItem = item;\r\n break;\r\n }\r\n var visualParent = visualTree.parent(parent.id);\r\n if (parent.connectorPlacement & SideFlag.Right) {\r\n visualTree.add(visualParent.id, alteredItem.id, alteredItem, leftSiblingOffset);\r\n alteredItem.connectorPlacement = SideFlag.Right | SideFlag.Bottom;\r\n alteredItem.gravity = HorizontalAlignmentType.Right;\r\n } else if (parent.connectorPlacement & SideFlag.Left) {\r\n visualTree.add(visualParent.id, alteredItem.id, alteredItem, visualTree.countChildren(visualParent.id) - rightSiblingOffset);\r\n alteredItem.connectorPlacement = SideFlag.Left | SideFlag.Bottom;\r\n alteredItem.gravity = HorizontalAlignmentType.Left;\r\n } else {\r\n switch (item.adviserPlacementType) {\r\n case AdviserPlacementType.Left:\r\n visualTree.add(visualParent.id, alteredItem.id, alteredItem, leftSiblingOffset);\r\n alteredItem.connectorPlacement = SideFlag.Right | SideFlag.Bottom;\r\n alteredItem.gravity = HorizontalAlignmentType.Right;\r\n break;\r\n default:\r\n visualTree.add(visualParent.id, alteredItem.id, alteredItem, visualTree.countChildren(visualParent.id) - rightSiblingOffset);\r\n alteredItem.connectorPlacement = SideFlag.Left | SideFlag.Bottom;\r\n alteredItem.gravity = HorizontalAlignmentType.Left;\r\n break;\r\n }\r\n switch (item.actualItemType) {\r\n case ItemType.GeneralPartner:\r\n alteredItem.connectorPlacement = SideFlag.Top | SideFlag.Bottom;\r\n break;\r\n case ItemType.LimitedPartner:\r\n alteredItem.connectorPlacement = SideFlag.Bottom;\r\n break;\r\n }\r\n }\r\n })\r\n }\r\n \r\n function addAssistants(visualTree, orgTreeProps, visualParent, assistants) {\r\n var nextVisualParent = createNewVisualAggregator(visualTree, visualParent, false);\r\n assistants.map(assistant => getNewTreeItem({}, assistant)).forEach(item => {\r\n var itemProps = orgTreeProps[item.id];\r\n var alteredItem;\r\n switch(itemProps.actualItemType) {\r\n case ItemType.SubAssistant:\r\n item.connectorPlacement = SideFlag.Top | SideFlag.Bottom;\r\n alteredItem = getNewTreeItem({ visibility: Visibility.Invisible });\r\n visualTree.add(alteredItem.id, item.id, item);\r\n break;\r\n case ItemType.Assistant:\r\n alteredItem = item;\r\n break;\r\n }\r\n switch (item.adviserPlacementType) {\r\n case AdviserPlacementType.Left:\r\n visualTree.add(visualParent.id, alteredItem.id, alteredItem, 0);\r\n alteredItem.connectorPlacement = SideFlag.Right | SideFlag.Bottom;\r\n alteredItem.gravity = HorizontalAlignmentType.Right;\r\n break;\r\n default:\r\n visualTree.add(visualParent.id, alteredItem.id, alteredItem);\r\n alteredItem.connectorPlacement = SideFlag.Left | SideFlag.Bottom;\r\n alteredItem.gravity = HorizontalAlignmentType.Left;\r\n break;\r\n }\r\n });\r\n return nextVisualParent;\r\n }\r\n\r\n function addRowChildren(visualTree, visualParent, rowOfChildren, fillEmptyLevels, hideChildConnector, horizontalAlignment) {\r\n var nextVisualParent = null;\r\n if(fillEmptyLevels) {\r\n nextVisualParent = createNewVisualAggregator(visualTree, visualParent, hideChildConnector);\r\n }\r\n var medianIndex = 0;\r\n switch (horizontalAlignment) {\r\n case HorizontalAlignmentType.Center:\r\n medianIndex = Math.ceil(rowOfChildren.length / 2) - 1;\r\n break;\r\n case HorizontalAlignmentType.Left:\r\n medianIndex = -1;\r\n break;\r\n case HorizontalAlignmentType.Right:\r\n medianIndex = rowOfChildren.length - 1;\r\n break;\r\n }\r\n for (var index = medianIndex; index >= 0; index -= 1) {\r\n var item = getNewTreeItem({}, rowOfChildren[index]);\r\n visualTree.add(visualParent.id, item.id, item, 0);\r\n item.connectorPlacement = SideFlag.Top | SideFlag.Bottom;\r\n item.gravity = HorizontalAlignmentType.Right;\r\n }\r\n\r\n for (index = medianIndex + 1; index < rowOfChildren.length; index += 1) {\r\n item = getNewTreeItem({}, rowOfChildren[index]);\r\n visualTree.add(visualParent.id, item.id, item);\r\n item.connectorPlacement = SideFlag.Top | SideFlag.Bottom;\r\n item.gravity = HorizontalAlignmentType.Left;\r\n }\r\n return nextVisualParent;\r\n }\r\n\r\n function addChildren(orgTree, visualTree, depths, options, treeItem, visualParent, regularChildren, childrenPlacementType, hasLeavesOnly) {\r\n var visualParent,\r\n currentVisualParent,\r\n leftChildItem,\r\n rightChildItem,\r\n newAggregatorItem,\r\n childItem, orgChildItem,\r\n width,\r\n height,\r\n twinColumns,\r\n rowIndex,\r\n index, len,\r\n singleItemPlacement,\r\n hideParentConnector = (treeItem.visibility == Visibility.Invisible) && (treeItem.connectorPlacement === 0);\r\n\r\n switch (options.horizontalAlignment) {\r\n case HorizontalAlignmentType.Center:\r\n case HorizontalAlignmentType.Left:\r\n singleItemPlacement = AdviserPlacementType.Right;\r\n break;\r\n case HorizontalAlignmentType.Right:\r\n singleItemPlacement = AdviserPlacementType.Left;\r\n break;\r\n }\r\n\r\n if (childrenPlacementType === ChildrenPlacementType.Auto) {\r\n if (hasLeavesOnly) {\r\n childrenPlacementType = (options.leavesPlacementType === ChildrenPlacementType.Auto) ?\r\n ChildrenPlacementType.Matrix : options.leavesPlacementType;\r\n }\r\n else {\r\n childrenPlacementType = (options.childrenPlacementType === ChildrenPlacementType.Auto) ?\r\n ChildrenPlacementType.Horizontal : options.childrenPlacementType;\r\n }\r\n }\r\n\r\n if (childrenPlacementType == ChildrenPlacementType.Matrix && regularChildren.length < 3) {\r\n childrenPlacementType = ChildrenPlacementType.Horizontal;\r\n }\r\n\r\n switch (childrenPlacementType) {\r\n case ChildrenPlacementType.Horizontal:\r\n for (index = 0, len = regularChildren.length; index < len; index += 1) {\r\n childItem = getNewTreeItem({}, regularChildren[index]);\r\n orgChildItem = orgTree.node(childItem.id);\r\n visualTree.add(visualParent.id, childItem.id, childItem);\r\n childItem.connectorPlacement = (orgChildItem.hideParentConnection ? 0 : SideFlag.Top) | (orgChildItem.hideChildrenConnection ? 0 : SideFlag.Bottom);\r\n\r\n if (index === 0) {\r\n childItem.relationDegree = 1;\r\n }\r\n }\r\n break;\r\n case ChildrenPlacementType.Matrix:\r\n width = Math.min(options.maximumColumnsInMatrix, Math.ceil(Math.sqrt(regularChildren.length)));\r\n height = Math.ceil(regularChildren.length / width);\r\n twinColumns = Math.ceil(width / 2.0);\r\n for (var columnIndex = 0; columnIndex < twinColumns; columnIndex += 1) {\r\n currentVisualParent = visualParent;\r\n for (rowIndex = 0; rowIndex < height; rowIndex += 1) {\r\n leftChildItem = getMatrixItem(regularChildren, columnIndex * 2, rowIndex, width);\r\n rightChildItem = getMatrixItem(regularChildren, columnIndex * 2 + 1, rowIndex, width);\r\n if (leftChildItem !== null || rightChildItem !== null) {\r\n var depth = depths[rowIndex - 1] || 1;\r\n while(depth > 1) {\r\n newAggregatorItem = getNewTreeItem({\r\n visibility: Visibility.Invisible,\r\n connectorPlacement: hideParentConnector ? 0 : SideFlag.Top | SideFlag.Bottom\r\n });\r\n visualTree.add(currentVisualParent.id, newAggregatorItem.id, newAggregatorItem);\r\n currentVisualParent = newAggregatorItem;\r\n depth -= 1;\r\n }\r\n }\r\n if (leftChildItem !== null) {\r\n leftChildItem = getNewTreeItem({},leftChildItem);\r\n if (columnIndex === 0) {\r\n leftChildItem.relationDegree = 1;\r\n }\r\n visualTree.add(currentVisualParent.id, leftChildItem.id, leftChildItem);\r\n leftChildItem.connectorPlacement = (hideParentConnector ? 0 : SideFlag.Right) | SideFlag.Bottom;\r\n leftChildItem.gravity = HorizontalAlignmentType.Right;\r\n }\r\n if (leftChildItem !== null || rightChildItem !== null) {\r\n newAggregatorItem = getNewTreeItem({\r\n visibility: Visibility.Invisible,\r\n connectorPlacement: hideParentConnector ? 0 : SideFlag.Top | SideFlag.Bottom\r\n });\r\n visualTree.add(currentVisualParent.id, newAggregatorItem.id, newAggregatorItem);\r\n }\r\n if (rightChildItem !== null) {\r\n rightChildItem = getNewTreeItem({},rightChildItem);\r\n visualTree.add(currentVisualParent.id, rightChildItem.id, rightChildItem);\r\n rightChildItem.connectorPlacement = (hideParentConnector ? 0 : SideFlag.Left) | SideFlag.Bottom;\r\n rightChildItem.gravity = HorizontalAlignmentType.Left;\r\n }\r\n currentVisualParent = newAggregatorItem;\r\n }\r\n }\r\n if (width > 2) {\r\n // No center alignment to aggregator required\r\n visualParent.visualAggregatorId = null;\r\n }\r\n break;\r\n case ChildrenPlacementType.Vertical:\r\n for (index = 0, len = regularChildren.length; index < len; index += 1) {\r\n childItem = getNewTreeItem({}, regularChildren[index]);\r\n var depth = (index == len - 1) ? 1 : depths[index] || 1;\r\n var aggregatorItem = visualParent;\r\n while(depth > 0) {\r\n newAggregatorItem = getNewTreeItem({\r\n visibility: Visibility.Invisible,\r\n connectorPlacement: hideParentConnector ? 0 : SideFlag.Top | SideFlag.Bottom\r\n });\r\n visualTree.add(aggregatorItem.id, newAggregatorItem.id, newAggregatorItem);\r\n aggregatorItem = newAggregatorItem;\r\n depth -= 1;\r\n }\r\n\r\n switch (singleItemPlacement) {\r\n case AdviserPlacementType.Left:\r\n visualTree.add(visualParent.id, childItem.id, childItem, 0);\r\n childItem.connectorPlacement = (hideParentConnector ? 0 : SideFlag.Right) | SideFlag.Bottom;\r\n childItem.gravity = HorizontalAlignmentType.Right;\r\n break;\r\n case AdviserPlacementType.Right:\r\n visualTree.add(visualParent.id, childItem.id, childItem);\r\n childItem.connectorPlacement = (hideParentConnector ? 0 : SideFlag.Left) | SideFlag.Bottom;\r\n childItem.gravity = HorizontalAlignmentType.Left;\r\n break;\r\n }\r\n visualParent = newAggregatorItem;\r\n }\r\n break;\r\n default:\r\n throw \"Children placement is undefined!\";\r\n }\r\n }\r\n\r\n function getRegularChildrenRows(options, regularChildren, childrenPlacementType, hasLeavesOnly) {\r\n var results = [];\r\n\r\n if (childrenPlacementType === ChildrenPlacementType.Auto) {\r\n if (hasLeavesOnly) {\r\n childrenPlacementType = (options.leavesPlacementType === ChildrenPlacementType.Auto) ?\r\n ChildrenPlacementType.Matrix : options.leavesPlacementType;\r\n }\r\n else {\r\n childrenPlacementType = (options.childrenPlacementType === ChildrenPlacementType.Auto) ?\r\n ChildrenPlacementType.Horizontal : options.childrenPlacementType;\r\n }\r\n }\r\n\r\n if (childrenPlacementType == ChildrenPlacementType.Matrix && regularChildren.length < 3) {\r\n childrenPlacementType = ChildrenPlacementType.Horizontal;\r\n }\r\n\r\n switch (childrenPlacementType) {\r\n case ChildrenPlacementType.Horizontal:\r\n results.push(regularChildren);\r\n break;\r\n case ChildrenPlacementType.Matrix:\r\n var width = Math.min(options.maximumColumnsInMatrix, Math.ceil(Math.sqrt(regularChildren.length)));\r\n for(var index = 0; index < regularChildren.length; index+= width) {\r\n results.push(regularChildren.slice(index, index + width));\r\n }\r\n break;\r\n case ChildrenPlacementType.Vertical:\r\n regularChildren.forEach(childItem => {\r\n results.push([childItem])\r\n })\r\n break;\r\n }\r\n return results;\r\n }\r\n\r\n function getMatrixItem(items, x, y, width) {\r\n var result,\r\n isOdd = (width % 2 > 0),\r\n index;\r\n\r\n if (isOdd) {\r\n if (x === width - 1) {\r\n x = items.length;\r\n }\r\n else if (x === width) {\r\n x = width - 1;\r\n }\r\n }\r\n index = y * width + x;\r\n\r\n result = (index > items.length - 1) ? null : items[index];\r\n\r\n return result;\r\n }\r\n\r\n function createNewVisualAggregator(visualTree, treeItem, hideChildrenConnector) {\r\n var newAggregatorItem,\r\n hideParentConnector = ((treeItem.visibility == Visibility.Invisible) && ((treeItem.connectorPlacement & SideFlag.Top) === 0)) || hideChildrenConnector;\r\n\r\n newAggregatorItem = getNewTreeItem({\r\n visibility: Visibility.Invisible,\r\n visualAggregatorId: treeItem.visualAggregatorId,\r\n connectorPlacement: hideParentConnector ? 0 : (SideFlag.Top | SideFlag.Bottom)\r\n });\r\n\r\n visualTree.insert(treeItem.id, newAggregatorItem.id, newAggregatorItem);\r\n\r\n treeItem.visualAggregatorId = newAggregatorItem.id;\r\n return newAggregatorItem;\r\n }\r\n\r\n function getNewTreeItem(properties, orgItem) {\r\n var result = new TreeItem(),\r\n optionKey;\r\n\r\n if (orgItem != null) {\r\n result.actualItemType = orgItem.itemType;\r\n result.adviserPlacementType = orgItem.adviserPlacementType;\r\n }\r\n\r\n for (optionKey in properties) {\r\n if (properties.hasOwnProperty(optionKey)) {\r\n result[optionKey] = properties[optionKey];\r\n }\r\n }\r\n\r\n if (orgItem != null) {\r\n result.id = orgItem.id;\r\n result.visibility = orgItem.isVisible ? Visibility.Auto : Visibility.Invisible;\r\n } else {\r\n _treeItemCounter += 1;\r\n result.id = _treeItemCounter;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n return {\r\n build: build\r\n };\r\n};","import Family from \"../../../algorithms/Family\";\r\n\r\nexport default function NavigationalFamily(activeItems) {\r\n var _activeItems = activeItems,\r\n _navigationFamily = Family();\r\n\r\n function define(parentItem, treeItem, skipFirstParent) {\r\n var parents = [];\r\n /* take parentItem when it is visible or collect all visible immediate parents of the parentItem */\r\n if (\r\n skipFirstParent ||\r\n !parentItem.isVisible ||\r\n !_activeItems.hasOwnProperty(parentItem.id)\r\n ) {\r\n if (!skipFirstParent && parentItem.isVisible) {\r\n parents.push(parentItem.id);\r\n }\r\n _navigationFamily.loopParents(\r\n this,\r\n parentItem.id,\r\n function (parentId, parent, level) {\r\n if (parent.isVisible) {\r\n parents.push(parentId);\r\n if (_activeItems.hasOwnProperty(parentId)) {\r\n return _navigationFamily.SKIP;\r\n }\r\n }\r\n }\r\n );\r\n } else {\r\n parents.push(parentItem.id);\r\n }\r\n if (_navigationFamily.node(treeItem.id) != null) {\r\n _navigationFamily.adopt(parents, treeItem.id);\r\n } else {\r\n _navigationFamily.add(parents, treeItem.id, treeItem);\r\n }\r\n }\r\n\r\n function getFamily() {\r\n return _navigationFamily;\r\n }\r\n\r\n return {\r\n define: define,\r\n getFamily: getFamily,\r\n };\r\n}\r\n","import Family from '../../algorithms/Family';\r\nimport Tree from '../../algorithms/Tree';\r\nimport BranchAligner from './visualTreeBuilder/BranchAligner';\r\nimport VisualTreeBuilder from './visualTreeBuilder/VisualTreeBuilder';\r\n\r\nexport default function VisualTreeTask(orgTreeTask, activeItemsTask, visualTreeOptionTask) {\r\n var _visualTree, /* Tree(); key: TreeItem.id value: TreeItem */\r\n _leftMargins,\r\n _rightMargins,\r\n _navigationFamily, /* Family structure where key: TreeItem.id and value: TreeItem */\r\n _treeItemCounter,\r\n _branchAligner,\r\n _visualTreeBuilder = VisualTreeBuilder();\r\n\r\n function process() {\r\n var orgTree = orgTreeTask.getOrgTree();\r\n var options = visualTreeOptionTask.getOptions();\r\n var activeItems = activeItemsTask != null ? activeItemsTask.getActiveItems() : {};\r\n\r\n _treeItemCounter = orgTreeTask.getMaximumId();\r\n\r\n if (orgTree.hasNodes()) {\r\n ({ \r\n visualTree: _visualTree, \r\n navigationFamily: _navigationFamily,\r\n treeItemCounter: _treeItemCounter,\r\n branchAligner: _branchAligner\r\n } = _visualTreeBuilder.build(orgTree, _treeItemCounter, activeItems, options));\r\n } else {\r\n _visualTree = Tree();\r\n _navigationFamily = Family();\r\n _branchAligner = BranchAligner();\r\n }\r\n\r\n ({\r\n leftMargins: _leftMargins,\r\n rightMargins: _rightMargins\r\n } = getVisualTreeMargins(_visualTree));\r\n\r\n return true;\r\n }\r\n\r\n function getVisualTreeMargins(visualTree) {\r\n var leftMargins = {}\r\n var rightMargins = {};\r\n visualTree.loop(this, function (nodeid, node) {\r\n leftMargins[nodeid] = [];\r\n rightMargins[nodeid] = [];\r\n });\r\n\r\n visualTree.loopPostOrder(this, function (nodeid, node, parentid, parent) {\r\n var parentLeftMargins = leftMargins[parentid],\r\n parentRightMargins = rightMargins[parentid],\r\n nodeLeftMargins = leftMargins[nodeid],\r\n nodeRightMargins = rightMargins[nodeid],\r\n index, len;\r\n\r\n if (parentid != null) {\r\n /* update parent left margins */\r\n if (!parentLeftMargins[0]) {\r\n parentLeftMargins[0] = nodeid;\r\n }\r\n\r\n for (index = 0, len = nodeLeftMargins.length; index < len; index += 1) {\r\n if (!parentLeftMargins[index + 1]) {\r\n parentLeftMargins[index + 1] = nodeLeftMargins[index];\r\n }\r\n }\r\n\r\n /* update parent rights margins */\r\n parentRightMargins[0] = nodeid;\r\n\r\n for (index = 0, len = nodeRightMargins.length; index < len; index += 1) {\r\n parentRightMargins[index + 1] = nodeRightMargins[index];\r\n }\r\n }\r\n });\r\n\r\n return {\r\n leftMargins: leftMargins,\r\n rightMargins: rightMargins\r\n }\r\n }\r\n\r\n function getVisualTree() {\r\n return _visualTree;\r\n }\r\n\r\n function getLogicalFamily() {\r\n return _navigationFamily;\r\n }\r\n\r\n function getBranchAligner() {\r\n return _branchAligner;\r\n }\r\n\r\n function getLeftMargins() {\r\n return _leftMargins;\r\n }\r\n\r\n function getRightMargins() {\r\n return _rightMargins;\r\n }\r\n\r\n function getMaximumId() {\r\n return _treeItemCounter;\r\n }\r\n\r\n return {\r\n process: process,\r\n getVisualTree: getVisualTree,\r\n getLogicalFamily: getLogicalFamily,\r\n getLeftMargins: getLeftMargins,\r\n getRightMargins: getRightMargins,\r\n getMaximumId: getMaximumId,\r\n getBranchAligner: getBranchAligner\r\n };\r\n};","export default function TreeLevelConnectorStackSize() {\r\n this.parentsStackSize = 0; /* number of overlapping horiontal connection lines between partners in level */\r\n};","import { Colors, LineType } from '../../enums';\r\nimport { isNullOrEmpty } from '../../common';\r\n\r\nexport default function PaletteItem(options) {\r\n this.lineColor = Colors.Silver;\r\n this.lineWidth = 1;\r\n this.lineType = LineType.Solid;\r\n this.fillColor = null;\r\n this.opacity = null;\r\n\r\n this._key = \"\";\r\n\r\n var property, properties,\r\n index, len;\r\n\r\n properties = ['lineColor', 'lineWidth', 'lineType', 'fillColor', 'opacity'];\r\n\r\n for (index = 0, len = properties.length; index < len; index += 1) {\r\n property = properties[index];\r\n\r\n if (options != null && options.hasOwnProperty(property)) {\r\n this[property] = options[property];\r\n }\r\n this._key += (!isNullOrEmpty(this._key) ? \", \" : \"\") + property + \":\" + this[property];\r\n }\r\n};\r\n\r\nPaletteItem.prototype.toAttr = function () {\r\n var attr = {\r\n \"lineWidth\": this.lineWidth,\r\n \"lineType\": this.lineType\r\n };\r\n if (this.fillColor !== null) {\r\n attr.fillColor = this.fillColor;\r\n }\r\n if (this.opacity !== null) {\r\n attr.opacity = this.opacity;\r\n }\r\n if (this.lineColor !== null) {\r\n attr.borderColor = this.lineColor;\r\n }\r\n return attr;\r\n};\r\n\r\nPaletteItem.prototype.toString = function () {\r\n return this._key;\r\n};","import Point from './Point';\r\nimport { SegmentType } from '../../enums';\r\n\r\nexport default function MoveSegment() {\r\n this.parent = Point.prototype;\r\n this.parent.constructor.apply(this, arguments);\r\n this.segmentType = SegmentType.Move;\r\n};\r\n\r\nMoveSegment.prototype = new Point();\r\n\r\nMoveSegment.prototype.clone = function () {\r\n return new MoveSegment(this);\r\n};\r\n\r\nMoveSegment.prototype.loop = function (thisArg, onItem) {\r\n if (onItem != null) {\r\n onItem.call(thisArg, this.x, this.y, 0);\r\n }\r\n};\r\n\r\nMoveSegment.prototype.setPoint = function (point, index) {\r\n this.x = point.x;\r\n this.y = point.y;\r\n};\r\n\r\nMoveSegment.prototype.getEndPoint = function () {\r\n return this;\r\n};\r\n\r\nMoveSegment.prototype.invert = function (endPoint) {\r\n this.x = endPoint.x;\r\n this.y = endPoint.y;\r\n};\r\n\r\nMoveSegment.prototype.transform = function (transform, forward) {\r\n var self = this;\r\n transform.transformPoint(self.x, self.y, forward, self, function (x, y) {\r\n self.x = x;\r\n self.y = y;\r\n });//ignore jslint\r\n};\r\n","import Point from './Point';\r\nimport MoveSegment from './MoveSegment';\r\nimport { SegmentType } from '../../enums';\r\n\r\nexport default function LineSegment() {\r\n this.parent = MoveSegment.prototype;\r\n this.parent.constructor.apply(this, arguments);\r\n\r\n this.segmentType = SegmentType.Line;\r\n};\r\n\r\nLineSegment.prototype = new MoveSegment();\r\n\r\nLineSegment.prototype.clone = function () {\r\n return new LineSegment(this);\r\n};\r\n\r\nLineSegment.prototype.trim = function (prevEndPoint, offset) {\r\n var endPoint = this.offsetPoint(this, prevEndPoint, offset);\r\n this.x = endPoint.x;\r\n this.y = endPoint.y;\r\n\r\n return this;\r\n};\r\n\r\nLineSegment.prototype.offsetPoint = function (first, second, offset) {\r\n var result = null,\r\n distance = first.distanceTo(second);\r\n\r\n if (distance === 0 || offset === 0) {\r\n result = new Point(first);\r\n } else {\r\n result = new Point(first.x + (second.x - first.x) / distance * offset, first.y + (second.y - first.y) / distance * offset);\r\n }\r\n return result;\r\n};","import Point from './Point';\r\nimport { SegmentType } from '../../enums';\r\n\r\nexport default function QuadraticArcSegment(arg0, arg1, arg2, arg3) {\r\n this.x = null;\r\n this.y = null;\r\n\r\n this.cpX = null;\r\n this.cpY = null;\r\n\r\n switch (arguments.length) {\r\n case 2:\r\n this.x = arg1.x;\r\n this.y = arg1.y;\r\n this.cpX = arg0.x;\r\n this.cpY = arg0.y;\r\n break;\r\n case 4:\r\n this.cpX = arg0;\r\n this.cpY = arg1;\r\n this.x = arg2;\r\n this.y = arg3;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n this.segmentType = SegmentType.QuadraticArc;\r\n};\r\n\r\nQuadraticArcSegment.prototype.clone = function () {\r\n return new QuadraticArcSegment(this.cpX, this.cpY, this.x, this.y);\r\n};\r\n\r\nQuadraticArcSegment.prototype.loop = function (thisArg, onItem) {\r\n if (onItem != null) {\r\n onItem.call(thisArg, this.cpX, this.cpY, 0);\r\n onItem.call(thisArg, this.x, this.y, 1);\r\n }\r\n};\r\n\r\nQuadraticArcSegment.prototype.setPoint = function (point, index) {\r\n switch (index) {\r\n case 0:\r\n this.cpX = point.x;\r\n this.cpY = point.y;\r\n break;\r\n case 1:\r\n this.x = point.x;\r\n this.y = point.y;\r\n break;\r\n }\r\n};\r\n\r\nQuadraticArcSegment.prototype.getEndPoint = function () {\r\n return this;\r\n};\r\n\r\nQuadraticArcSegment.prototype.invert = function (endPoint) {\r\n this.x = endPoint.x;\r\n this.y = endPoint.y;\r\n};\r\n\r\nQuadraticArcSegment.prototype.transform = function (transform, forward) {\r\n var self = this;\r\n transform.transformPoints(self.x, self.y, self.cpX, self.cpY, forward, self, function (x, y, cpX, cpY) {\r\n self.x = x;\r\n self.y = y;\r\n self.cpX = cpX;\r\n self.cpY = cpY;\r\n });//ignore jslint\r\n};\r\n\r\nQuadraticArcSegment.prototype.trim = function (prevEndPoint, offset) {\r\n var time = 0.5,\r\n endPoint = this.offsetPoint(this.x, this.y, this.cpX, this.cpY, prevEndPoint.x, prevEndPoint.y, time),\r\n time2 = 0.1,\r\n endPoint2 = this.offsetPoint(this.x, this.y, this.cpX, this.cpY, prevEndPoint.x, prevEndPoint.y, time2);\r\n\r\n time = offset * (time / endPoint.distanceTo(this.x, this.y) + time2 / endPoint2.distanceTo(this.x, this.y)) / 2.0;\r\n endPoint = this.offsetPoint(this.x, this.y, this.cpX, this.cpY, prevEndPoint.x, prevEndPoint.y, time);\r\n\r\n this.x = endPoint.x;\r\n this.y = endPoint.y;\r\n\r\n return this;\r\n};\r\n\r\nQuadraticArcSegment.prototype.offsetPoint = function (firstX, firstY, controlX, controlY, secondX, secondY, time) {\r\n return new Point((1 - time) * (1 - time) * firstX + 2 * (1 - time) * time * controlX + time * time * secondX,\r\n (1 - time) * (1 - time) * firstY + 2 * (1 - time) * time * controlY + time * time * secondY);\r\n};","import PaletteItem from './PaletteItem';\r\nimport MoveSegment from './MoveSegment';\r\nimport LineSegment from './LineSegment';\r\nimport QuadraticArcSegment from './QuadraticArcSegment';\r\nimport Point from './Point';\r\nimport Vector from './Vector';\r\nimport { SegmentType, VectorRelationType } from '../../enums';\r\nimport { isNullOrEmpty } from '../../common';\r\n\r\nexport default function Polyline(newPaletteItem) {\r\n var paletteItem = new PaletteItem(),\r\n segments = [],\r\n self,\r\n arrowPaletteItem;\r\n\r\n switch (arguments.length) {\r\n case 1:\r\n paletteItem = newPaletteItem;\r\n break;\r\n }\r\n\r\n arrowPaletteItem = new PaletteItem({\r\n lineColor: paletteItem.lineColor,\r\n lineWidth: 0,\r\n fillColor: paletteItem.lineColor,\r\n opacity: paletteItem.opacity || 1\r\n });\r\n\r\n function getStartPoint() {\r\n var result = null;\r\n if (segments.length > 0) {\r\n result = segments[0].getEndPoint();\r\n }\r\n return result;\r\n }\r\n\r\n function getEndPoint() {\r\n var result = null;\r\n if (segments.length > 0) {\r\n result = segments[segments.length - 1].getEndPoint();\r\n }\r\n return result;\r\n }\r\n\r\n function addSegment(segment) {\r\n segments.push(segment);\r\n }\r\n\r\n function addSegments(newSegments) {\r\n var index, len;\r\n for (index = 0, len = newSegments.length; index < len; index += 1) {\r\n segments.push(newSegments[index]);\r\n }\r\n }\r\n\r\n function mergeTo(polyline) {\r\n polyline.addSegments(segments);\r\n }\r\n\r\n function clone() {\r\n var index, len,\r\n result = new Polyline(paletteItem),\r\n cloneSegments = [],\r\n segment;\r\n for (index = 0, len = segments.length; index < len; index += 1) {\r\n segment = segments[index];\r\n cloneSegments.push(segment.clone());\r\n }\r\n result.addSegments(cloneSegments);\r\n return result;\r\n }\r\n\r\n function length() {\r\n return segments.length;\r\n }\r\n\r\n function loop(thisArg, onItem) {\r\n var index, len,\r\n segment;\r\n if (onItem != null) {\r\n for (index = 0, len = segments.length; index < len; index += 1) {\r\n segment = segments[index];\r\n if (segment) {\r\n if (onItem.call(thisArg, segment, index)) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function loopReversed(thisArg, onItem) {\r\n var index,\r\n segment;\r\n if (onItem != null) {\r\n for (index = segments.length - 1; index >= 0; index -= 1) {\r\n segment = segments[index];\r\n if (segment) {\r\n if (onItem.call(thisArg, segment, index)) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function transform(transformArg, forward) {\r\n loop(this, function (segment) {\r\n if (segment.transform != null) {\r\n segment.transform(transformArg, forward);\r\n }\r\n });\r\n }\r\n\r\n function isInvertable() {\r\n return isNullOrEmpty(paletteItem.fillColor);\r\n }\r\n\r\n function addInverted(polyline) {\r\n var hasMoved = false,\r\n stack = [];\r\n\r\n if (isInvertable()) {\r\n polyline.loopReversed(this, function (segment, index) {\r\n if (segment.segmentType != SegmentType.Dot) {\r\n if (!hasMoved) {\r\n segments.push(new MoveSegment(segment.getEndPoint()));\r\n hasMoved = true;\r\n }\r\n stack.unshift(segment);\r\n\r\n if (stack.length > 1) {\r\n stack[1].invert(stack[0].getEndPoint());\r\n segments.push(stack[1]);\r\n stack.length = 1;\r\n }\r\n\r\n }\r\n });\r\n } else {\r\n polyline.mergeTo(self);\r\n }\r\n }\r\n\r\n function _getArrow(fromX, fromY, toX, toY, length, width) {\r\n var result = new Polyline(arrowPaletteItem),\r\n index, len,\r\n point, x, y,\r\n perimeter = [new Point(length, -width / 2),\r\n new Point(0, 0),\r\n new Point(length, width / 2),\r\n new Point(length / 4 * 3, 0)\r\n ],\r\n angle = Math.atan2((fromY - toY), (fromX - toX));\r\n\r\n /* rotate and translate points */\r\n for (index = 0, len = perimeter.length; index < len; index += 1) {\r\n point = perimeter[index];\r\n x = point.x * Math.cos(angle) - point.y * Math.sin(angle);\r\n y = point.x * Math.sin(angle) + point.y * Math.cos(angle);\r\n point.x = x + toX;\r\n point.y = y + toY;\r\n }\r\n\r\n /* create arrow shape*/\r\n result.addSegment(new MoveSegment(perimeter[0].x, perimeter[0].y));\r\n result.addSegment(new LineSegment(perimeter[1].x, perimeter[1].y));\r\n result.addSegment(new LineSegment(perimeter[2].x, perimeter[2].y));\r\n result.addSegment(new QuadraticArcSegment(perimeter[3].x, perimeter[3].y, perimeter[0].x, perimeter[0].y));\r\n\r\n return result;\r\n }\r\n\r\n function addOffsetArrow(forward, lineWidth, offsetPercent, minimumDistance, onAddArrowSegments) {\r\n var prevEndPoint,\r\n currentEndPoint,\r\n currentSegment,\r\n newEndPoint, newPrevEndPoint,\r\n polyline,\r\n len = segments.length,\r\n arrowTipLength = lineWidth * 3,\r\n arrowTipWidth = lineWidth * 2,\r\n offset,\r\n distance;\r\n\r\n switch (lineWidth) {\r\n case 1:\r\n arrowTipLength = 8;\r\n arrowTipWidth = 6;\r\n break;\r\n case 2:\r\n arrowTipLength = 12;\r\n arrowTipWidth = 8;\r\n break;\r\n case 3:\r\n arrowTipLength = 16;\r\n arrowTipWidth = 10;\r\n break;\r\n }\r\n\r\n if (onAddArrowSegments != null && len > 1) {\r\n prevEndPoint = segments[len - 2].getEndPoint();\r\n currentSegment = segments[len - 1];\r\n if (currentSegment.offsetPoint != null) {\r\n currentEndPoint = new Point(currentSegment.getEndPoint());\r\n\r\n distance = prevEndPoint.distanceTo(currentEndPoint);\r\n if (distance > minimumDistance) {\r\n offset = distance * offsetPercent;\r\n\r\n if (forward) {\r\n newEndPoint = currentSegment.offsetPoint(prevEndPoint, currentEndPoint, offset);\r\n polyline = _getArrow(prevEndPoint.x, prevEndPoint.y, newEndPoint.x, newEndPoint.y, arrowTipLength, arrowTipWidth);\r\n } else {\r\n newPrevEndPoint = currentSegment.offsetPoint(currentEndPoint, prevEndPoint, offset);\r\n polyline = _getArrow(currentEndPoint.x, currentEndPoint.y, newPrevEndPoint.x, newPrevEndPoint.y, arrowTipLength, arrowTipWidth);\r\n }\r\n onAddArrowSegments(polyline);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function addArrow(lineWidth, onAddArrowSegments) {\r\n var prevEndPoint,\r\n currentEndPoint,\r\n currentSegment,\r\n newEndPoint,\r\n polyline,\r\n len = segments.length,\r\n arrowTipLength = lineWidth * 3,\r\n arrowTipWidth = lineWidth * 2;\r\n\r\n switch (lineWidth) {\r\n case 1:\r\n arrowTipLength = 8;\r\n arrowTipWidth = 6;\r\n break;\r\n case 2:\r\n arrowTipLength = 12;\r\n arrowTipWidth = 8;\r\n break;\r\n case 3:\r\n arrowTipLength = 16;\r\n arrowTipWidth = 10;\r\n break;\r\n }\r\n\r\n if (onAddArrowSegments != null && len > 1) {\r\n prevEndPoint = segments[len - 2].getEndPoint();\r\n currentSegment = segments[len - 1];\r\n if (currentSegment.trim != null) {\r\n currentEndPoint = new Point(currentSegment.getEndPoint());\r\n if (currentEndPoint.distanceTo(prevEndPoint) >= arrowTipLength) {\r\n newEndPoint = currentSegment.trim(prevEndPoint, arrowTipLength);\r\n\r\n polyline = _getArrow(newEndPoint.x, newEndPoint.y, currentEndPoint.x, currentEndPoint.y, arrowTipLength, arrowTipWidth);\r\n onAddArrowSegments(polyline, newEndPoint);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function optimizeMoveSegments() {\r\n var index, len,\r\n cursorIndex,\r\n key,\r\n optimizedSegments,\r\n segment, nextSegment,\r\n links = {},\r\n jumps = [],\r\n processed = [];\r\n\r\n for (index = 0, len = segments.length; index < len - 1; index += 1) {\r\n segment = segments[index];\r\n nextSegment = segments[index + 1];\r\n switch (segment.segmentType) {\r\n case SegmentType.Line:\r\n case SegmentType.QuadraticArc:\r\n case SegmentType.CubicArc:\r\n switch (nextSegment.segmentType) {\r\n case SegmentType.Move:\r\n case SegmentType.Dot:\r\n key = segment.x + \"&\" + segment.y;\r\n if (!links.hasOwnProperty(key)) {\r\n links[key] = index;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n break;\r\n case SegmentType.Move:\r\n key = segment.x + \"&\" + segment.y;\r\n if (links.hasOwnProperty(key) && !jumps[links[key]]) {\r\n jumps[links[key]] = index + 1;\r\n processed[index] = true;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n optimizedSegments = [];\r\n for (index = 0; index < len; index += 1) {\r\n if (!processed[index]) {\r\n segment = segments[index];\r\n optimizedSegments.push(segment);\r\n processed[index] = true;\r\n\r\n if (jumps[index] > 0) {\r\n cursorIndex = jumps[index];\r\n while (cursorIndex < len && !processed[cursorIndex]) {\r\n segment = segments[cursorIndex];\r\n optimizedSegments.push(segment);\r\n processed[cursorIndex] = true;\r\n\r\n if (jumps[cursorIndex] > 0) {\r\n cursorIndex = jumps[cursorIndex];\r\n } else {\r\n cursorIndex += 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n segments = optimizedSegments;\r\n }\r\n\r\n function toString() {\r\n return paletteItem.toString();\r\n }\r\n\r\n /* private classes */\r\n function Vertex(segment, pointIndex) {\r\n this.segment = segment;\r\n this.pointIndex = pointIndex;\r\n }\r\n\r\n Vertex.prototype.pushToSegment = function (point) {\r\n this.segment.setPoint(point, this.pointIndex);\r\n };\r\n\r\n function _joinVectors(prev, current, offset, polyline, isLoop) {\r\n var relationType = prev.relateTo(current),\r\n offset2 = isLoop ? 0 : offset,\r\n joinSegment,\r\n joinVector,\r\n newToPoint;\r\n if (relationType == VectorRelationType.Collinear) {\r\n /* Vectors are collinear vectors so we don't search for intersection */\r\n current.offset(offset2);\r\n } else {\r\n if (relationType == VectorRelationType.Opposite && current.from.context.pointIndex === 0) {\r\n /* Vectors are opposite vectors which belong to 2 different segments\r\n so we add an extra line segment in between of them\r\n */\r\n joinSegment = new LineSegment(current.from);\r\n polyline.addSegment(joinSegment);\r\n\r\n current.offset(offset2);\r\n\r\n newToPoint = current.from.clone();\r\n newToPoint.context = new Vertex(joinSegment, 0);\r\n\r\n joinVector = new Vector(prev.to.clone(), newToPoint);\r\n if (!isLoop) {\r\n current.from = newToPoint.clone();\r\n }\r\n\r\n joinVector.offset(offset);\r\n joinVector.intersect(prev);\r\n joinVector.from.context.pushToSegment(joinVector.from);\r\n current.intersect(joinVector);\r\n\r\n if (isLoop) {\r\n joinVector.to.context.pushToSegment(joinVector.to);\r\n }\r\n } else {\r\n current.offset(offset2);\r\n current.intersect(prev);\r\n }\r\n }\r\n current.from.context.pushToSegment(current.from);\r\n }\r\n\r\n function _closeVector(vectorStack, startVectors, offset, polyline) {\r\n var startVector,\r\n prevVector = vectorStack[0],\r\n closurePoint = prevVector.to.context.segment.getEndPoint().toString();\r\n if (startVectors.hasOwnProperty(closurePoint)) {\r\n startVector = startVectors[closurePoint];\r\n\r\n _joinVectors(prevVector, startVector, offset, polyline, true);\r\n\r\n delete startVectors[closurePoint];\r\n }\r\n prevVector.to.context.pushToSegment(prevVector.to);\r\n vectorStack.length = 0;\r\n }\r\n\r\n function getOffsetPolyine(offset) {\r\n var result = new Polyline(paletteItem),\r\n startVectors = {},\r\n pointStack = [],\r\n vectorStack = [];\r\n\r\n loop(this, function (segment) {\r\n var newSegment = segment.clone(),\r\n newPoint;\r\n\r\n switch (newSegment.segmentType) {\r\n case SegmentType.Dot:\r\n case SegmentType.Move:\r\n if (vectorStack.length > 0) {\r\n _closeVector(vectorStack, startVectors, offset, result);\r\n }\r\n pointStack.length = 0;\r\n if (newSegment.segmentType == SegmentType.Move) {\r\n newPoint = new Point(newSegment);\r\n newPoint.context = new Vertex(newSegment, 0);\r\n pointStack.push(newPoint);\r\n }\r\n break;\r\n default:\r\n newSegment.loop(this, function (x, y, index) {\r\n var newPoint = new Point(x, y),\r\n current,\r\n prev,\r\n closurePoint;\r\n\r\n newPoint.context = new Vertex(newSegment, index);\r\n pointStack.unshift(newPoint);\r\n if (pointStack.length > 1) {\r\n vectorStack.unshift(new Vector(pointStack[1].clone(), pointStack[0].clone()));\r\n pointStack.length = 1;\r\n }\r\n\r\n switch (vectorStack.length) {\r\n case 1:\r\n /* first Vector in stack we add to start Vectors collection for possible join into perimeter*/\r\n current = vectorStack[0];\r\n closurePoint = current.from.toString();\r\n startVectors[closurePoint] = current;\r\n current.offset(offset);\r\n current.from.context.pushToSegment(current.from);\r\n break;\r\n case 2:\r\n prev = vectorStack[1];\r\n current = vectorStack[0];\r\n\r\n _joinVectors(prev, current, offset, result, false);\r\n\r\n vectorStack.length = 1;\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n break;\r\n }\r\n result.addSegment(newSegment);\r\n });\r\n if (vectorStack.length > 0) {\r\n _closeVector(vectorStack, startVectors, offset, result);\r\n }\r\n return result;\r\n }\r\n\r\n self = {\r\n paletteItem: paletteItem,\r\n arrowPaletteItem: arrowPaletteItem,\r\n addSegment: addSegment,\r\n addSegments: addSegments,\r\n mergeTo: mergeTo,\r\n length: length,\r\n loop: loop,\r\n loopReversed: loopReversed,\r\n transform: transform,\r\n isInvertable: isInvertable,\r\n addInverted: addInverted,\r\n addArrow: addArrow,\r\n addOffsetArrow: addOffsetArrow,\r\n optimizeMoveSegments: optimizeMoveSegments,\r\n getOffsetPolyine: getOffsetPolyine,\r\n toString: toString,\r\n getStartPoint: getStartPoint,\r\n getEndPoint: getEndPoint,\r\n clone: clone\r\n };\r\n\r\n return self;\r\n};","import Point from './Point';\r\nimport { SegmentType } from '../../enums';\r\n\r\n\r\nexport default function CubicArcSegment(arg0, arg1, arg2, arg3, arg4, arg5) {\r\n this.parent = Point.prototype;\r\n\r\n this.x = null;\r\n this.y = null;\r\n\r\n this.cpX1 = null;\r\n this.cpY1 = null;\r\n\r\n this.cpX2 = null;\r\n this.cpY2 = null;\r\n\r\n switch (arguments.length) {\r\n case 3:\r\n this.parent.constructor.apply(this, [arg2.x, arg2.y]);\r\n this.cpX1 = arg0.x;\r\n this.cpY1 = arg0.y;\r\n this.cpX2 = arg1.x;\r\n this.cpY2 = arg1.y;\r\n break;\r\n case 6:\r\n this.parent.constructor.apply(this, [arg4, arg5]);\r\n this.cpX1 = arg0;\r\n this.cpY1 = arg1;\r\n this.cpX2 = arg2;\r\n this.cpY2 = arg3;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n this.segmentType = SegmentType.CubicArc;\r\n};\r\n\r\nCubicArcSegment.prototype = new Point();\r\n\r\nCubicArcSegment.prototype.clone = function () {\r\n return new CubicArcSegment(this.cpX1, this.cpY1, this.cpX2, this.cpY2, this.x, this.y);\r\n};\r\n\r\nCubicArcSegment.prototype.loop = function (thisArg, onItem) {\r\n if (onItem != null) {\r\n onItem.call(thisArg, this.cpX1, this.cpY1, 0);\r\n onItem.call(thisArg, this.cpX2, this.cpY2, 1);\r\n onItem.call(thisArg, this.x, this.y, 2);\r\n }\r\n};\r\n\r\nCubicArcSegment.prototype.setPoint = function (point, index) {\r\n switch (index) {\r\n case 0:\r\n this.cpX1 = point.x;\r\n this.cpY1 = point.y;\r\n break;\r\n case 1:\r\n this.cpX2 = point.x;\r\n this.cpY2 = point.y;\r\n break;\r\n case 2:\r\n this.x = point.x;\r\n this.y = point.y;\r\n break;\r\n }\r\n};\r\n\r\nCubicArcSegment.prototype.getEndPoint = function () {\r\n return this;\r\n};\r\n\r\nCubicArcSegment.prototype.invert = function (endPoint) {\r\n var tempX = this.cpX1,\r\n tempY = this.cpY1;\r\n this.x = endPoint.x;\r\n this.y = endPoint.y;\r\n this.cpX1 = this.cpX2;\r\n this.cpY1 = this.cpY2;\r\n this.cpX2 = tempX;\r\n this.cpY2 = tempY;\r\n};\r\n\r\nCubicArcSegment.prototype.transform = function (transform, forward) {\r\n var self = this;\r\n transform.transform3Points(self.x, self.y, self.cpX1, self.cpY1, self.cpX2, self.cpY2, forward, self, function (x, y, cpX1, cpY1, cpX2, cpY2) {\r\n self.x = x;\r\n self.y = y;\r\n self.cpX1 = cpX1;\r\n self.cpY1 = cpY1;\r\n self.cpX2 = cpX2;\r\n self.cpY2 = cpY2;\r\n });//ignore jslint\r\n};\r\n\r\nCubicArcSegment.prototype.trim = function (prevEndPoint, offset) {\r\n var time = 0.5,\r\n endPoint = this.offsetPoint(this.x, this.y, this.cpX2, this.cpY2, this.cpX1, this.cpY1, prevEndPoint.x, prevEndPoint.y, time),\r\n time2 = 0.1,\r\n endPoint2 = this.offsetPoint(this.x, this.y, this.cpX2, this.cpY2, this.cpX1, this.cpY1, prevEndPoint.x, prevEndPoint.y, time2);\r\n\r\n time = offset * (time / endPoint.distanceTo(this.x, this.y) + time2 / endPoint2.distanceTo(this.x, this.y)) / 2.0;\r\n endPoint = this.offsetPoint(this.x, this.y, this.cpX2, this.cpY2, this.cpX1, this.cpY1, prevEndPoint.x, prevEndPoint.y, time);\r\n\r\n this.x = endPoint.x;\r\n this.y = endPoint.y;\r\n\r\n return this;\r\n};\r\n\r\nCubicArcSegment.prototype.offsetPoint = function (x, y, cpX1, cpY1, cpX2, cpY2, x2, y2, time) {\r\n return new Point(\r\n (1 - time) * (1 - time) * (1 - time) * x + 3 * (1 - time) * (1 - time) * time * cpX1 + 3 * (1 - time) * time * time * cpX2 + time * time * time * x2,\r\n (1 - time) * (1 - time) * (1 - time) * y + 3 * (1 - time) * (1 - time) * time * cpY1 + 3 * (1 - time) * time * time * cpY2 + time * time * time * y2\r\n );\r\n};","import { ElbowType, Visibility, ConnectorType } from '../enums';\r\nimport Rect from '../graphics/structs/Rect';\r\nimport Point from '../graphics/structs/Point';\r\nimport Polyline from '../graphics/structs/Polyline';\r\nimport MoveSegment from '../graphics/structs/MoveSegment';\r\nimport LineSegment from '../graphics/structs/LineSegment';\r\nimport CubicArcSegment from '../graphics/structs/CubicArcSegment';\r\nimport QuadraticArcSegment from '../graphics/structs/QuadraticArcSegment';\r\n\r\nexport default function BaseConnectorBundle() {\r\n this.NORMAL_ITEM_WEIGHT = 10010;\r\n this.LINE_ITEM_WEIGHT = 10000;\r\n};\r\n\r\n\r\nBaseConnectorBundle.prototype.trace = function (data, params, options) {\r\n //var data = {\r\n // graph: null, //Graph\r\n // nodeid: 0\r\n //};\r\n\r\n //var params = {\r\n // treeItemsPositions: [],\r\n // transform: null\r\n //};\r\n\r\n //var options = {\r\n // connectorType: ConnectorType.Squared,\r\n // showExtraArrows: true,\r\n // bevelSize: 4,\r\n // elbowType: ElbowType.None\r\n //};\r\n};\r\n\r\nBaseConnectorBundle.prototype.getId = function (data) {\r\n var result = \"_\" + data.nodeid;\r\n data.nodeid += 1;\r\n return result;\r\n};\r\n\r\nBaseConnectorBundle.prototype.ConnectorEdge = function (from, to, polyline, parentsArrowId, childrenArrowId, dotId, weight, fromOffset, hasMiddle, middleParent, hasArrow) {\r\n this.polyline = polyline;\r\n this.from = from;\r\n this.to = to;\r\n\r\n this.weight = weight || 0;\r\n this.fromOffset = fromOffset || 0;\r\n\r\n this.hasArrow = hasArrow || false;\r\n this.parentsArrowId = parentsArrowId;\r\n this.childrenArrowId = childrenArrowId;\r\n this.dotId = dotId;\r\n\r\n /* draw extra arrows along long segments, the hasMiddle should be true and middleParent is parent point id */\r\n this.hasMiddle = hasMiddle;\r\n this.middleParent = middleParent;\r\n this.isOppositeFlow = false;\r\n};\r\n\r\nBaseConnectorBundle.prototype.ConnectorDestination = function (options) {\r\n this.id = null;\r\n this.x = null;\r\n this.y = null;\r\n this.bundleid = null;\r\n this.hasElbow = false;\r\n this.elbowPoint1 = null;\r\n this.elbowPoint2 = null;\r\n this.visibility = null;\r\n this.isSquared = true;\r\n\r\n for (var key in options) {\r\n if (options.hasOwnProperty(key)) {\r\n this[key] = options[key];\r\n }\r\n }\r\n};\r\n\r\nBaseConnectorBundle.prototype.traceFork = function (data, params, options, parentPoint, points, hasSquared, isParents, fromOffset, showHorizontalArrows) {\r\n var startIndex, endIndex, len,\r\n connectorPoint, curvedPoints = [], bundlePoint, connectorDestination,\r\n index,\r\n polyline,\r\n bevelSize,\r\n fromPoint, fromPointId, toPoint, toPointId;\r\n\r\n if (hasSquared) {\r\n /* draw curved or angular lines on left side of pack */\r\n curvedPoints = [];\r\n for (startIndex = 0, len = points.length; startIndex < len; startIndex += 1) {\r\n connectorPoint = points[startIndex];\r\n if (connectorPoint.x < parentPoint.x && !connectorPoint.isSquared) {\r\n curvedPoints.push(connectorPoint);\r\n } else {\r\n break;\r\n }\r\n }\r\n len = curvedPoints.length;\r\n if (len > 0) {\r\n connectorDestination = curvedPoints[len - 1];\r\n bundlePoint = (connectorDestination.x == parentPoint.x) ? parentPoint : new this.ConnectorDestination({\r\n id: connectorDestination.bundleid,\r\n x: connectorDestination.x,\r\n y: parentPoint.y\r\n });\r\n this.traceAngularSegments(data, params, options, bundlePoint, curvedPoints, false);\r\n }\r\n\r\n /* draw curved or angular lines on right side of pack */\r\n curvedPoints = [];\r\n for (endIndex = points.length - 1; endIndex >= startIndex; endIndex -= 1) {\r\n connectorPoint = points[endIndex];\r\n\r\n if (connectorPoint.x > parentPoint.x && !connectorPoint.isSquared) {\r\n curvedPoints.push(connectorPoint);\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n len = curvedPoints.length;\r\n if (len > 0) {\r\n connectorDestination = curvedPoints[len - 1];\r\n bundlePoint = (connectorDestination.x == parentPoint.x) ? parentPoint : new this.ConnectorDestination({\r\n id: connectorDestination.bundleid,\r\n x: connectorDestination.x,\r\n y: parentPoint.y\r\n });\r\n this.traceAngularSegments(data, params, options, bundlePoint, curvedPoints, false);\r\n }\r\n\r\n /* calculate elbows of vertical connectors */\r\n for (index = startIndex; index <= endIndex; index += 1) {\r\n connectorPoint = points[index];\r\n\r\n bevelSize = options.bevelSize;\r\n if (bevelSize < 2) {\r\n bevelSize = 0;\r\n }\r\n\r\n switch (options.elbowType) {\r\n case ElbowType.Bevel:\r\n case ElbowType.Round:\r\n if (bevelSize > 0 && Math.abs(parentPoint.x - connectorPoint.x) > bevelSize && Math.abs(parentPoint.y - connectorPoint.y) > bevelSize) {\r\n connectorPoint.hasElbow = true;\r\n connectorPoint.elbowPoint1 = new Point(connectorPoint.x, parentPoint.y + (parentPoint.y > connectorPoint.y ? -bevelSize : bevelSize));\r\n connectorPoint.elbowPoint2 = new Point(connectorPoint.x + (parentPoint.x > connectorPoint.x ? bevelSize : -bevelSize), parentPoint.y);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n /* draw vertical segment */\r\n polyline = new Polyline();\r\n if (connectorPoint.hasElbow) {\r\n params.transform.transform3Points(connectorPoint.elbowPoint2.x, connectorPoint.elbowPoint2.y,\r\n connectorPoint.elbowPoint1.x, connectorPoint.elbowPoint2.y,\r\n connectorPoint.elbowPoint1.x, connectorPoint.elbowPoint1.y, true, this,\r\n function (fromX, fromY, toX, toY, toX2, toY2) {\r\n switch (options.elbowType) {\r\n case ElbowType.Bevel:\r\n polyline.addSegment(new MoveSegment(fromX, fromY));\r\n polyline.addSegment(new LineSegment(toX2, toY2));\r\n break;\r\n case ElbowType.Round:\r\n polyline.addSegment(new MoveSegment(fromX, fromY));\r\n polyline.addSegment(new CubicArcSegment(fromX, fromY, toX, toY, toX2, toY2));\r\n break;\r\n }\r\n });//ignore jslint\r\n\r\n params.transform.transformPoints(connectorPoint.elbowPoint1.x, connectorPoint.elbowPoint1.y, connectorPoint.x, connectorPoint.y, true, this, function (fromX, fromY, toX, toY) {\r\n polyline.addSegment(new LineSegment(toX, toY));\r\n }); //ignore jslint\r\n } else {\r\n params.transform.transformPoints(connectorPoint.x, parentPoint.y, connectorPoint.x, connectorPoint.y, true, this, function (fromX, fromY, toX, toY) {\r\n polyline.addSegment(new MoveSegment(fromX, fromY));\r\n polyline.addSegment(new LineSegment(toX, toY));\r\n }); //ignore jslint\r\n }\r\n\r\n var bundleid = (connectorPoint.x == parentPoint.x) ? parentPoint.id : connectorPoint.bundleid;\r\n var isVisible = (connectorPoint.visibility !== Visibility.Invisible);\r\n data.graph.addEdge(bundleid, connectorPoint.id, new this.ConnectorEdge(bundleid, connectorPoint.id, polyline,\r\n isParents ? connectorPoint.id : null,\r\n !isParents ? connectorPoint.id : null,\r\n null,\r\n isVisible ? this.NORMAL_ITEM_WEIGHT : this.LINE_ITEM_WEIGHT /* weight*/, fromOffset, null, null,\r\n isVisible));\r\n }\r\n\r\n /* draw segments on the right of parent point */\r\n startIndex = Math.max(startIndex - 1, 0);\r\n endIndex = Math.min(endIndex + 1, points.length - 1);\r\n\r\n fromPoint = parentPoint;\r\n fromPointId = parentPoint.id;\r\n for (index = startIndex; index <= endIndex; index += 1) {\r\n toPoint = points[index];\r\n toPointId = toPoint.bundleid;\r\n if (toPoint.x > fromPoint.x) {\r\n polyline = new Polyline();\r\n params.transform.transformPoints(fromPoint.x, parentPoint.y, toPoint.elbowPoint2 != null ? toPoint.elbowPoint2.x : toPoint.x, parentPoint.y, true, this, function (startX, startY, endX, endY) {\r\n polyline.addSegment(new MoveSegment(startX, startY));\r\n polyline.addSegment(new LineSegment(endX, endY));\r\n }); //ignore jslint\r\n data.graph.addEdge(fromPointId, toPointId, new this.ConnectorEdge(fromPointId, toPointId, polyline,\r\n null,\r\n null,\r\n fromPointId, Math.abs(toPoint.x - fromPoint.x) / 10000.0 /* weight */,\r\n fromOffset,\r\n /* draw middle arrows */\r\n showHorizontalArrows, isParents ? toPointId : fromPointId)\r\n );\r\n\r\n fromPoint = toPoint.elbowPoint2 || toPoint;\r\n fromPointId = toPointId;\r\n }\r\n }\r\n\r\n /* draw segments on the left of parent point */\r\n fromPoint = parentPoint;\r\n fromPointId = parentPoint.id;\r\n for (index = endIndex; index >= startIndex; index -= 1) {\r\n toPoint = points[index];\r\n toPointId = toPoint.bundleid;\r\n if (toPoint.x < fromPoint.x) {\r\n polyline = new Polyline();\r\n params.transform.transformPoints(fromPoint.x, parentPoint.y, toPoint.elbowPoint2 != null ? toPoint.elbowPoint2.x : toPoint.x, parentPoint.y, true, this, function (startX, startY, endX, endY) {\r\n polyline.addSegment(new MoveSegment(startX, startY));\r\n polyline.addSegment(new LineSegment(endX, endY));\r\n }); //ignore jslint\r\n data.graph.addEdge(fromPointId, toPointId, new this.ConnectorEdge(fromPointId, toPointId, polyline, null, null, fromPointId,\r\n Math.abs(toPoint.x - fromPoint.x) / 10000.0 /* weight */, fromOffset,\r\n /* draw middle arrows */\r\n showHorizontalArrows, isParents ? toPointId : fromPointId)\r\n );\r\n\r\n fromPoint = toPoint.elbowPoint2 || toPoint;\r\n fromPointId = toPointId;\r\n }\r\n }\r\n } else {\r\n /* all lines are angular or curved */\r\n this.traceAngularSegments(data, params, options, parentPoint, points, true);\r\n }\r\n};\r\n\r\nBaseConnectorBundle.prototype.traceAngularSegments = function (data, params, options, bundlePoint, points, drawToBundle) {\r\n var index, len,\r\n rect,\r\n point,\r\n polyline;\r\n\r\n for (index = 0, len = points.length; index < len; index += 1) {\r\n point = points[index];\r\n\r\n polyline = new Polyline();\r\n\r\n params.transform.transformPoint(bundlePoint.x, bundlePoint.y, true, this, function (x, y) {\r\n polyline.addSegment(new MoveSegment(x, y));\r\n });//ignore jslint\r\n\r\n switch (options.connectorType) {\r\n case ConnectorType.Angular:\r\n params.transform.transformPoint(point.x, point.y, true, this, function (x, y) {\r\n polyline.addSegment(new LineSegment(x, y));\r\n });//ignore jslint\r\n break;\r\n case ConnectorType.Curved:\r\n rect = new Rect(bundlePoint, point);\r\n\r\n if (drawToBundle) {\r\n if (bundlePoint.x > rect.x) {\r\n params.transform.transform3Points(rect.right(), rect.verticalCenter(), rect.x, rect.verticalCenter(), rect.x, rect.bottom(), true,\r\n this, function (cpX1, cpY1, cpX2, cpY2, x, y) {\r\n polyline.addSegment(new CubicArcSegment(cpX1, cpY1, cpX2, cpY2, x, y));\r\n });//ignore jslint\r\n }\r\n else {\r\n params.transform.transform3Points(rect.x, rect.verticalCenter(), rect.right(), rect.verticalCenter(), rect.right(), rect.bottom(), true,\r\n this, function (cpX1, cpY1, cpX2, cpY2, x, y) {\r\n polyline.addSegment(new CubicArcSegment(cpX1, cpY1, cpX2, cpY2, x, y));\r\n });//ignore jslint\r\n }\r\n } else {\r\n if (bundlePoint.x > rect.x) {\r\n params.transform.transformPoints(rect.x, rect.y, rect.x, rect.bottom(), true,\r\n this, function (cpX, cpY, x, y) {\r\n polyline.addSegment(new QuadraticArcSegment(cpX, cpY, x, y));\r\n });//ignore jslint\r\n } else {\r\n params.transform.transformPoints(rect.right(), rect.y, rect.right(), rect.bottom(), true,\r\n this, function (cpX, cpY, x, y) {\r\n polyline.addSegment(new QuadraticArcSegment(cpX, cpY, x, y));\r\n });//ignore jslint\r\n }\r\n }\r\n break;\r\n }\r\n var isVisible = (point.visibility !== Visibility.Invisible);\r\n data.graph.addEdge(bundlePoint.id, point.id, new this.ConnectorEdge(bundlePoint.id, point.id, polyline,\r\n null,\r\n isVisible ? point.id : null,\r\n isVisible ? this.NORMAL_ITEM_WEIGHT : this.LINE_ITEM_WEIGHT, null, null, null,\r\n true));\r\n }\r\n};","import BaseConnectorBundle from './BaseConnectorBundle';\r\nimport { ConnectorType, Visibility } from '../enums';\r\nimport Polyline from '../graphics/structs/Polyline';\r\nimport MoveSegment from '../graphics/structs/MoveSegment';\r\nimport LineSegment from '../graphics/structs/LineSegment';\r\n\r\nexport default function VerticalConnectorBundle(fromItems, toItems, dotId) {\r\n this.fromItems = fromItems;\r\n this.toItems = toItems;\r\n\r\n this.dotId = dotId || null;\r\n\r\n this.fromOffset = 0;\r\n this.fromStackSize = 0;\r\n};\r\n\r\nVerticalConnectorBundle.prototype = new BaseConnectorBundle();\r\n\r\nVerticalConnectorBundle.prototype.trace = function (data, params, options) {\r\n var parents, children, items,\r\n treeItemId, treeItemPosition,\r\n index, len,\r\n isSquared, hasSquared,\r\n parentHorizontalCenter,\r\n parentsConnectorOffset,\r\n childrenConnectorOffset,\r\n connectorPoint,\r\n connectorStep,\r\n chartHasSquaredConnectors = (options.connectorType === ConnectorType.Squared);\r\n\r\n /* Draw fork for parents */\r\n parents = [];\r\n if (this.fromItems.length > 0) {\r\n items = this.fromItems;\r\n for (index = 0, len = items.length; index < len; index += 1) {\r\n treeItemId = items[index];\r\n treeItemPosition = params.treeItemsPositions[treeItemId];\r\n\r\n connectorPoint = new this.ConnectorDestination({\r\n id: params.nestedLayoutBottomConnectorIds.hasOwnProperty(treeItemId) ? params.nestedLayoutBottomConnectorIds[treeItemId] : treeItemId,\r\n bundleid: this.getId(data),\r\n x: treeItemPosition.actualPosition.horizontalCenter(),\r\n y: treeItemPosition.actualPosition.bottom(),\r\n isSquared: true,\r\n visibility: treeItemPosition.actualVisibility\r\n });\r\n parents.push(connectorPoint);\r\n }\r\n parents.sort(function (a, b) { return a.x - b.x; });\r\n\r\n /* Find offset of horizontal connector line between parents */\r\n parentsConnectorOffset = treeItemPosition.bottomConnectorShift - treeItemPosition.bottomConnectorInterval * (this.fromStackSize - this.fromOffset + 1);\r\n }\r\n\r\n children = [];\r\n if (this.toItems.length > 0) {\r\n hasSquared = false;\r\n\r\n items = this.toItems;\r\n for (index = 0; index < items.length; index += 1) {\r\n treeItemId = items[index];\r\n treeItemPosition = params.treeItemsPositions[treeItemId];\r\n\r\n isSquared = true;\r\n switch (treeItemPosition.actualVisibility) {\r\n case Visibility.Dot:\r\n case Visibility.Line:\r\n isSquared = chartHasSquaredConnectors;\r\n break;\r\n }\r\n connectorStep = 0;\r\n connectorPoint = new this.ConnectorDestination({\r\n id: treeItemId,\r\n bundleid: this.getId(data),\r\n x: (treeItemPosition.actualPosition.horizontalCenter() + connectorStep),\r\n y: treeItemPosition.actualPosition.top(),\r\n isSquared: isSquared,\r\n visibility: treeItemPosition.actualVisibility\r\n });\r\n children.push(connectorPoint);\r\n\r\n /* is true if any child point has squared connector */\r\n hasSquared = hasSquared || connectorPoint.isSquared;\r\n }\r\n children.sort(function (a, b) { return a.x - b.x; });\r\n\r\n /* Find offset of horizontal connector line between children */\r\n childrenConnectorOffset = treeItemPosition.topConnectorShift;\r\n }\r\n\r\n if (children.length == 1) {\r\n parentHorizontalCenter = children[0].x;\r\n } else if (parents.length == 1) {\r\n parentHorizontalCenter = parents[0].x;\r\n } else if (children.length > 0 && parents.length > 0) {\r\n parentHorizontalCenter = (parents[0].x + parents[parents.length - 1].x + children[0].x + children[children.length - 1].x) / 4.0;\r\n } else if (children.length > 0) {\r\n parentHorizontalCenter = (children[0].x + children[children.length - 1].x) / 2.0;\r\n } else {\r\n parentHorizontalCenter = (parents[0].x + parents[parents.length - 1].x) / 2.0;\r\n }\r\n\r\n var topCenterPoint = null;\r\n if (parents.length > 0) {\r\n topCenterPoint = new this.ConnectorDestination({\r\n id: (children.length == 0 && this.dotId ? this.dotId : this.getId(data)),\r\n x: parentHorizontalCenter,\r\n y: parentsConnectorOffset\r\n });\r\n this.traceFork(data, params, options, topCenterPoint, parents, true, true, this.fromOffset, options.showExtraArrows);\r\n }\r\n\r\n var bottomCenterPoint = null;\r\n if (children.length > 0) {\r\n bottomCenterPoint = new this.ConnectorDestination({\r\n id: (parents.length == 0 && this.dotId ? this.dotId : this.getId(data)),\r\n x: parentHorizontalCenter,\r\n y: childrenConnectorOffset\r\n });\r\n if (topCenterPoint != null && bottomCenterPoint.y == topCenterPoint.y) {\r\n bottomCenterPoint = topCenterPoint;\r\n }\r\n this.traceFork(data, params, options, bottomCenterPoint, children, hasSquared, false, 0, options.showExtraArrows);\r\n }\r\n\r\n /* draw connector line between children and parents */\r\n if (topCenterPoint != null && bottomCenterPoint != null && topCenterPoint.id != bottomCenterPoint.id) {\r\n params.transform.transformPoints(topCenterPoint.x, topCenterPoint.y, bottomCenterPoint.x, bottomCenterPoint.y,\r\n true, this, function (fromX, fromY, toX, toY) {\r\n var polyline = new Polyline();\r\n polyline.addSegment(new MoveSegment(fromX, fromY));\r\n polyline.addSegment(new LineSegment(toX, toY));\r\n\r\n data.graph.addEdge(topCenterPoint.id, bottomCenterPoint.id, new this.ConnectorEdge(topCenterPoint.id, bottomCenterPoint.id, polyline,\r\n null,\r\n null,\r\n null, 0/* weight */));\r\n });\r\n }\r\n};","import BaseConnectorBundle from './BaseConnectorBundle';\r\nimport Polyline from '../graphics/structs/Polyline';\r\nimport MoveSegment from '../graphics/structs/MoveSegment';\r\nimport LineSegment from '../graphics/structs/LineSegment';\r\nimport { Visibility } from '../enums';\r\n\r\nexport default function HorizontalConnectorBundle(fromItem, toItem) {\r\n this.fromItem = fromItem;\r\n this.toItem = toItem;\r\n};\r\n\r\nHorizontalConnectorBundle.prototype = new BaseConnectorBundle();\r\n\r\nHorizontalConnectorBundle.prototype.trace = function (data, params, options) {\r\n var fromItemId = this.fromItem,\r\n toItemId = this.toItem,\r\n fromItemPosition = params.treeItemsPositions[fromItemId],\r\n toItemPosition = params.treeItemsPositions[toItemId],\r\n polyline = new Polyline();\r\n\r\n if (fromItemPosition.actualPosition.x < toItemPosition.actualPosition.x) {\r\n params.transform.transformPoints(fromItemPosition.actualPosition.right(), fromItemPosition.horizontalConnectorsShift,\r\n toItemPosition.actualPosition.x, toItemPosition.horizontalConnectorsShift, true, this, function (fromX, fromY, toX, toY) {\r\n polyline.addSegment(new MoveSegment(fromX, fromY));\r\n polyline.addSegment(new LineSegment(toX, toY));\r\n });//ignore jslint\r\n } else {\r\n params.transform.transformPoints(fromItemPosition.actualPosition.x, fromItemPosition.horizontalConnectorsShift,\r\n toItemPosition.actualPosition.right(), fromItemPosition.horizontalConnectorsShift, true, this, function (fromX, fromY, toX, toY) {\r\n polyline.addSegment(new MoveSegment(fromX, fromY));\r\n polyline.addSegment(new LineSegment(toX, toY));\r\n });//ignore jslint\r\n }\r\n var toItemIsVisible = toItemPosition.actualVisibility !== Visibility.Invisible;\r\n var fromItemIsVisible = fromItemPosition.actualVisibility !== Visibility.Invisible;\r\n\r\n data.graph.addEdge(fromItemId, toItemId, new this.ConnectorEdge(fromItemId, toItemId, polyline,\r\n toItemIsVisible ? toItemId : null,\r\n fromItemIsVisible ? fromItemId : null,\r\n null,\r\n (toItemIsVisible || fromItemIsVisible) ? this.NORMAL_ITEM_WEIGHT : this.LINE_ITEM_WEIGHT, \r\n null, null, null,\r\n true)\r\n );\r\n};","import TreeLevelConnectorStackSize from '../../models/TreeLevelConnectorStackSize';\r\nimport TreeLevels from '../../algorithms/TreeLevels';\r\nimport Pile from '../../algorithms/Pile';\r\nimport { SideFlag } from '../../enums';\r\nimport VerticalConnectorBundle from '../../connectors/VerticalConnectorBundle';\r\nimport HorizontalConnectorBundle from '../../connectors/HorizontalConnectorBundle';\r\n\r\n/* Read visual tree\r\n populate treeLevels array of type TreeLevel\r\n TreeLevel object contains ordered list of all its items \r\n plus when items added to that collection we store level in item\r\n*/\r\nexport default function VisualTreeLevelsTask(visualTreeTask, itemTemplateParamsTask) {\r\n var _data = {\r\n treeLevels: null, /* TreeLevels */\r\n bundles: null, /* array of BaseConnectorBundle objects */\r\n connectorStacks: null /* array of TreeLevelConnectorStackSize objects, \r\n it keeps total number of horizontal connectors lines between parents and children stack on top of each other */\r\n },\r\n _nullTreeLevelConnectorStackSize = new TreeLevelConnectorStackSize();\r\n\r\n function process() {\r\n var visualTree = visualTreeTask.getVisualTree();\r\n\r\n _data.treeLevels = TreeLevels();\r\n\r\n visualTree.loopLevels(this, function (treeItemId, treeItem, levelIndex) {\r\n _data.treeLevels.addItem(levelIndex, treeItemId, treeItem);\r\n });\r\n\r\n _data.bundles = [];\r\n _data.connectorStacks = [];\r\n\r\n recalcLevelsDepth(_data.bundles, _data.connectorStacks, _data.treeLevels, visualTree);\r\n\r\n return true;\r\n }\r\n\r\n function recalcLevelsDepth(bundles, connectorStacks, treeLevels, orgTree, orgPartners) {\r\n var index, len,\r\n index2, len2,\r\n index3, len3,\r\n treeItem,\r\n itemPosition,\r\n bundle, bundlesToStack, bundlesByItemId = {},\r\n startIndex, endIndex, stackSegments;\r\n\r\n\r\n treeLevels.loopLevels(this, function (levelIndex, treeLevel) {\r\n var stacksSizes = new TreeLevelConnectorStackSize();\r\n connectorStacks[levelIndex] = stacksSizes;\r\n\r\n bundlesToStack = [];\r\n\r\n treeLevels.loopLevelItems(this, levelIndex, function (itemid, treeItem, position) {\r\n var parents = [];\r\n if (!bundlesByItemId.hasOwnProperty(itemid)) {\r\n if (treeItem.connectorPlacement & SideFlag.Bottom) {\r\n parents.push(itemid);\r\n }\r\n parents = parents.concat(treeItem.partners);\r\n\r\n if (parents.length > 0) {\r\n bundle = new VerticalConnectorBundle(parents, []);\r\n\r\n for (var index = 0, len = parents.length; index < len; index += 1) {\r\n bundlesByItemId[parents[index]] = bundle;\r\n }\r\n\r\n orgTree.loopChildren(this, itemid, function (childid, child, index) {\r\n if (child.connectorPlacement & SideFlag.Top) {\r\n bundle.toItems.push(childid);\r\n }\r\n }); //ignore jslint\r\n\r\n if (parents.length > 1) {\r\n bundlesToStack.push(bundle);\r\n }\r\n\r\n if (bundle.fromItems.length > 1 || bundle.toItems.length > 0) {\r\n bundles.push(bundle);\r\n }\r\n }\r\n }\r\n\r\n if (treeItem.connectorPlacement & SideFlag.Left) {\r\n bundle = new HorizontalConnectorBundle(itemid, treeLevels.getPrevItem(itemid));\r\n bundles.push(bundle);\r\n }\r\n\r\n if (treeItem.connectorPlacement & SideFlag.Right) {\r\n bundle = new HorizontalConnectorBundle(itemid, treeLevels.getNextItem(itemid));\r\n bundles.push(bundle);\r\n }\r\n });\r\n\r\n if (bundlesToStack.length > 0) {\r\n /* find minimum and maximum partner index at level */\r\n stackSegments = Pile();\r\n for (index2 = 0, len2 = bundlesToStack.length; index2 < len2; index2 += 1) {\r\n bundle = bundlesToStack[index2];\r\n\r\n startIndex = null;\r\n endIndex = null;\r\n for (index3 = 0, len3 = bundle.fromItems.length; index3 < len3; index3 += 1) {\r\n itemPosition = treeLevels.getItemPosition(bundle.fromItems[index3]);\r\n\r\n startIndex = (startIndex != null) ? Math.min(startIndex, itemPosition) : itemPosition;\r\n endIndex = (endIndex != null) ? Math.max(endIndex, itemPosition) : itemPosition;\r\n }\r\n stackSegments.add(startIndex, endIndex, bundle);\r\n }\r\n\r\n stacksSizes.parentsStackSize = stackSegments.resolve(this, function (from, to, bundle, offset, stackSize) {\r\n bundle.fromOffset = offset + 1;\r\n bundle.fromStackSize = stackSize;\r\n });//ignore jslint\r\n }\r\n });\r\n }\r\n\r\n function getTreeLevels() {\r\n return _data.treeLevels;\r\n }\r\n\r\n function getBundles() {\r\n return _data.bundles;\r\n }\r\n\r\n function getNestedLayoutParentConnectorIds() {\r\n return {}; /* org chart does not support nested layouts */\r\n }\r\n\r\n function getNestedLayoutBottomConnectorIds() {\r\n return {}; /* org chart does not support nested layouts */\r\n }\r\n\r\n function getConnectorsStacksSizes(levelid) {\r\n return _data.connectorStacks[levelid] || _nullTreeLevelConnectorStackSize;\r\n }\r\n\r\n return {\r\n process: process,\r\n getTreeLevels: getTreeLevels,\r\n getBundles: getBundles,\r\n getConnectorsStacksSizes: getConnectorsStacksSizes,\r\n getNestedLayoutParentConnectorIds: getNestedLayoutParentConnectorIds,\r\n getNestedLayoutBottomConnectorIds: getNestedLayoutBottomConnectorIds\r\n };\r\n};","export default function OrgExtractNestedLayoutsTask(extractNestedLayoutsOptionTask, bindFamilyConnectorsTask) {\r\n function process(debug) {\r\n return false;\r\n }\r\n\r\n function getNestedLayoutParentConnectorIds() {\r\n return {};\r\n }\r\n\r\n function getNestedLayoutBottomConnectorIds() {\r\n return {};\r\n }\r\n\r\n function getBundles() {\r\n return [];\r\n }\r\n\r\n function getLayouts() {\r\n return {};\r\n }\r\n\r\n return {\r\n process: process,\r\n getNestedLayoutParentConnectorIds: getNestedLayoutParentConnectorIds,\r\n getNestedLayoutBottomConnectorIds: getNestedLayoutBottomConnectorIds,\r\n getBundles: getBundles,\r\n getLayouts: getLayouts\r\n };\r\n};\r\n","import { Visibility } from '../enums';\r\n\r\nexport default function TreeLevelPosition(source) {\r\n this.currentvisibility = Visibility.Normal;\r\n this.actualVisibility = Visibility.Normal;\r\n\r\n this.shift = 0.0; /* top abolute position of items in level */\r\n this.depth = 0.0; /* maximum height of items in level */\r\n this.nextLevelShift = 0.0; /* next level relative position */\r\n this.horizontalConnectorsDepth = 0; /* relative position of horizontal connectors between items */\r\n this.topConnectorShift = 0.0; /* relative position of top connector horizontal line */\r\n this.connectorShift = 0.0; /* relative position of bottom horizontal line */\r\n this.levelSpace = 0.0; /* user interval between prev level and this one based on options set by user, if number of horizontal connections is bigger that one it is proportionally increased */\r\n\r\n this.currentOffset = 0.0; /* this is x axis coordinate offset, it used to calculate horizontal items position in level */\r\n\r\n this.labels = [];\r\n this.labelsRect = null;\r\n this.showLabels = true;\r\n this.hasFixedLabels = false;\r\n\r\n if (source != null) {\r\n for (var property in source) {\r\n if (source.hasOwnProperty(property)) {\r\n this[property] = source[property];\r\n }\r\n }\r\n }\r\n};\r\n\r\nTreeLevelPosition.prototype.setShift = function (shift, levelSpace, topConnectorSpace, connectorSpace, partnerConnectorOffset) {\r\n this.shift = shift;\r\n this.levelSpace = levelSpace;\r\n\r\n this.topConnectorShift = -levelSpace / 2.0 - topConnectorSpace;\r\n this.connectorShift = this.depth + connectorSpace + (partnerConnectorOffset + 1) * (levelSpace / 2.0);\r\n this.nextLevelShift = topConnectorSpace + this.depth + connectorSpace + levelSpace + partnerConnectorOffset * levelSpace / 2.0;\r\n\r\n return this.nextLevelShift;\r\n};\r\n\r\nTreeLevelPosition.prototype.getNodesBottom = function() {\r\n return this.shift + this.depth;\r\n}\r\n\r\nTreeLevelPosition.prototype.toString = function () {\r\n return this.currentvisibility;\r\n};","import Rect from '../graphics/structs/Rect';\r\nimport { Visibility } from '../enums';\r\n\r\nexport default function TreeItemPosition(source) {\r\n this.level = null;\r\n \r\n this.actualVisibility = Visibility.Normal;\r\n this.actualSize = null;\r\n this.actualPosition = null;\r\n this.contentPosition = null;\r\n\r\n this.horizontalConnectorsShift = null;\r\n this.topConnectorShift = null;\r\n this.topConnectorInterval = 0;\r\n this.bottomConnectorShift = null;\r\n this.bottomConnectorInterval = 0;\r\n\r\n /* following properties are being used in matrix layout to draw connector lines */\r\n this.leftMedianOffset = null; /* this property is position of vertical connector lines going between columns of nodes in matrix layout on left side of the node */\r\n this.rightMedianOffset = null; /* the same but on the right side */\r\n\r\n if (source != null) {\r\n for (var property in source) {\r\n if (source.hasOwnProperty(property)) {\r\n switch (property) {\r\n case 'actualPosition':\r\n this.actualPosition = new Rect(source.actualPosition);\r\n break;\r\n default:\r\n this[property] = source[property];\r\n break;\r\n }\r\n\r\n }\r\n }\r\n }\r\n};\r\n","import Rect from '../../../graphics/structs/Rect';\r\nimport { VerticalAlignmentType, HorizontalAlignmentType, Visibility, GroupByType, SideFlag } from '../../../enums';\r\nimport TreeLevelPosition from '../../../models/TreeLevelPosition';\r\nimport TreeItemPosition from '../../../models/TreeItemPosition';\r\n\r\nfunction ChildLayoutPosition( offset, leftPadding, rightPadding ) {\r\n this.offset = offset;\r\n this.leftPadding = leftPadding;\r\n this.rightPadding = rightPadding;\r\n}\r\n\r\nexport default function OrgLayout(visualTree, treeLevels, leftMargins, rightMargins, getConnectorsStacksSizes) {\r\n this.visualTree = visualTree;\r\n this.treeLevels = treeLevels; // TreeLevels of OrgItem used properties: isVisible\r\n this.leftMargins = leftMargins;\r\n this.rightMargins = rightMargins;\r\n this.getConnectorsStacksSizes = getConnectorsStacksSizes;\r\n\r\n this.treeLevelsPositions = [];\r\n this.childLayoutsPositions = {};\r\n};\r\n\r\nOrgLayout.prototype.loop = function (thisArg, onItem) {\r\n if(onItem != null) {\r\n var zeroBasedLevelIndex = 0;\r\n this.treeLevels.loopLevels(this, function (levelIndex) {\r\n this.treeLevels.loopLevelItems(this, levelIndex, function (treeItemId, treeItem) {\r\n onItem.call(thisArg, treeItem, zeroBasedLevelIndex);\r\n });\r\n zeroBasedLevelIndex+=1;\r\n });\r\n }\r\n};\r\n\r\n\r\nOrgLayout.prototype.measure = function (levelVisibility, isCursor, isSelected, treeItemTemplate, treeItemsPositions, options) {\r\n this.treeLevelsPositions = [];\r\n\r\n this.treeLevels.loopLevels(this, function (index, levelContext) {\r\n var treeLevelPosition = new TreeLevelPosition();\r\n this.treeLevelsPositions.push(treeLevelPosition);\r\n });\r\n\r\n this.setOffsets(this.treeLevels, treeItemsPositions, this.childLayoutsPositions, this.treeLevelsPositions, this.visualTree, this.rightMargins, this.leftMargins, options.intervals, options.arrowsDirection, options.linesWidth, options.cousinsIntervalMultiplier, options.horizontalAlignment, options.padding);\r\n this.setLevelsDepth(this.treeLevels, treeItemsPositions, this.treeLevelsPositions, options.verticalAlignment);\r\n this.shiftLevels(this.treeLevelsPositions, options.padding.top, options.shifts, options.arrowsDirection, options.linesWidth, this.getConnectorsStacksSizes);\r\n\r\n var treeItemPosition = new TreeItemPosition();\r\n treeItemPosition.actualVisibility = Visibility.Normal;\r\n treeItemPosition.actualSize = this.getLayoutSize(this.treeLevels, treeItemsPositions, this.childLayoutsPositions, this.treeLevelsPositions, options.padding);\r\n return treeItemPosition;\r\n};\r\n\r\nOrgLayout.prototype.getLayoutSize = function (treeLevels, treeItemsPositions, childLayoutsPositions, treeLevelsPositions, padding) {\r\n return new Rect(0, 0, Math.round(this.getLayoutWidth(treeLevels, treeItemsPositions, childLayoutsPositions, padding)), Math.round(this.getLayoutHeight(treeLevelsPositions, padding)));\r\n};\r\n\r\nOrgLayout.prototype.getLayoutWidth = function (treeLevels, treeItemsPositions, childLayoutsPositions, padding) {\r\n var result = 0;\r\n treeLevels.loopLevels(this, function (levelIndex, level) {\r\n var levelLength = treeLevels.getLevelLength(levelIndex);\r\n\r\n if (levelLength > 0) {\r\n var itemId = treeLevels.getItemAtPosition(levelIndex, levelLength - 1),\r\n treeItemPosition = treeItemsPositions[itemId],\r\n childLayoutPosition = childLayoutsPositions[itemId];\r\n result = Math.max(result, childLayoutPosition.offset + treeItemPosition.actualSize.width + padding.right);\r\n }\r\n });\r\n return result;\r\n};\r\n\r\nOrgLayout.prototype.getLayoutHeight = function (treeLevelsPositions, padding) {\r\n var len = treeLevelsPositions.length,\r\n treeLevel = treeLevelsPositions[len - 1];\r\n return treeLevel.getNodesBottom() + padding.bottom;\r\n};\r\n\r\nOrgLayout.prototype.setLevelsDepth = function (treeLevels, treeItemsPositions, treeLevelsPositions, verticalAlignment) {\r\n var minimalDepth,\r\n dotsDepth;\r\n\r\n treeLevels.loopLevels(this, function (levelIndex, treeLevel) {\r\n var treeLevelPosition = treeLevelsPositions[levelIndex];\r\n treeLevelPosition.shift = 0.0;\r\n treeLevelPosition.depth = 0.0;\r\n treeLevelPosition.actualVisibility = Visibility.Invisible;\r\n\r\n minimalDepth = null; /* minimum height of non-dot items in level */\r\n dotsDepth = null; /* maximum dots height */\r\n\r\n treeLevels.loopLevelItems(this, levelIndex, function (itemId, treeItem, position) {\r\n var treeItemPosition = treeItemsPositions[itemId];\r\n treeLevelPosition.depth = Math.max(treeLevelPosition.depth, treeItemPosition.actualSize.height);\r\n switch (treeItemPosition.actualVisibility) {\r\n case Visibility.Dot:\r\n case Visibility.Line:\r\n case Visibility.Invisible:\r\n dotsDepth = !dotsDepth ? treeItemPosition.actualSize.height : Math.min(dotsDepth, treeItemPosition.actualSize.height);\r\n break;\r\n default:\r\n minimalDepth = !minimalDepth ? treeItemPosition.actualSize.height : Math.min(minimalDepth, treeItemPosition.actualSize.height);\r\n break;\r\n }\r\n\r\n treeLevelPosition.actualVisibility = Math.min(treeLevelPosition.actualVisibility, treeItemPosition.actualVisibility);\r\n });\r\n\r\n if (minimalDepth == null) {\r\n minimalDepth = treeLevelPosition.depth;\r\n }\r\n if (dotsDepth != null && dotsDepth > minimalDepth) {\r\n minimalDepth = dotsDepth;\r\n }\r\n\r\n switch (verticalAlignment) {\r\n case VerticalAlignmentType.Top:\r\n treeLevelPosition.horizontalConnectorsDepth = minimalDepth / 2.0;\r\n break;\r\n case VerticalAlignmentType.Middle:\r\n treeLevelPosition.horizontalConnectorsDepth = treeLevelPosition.depth / 2.0;\r\n break;\r\n case VerticalAlignmentType.Bottom:\r\n treeLevelPosition.horizontalConnectorsDepth = treeLevelPosition.depth - minimalDepth / 2.0;\r\n break;\r\n }\r\n });\r\n};\r\n\r\nOrgLayout.prototype.shiftLevels = function (treeLevelsPositions, shift, shifts, arrowsDirection, linesWidth, getConnectorsStacksSizes) {\r\n var index,\r\n len,\r\n treeLevelPosition,\r\n childrenSpace = 0,\r\n parentsSpace = 0,\r\n arrowTipLength = linesWidth * 8;\r\n\r\n switch (arrowsDirection) {\r\n case GroupByType.Parents:\r\n childrenSpace = arrowTipLength;\r\n parentsSpace = 0;\r\n break;\r\n case GroupByType.Children:\r\n childrenSpace = 0;\r\n parentsSpace = arrowTipLength;\r\n break;\r\n }\r\n\r\n var isTopLevel = true;\r\n for (index = 0, len = treeLevelsPositions.length; index < len; index += 1) {\r\n treeLevelPosition = treeLevelsPositions[index];\r\n \r\n if(isTopLevel && treeLevelPosition.actualVisibility == Visibility.Invisible) {\r\n treeLevelPosition.setShift(0, 0, 0, 0, 0);\r\n } else {\r\n var parentsStackSize = getConnectorsStacksSizes(index).parentsStackSize;\r\n shift += treeLevelPosition.setShift(shift, shifts[treeLevelPosition.actualVisibility], parentsSpace, childrenSpace, parentsStackSize);\r\n isTopLevel = false;\r\n }\r\n }\r\n};\r\n\r\nOrgLayout.prototype.setOffsets = function (treeLevels, treeItemsPositions, childLayoutsPositions, treeLevelsPositions, visualTree, rightMargins, leftMargins, intervals, arrowsDirection, linesWidth, cousinsIntervalMultiplier, horizontalAlignment, padding) {\r\n var index, len;\r\n\r\n for (index = 0, len = treeLevelsPositions.length; index < len; index += 1) {\r\n treeLevelsPositions[index].currentOffset = 0.0;\r\n }\r\n\r\n visualTree.loopPostOrder(this, function (treeItemId, treeItem, parentId, parent) {\r\n var treeItemPosition = treeItemsPositions[treeItemId],\r\n treeItemVisibility = treeItemPosition.actualVisibility,\r\n treeItemLevelIndex = treeLevels.getLevelIndex(treeItemId),\r\n treeLevelPosition = treeLevelsPositions[treeItemLevelIndex],\r\n treeItemPadding = intervals[treeItemVisibility === Visibility.Auto ? treeLevelPosition.currentvisibility : treeItemVisibility] / 2.0,\r\n index,\r\n len,\r\n offset,\r\n siblings,\r\n gaps,\r\n gap,\r\n leftMargin,\r\n parentItem,\r\n groups,\r\n items,\r\n item1,\r\n item2,\r\n groupIndex,\r\n groupOffset,\r\n group,\r\n sibling,\r\n leftPadding = treeLevelPosition.currentOffset > 0 ? treeItemPadding + treeItemPadding * (treeItem.relationDegree) * cousinsIntervalMultiplier : padding.left,\r\n arrowTipLength = linesWidth * 8;\r\n\r\n childLayoutsPositions[treeItemId] = new ChildLayoutPosition(0, leftPadding, treeItemPadding);\r\n var childLayoutPosition = childLayoutsPositions[treeItemId];\r\n\r\n if (arrowsDirection != GroupByType.None) {\r\n if (treeItem.connectorPlacement & SideFlag.Left) {\r\n childLayoutPosition.leftPadding += arrowTipLength;\r\n }\r\n if (treeItem.connectorPlacement & SideFlag.Right) {\r\n childLayoutPosition.rightPadding += arrowTipLength;\r\n }\r\n }\r\n childLayoutPosition.offset = treeLevelPosition.currentOffset + childLayoutPosition.leftPadding;\r\n treeLevelPosition.currentOffset = childLayoutPosition.offset + treeItemPosition.actualSize.width + childLayoutPosition.rightPadding;\r\n\r\n if (visualTree.hasChildren(treeItemId)) {\r\n offset = this.getChildrenOffset(treeItem, treeItemsPositions, childLayoutsPositions, visualTree, horizontalAlignment);\r\n if (offset > 0) {\r\n this.offsetItemChildren(treeItem, offset, treeLevels, visualTree, treeItemsPositions, childLayoutsPositions, treeLevelsPositions);\r\n }\r\n else if (offset < 0) {\r\n offset = -offset;\r\n this.offsetItem(treeItem, offset, treeLevels, treeItemsPositions, childLayoutsPositions, treeLevelsPositions);\r\n\r\n siblings = null;\r\n gaps = {};\r\n leftMargin = null;\r\n parentItem = visualTree.parent(treeItem.id);\r\n if (parentItem !== null) {\r\n visualTree.loopChildrenReversed(this, parentItem.id, function (childItemId, childItem, index) {\r\n if (childItem === treeItem) {\r\n siblings = [];\r\n }\r\n else if (siblings !== null) {\r\n gap = this.getGapBetweenSiblings(childItem, treeItem, rightMargins, leftMargins, treeItemsPositions, childLayoutsPositions);\r\n gaps[childItem.id] = gap;\r\n if (gap > 0) {\r\n siblings.splice(0, 0, childItem);\r\n }\r\n else {\r\n leftMargin = childItem;\r\n return true;\r\n }\r\n }\r\n });\r\n\r\n if (siblings.length > 0) {\r\n groups = null;\r\n if (leftMargin !== null) {\r\n items = [leftMargin];\r\n items = items.concat(siblings);\r\n items.push(treeItem);\r\n\r\n groups = [[leftMargin]];\r\n for (index = 1, len = items.length; index < len; index += 1) {\r\n item1 = items[index - 1];\r\n item2 = items[index];\r\n if (item1.gravity == HorizontalAlignmentType.Right || item2.gravity == HorizontalAlignmentType.Left) {\r\n groups[groups.length - 1].push(item2);\r\n }\r\n else {\r\n groups.push([item2]);\r\n }\r\n }\r\n }\r\n else {\r\n groups = [siblings.slice(0)];\r\n groups[groups.length - 1].push(treeItem);\r\n }\r\n\r\n // align items to the right\r\n if (groups.length > 0) {\r\n siblings = groups[groups.length - 1];\r\n for (index = siblings.length - 2; index >= 0; index -= 1) {\r\n sibling = siblings[index];\r\n gap = gaps[sibling.id];\r\n offset = Math.min(gap, offset);\r\n\r\n this.offsetItem(sibling, offset, treeLevels, treeItemsPositions, childLayoutsPositions, treeLevelsPositions);\r\n this.offsetItemChildren(sibling, offset, treeLevels, visualTree, treeItemsPositions, childLayoutsPositions, treeLevelsPositions);\r\n }\r\n }\r\n\r\n // spread items proportionally\r\n groupOffset = offset / (groups.length - 1);\r\n for (groupIndex = groups.length - 2; groupIndex > 0; groupIndex -= 1) {\r\n group = groups[groupIndex];\r\n for (index = group.length - 1; index >= 0; index -= 1) {\r\n sibling = group[index];\r\n gap = gaps[sibling.id];\r\n offset = Math.min(groupIndex * groupOffset, Math.min(gap, offset));\r\n\r\n this.offsetItem(sibling, offset, treeLevels, treeItemsPositions, childLayoutsPositions, treeLevelsPositions);\r\n this.offsetItemChildren(sibling, offset, treeLevels, visualTree, treeItemsPositions, childLayoutsPositions, treeLevelsPositions);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n};\r\n\r\nOrgLayout.prototype.getGapBetweenSiblings = function(leftItem, rightItem, rightMargins, leftMargins, treeItemsPositions, childLayoutsPositions) {\r\n var result = null,\r\n itemRightMargins = this.getRightMargins(leftItem, rightMargins, treeItemsPositions, childLayoutsPositions),\r\n itemLeftMargins = this.getLeftMargins(rightItem, leftMargins, childLayoutsPositions),\r\n depth = Math.min(itemRightMargins.length, itemLeftMargins.length);\r\n\r\n for (var index = 0; index < depth; index += 1) {\r\n var gap = itemLeftMargins[index] - itemRightMargins[index];\r\n result = (result !== null) ? Math.min(result, gap) : gap;\r\n\r\n if (gap <= 0) {\r\n break;\r\n }\r\n }\r\n\r\n return Math.floor(result);\r\n}\r\n\r\nOrgLayout.prototype.getRightMargins = function(treeItem, rightMargins, treeItemsPositions, childLayoutsPositions) {\r\n var result = [],\r\n itemRightMargins = rightMargins[treeItem.id];\r\n if (itemRightMargins === undefined) {\r\n itemRightMargins = [];\r\n }\r\n itemRightMargins = itemRightMargins.slice();\r\n itemRightMargins.splice(0, 0, treeItem.id);\r\n for (var index = 0, len = itemRightMargins.length; index < len; index += 1) {\r\n var treeItemId = itemRightMargins[index];\r\n var treeItemPosition = treeItemsPositions[treeItemId];\r\n var childLayoutPosition = childLayoutsPositions[treeItemId];\r\n result[index] = childLayoutPosition.offset + treeItemPosition.actualSize.width + childLayoutPosition.rightPadding;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nOrgLayout.prototype.getLeftMargins = function(treeItem, leftMargins, childLayoutsPositions) {\r\n var result = [],\r\n itemLeftMargins = leftMargins[treeItem.id];\r\n if (itemLeftMargins === undefined) {\r\n itemLeftMargins = [];\r\n }\r\n itemLeftMargins = itemLeftMargins.slice();\r\n itemLeftMargins.splice(0, 0, treeItem.id);\r\n for (var index = 0, len = itemLeftMargins.length; index < len; index += 1) {\r\n var childLayoutPosition = childLayoutsPositions[itemLeftMargins[index]];\r\n result[index] = childLayoutPosition.offset - childLayoutPosition.leftPadding;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nOrgLayout.prototype.getChildrenOffset = function(treeItem, treeItemsPositions, childLayoutsPositions, visualTree, horizontalAlignment) {\r\n var treeItemPosition = treeItemsPositions[treeItem.id],\r\n childLayoutPosition = childLayoutsPositions[treeItem.id],\r\n treeItemCenterOffset = childLayoutPosition.offset + treeItemPosition.actualSize.width / 2.0,\r\n childrenCenterOffset = null;\r\n if (treeItem.visualAggregatorId === null) {\r\n var firstItem = null;\r\n visualTree.loopChildren(this, treeItem.id, function (childItemId, childItem, index) {\r\n firstItem = childItem;\r\n if (firstItem.connectorPlacement & SideFlag.Top) {\r\n return true;\r\n }\r\n });\r\n var firstItemPosition = treeItemsPositions[firstItem.id];\r\n var firstLayoutPosition = childLayoutsPositions[firstItem.id];\r\n\r\n var lastItem = null;\r\n visualTree.loopChildrenReversed(this, treeItem.id, function (childItemId, childItem, index) {\r\n lastItem = childItem;\r\n if (lastItem.connectorPlacement & SideFlag.Top) {\r\n return true;\r\n }\r\n });\r\n var lastItemPosition = treeItemsPositions[lastItem.id];\r\n var lastLayoutPosition = childLayoutsPositions[lastItem.id];\r\n\r\n switch (horizontalAlignment) {\r\n case HorizontalAlignmentType.Left:\r\n childrenCenterOffset = firstLayoutPosition.offset + firstItemPosition.actualSize.width / 2.0;\r\n break;\r\n case HorizontalAlignmentType.Right:\r\n childrenCenterOffset = lastLayoutPosition.offset + lastItemPosition.actualSize.width / 2.0;\r\n break;\r\n case HorizontalAlignmentType.Center:\r\n childrenCenterOffset = (firstLayoutPosition.offset + lastLayoutPosition.offset + lastItemPosition.actualSize.width) / 2.0;\r\n break;\r\n }\r\n }\r\n else {\r\n var visualAggregatorPosition = treeItemsPositions[treeItem.visualAggregatorId];\r\n var visualAggregatorLayoutPosition = childLayoutsPositions[treeItem.visualAggregatorId];\r\n childrenCenterOffset = visualAggregatorLayoutPosition.offset + visualAggregatorPosition.actualSize.width / 2.0;\r\n }\r\n\r\n return treeItemCenterOffset - childrenCenterOffset;\r\n}\r\n\r\nOrgLayout.prototype.offsetItem = function(treeItem, offset, treeLevels, treeItemsPositions, childLayoutsPositions, treeLevelsPositions ) {\r\n var treeItemPosition = treeItemsPositions[treeItem.id];\r\n var childLayoutPosition = childLayoutsPositions[treeItem.id];\r\n childLayoutPosition.offset += offset;\r\n\r\n var treeLevelPosition = treeLevelsPositions[treeLevels.getLevelIndex(treeItem.id)];\r\n treeLevelPosition.currentOffset = Math.max(treeLevelPosition.currentOffset, childLayoutPosition.offset + treeItemPosition.actualSize.width + childLayoutPosition.rightPadding);\r\n}\r\n\r\nOrgLayout.prototype.offsetItemChildren = function(treeItem, offset, treeLevels, visualTree, treeItemsPositions, childLayoutsPositions, treeLevelsPositions) {\r\n visualTree.loopLevels(this, treeItem.id, function (childItemId, childItem, levelid) {\r\n var treeItemPosition = treeItemsPositions[childItemId];\r\n var childLayoutPosition = childLayoutsPositions[childItemId];\r\n childLayoutPosition.offset += offset;\r\n\r\n var treeLevelPosition = treeLevelsPositions[treeLevels.getLevelIndex(childItemId)];\r\n treeLevelPosition.currentOffset = Math.max(treeLevelPosition.currentOffset, childLayoutPosition.offset + treeItemPosition.actualSize.width);\r\n\r\n return true;\r\n });\r\n}\r\n\r\nOrgLayout.prototype.arrange = function (thisArg, position, layoutDirection, treeItemsPositions, options, onItemPositioned) {\r\n var prevLevelPosition = null;\r\n if (onItemPositioned != null) {\r\n this.treeLevels.loopLevels(this, function (levelIndex, treeLevel) {\r\n var treeLevelPosition = this.treeLevelsPositions[levelIndex];\r\n\r\n this.treeLevels.loopLevelItems(this, levelIndex, function (itemId, treeItem, position) {\r\n var treeItemPosition = treeItemsPositions[itemId];\r\n var childLayoutPosition = this.childLayoutsPositions[itemId];\r\n var result = this.getItemPosition(treeItemPosition.actualVisibility, childLayoutPosition.offset, treeItemPosition.actualSize, prevLevelPosition, treeLevelPosition, options.verticalAlignment);\r\n\r\n onItemPositioned.call(thisArg, itemId, { ...treeItemPosition, ...result});\r\n });\r\n\r\n prevLevelPosition = treeLevelPosition;\r\n });\r\n }\r\n};\r\n\r\nOrgLayout.prototype.getItemPosition = function (visibility, offset, size, prevLevel, level, verticalAlignment) {\r\n var itemShift = 0;\r\n\r\n switch (visibility) {\r\n case Visibility.Normal:\r\n switch (verticalAlignment) {\r\n case VerticalAlignmentType.Top:\r\n itemShift = 0;\r\n break;\r\n case VerticalAlignmentType.Middle:\r\n itemShift = (level.depth - size.height) / 2.0;\r\n break;\r\n case VerticalAlignmentType.Bottom:\r\n itemShift = level.depth - size.height;\r\n break;\r\n }\r\n break;\r\n case Visibility.Dot:\r\n case Visibility.Line:\r\n case Visibility.Invisible:\r\n itemShift = level.horizontalConnectorsDepth - size.height / 2.0;\r\n break;\r\n }\r\n\r\n return {\r\n actualPosition: new Rect(offset, level.shift + itemShift, size.width, size.height),\r\n horizontalConnectorsShift: level.shift + level.horizontalConnectorsDepth,\r\n topConnectorShift: prevLevel != null ? prevLevel.shift + prevLevel.connectorShift : null,\r\n topConnectorInterval: prevLevel != null ? prevLevel.levelSpace / 2 : null,\r\n bottomConnectorShift: level.shift + level.connectorShift,\r\n bottomConnectorInterval: level.levelSpace / 2\r\n };\r\n};\r\n\r\n","import Rect from '../../../graphics/structs/Rect';\r\nimport Size from '../../../graphics/structs/Size';\r\nimport { Visibility, OrientationType, AdviserPlacementType } from '../../../enums';\r\nimport TreeItemPosition from '../../../models/TreeItemPosition';\r\n\r\nexport default function ItemLayout(visibility) {\r\n this.visibility = visibility;\r\n}\r\n\r\nItemLayout.prototype.measure = function (levelVisibility, isCursor, isSelected, treeItemTemplate, treeItemsPositions, options) {\r\n var templateConfig,\r\n size,\r\n contentPosition;\r\n var { orientationType, checkBoxPanelSize, buttonsPanelSize, groupTitlePanelSize, groupTitlePlacementType } = options;\r\n\r\n var treeItemVisibility = (isSelected || isCursor) ? Visibility.Normal : this.visibility;\r\n var actualVisibility = (treeItemVisibility === Visibility.Auto) ? levelVisibility : treeItemVisibility; \r\n switch (actualVisibility) {\r\n case Visibility.Normal:\r\n templateConfig = treeItemTemplate.template.templateConfig;\r\n size = new Size(templateConfig.itemSize);\r\n contentPosition = new Rect(0, 0, size.width, size.height);\r\n if (isCursor) {\r\n size.height += templateConfig.cursorPadding.top + templateConfig.cursorPadding.bottom;\r\n size.width += templateConfig.cursorPadding.left + templateConfig.cursorPadding.right;\r\n contentPosition.x = templateConfig.cursorPadding.left;\r\n contentPosition.y = templateConfig.cursorPadding.top;\r\n }\r\n if (treeItemTemplate.hasSelectorCheckbox) {\r\n size.height += checkBoxPanelSize;\r\n }\r\n if (treeItemTemplate.hasButtons) {\r\n size.width += buttonsPanelSize;\r\n switch (groupTitlePlacementType) {\r\n case AdviserPlacementType.Right:\r\n contentPosition.x += buttonsPanelSize;\r\n break;\r\n }\r\n }\r\n if (treeItemTemplate.hasGroupTitle) {\r\n size.width += groupTitlePanelSize;\r\n switch (groupTitlePlacementType) {\r\n case AdviserPlacementType.Right:\r\n break;\r\n default:\r\n contentPosition.x += groupTitlePanelSize;\r\n break;\r\n }\r\n }\r\n break;\r\n case Visibility.Dot:\r\n templateConfig = treeItemTemplate.template.templateConfig;\r\n size = new Size(templateConfig.minimizedItemSize);\r\n break;\r\n case Visibility.Line:\r\n case Visibility.Invisible:\r\n size = new Size();\r\n break;\r\n }\r\n\r\n switch (orientationType) {\r\n case OrientationType.Left:\r\n case OrientationType.Right:\r\n size.invert();\r\n break;\r\n }\r\n\r\n var treeItemPosition = new TreeItemPosition();\r\n treeItemPosition.actualVisibility = actualVisibility;\r\n treeItemPosition.actualSize = size;\r\n treeItemPosition.contentPosition = contentPosition;\r\n return treeItemPosition;\r\n};\r\n\r\nItemLayout.prototype.arrange = function (thisArg, position, layoutDirection, treeItemsPositions, options, onItemPositioned) {\r\n /* no child layouts */\r\n}","import OrgLayout from './layouts/OrgLayout';\r\nimport ItemLayout from './layouts/ItemLayout';\r\nimport Tree from '../../algorithms/Tree';\r\n\r\nexport default function OrgCreateLayoutsTreeTask(visualTreeTask, visualTreeLevelsTask, extractNestedLayoutsTask ) {\r\n\r\n var _data = {\r\n layoutsTree: {},\r\n maximumId: null\r\n };\r\n\r\n function process() {\r\n var visualTree = visualTreeTask.getVisualTree();\r\n var leftMargins = visualTreeTask.getLeftMargins();\r\n var rightMargins = visualTreeTask.getRightMargins();\r\n var maximumId = visualTreeTask.getMaximumId();\r\n var treeLevels = visualTreeLevelsTask.getTreeLevels();\r\n var getConnectorsStacksSizes = visualTreeLevelsTask.getConnectorsStacksSizes;\r\n var layouts = extractNestedLayoutsTask.getLayouts();\r\n \r\n var rootLayout = new OrgLayout(visualTree, treeLevels, leftMargins, rightMargins, getConnectorsStacksSizes);\r\n var layoutsTree = Tree();\r\n maximumId++;\r\n layoutsTree.add(null, maximumId, rootLayout);\r\n\r\n var levelLayouts = [{ id: maximumId, levelLayout: rootLayout }];\r\n while(levelLayouts.length > 0) {\r\n var nextLevelLayouts = [];\r\n for(var index = 0; index < levelLayouts.length; index+=1) {\r\n var { id, levelLayout } = levelLayouts[index];\r\n levelLayout.loop(this, function(treeItem) {\r\n var treeItemId = treeItem.id;\r\n var itemLayout = layouts[treeItemId];\r\n if(!itemLayout) {\r\n itemLayout = new ItemLayout(treeItem.visibility);\r\n } else {\r\n nextLevelLayouts.push({id: treeItemId, levelLayout: itemLayout});\r\n }\r\n layoutsTree.add(id, treeItemId, itemLayout);\r\n })\r\n }\r\n levelLayouts = nextLevelLayouts;\r\n }\r\n\r\n _data.layoutsTree = layoutsTree;\r\n _data.maximumId = maximumId;\r\n\r\n return true;\r\n }\r\n\r\n\r\n function getLayoutsTree() {\r\n return _data.layoutsTree;\r\n }\r\n\r\n function getMaximumId() {\r\n return _data.maximumId;\r\n }\r\n\r\n return {\r\n process: process,\r\n getLayoutsTree: getLayoutsTree,\r\n getMaximumId: getMaximumId\r\n };\r\n};","import Graph from '../../algorithms/Graph';\r\n\r\nexport default function ConnectionsGraphTask(getGraphics, createTransformTask, connectorsOptionTask, visualTreeLevelsTask, extractNestedLayoutsTask, alignDiagramTask, removeLoopsTask) {\r\n var _data = {\r\n graph: null,\r\n nodeid: 0\r\n };\r\n\r\n function process() {\r\n var bundles = visualTreeLevelsTask.getBundles(),\r\n bundles2 = extractNestedLayoutsTask.getBundles(),\r\n nestedLayoutParentConnectorIds = extractNestedLayoutsTask.getNestedLayoutParentConnectorIds(),\r\n nestedLayoutBottomConnectorIds = extractNestedLayoutsTask.getNestedLayoutBottomConnectorIds(),\r\n connectorsOptions = connectorsOptionTask.getOptions(),\r\n loops = removeLoopsTask != null ? removeLoopsTask.getLoops() : [];\r\n\r\n bundles = bundles.concat(bundles2);\r\n\r\n var data = {\r\n graph: Graph(),\r\n nodeid: 0\r\n };\r\n\r\n var params = {\r\n treeItemsPositions: alignDiagramTask.getItemsPositions(),\r\n nestedLayoutParentConnectorIds: nestedLayoutParentConnectorIds,\r\n nestedLayoutBottomConnectorIds: nestedLayoutBottomConnectorIds,\r\n transform: createTransformTask.getTransform()\r\n };\r\n\r\n var options = {\r\n connectorType: connectorsOptions.connectorType,\r\n showExtraArrows: connectorsOptions.showExtraArrows,\r\n bevelSize: connectorsOptions.bevelSize,\r\n elbowType: connectorsOptions.elbowType\r\n };\r\n\r\n for (var index = 0, len = bundles.length; index < len; index += 1) {\r\n var bundle = bundles[index];\r\n\r\n bundle.trace(data, params, options);\r\n }\r\n\r\n TraceLoops(data.graph, loops, connectorsOptions.extraArrowsMinimumSpace);\r\n\r\n _data = data;\r\n\r\n return true;\r\n }\r\n\r\n function TraceLoops(graph, loops) {\r\n var edges = [];\r\n for(var isOppositeFlow = 1; isOppositeFlow >= 0; isOppositeFlow -=1) {\r\n for (var index = 0, len = loops.length; index < len; index += 1) {\r\n var loop = loops[index];\r\n if(loop.isOppositeFlow == (isOppositeFlow == 1)) {\r\n graph.getShortestPath(this, loop.from, [loop.to], function (connectorEdge, fromItem, toItem) {\r\n return connectorEdge.weight;\r\n }, function (path, to) {\r\n for (var index2 = 0, len2 = path.length - 1; index2 < len2; index2 += 1) {\r\n var fromItem = path[index2], toItem = path[index2 + 1];\r\n var edge = graph.edge(fromItem, toItem);\r\n if(edge.polyline.length() > 0) {\r\n edge.isOppositeFlow = (isOppositeFlow == 1);\r\n edges.push(edge);\r\n }\r\n }\r\n }); //ignore jslint\r\n }\r\n }\r\n }\r\n for (var index = 0, len = edges.length; index < len; index += 1) {\r\n var edge = edges[index];\r\n if(edge.isOppositeFlow) {\r\n edge.hasArrow = true;\r\n }\r\n }\r\n }\r\n\r\n function getGraph() {\r\n return _data.graph;\r\n }\r\n\r\n return {\r\n process: process,\r\n getGraph: getGraph\r\n };\r\n};","export default function HighlightItemTask(highlightItemOptionTask, activeItemsTask) {\r\n var _data = {\r\n highlightTreeItemId: null\r\n };\r\n\r\n function process() {\r\n var treeItemId = highlightItemOptionTask.getHighlightItem(),\r\n activeItems = (activeItemsTask != null) ? activeItemsTask.getActiveItems() : {};\r\n\r\n _data.highlightTreeItemId = (treeItemId != null && activeItems.hasOwnProperty(treeItemId)) ? treeItemId : null;\r\n\r\n return true;\r\n }\r\n\r\n function getHighlightTreeItem() {\r\n return _data.highlightTreeItemId;\r\n }\r\n\r\n return {\r\n process: process,\r\n getHighlightTreeItem: getHighlightTreeItem\r\n };\r\n};","export default function CursorItemTask(cursorItemOptionTask, activeItemsTask) {\r\n var _data = {\r\n cursorTreeItemId: null\r\n };\r\n\r\n function process() {\r\n var treeItemId = cursorItemOptionTask.getCursorItem(),\r\n activeItems = activeItemsTask != null ? activeItemsTask.getActiveItems() : {};\r\n\r\n _data.cursorTreeItemId = (treeItemId != null && activeItems.hasOwnProperty(treeItemId)) ? treeItemId : null;\r\n\r\n return true;\r\n }\r\n\r\n function getCursorTreeItem() {\r\n return _data.cursorTreeItemId;\r\n }\r\n\r\n function getItems() {\r\n return (_data.cursorTreeItemId != null) ? [_data.cursorTreeItemId] : [];\r\n }\r\n\r\n return {\r\n process: process,\r\n getCursorTreeItem: getCursorTreeItem,\r\n getItems: getItems\r\n };\r\n};","import { Visibility } from '../../../enums';\r\n\r\nexport default function OrgCursorNeighboursTask(cursorItemTask, navigationFamilyTask) {\r\n var _data = {\r\n items: []\r\n };\r\n\r\n function process() {\r\n var navigationFamily = navigationFamilyTask.getLogicalFamily(),\r\n cursorTreeItemId = cursorItemTask.getCursorTreeItem();\r\n\r\n _data.items = getCursorNeighbours(cursorTreeItemId, navigationFamily);\r\n\r\n return true;\r\n }\r\n\r\n function getCursorNeighbours(cursorTreeItemId, navigationFamily) {\r\n var result = [];\r\n if (cursorTreeItemId !== null) {\r\n navigationFamily.loopNeighbours(this, cursorTreeItemId, function (treeItemId, treeItem, distance) {\r\n if (treeItem.isVisible) {\r\n result.push(treeItemId);\r\n }\r\n return true;\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n function getItems() {\r\n return _data.items;\r\n }\r\n\r\n return {\r\n process: process,\r\n getItems: getItems\r\n };\r\n};","import ArrayReader from '../../../readers/ArrayReader';\r\nimport ValueReader from '../../../readers/ValueReader';\r\n\r\nexport default function SelectedItemsTask(selectedItemsOptionTask, itemsOptionTask) {\r\n var _data = {\r\n items: []\r\n },\r\n _hash = {},\r\n _dataTemplate = new ArrayReader(\r\n new ValueReader([\"string\", \"number\"], true),\r\n true\r\n );\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n },\r\n selectedItems = selectedItemsOptionTask.getSelectedItems();\r\n\r\n _data.items = _dataTemplate.read(_data.items, getSelectedItems(selectedItems), \"items\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getSelectedItems(selectedItems) {\r\n var result = [],\r\n processed = {},\r\n index, len,\r\n treeItemId;\r\n\r\n for (index = 0, len = selectedItems.length; index < len; index += 1) {\r\n treeItemId = selectedItems[index];\r\n if (treeItemId != null && !processed.hasOwnProperty(treeItemId)) {\r\n processed[treeItemId] = true;\r\n if(itemsOptionTask.getConfig(treeItemId) != null) {\r\n result.push(treeItemId);\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function isSelected(itemid) {\r\n return _hash.items.hasOwnProperty(itemid);\r\n }\r\n\r\n function getItems() {\r\n return _data.items;\r\n }\r\n\r\n return {\r\n process: process,\r\n getItems: getItems,\r\n isSelected: isSelected\r\n };\r\n};","import { SelectionPathMode, Visibility } from '../../../enums';\r\n\r\nexport default function OrgSelectionPathItemsTask(navigationFamilyTask, cursorItemTask, selectedItemsTask, cursorSelectionPathModeOptionTask) {\r\n var _data = {\r\n items: []\r\n };\r\n\r\n function process() {\r\n var selectionPathMode = cursorSelectionPathModeOptionTask.getSelectionPathMode(),\r\n navigationFamily = navigationFamilyTask.getLogicalFamily(),\r\n cursorTreeItemId = cursorItemTask.getCursorTreeItem(),\r\n selectedItems = selectedItemsTask.getItems().slice(0);\r\n\r\n selectedItems.push(cursorTreeItemId);\r\n\r\n _data.items = getSelectionPathItems(selectedItems, navigationFamily, selectionPathMode);\r\n\r\n return true;\r\n }\r\n\r\n function getSelectionPathItems(selectedItems, navigationFamily, selectionPathMode) {\r\n var result = [],\r\n processed = {},\r\n selectedItem,\r\n index, len;\r\n\r\n for (index = 0, len = selectedItems.length; index < len; index += 1) {\r\n selectedItem = selectedItems[index];\r\n /* show cursor full stack */\r\n switch (selectionPathMode) {\r\n case SelectionPathMode.None:\r\n break;\r\n case SelectionPathMode.FullStack:\r\n /* select all parents up to the root */\r\n navigationFamily.loopParents(this, selectedItem, function (parentItemId, parentItem) {\r\n if (processed[parentItemId] != null) {\r\n return navigationFamily.SKIP;\r\n }\r\n if (parentItem.visibility != Visibility.Invisible) {\r\n result.push(parentItemId);\r\n }\r\n processed[parentItemId] = true;\r\n });\r\n break;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function getItems() {\r\n return _data.items;\r\n }\r\n\r\n return {\r\n process: process,\r\n getItems: getItems\r\n };\r\n};","import ArrayReader from '../../../readers/ArrayReader';\r\nimport ValueReader from '../../../readers/ValueReader';\r\n\r\nexport default function NormalVisibilityItemsByAnnotationTask(annotationOptionTask) {\r\n var _data = {\r\n items: []\r\n },\r\n _hash = {};\r\n\r\n var _dataTemplate = new ArrayReader(\r\n new ValueReader([\"string\", \"number\"], true),\r\n true\r\n );\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n },\r\n annotations = annotationOptionTask.getAnnotations();\r\n\r\n _data.items = _dataTemplate.read(_data.items, getSelectedItems(annotations), \"items\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getSelectedItems(annotations) {\r\n var result = [],\r\n processed = {},\r\n index, len, index2, len2,\r\n items, item,\r\n annotation,\r\n treeItemId;\r\n\r\n for (index = 0, len = annotations.length; index < len; index += 1) {\r\n annotation = annotations[index];\r\n if (annotation.selectItems) {\r\n items = annotation.items;\r\n for (index2 = 0, len2 = items.length; index2 < len2; index2 += 1) {\r\n treeItemId = items[index2];\r\n if (treeItemId != null && !processed.hasOwnProperty(treeItemId)) {\r\n result.push(treeItemId);\r\n processed[treeItemId] = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function getItems() {\r\n return _data.items;\r\n }\r\n\r\n return {\r\n process: process,\r\n getItems: getItems\r\n };\r\n};","import ArrayReader from '../../../readers/ArrayReader';\r\nimport ValueReader from '../../../readers/ValueReader';\r\n\r\nexport default function NormalVisibilityItemsByConnectorAnnotationTask(connectorAnnotationOptionTask) {\r\n var _data = {\r\n items: []\r\n },\r\n _hash = {},\r\n _dataTemplate = new ArrayReader(\r\n new ValueReader([\"string\", \"number\"], true),\r\n true\r\n );\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n },\r\n annotations = connectorAnnotationOptionTask.getAnnotations();\r\n\r\n _data.items = _dataTemplate.read(_data.items, getSelectedItems(annotations), \"items\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getSelectedItems(annotations) {\r\n var result = [],\r\n processed = {},\r\n index, len,\r\n annotation,\r\n treeItem;\r\n\r\n for (index = 0, len = annotations.length; index < len; index += 1) {\r\n annotation = annotations[index];\r\n if (annotation.selectItems) {\r\n if (annotation.fromItem != null && !processed.hasOwnProperty(annotation.fromItem)) {\r\n result.push(annotation.fromItem);\r\n processed[annotation.fromItem] = true;\r\n }\r\n if (annotation.toItem != null && !processed.hasOwnProperty(annotation.toItem)) {\r\n result.push(annotation.toItem);\r\n processed[annotation.toItem] = true;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function getItems() {\r\n return _data.items;\r\n }\r\n\r\n return {\r\n process: process,\r\n getItems: getItems\r\n };\r\n};","import ArrayReader from '../../../readers/ArrayReader';\r\nimport ValueReader from '../../../readers/ValueReader';\r\nimport { PageFitMode, Visibility } from '../../../enums';\r\n\r\nexport default function OrgNormalVisibilityItemsByMinimumVisibleLevelsTask(minimumVisibleLevelsOptionTask, orgTreeTask) {\r\n var _data = {\r\n items: []\r\n },\r\n _hash = {};\r\n\r\n var _dataTemplate = new ArrayReader(\r\n new ValueReader([\"string\", \"number\"], true),\r\n true\r\n );\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n },\r\n orgTree = orgTreeTask.getOrgTree(),\r\n { pageFitMode, minimalVisibility, minimumVisibleLevels } = minimumVisibleLevelsOptionTask.getOptions();\r\n\r\n _data.items = _dataTemplate.read(_data.items, getSelectedItems(orgTree, pageFitMode, minimalVisibility, minimumVisibleLevels), \"items\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getSelectedItems(orgTree, pageFitMode, minimalVisibility, minimumVisibleLevels ) {\r\n var result = [],\r\n buckets = [];\r\n\r\n if(minimumVisibleLevels > 0) {\r\n if(PageFitMode.PageWidth == pageFitMode || PageFitMode.PageHeight || PageFitMode.FitToPage) {\r\n if(minimalVisibility != Visibility.Normal) {\r\n orgTree.loopLevels(this, function(nodeId, node, levelIndex) {\r\n if(node.isVisible) {\r\n var nodeLevel = levelIndex + node.levelOffset;\r\n if(!buckets[nodeLevel]) {\r\n buckets[nodeLevel] = [nodeId];\r\n } else {\r\n buckets[nodeLevel].push(nodeId);\r\n }\r\n }\r\n });\r\n\r\n var actualLevel = 0;\r\n for(var index = 0; index < buckets.length; index+=1) {\r\n if(buckets[index] != null) {\r\n result = result.concat(buckets[index]);\r\n actualLevel+=1;\r\n\r\n if(actualLevel >= minimumVisibleLevels) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function getItems() {\r\n return _data.items;\r\n }\r\n\r\n return {\r\n process: process,\r\n getItems: getItems\r\n };\r\n};","import ArrayReader from '../../../readers/ArrayReader';\r\nimport ValueReader from '../../../readers/ValueReader';\r\nimport { PageFitMode, Visibility } from '../../../enums';\r\n\r\nexport default function CombinedNormalVisibilityItemsTask(itemsSizesOptionTask, cursorItemTask, cursorNeighboursTask, selectedItemsTask, selectionPathItemsTask,\r\n normalVisibilityItemsByForegroundShapeAnnotationTask, normalVisibilityItemsByBackgroundShapeAnnotationTask,\r\n normalVisibilityItemsByBackgroundAnnotationTask,\r\n normalVisibilityItemsByForegroundHighlightPathAnnotationTask, normalVisibilityItemsByBackgroundHighlightPathAnnotationTask,\r\n normalVisibilityItemsByForegroundConnectorAnnotationTask, normalVisibilityItemsByBackgroundConnectorAnnotationTask,\r\n NormalVisibilityItemsByMinimumVisibleLevelsTask\r\n) {\r\n var _data = {\r\n items: []\r\n },\r\n _hash = {},\r\n _sourceTasks = [\r\n cursorItemTask,\r\n cursorNeighboursTask,\r\n selectedItemsTask,\r\n selectionPathItemsTask,\r\n normalVisibilityItemsByForegroundShapeAnnotationTask, normalVisibilityItemsByBackgroundShapeAnnotationTask,\r\n normalVisibilityItemsByBackgroundAnnotationTask,\r\n normalVisibilityItemsByForegroundHighlightPathAnnotationTask, normalVisibilityItemsByBackgroundHighlightPathAnnotationTask,\r\n normalVisibilityItemsByForegroundConnectorAnnotationTask, normalVisibilityItemsByBackgroundConnectorAnnotationTask,\r\n NormalVisibilityItemsByMinimumVisibleLevelsTask\r\n ],\r\n _dataTemplate = new ArrayReader(\r\n new ValueReader([\"string\", \"number\"], true),\r\n true\r\n );\r\n\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n },\r\n itemsSizesOption = itemsSizesOptionTask.getOptions();\r\n\r\n _data.items = _dataTemplate.read(_data.items, getSelectedItems(_sourceTasks), \"items\", context);\r\n\r\n if (itemsSizesOption.pageFitMode == PageFitMode.None || itemsSizesOption.minimalVisibility == Visibility.Normal) {\r\n context.isChanged = false;\r\n }\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getSelectedItems(sourceTasks, getItemOptions) {\r\n var result = [],\r\n sourceIndex, sourceLen,\r\n sourceTask,\r\n index, len,\r\n items, item,\r\n processed = {};\r\n\r\n for (sourceIndex = 0, sourceLen = sourceTasks.length; sourceIndex < sourceLen; sourceIndex += 1) {\r\n sourceTask = sourceTasks[sourceIndex];\r\n items = sourceTask.getItems();\r\n\r\n for (index = 0, len = items.length; index < len; index += 1) {\r\n item = items[index];\r\n\r\n if (!processed.hasOwnProperty(item)) {\r\n result.push(item);\r\n processed[item] = true;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function isItemSelected(treeItem) {\r\n return _hash.items.hasOwnProperty(treeItem);\r\n }\r\n\r\n return {\r\n process: process,\r\n isItemSelected: isItemSelected\r\n };\r\n};","import ObjectReader from '../../readers/ObjectReader';\r\nimport ValueReader from '../../readers/ValueReader';\r\nimport Thickness from '../../graphics/structs/Thickness';\r\nimport Size from '../../graphics/structs/Size';\r\n\r\nexport default function FrameSizeTask(frameOptionTask, readTemplatesTask, scaleOptionTask) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n median: new ObjectReader({\r\n left: new ValueReader([\"number\"], false, 0),\r\n top: new ValueReader([\"number\"], false, 0),\r\n right: new ValueReader([\"number\"], false, 0),\r\n bottom: new ValueReader([\"number\"], false, 0)\r\n }, false, new Thickness(0, 0, 0, 0)),\r\n thickness: new ObjectReader({\r\n left: new ValueReader([\"number\"], false, 0),\r\n top: new ValueReader([\"number\"], false, 0),\r\n right: new ValueReader([\"number\"], false, 0),\r\n bottom: new ValueReader([\"number\"], false, 0)\r\n }, false, new Thickness(0, 0, 0, 0))\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, getFrameSize(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getFrameSize() {\r\n var frameOptions = frameOptionTask.getOptions(),\r\n showFrame = frameOptions.showFrame,\r\n frameInnerPadding = frameOptions.frameInnerPadding,\r\n frameOuterPadding = frameOptions.frameOuterPadding,\r\n scale = scaleOptionTask.getOptions().scale,\r\n median = new Thickness(0, 0, 0, 0),\r\n thickness = new Thickness(0, 0, 0, 0);\r\n\r\n if(showFrame) {\r\n var maximumMarkerSize = new Size(0, 0),\r\n maximumMarkerPadding = new Thickness(0, 0, 0, 0),\r\n index, len,\r\n templates = readTemplatesTask.getItemTemplates();\r\n\r\n for (index = 0, len = templates.length; index < len; index += 1) {\r\n var template = templates[index];\r\n var templateConfig = template.templateConfig,\r\n cursorPadding = new Thickness(templateConfig.cursorPadding),\r\n highlightPadding = new Thickness(templateConfig.highlightPadding);\r\n \r\n cursorPadding.addThickness(templateConfig.cursorBorderWidth);\r\n highlightPadding.addThickness(templateConfig.highlightBorderWidth);\r\n\r\n maximumMarkerSize.maxSize(templateConfig.minimizedItemSize);\r\n maximumMarkerPadding.maxThickness(templateConfig.cursorPadding);\r\n maximumMarkerPadding.maxThickness(templateConfig.highlightPadding);\r\n }\r\n\r\n median = new Thickness(Math.ceil(maximumMarkerSize.width / 2.0) + maximumMarkerPadding.right, \r\n Math.ceil(maximumMarkerSize.height / 2.0) + maximumMarkerPadding.bottom, \r\n Math.ceil(maximumMarkerSize.width / 2.0) + maximumMarkerPadding.left, \r\n Math.ceil(maximumMarkerSize.height / 2.0) + maximumMarkerPadding.top\r\n );\r\n median.addThickness(frameInnerPadding);\r\n median.scale(scale);\r\n thickness = new Thickness(maximumMarkerSize.width + maximumMarkerPadding.left + maximumMarkerPadding.right, \r\n maximumMarkerSize.height + maximumMarkerPadding.top + maximumMarkerPadding.bottom, \r\n maximumMarkerSize.width + maximumMarkerPadding.left + maximumMarkerPadding.right, \r\n maximumMarkerSize.height + maximumMarkerPadding.top + maximumMarkerPadding.bottom\r\n );\r\n thickness.addThickness(frameInnerPadding);\r\n thickness.addThickness(frameOuterPadding);\r\n thickness.scale(scale);\r\n }\r\n return { median: median, thickness: thickness };\r\n }\r\n\r\n function getMedian() {\r\n return _data.median;\r\n }\r\n\r\n function getThickness() {\r\n return _data.thickness;\r\n }\r\n\r\n return {\r\n process: process,\r\n getMedian: getMedian,\r\n getThickness: getThickness\r\n };\r\n};","import ObjectReader from '../../readers/ObjectReader';\r\nimport ValueReader from '../../readers/ValueReader';\r\nimport Thickness from '../../graphics/structs/Thickness';\r\nimport { AdviserPlacementType, OrientationType } from '../../enums';\r\n\r\nexport default function LevelTitleSizeTask(levelTitlePlacementOptionTask, levelAnnotationOptionTask, orientationOptionTask, scaleOptionTask) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n thickness: new ObjectReader({\r\n left: new ValueReader([\"number\"], false, 0),\r\n top: new ValueReader([\"number\"], false, 0),\r\n right: new ValueReader([\"number\"], false, 0),\r\n bottom: new ValueReader([\"number\"], false, 0)\r\n }, false, new Thickness(0, 0, 0, 0))\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, getThickness(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getThickness() {\r\n var { levelTitlePlaceInside, levelTitlePanelSize, levelTitlePlacementType } = levelTitlePlacementOptionTask.getOptions(),\r\n { scale } = scaleOptionTask.getOptions(),\r\n { orientationType } = orientationOptionTask.getOptions(),\r\n annotations = levelAnnotationOptionTask.getAnnotations(),\r\n thickness = new Thickness(0, 0, 0, 0);\r\n\r\n if(annotations.length > 0) {\r\n if(levelTitlePlaceInside) {\r\n levelTitlePanelSize = -levelTitlePanelSize;\r\n }\r\n switch(levelTitlePlacementType) {\r\n case AdviserPlacementType.Right:\r\n switch(orientationType) {\r\n case OrientationType.Left:\r\n thickness = new Thickness(0, levelTitlePanelSize, 0, 0);\r\n break;\r\n case OrientationType.Right:\r\n thickness = new Thickness(0, 0, 0, levelTitlePanelSize);\r\n break;\r\n case OrientationType.Top:\r\n case OrientationType.Bottom:\r\n thickness = new Thickness(0, 0, levelTitlePanelSize, 0);\r\n default:\r\n break;\r\n } \r\n break;\r\n case AdviserPlacementType.Left:\r\n default:\r\n switch(orientationType) {\r\n case OrientationType.Left:\r\n thickness = new Thickness(0, 0, 0, levelTitlePanelSize);\r\n break;\r\n case OrientationType.Right:\r\n thickness = new Thickness(0, levelTitlePanelSize, 0, 0);\r\n break;\r\n case OrientationType.Top:\r\n case OrientationType.Bottom:\r\n thickness = new Thickness(levelTitlePanelSize, 0, 0, 0);\r\n default:\r\n break;\r\n }\r\n break;\r\n }\r\n thickness.scale(scale);\r\n }\r\n\r\n return { thickness: thickness };\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions\r\n };\r\n};","export default function LayoutOptionsTask(getLayout, optionsTask) {\r\n var _data = {};\r\n\r\n function process() {\r\n _data = getLayout();\r\n\r\n return true;\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions,\r\n description: \"Raw layout options.\"\r\n };\r\n};","import ObjectReader from '../../readers/ObjectReader';\r\nimport ValueReader from '../../readers/ValueReader';\r\nimport { PageFitMode } from '../../enums';\r\nimport Size from '../../graphics/structs/Size';\r\nimport Thickness from '../../graphics/structs/Thickness';\r\n\r\nexport default function CurrentControlSizeTask(layoutOptionsTask, itemsSizesOptionTask, frameSizeTask, levelTitleSizeTask) {\r\n var _data = {},\r\n _hash = {},\r\n _dataTemplate = new ObjectReader({\r\n scrollPanelSize: new ObjectReader({\r\n width: new ValueReader([\"number\"], true),\r\n height: new ValueReader([\"number\"], true)\r\n }, true),\r\n optimalPanelSize: new ObjectReader({\r\n width: new ValueReader([\"number\"], true),\r\n height: new ValueReader([\"number\"], true)\r\n }, true),\r\n hasFrame: new ValueReader([\"boolean\"], true),\r\n hasLevelTitles: new ValueReader([\"boolean\"], true)\r\n });\r\n\r\n function process() {\r\n var result = false,\r\n context = { isChanged: false, hash: _hash },\r\n layoutOptions = layoutOptionsTask.getOptions(),\r\n { pageFitMode } = itemsSizesOptionTask.getOptions(),\r\n frameThickness = new Thickness(frameSizeTask.getThickness()),\r\n levelTitlesThickness = new Thickness(levelTitleSizeTask.getOptions().thickness);\r\n\r\n // disable outer level titles if its square space is bigger than viewport\r\n layoutOptions.hasLevelTitles = false;\r\n if(levelTitlesThickness.isPositive()) {\r\n let viewportSize = new Size(layoutOptions.scrollPanelSize);\r\n viewportSize.removeThickness(levelTitlesThickness);\r\n if(layoutOptions.scrollPanelSize.space() < viewportSize.space() * 2) {\r\n layoutOptions.scrollPanelSize = viewportSize;\r\n layoutOptions.hasLevelTitles = true;\r\n }\r\n } \r\n\r\n // disable frame if its square space is bigger than viewport\r\n layoutOptions.hasFrame = false;\r\n if(frameThickness.isPositive()) {\r\n let viewportSize = new Size(layoutOptions.scrollPanelSize);\r\n viewportSize.removeThickness(frameThickness);\r\n if(layoutOptions.scrollPanelSize.space() < viewportSize.space() * 2) {\r\n layoutOptions.scrollPanelSize = viewportSize;\r\n layoutOptions.hasFrame = true;\r\n }\r\n }\r\n\r\n layoutOptions.optimalPanelSize = new Size(layoutOptions.scrollPanelSize.width - 25, layoutOptions.scrollPanelSize.height - 25)\r\n\r\n _data = _dataTemplate.read(_data, layoutOptions, \"layout\", context);\r\n\r\n switch (pageFitMode) {\r\n case PageFitMode.PageWidth:\r\n case PageFitMode.PageHeight:\r\n case PageFitMode.FitToPage:\r\n case PageFitMode.None:\r\n case PageFitMode.SelectionOnly:\r\n result = context.isChanged;\r\n break;\r\n default:\r\n break;\r\n\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions\r\n };\r\n};","import ObjectReader from '../../readers/ObjectReader';\r\nimport ValueReader from '../../readers/ValueReader';\r\n\r\nexport default function CurrentScrollPositionTask(layoutOptionsTask) {\r\n var _data = {\r\n placeholderOffset: null\r\n },\r\n _hash = {},\r\n _dataTemplate = new ObjectReader({\r\n placeholderOffset: new ObjectReader({\r\n x: new ValueReader([\"number\"], true),\r\n y: new ValueReader([\"number\"], true)\r\n }, true)\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n },\r\n layoutOptions = layoutOptionsTask.getOptions();\r\n _data = _dataTemplate.read(_data, layoutOptions, \"layout\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getPlaceholderOffset() {\r\n return _data.placeholderOffset;\r\n }\r\n\r\n return {\r\n process: process,\r\n getPlaceholderOffset: getPlaceholderOffset\r\n };\r\n};","import Rect from '../../graphics/structs/Rect';\r\nimport Size from '../../graphics/structs/Size';\r\nimport { OrientationType, PageFitMode, Visibility } from '../../enums';\r\n\r\nfunction LevelVisibility(level, visibility) {\r\n this.level = level;\r\n this.visibility = visibility;\r\n};\r\n\r\nexport default function ItemsPositionsTask(currentControlSizeTask, scaleOptionTask, orientationOptionTask, itemsSizesOptionTask, connectorsOptionTask, normalizeOptionTask,\r\n createLayoutsTreeTask,\r\n itemTemplateParamsTask,\r\n cursorItemTask, combinedNormalVisibilityItemsTask) {\r\n\r\n var _data = {\r\n treeItemsPositions: {}, // TreeItemPosition();\r\n size: null // Rect();\r\n };\r\n\r\n function process() {\r\n var { verticalAlignment, pageFitMode, minimalVisibility, padding,\r\n normalLevelShift, dotLevelShift, lineLevelShift, normalItemsInterval, dotItemsInterval, lineItemsInterval,\r\n checkBoxPanelSize, buttonsPanelSize, groupTitlePanelSize, groupTitlePlacementType, cousinsIntervalMultiplier } = itemsSizesOptionTask.getOptions();\r\n var { arrowsDirection, linesWidth } = connectorsOptionTask.getOptions();\r\n var { maximumColumnsInMatrix, horizontalAlignment } = normalizeOptionTask.getOptions();\r\n var { orientationType } = orientationOptionTask.getOptions();\r\n\r\n var isItemSelected = combinedNormalVisibilityItemsTask.isItemSelected;\r\n var cursorItemId = cursorItemTask.getCursorTreeItem();\r\n var getTemplateParams = itemTemplateParamsTask.getTemplateParams;\r\n\r\n /* calculate panel size */\r\n var { optimalPanelSize } = currentControlSizeTask.getOptions();\r\n var panelSize = new Size(optimalPanelSize);\r\n var { scale } = scaleOptionTask.getOptions();\r\n panelSize.scale(1.0 / scale);\r\n\r\n var layoutsTree = createLayoutsTreeTask.getLayoutsTree();\r\n \r\n /* find root layout id */\r\n var rootLayoutId = null;\r\n layoutsTree.loopLevels(this, function(nodeId, node, levelIndex) {\r\n rootLayoutId = nodeId;\r\n return layoutsTree.BREAK;\r\n })\r\n\r\n /* enumerate items level indexes */\r\n var levelIndexes = {};\r\n var maximumLevelIndex = 0;\r\n var hasNodes = false;\r\n layoutsTree.loopLevels(this, function(layoutId, layout, levelIndex) {\r\n if(layout.loop != null) {\r\n var parentId = layoutsTree.parentid(layoutId);\r\n var parentLevelIndex = levelIndexes[parentId] || 0;\r\n\r\n layout.loop(this, function(treeItem, levelIndex) {\r\n var itemLevelIndex = parentLevelIndex + levelIndex;\r\n levelIndexes[treeItem.id] = itemLevelIndex;\r\n maximumLevelIndex = Math.max(maximumLevelIndex, itemLevelIndex);\r\n hasNodes = true;\r\n })\r\n }\r\n })\r\n\r\n var options = {\r\n verticalAlignment,\r\n pageFitMode,\r\n padding,\r\n minimalVisibility,\r\n orientationType,\r\n arrowsDirection,\r\n linesWidth,\r\n checkBoxPanelSize,\r\n buttonsPanelSize,\r\n groupTitlePanelSize,\r\n groupTitlePlacementType,\r\n maximumColumnsInMatrix,\r\n horizontalAlignment,\r\n shifts: getShifts(normalLevelShift, dotLevelShift, lineLevelShift, lineLevelShift),\r\n intervals: getIntervals(normalItemsInterval, dotItemsInterval, lineItemsInterval, lineItemsInterval),\r\n cousinsIntervalMultiplier\r\n };\r\n\r\n /* find optimal panel size */\r\n _data.treeItemsPositions = {};\r\n _data.size = panelSize;\r\n\r\n if(hasNodes) {\r\n var {treeItemsPositions, size} = autoFitDiagramToPageSize(panelSize, maximumLevelIndex, rootLayoutId, layoutsTree, levelIndexes, cursorItemId, isItemSelected, getTemplateParams, options);\r\n _data.treeItemsPositions = treeItemsPositions;\r\n _data.size = size;\r\n\r\n /* arrange items positions */\r\n var treeItemPosition = _data.treeItemsPositions[rootLayoutId];\r\n treeItemPosition.actualPosition = new Rect(0, 0, _data.size.width, _data.size.height);\r\n\r\n var layoutsDirections = {};\r\n layoutsTree.loopPreOrder(this, function(childLayoutId, childLayout, parentLayoutId, parentLayout) {\r\n var treeItemPosition = _data.treeItemsPositions[childLayoutId];\r\n var layoutDirection = layoutsDirections[childLayoutId];\r\n childLayout.arrange(this, treeItemPosition.actualPosition, layoutDirection, _data.treeItemsPositions, options, function (treeItemId, treeItemPosition, layoutDirection) {\r\n _data.treeItemsPositions[treeItemId] = treeItemPosition;\r\n layoutsDirections[treeItemId] = layoutDirection;\r\n });\r\n });\r\n }\r\n return true;\r\n }\r\n\r\n function autoFitDiagramToPageSize(panelSize, maximumLevelIndex, rootLayoutId, layoutsTree, levelIndexes, cursorItemId, isItemSelected, getTemplateParams, options) {\r\n var result,\r\n possibleLevelVisibilities,\r\n enabledLevelVisibilities;\r\n\r\n var { orientationType, pageFitMode, minimalVisibility } = options;\r\n\r\n switch (orientationType) {\r\n case OrientationType.Left:\r\n case OrientationType.Right:\r\n panelSize.invert();\r\n break;\r\n }\r\n\r\n switch (pageFitMode) {\r\n case PageFitMode.None:\r\n case PageFitMode.AutoSize:\r\n possibleLevelVisibilities = [new LevelVisibility(0, Visibility.Normal)];\r\n enabledLevelVisibilities = getLevelVisibilities(maximumLevelIndex, possibleLevelVisibilities, 0);\r\n result = measureLayout(rootLayoutId, layoutsTree, enabledLevelVisibilities, levelIndexes, cursorItemId, isItemSelected, getTemplateParams, options);\r\n break;\r\n default:\r\n possibleLevelVisibilities = getPossibleLevelVisibilities(maximumLevelIndex, minimalVisibility);\r\n enabledLevelVisibilities = getLevelVisibilities(maximumLevelIndex, possibleLevelVisibilities, possibleLevelVisibilities.length - 1);\r\n\r\n // Find minimal placeholder size to hold completely folded diagram\r\n result = measureLayout(rootLayoutId, layoutsTree, enabledLevelVisibilities, levelIndexes, cursorItemId, isItemSelected, getTemplateParams, options);\r\n if (checkDiagramSize(result.size, panelSize, pageFitMode)) {\r\n /* maximum compression fits to page */\r\n var minimalPlaceholderSize = new Rect(0, 0, result.size.width, result.size.height);\r\n minimalPlaceholderSize.addRect(0, 0, panelSize.width, panelSize.height);\r\n minimalPlaceholderSize.offset(0, 0, 5, 5);\r\n /* Find optimal diagram size */\r\n findOptimalSize(this, possibleLevelVisibilities.length - 1, function (index) {\r\n enabledLevelVisibilities = getLevelVisibilities(maximumLevelIndex, possibleLevelVisibilities, index);\r\n result = measureLayout(rootLayoutId, layoutsTree, enabledLevelVisibilities, levelIndexes, cursorItemId, isItemSelected, getTemplateParams, options);\r\n\r\n /* compare root layout to the available panel space */\r\n return checkDiagramSize(result.size, minimalPlaceholderSize, options.pageFitMode);\r\n });\r\n }\r\n break;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function findOptimalSize(thisArg, maximum, funcCheckSize) {\r\n var minimum = 0,\r\n cursorIndex;\r\n if (!funcCheckSize.call(thisArg, minimum)) {\r\n /* minimum compression does not fit to page */\r\n cursorIndex = maximum;\r\n while (maximum - minimum > 1) {\r\n cursorIndex = Math.floor((maximum + minimum) / 2.0);\r\n if (funcCheckSize.call(thisArg, cursorIndex)) {\r\n /* middle point size fit to page */\r\n maximum = cursorIndex;\r\n }\r\n else {\r\n minimum = cursorIndex;\r\n }\r\n }\r\n if (maximum !== cursorIndex) {\r\n funcCheckSize.call(thisArg, maximum);\r\n }\r\n }\r\n };\r\n\r\n function measureLayout(rootLayoutId, layoutsTree, levelVisibilities, levelIndexes, cursorItemId, isItemSelected, getTemplateParams, options ) {\r\n var treeItemsPositions = {};\r\n\r\n /* measure individual nodes from bottom to up */\r\n layoutsTree.loopPostOrder(this, function(childLayoutId, childLayout, parentLayoutId, parentLayout) {\r\n var levelIndex = levelIndexes[childLayoutId];\r\n var levelVisibility = levelVisibilities[levelIndex];\r\n var isCursor = (cursorItemId == childLayoutId);\r\n var isSelected = isItemSelected(childLayoutId);\r\n var treeItemTemplate = getTemplateParams(childLayoutId);\r\n treeItemsPositions[childLayoutId] = childLayout.measure(levelVisibility, isCursor, isSelected, treeItemTemplate, treeItemsPositions, options);\r\n });\r\n\r\n return {\r\n treeItemsPositions,\r\n size: treeItemsPositions[rootLayoutId].actualSize\r\n }\r\n }\r\n\r\n function getLevelVisibilities(maximumLevelIndex, possibleLevelVisibilities, cursorIndex) {\r\n var index,\r\n levelVisibility;\r\n\r\n var result = [];\r\n for(var levelIndex = 0; levelIndex <= maximumLevelIndex; levelIndex+=1 ) {\r\n result.push(Visibility.Normal);\r\n };\r\n\r\n /* set levels visibility */ \r\n for (index = 0; index <= cursorIndex; index += 1) {\r\n levelVisibility = possibleLevelVisibilities[index];\r\n result[levelVisibility.level] = levelVisibility.visibility;\r\n }\r\n return result;\r\n }\r\n\r\n function getPossibleLevelVisibilities(maximumLevelIndex, minimalVisibility) {\r\n var result = [new LevelVisibility(0, Visibility.Normal)];\r\n var visibilities = [];\r\n switch (minimalVisibility) {\r\n case Visibility.Normal:\r\n break;\r\n case Visibility.Dot:\r\n visibilities.push(Visibility.Dot);\r\n break;\r\n case Visibility.Auto:\r\n case Visibility.Line:\r\n case Visibility.Invisible:\r\n visibilities.push(Visibility.Dot);\r\n visibilities.push(Visibility.Line);\r\n break;\r\n }\r\n \r\n for(var levelIndex = maximumLevelIndex; levelIndex >= 0; levelIndex-=1) {\r\n for (var index = 0; index < visibilities.length; index += 1) {\r\n result.push(new LevelVisibility(levelIndex, visibilities[index]));\r\n }\r\n };\r\n \r\n return result;\r\n };\r\n\r\n function checkDiagramSize(diagramSize, panelSize, pageFitMode) {\r\n var result = false;\r\n switch (pageFitMode) {\r\n case PageFitMode.PageWidth:\r\n if (panelSize.width >= diagramSize.width) {\r\n result = true;\r\n }\r\n break;\r\n case PageFitMode.PageHeight:\r\n if (panelSize.height >= diagramSize.height) {\r\n result = true;\r\n }\r\n break;\r\n case PageFitMode.FitToPage:\r\n if (panelSize.height >= diagramSize.height && panelSize.width >= diagramSize.width) {\r\n result = true;\r\n }\r\n break;\r\n }\r\n return result;\r\n };\r\n\r\n function getShifts(normalLevelShift, dotLevelShift, lineLevelShift, invisibleLineLevelShift) {\r\n var result = [];\r\n result[Visibility.Normal] = normalLevelShift;\r\n result[Visibility.Dot] = dotLevelShift;\r\n result[Visibility.Line] = lineLevelShift;\r\n result[Visibility.Invisible] = invisibleLineLevelShift;\r\n return result;\r\n };\r\n \r\n function getIntervals(normalItemsInterval, dotItemsInterval, lineItemsInterval, invisibleLineItemsInterval) {\r\n var result = [];\r\n result[Visibility.Normal] = normalItemsInterval;\r\n result[Visibility.Dot] = dotItemsInterval;\r\n result[Visibility.Line] = lineItemsInterval;\r\n result[Visibility.Invisible] = invisibleLineItemsInterval;\r\n return result;\r\n };\r\n\r\n function getItemPosition(itemid) {\r\n return _data.treeItemsPositions[itemid];\r\n }\r\n\r\n function getItemsPositions() {\r\n return _data.treeItemsPositions;\r\n }\r\n\r\n function getContentSize() {\r\n return _data.size;\r\n }\r\n\r\n return {\r\n process: process,\r\n getItemsPositions: getItemsPositions,\r\n getItemPosition: getItemPosition,\r\n getContentSize: getContentSize\r\n };\r\n};","import Size from '../../graphics/structs/Size';\r\nimport Rect from '../../graphics/structs/Rect';\r\nimport Point from '../../graphics/structs/Point';\r\nimport TreeItemPosition from '../../models/TreeItemPosition';\r\nimport { OrientationType, Visibility, HorizontalAlignmentType, PageFitMode } from '../../enums';\r\nimport SpatialIndex from '../../algorithms/SpatialIndex';\r\nimport KeyboardNavigationManager from '../../managers/KeyboardNavigationManager';\r\n\r\nexport default function AlignDiagramTask(orientationOptionTask, itemsSizesOptionTask, visualTreeOptionTask, scaleOptionTask,\r\n currentControlSizeTask, activeItemsTask, itemsPositionsTask) {\r\n var _data = {\r\n treeItemsPositions: {}, // TreeItemPosition();\r\n panelSize: null // Rect();\r\n },\r\n _activeItems,\r\n _treeItemsPositions,\r\n _spatialIndex,\r\n _keyboardNavigationManager;\r\n\r\n function process() {\r\n var placeholderSize = new Size(itemsPositionsTask.getContentSize()),\r\n { optimalPanelSize } = currentControlSizeTask.getOptions(),\r\n { pageFitMode } = itemsSizesOptionTask.getOptions(),\r\n { orientationType } = orientationOptionTask.getOptions(),\r\n { horizontalAlignment } = visualTreeOptionTask.getOptions(),\r\n { scale } = scaleOptionTask.getOptions();\r\n \r\n _spatialIndex = null;\r\n _keyboardNavigationManager = null;\r\n _activeItems = activeItemsTask != null ? activeItemsTask.getActiveItems() : {};\r\n _treeItemsPositions = itemsPositionsTask.getItemsPositions();\r\n\r\n var panelSize = new Size(optimalPanelSize);\r\n\r\n switch (orientationType) {\r\n case OrientationType.Left:\r\n case OrientationType.Right:\r\n panelSize.invert();\r\n break;\r\n }\r\n\r\n panelSize.scale(1.0 / scale);\r\n\r\n // By default we translate everything forward\r\n _data.panelSize = panelSize;\r\n _data.treeItemsPositions = _treeItemsPositions;\r\n\r\n switch (pageFitMode) {\r\n case PageFitMode.AutoSize:\r\n _data.panelSize = new Size(placeholderSize);\r\n break;\r\n default:\r\n _data.panelSize = new Size(placeholderSize);\r\n if (placeholderSize.width < panelSize.width) {\r\n _data.treeItemsPositions = {};\r\n stretchToWidth(_data.treeItemsPositions, placeholderSize.width, panelSize.width, horizontalAlignment);\r\n _data.panelSize.width = panelSize.width;\r\n }\r\n if (placeholderSize.height < panelSize.height) {\r\n _data.panelSize.height = panelSize.height;\r\n }\r\n break;\r\n }\r\n\r\n switch (orientationType) {\r\n case OrientationType.Left:\r\n case OrientationType.Right:\r\n _data.panelSize.invert();\r\n break;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function stretchToWidth(treeItemsPositions, treeWidth, panelWidth, horizontalAlignment) {\r\n var offset;\r\n switch (horizontalAlignment) {\r\n case HorizontalAlignmentType.Left:\r\n offset = 0;\r\n break;\r\n case HorizontalAlignmentType.Right:\r\n offset = panelWidth - treeWidth;\r\n break;\r\n case HorizontalAlignmentType.Center:\r\n offset = (panelWidth - treeWidth) / 2.0;\r\n break;\r\n }\r\n translateItemPositions(treeItemsPositions, offset, 0);\r\n }\r\n\r\n function translateItemPositions(treeItemsPositions, offsetX, offsetY) {\r\n var treeItemId, treeItemPosition;\r\n for (treeItemId in _treeItemsPositions) {\r\n if (_treeItemsPositions.hasOwnProperty(treeItemId)) {\r\n treeItemPosition = new TreeItemPosition(_treeItemsPositions[treeItemId]);\r\n treeItemPosition.actualPosition.translate(offsetX, offsetY);\r\n treeItemsPositions[treeItemId] = treeItemPosition;\r\n }\r\n }\r\n }\r\n\r\n function getSizes() {\r\n var result = [];\r\n var hash = {};\r\n for (var itemid in _data.treeItemsPositions) {\r\n if (_data.treeItemsPositions.hasOwnProperty(itemid)) {\r\n var treeItemPosition = _data.treeItemsPositions[itemid];\r\n switch (treeItemPosition.actualVisibility) {\r\n case Visibility.Normal:\r\n case Visibility.Dot://ignore jslint\r\n case Visibility.Line:\r\n var item = treeItemPosition.actualPosition;\r\n var size = Math.max(item.width, item.height);\r\n if (!hash.hasOwnProperty(size)) {\r\n hash[size] = true;\r\n result.push(size);\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function getSpatialIndex() {\r\n if (_spatialIndex == null) {\r\n _spatialIndex = SpatialIndex(getSizes());\r\n for (var itemid in _data.treeItemsPositions) {\r\n if (_data.treeItemsPositions.hasOwnProperty(itemid)) {\r\n var treeItemPosition = _data.treeItemsPositions[itemid];\r\n if (_activeItems.hasOwnProperty(itemid)) {\r\n switch (treeItemPosition.actualVisibility) {\r\n case Visibility.Normal:\r\n case Visibility.Dot://ignore jslint\r\n case Visibility.Line:\r\n var rect = new Rect(treeItemPosition.actualPosition);\r\n rect.context = itemid;\r\n _spatialIndex.addRect(rect);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return _spatialIndex;\r\n }\r\n\r\n function getTreeItemForMousePosition(x, y, gravityRadius) {\r\n var result = null,\r\n bestDistance = null,\r\n spatialIndex = getSpatialIndex(),\r\n selection,\r\n center;\r\n\r\n selection = new Rect(x, y, 0, 0);\r\n center = new Point(x, y);\r\n selection.offset(gravityRadius, gravityRadius, gravityRadius, gravityRadius);\r\n\r\n spatialIndex.loopArea(this, selection, function (rect) {\r\n var itemid = rect.context;\r\n if (rect.contains(x, y)) {\r\n result = itemid;\r\n return true;\r\n }\r\n var treeItemPosition = _data.treeItemsPositions[itemid];\r\n switch (treeItemPosition.actualVisibility) {\r\n case Visibility.Dot://ignore jslint\r\n case Visibility.Line:\r\n var distance = center.distanceTo(rect.horizontalCenter(), rect.verticalCenter());\r\n if (bestDistance == null || distance < bestDistance) {\r\n bestDistance = distance;\r\n result = itemid;\r\n }\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n function getKeyboardNavigationManager() {\r\n if (_keyboardNavigationManager == null) {\r\n _keyboardNavigationManager = KeyboardNavigationManager();\r\n for (var itemid in _data.treeItemsPositions) {\r\n if (_data.treeItemsPositions.hasOwnProperty(itemid)) {\r\n var treeItemPosition = _data.treeItemsPositions[itemid];\r\n if (_activeItems.hasOwnProperty(itemid)) {\r\n switch (treeItemPosition.actualVisibility) {\r\n case Visibility.Normal:\r\n var rect = new Rect(treeItemPosition.actualPosition);\r\n _keyboardNavigationManager.addRect(rect, itemid);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return _keyboardNavigationManager;\r\n }\r\n\r\n function getNextItem(cursorItem, direction) {\r\n var manager = getKeyboardNavigationManager(),\r\n result;\r\n\r\n switch (direction) {\r\n case OrientationType.Top:\r\n result = manager.getItemAbove(cursorItem);\r\n break;\r\n case OrientationType.Bottom:\r\n result = manager.getItemBelow(cursorItem);\r\n break;\r\n case OrientationType.Left:\r\n result = manager.getItemOnLeft(cursorItem);\r\n break;\r\n case OrientationType.Right:\r\n result = manager.getItemOnRight(cursorItem);\r\n break;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function getItemPosition(itemid) {\r\n return _data.treeItemsPositions[itemid];\r\n }\r\n\r\n function getItemsPositions() {\r\n return _data.treeItemsPositions;\r\n }\r\n\r\n function getContentSize() {\r\n return _data.panelSize;\r\n }\r\n\r\n return {\r\n process: process,\r\n getItemPosition: getItemPosition,\r\n getItemsPositions: getItemsPositions,\r\n getContentSize: getContentSize,\r\n\r\n getTreeItemForMousePosition: getTreeItemForMousePosition,\r\n getNextItem: getNextItem\r\n };\r\n};","import SortedList from '../algorithms/SortedList';\r\nimport getMinimumCrossingRows from '../algorithms/getMinimumCrossingRows';\r\nimport TreeLevels from '../algorithms/TreeLevels';\r\nimport Rect from '../graphics/structs/Rect';\r\n\r\nexport default function KeyboardNavigationManager() {\r\n var /*\r\n Rectangles of the layout. Every rectangle has context property set to itemid.\r\n */\r\n _placements = [],\r\n /*\r\n This is sorted list of horizontal lines user may navigate along them and across with arrow keys between rectangles of the layout\r\n Every rectangle may belong to multiple rows, so rows selection is optimized to minimize their number\r\n */\r\n _rows,\r\n /*\r\n Tree levels structure is collection of colelctions. Its level contains sorted list of rectangles cross by individual row\r\n */\r\n _treeLevels,\r\n /*\r\n Current itemid and row. Every rectangle may belong to multiple rows, so this structure helps to stay within row during navigation. \r\n */\r\n _cursor = null;\r\n\r\n function Cursor(itemid, row) {\r\n this.itemid = itemid;\r\n this.row = row;\r\n }\r\n\r\n function addRect(rect, itemid) {\r\n var newRect = new Rect(rect);\r\n newRect.context = itemid;\r\n\r\n _placements.push(newRect);\r\n }\r\n\r\n function prepair() {\r\n if (_treeLevels == null) {\r\n var levelIndex = 0;\r\n _rows = SortedList();\r\n getMinimumCrossingRows(this, _placements, function (row) {\r\n _rows.add(row, levelIndex);\r\n levelIndex += 1;\r\n });\r\n\r\n _treeLevels = TreeLevels();\r\n _placements.sort(function (a, b) {\r\n return a.horizontalCenter() - b.horizontalCenter();\r\n });\r\n for (var index = 0, len = _placements.length; index < len; index += 1) {\r\n var placement = _placements[index];\r\n _rows.loopForward(this, placement.y, function (row, levelIndex) {\r\n if (row > placement.bottom()) {\r\n return true;\r\n }\r\n _treeLevels.addItem(levelIndex, placement.context, placement);\r\n });\r\n }\r\n }\r\n }\r\n\r\n function getCursor(itemid) {\r\n prepair();\r\n\r\n if (_cursor == null || _cursor.itemid != itemid) {\r\n _cursor = new Cursor(itemid, _treeLevels.getLevelIndex(itemid));\r\n }\r\n\r\n return _cursor;\r\n }\r\n\r\n function getItemAbove(itemid) {\r\n _cursor = getCursor(itemid);\r\n\r\n moveCursorNextRow(false);\r\n\r\n return _cursor.itemid;\r\n }\r\n\r\n function getItemBelow(itemid) {\r\n _cursor = getCursor(itemid);\r\n\r\n moveCursorNextRow(true);\r\n\r\n return _cursor.itemid;\r\n }\r\n\r\n function moveCursorNextRow(isBelow) {\r\n var cursorItemRect = _treeLevels.getItemContext(_cursor.itemid);\r\n var cursorCenter = cursorItemRect.horizontalCenter();\r\n var previousCursorItem = _cursor.itemid;\r\n _treeLevels.loopLevelsFromItem(this, _cursor.itemid, isBelow, function (levelIndex) {\r\n _cursor.row = levelIndex;\r\n _cursor.itemid = _treeLevels.binarySearch(this, levelIndex, function (itemid, placement) {\r\n return cursorCenter - placement.horizontalCenter();\r\n });\r\n return true;\r\n });\r\n if (previousCursorItem == _cursor.itemid) {\r\n if (isBelow) {\r\n _cursor.row = _treeLevels.getEndLevelIndex(_cursor.itemid);\r\n } else {\r\n _cursor.row = _treeLevels.getLevelIndex(_cursor.itemid);\r\n }\r\n }\r\n }\r\n\r\n function getItemOnLeft(itemid) {\r\n _cursor = getCursor(itemid);\r\n\r\n var nextItem = _treeLevels.getPrevItem(_cursor.itemid, _cursor.row);\r\n if (nextItem != null) {\r\n _cursor.itemid = nextItem;\r\n }\r\n return _cursor.itemid;\r\n }\r\n\r\n function getItemOnRight(itemid) {\r\n _cursor = getCursor(itemid);\r\n\r\n var nextItem = _treeLevels.getNextItem(_cursor.itemid, _cursor.row);\r\n if (nextItem != null) {\r\n _cursor.itemid = nextItem;\r\n }\r\n return _cursor.itemid;\r\n }\r\n\r\n function getNavigationLevels() {\r\n prepair();\r\n\r\n var result = [];\r\n _treeLevels.loopLevels(this, function (levelIndex, level) {\r\n var levelItems = [];\r\n _treeLevels.loopLevelItems(this, levelIndex, function (itemid, item, position) {\r\n levelItems.push(itemid);\r\n });\r\n result.push(levelItems);\r\n });\r\n return result;\r\n }\r\n\r\n return {\r\n addRect: addRect,\r\n prepair: prepair,\r\n getItemAbove: getItemAbove,\r\n getItemBelow: getItemBelow,\r\n getItemOnLeft: getItemOnLeft,\r\n getItemOnRight: getItemOnRight,\r\n getNavigationLevels: getNavigationLevels\r\n };\r\n};","import { OrientationType } from '../enums';\r\nimport Thickness from './structs/Thickness';\r\n\r\nexport default function Transform() {\r\n this.invertArea = false;\r\n this.invertHorizontally = false;\r\n this.invertVertically = false;\r\n\r\n this.size = null;\r\n};\r\n\r\nTransform.prototype.setOrientation = function (orientationType) {\r\n switch (orientationType) {\r\n case OrientationType.Top:\r\n this.invertArea = false;\r\n this.invertHorizontally = false;\r\n this.invertVertically = false;\r\n break;\r\n case OrientationType.Bottom:\r\n this.invertArea = false;\r\n this.invertHorizontally = false;\r\n this.invertVertically = true;\r\n break;\r\n case OrientationType.Left:\r\n this.invertArea = true;\r\n this.invertHorizontally = false;\r\n this.invertVertically = false;\r\n break;\r\n case OrientationType.Right:\r\n this.invertArea = true;\r\n this.invertHorizontally = true;\r\n this.invertVertically = false;\r\n break;\r\n }\r\n};\r\n\r\nTransform.prototype.getOrientation = function (orientationType) {\r\n var result = orientationType;\r\n if (this.invertHorizontally) {\r\n switch (orientationType) {\r\n case OrientationType.Left:\r\n result = OrientationType.Right;\r\n break;\r\n case OrientationType.Right:\r\n result = OrientationType.Left;\r\n break;\r\n }\r\n }\r\n\r\n if (this.invertVertically) {\r\n switch (orientationType) {\r\n case OrientationType.Top:\r\n result = OrientationType.Bottom;\r\n break;\r\n case OrientationType.Bottom:\r\n result = OrientationType.Top;\r\n break;\r\n }\r\n }\r\n\r\n\r\n if (this.invertArea) {\r\n switch (result) {\r\n case OrientationType.Top:\r\n result = OrientationType.Left;\r\n break;\r\n case OrientationType.Bottom:\r\n result = OrientationType.Right;\r\n break;\r\n case OrientationType.Left:\r\n result = OrientationType.Top;\r\n break;\r\n case OrientationType.Right:\r\n result = OrientationType.Bottom;\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n\r\nTransform.prototype.transformPoint = function (x, y, forward, self, func) {\r\n var value;\r\n\r\n if (forward) {\r\n if (this.invertArea) {\r\n value = x;\r\n x = y;\r\n y = value;\r\n }\r\n }\r\n\r\n if (this.invertHorizontally) {\r\n x = this.size.width - x;\r\n }\r\n if (this.invertVertically) {\r\n y = this.size.height - y;\r\n }\r\n\r\n if (!forward) {\r\n if (this.invertArea) {\r\n value = x;\r\n x = y;\r\n y = value;\r\n }\r\n }\r\n\r\n func.call(self, x, y);\r\n};\r\n\r\nTransform.prototype.transformPoints = function (x, y, x2, y2, forward, self, func) {\r\n var value;\r\n\r\n if (forward) {\r\n if (this.invertArea) {\r\n value = x;\r\n x = y;\r\n y = value;\r\n value = x2;\r\n x2 = y2;\r\n y2 = value;\r\n }\r\n }\r\n\r\n if (this.invertHorizontally) {\r\n x = this.size.width - x;\r\n x2 = this.size.width - x2;\r\n }\r\n\r\n if (this.invertVertically) {\r\n y = this.size.height - y;\r\n y2 = this.size.height - y2;\r\n }\r\n\r\n if (!forward) {\r\n if (this.invertArea) {\r\n value = x;\r\n x = y;\r\n y = value;\r\n value = x2;\r\n x2 = y2;\r\n y2 = value;\r\n }\r\n }\r\n\r\n func.call(self, x, y, x2, y2);\r\n};\r\n\r\nTransform.prototype.transform3Points = function (x, y, x2, y2, x3, y3, forward, self, func) {\r\n var value;\r\n\r\n if (forward) {\r\n if (this.invertArea) {\r\n value = x;\r\n x = y;\r\n y = value;\r\n value = x2;\r\n x2 = y2;\r\n y2 = value;\r\n value = x3;\r\n x3 = y3;\r\n y3 = value;\r\n }\r\n }\r\n\r\n if (this.invertHorizontally) {\r\n x = this.size.width - x;\r\n x2 = this.size.width - x2;\r\n x3 = this.size.width - x3;\r\n }\r\n if (this.invertVertically) {\r\n y = this.size.height - y;\r\n y2 = this.size.height - y2;\r\n y3 = this.size.height - y3;\r\n }\r\n\r\n if (!forward) {\r\n if (this.invertArea) {\r\n value = x;\r\n x = y;\r\n y = value;\r\n value = x2;\r\n x2 = y2;\r\n y2 = value;\r\n value = x3;\r\n x3 = y3;\r\n y3 = value;\r\n }\r\n }\r\n\r\n func.call(self, x, y, x2, y2, x3, y3);\r\n};\r\n\r\nTransform.prototype.transformRect = function (x, y, width, height, forward, self, func) {\r\n var value;\r\n\r\n if (forward) {\r\n if (this.invertArea) {\r\n value = x;\r\n x = y;\r\n y = value;\r\n value = width;\r\n width = height;\r\n height = value;\r\n }\r\n }\r\n\r\n if (this.invertHorizontally) {\r\n x = this.size.width - x - width;\r\n }\r\n if (this.invertVertically) {\r\n y = this.size.height - y - height;\r\n }\r\n\r\n if (!forward) {\r\n if (this.invertArea) {\r\n value = x;\r\n x = y;\r\n y = value;\r\n value = width;\r\n width = height;\r\n height = value;\r\n }\r\n }\r\n\r\n func.call(self, x, y, width, height);\r\n};\r\n\r\nTransform.prototype.transformThickness = function (thickness, forward) {\r\n var value,\r\n {left, right, top, bottom } = thickness;\r\n\r\n if (forward) {\r\n if (this.invertArea) {\r\n value = left;\r\n left = top;\r\n top = value;\r\n value = right;\r\n right = bottom;\r\n bottom = value;\r\n }\r\n }\r\n\r\n if (this.invertHorizontally) {\r\n value = left;\r\n left = right;\r\n right = value;\r\n }\r\n if (this.invertVertically) {\r\n value = top;\r\n top = bottom;\r\n bottom = value;\r\n }\r\n\r\n if (!forward) {\r\n if (this.invertArea) {\r\n value = left;\r\n left = top;\r\n top = value;\r\n value = right;\r\n right = bottom;\r\n bottom = value;\r\n }\r\n }\r\n\r\n return new Thickness(left, top, right, bottom);\r\n};\r\n","import Transform from '../../graphics/Transform';\r\nimport Size from '../../graphics/structs/Size';\r\n\r\nexport default function CreateTransformTask(orientationOptionTask, scaleOptionTask, alignDiagramTask) {\r\n var _data = {\r\n transform: null\r\n };\r\n\r\n function process() {\r\n var orientationOptions = orientationOptionTask.getOptions();\r\n\r\n var panelSize = new Size(alignDiagramTask.getContentSize());\r\n\r\n _data.transform = new Transform();\r\n _data.transform.setOrientation(orientationOptions.orientationType);\r\n _data.transform.size = new Size(panelSize);\r\n\r\n return true;\r\n }\r\n\r\n function getTreeItemForMousePosition(x, y, gravityRadius) {\r\n var result = null,\r\n { scale } = scaleOptionTask.getOptions();\r\n \r\n x = x / scale;\r\n y = y / scale;\r\n\r\n _data.transform.transformPoint(x, y, false, this, function (x, y) {\r\n result = alignDiagramTask.getTreeItemForMousePosition(x, y, gravityRadius);\r\n });\r\n return result;\r\n }\r\n\r\n function getTransform() {\r\n return _data.transform;\r\n }\r\n\r\n return {\r\n process: process,\r\n getTransform: getTransform,\r\n getTreeItemForMousePosition: getTreeItemForMousePosition,\r\n description: \"Create coordinate system transformation object.\"\r\n };\r\n};","import PaletteItem from './PaletteItem';\r\nimport { ConnectorStyleType } from '../../enums';\r\n\r\nexport default function PaletteManager(options, linesPalette) {\r\n this.palette = [];\r\n this.cursor = 0;\r\n\r\n var index, len;\r\n\r\n /* pallete based connectors */\r\n if (linesPalette.length === 0) {\r\n /* draw all extra as regular */\r\n this.palette = [new PaletteItem({\r\n lineColor: options.linesColor,\r\n lineWidth: options.linesWidth,\r\n lineType: options.linesType\r\n })];\r\n this.paletteLength = this.palette.length;\r\n\r\n this.regularIndex = 0;\r\n } else {\r\n for (index = 0, len = linesPalette.length; index < len; index += 1) {\r\n this.palette.push(new PaletteItem(linesPalette[index]));\r\n }\r\n this.paletteLength = this.palette.length;\r\n\r\n /* regular */\r\n this.palette.push(new PaletteItem({\r\n lineColor: options.linesColor,\r\n lineWidth: options.linesWidth,\r\n lineType: options.linesType\r\n }));\r\n this.regularIndex = this.palette.length - 1;\r\n }\r\n\r\n /* highlight */\r\n this.palette.push(new PaletteItem({\r\n lineColor: options.highlightLinesColor,\r\n lineWidth: options.highlightLinesWidth,\r\n lineType: options.highlightLinesType\r\n }));\r\n this.highlightIndex = this.palette.length - 1;\r\n};\r\n\r\nPaletteManager.prototype.selectPalette = function (index) {\r\n this.cursor = index % this.paletteLength;\r\n};\r\n\r\nPaletteManager.prototype.getPalette = function (connectorStyleType) {\r\n var index = null;\r\n switch (connectorStyleType) {\r\n case ConnectorStyleType.Regular:\r\n index = this.regularIndex;\r\n break;\r\n case ConnectorStyleType.Highlight:\r\n index = this.highlightIndex;\r\n break;\r\n case ConnectorStyleType.Extra:\r\n index = this.cursor;\r\n break;\r\n }\r\n return this.palette[index];\r\n};","import PaletteManager from '../../graphics/structs/PaletteManager';\r\n\r\nexport default function PaletteManagerTask(connectorsOptionTask, linePaletteOptionTask) {\r\n var _paletteManager;\r\n\r\n function process() {\r\n var linesPalette = [];\r\n if (linePaletteOptionTask != null) {\r\n linesPalette = linePaletteOptionTask.getOptions().linesPalette;\r\n }\r\n _paletteManager = new PaletteManager(connectorsOptionTask.getOptions(), linesPalette);\r\n\r\n return true;\r\n }\r\n\r\n function getPaletteManager() {\r\n return _paletteManager;\r\n }\r\n\r\n return {\r\n process: process,\r\n getPaletteManager: getPaletteManager\r\n };\r\n};","import Size from '../../graphics/structs/Size';\r\nimport Thickness from '../../graphics/structs/Thickness';\r\nimport { PageFitMode } from '../../enums';\r\nimport Rect from '../../graphics/structs/Rect';\r\nimport Point from '../../graphics/structs/Point';\r\n\r\nexport default function ApplyLayoutChangesTask(getGraphics, setLayout, itemsSizesOptionTask,\r\n currentControlSizeTask, scaleOptionTask, alignDiagramTask, frameSizeTask, levelTitleSizeTask) {\r\n var _data = {\r\n viewportSize: null,\r\n frameThickness: null,\r\n framePlaceholderSize: null\r\n };\r\n\r\n function process() {\r\n var graphics = getGraphics(),\r\n { scale } = scaleOptionTask.getOptions(),\r\n { pageFitMode, autoSizeMinimum, autoSizeMaximum } = itemsSizesOptionTask.getOptions(),\r\n placeholderSize = alignDiagramTask.getContentSize(),\r\n { scrollPanelSize, hasFrame, hasLevelTitles } = currentControlSizeTask.getOptions(),\r\n viewportSize = new Size(scrollPanelSize),\r\n frameThickness = frameSizeTask.getThickness(),\r\n titlesThickness = new Thickness(levelTitleSizeTask.getOptions().thickness),\r\n autoSize = (pageFitMode == PageFitMode.AutoSize);\r\n\r\n /* scaled content size */\r\n var mousePanelSize = new Size(placeholderSize);\r\n mousePanelSize.scale(scale);\r\n\r\n if (autoSize) {\r\n /* resize element to fit placeholder if control is in auto size mode\r\n 25 it is reservation for scrollbars \r\n minimum & maximum auto size regulate maximum and minimum diagram size\r\n it is handy when it is needed to limit oversized diagram expansion\r\n or diagram is empty or so tiny that it is not clear that it exists at all\r\n */\r\n viewportSize = new Size(mousePanelSize.width + 25, mousePanelSize.height + 25);\r\n viewportSize.addThickness(frameThickness);\r\n if(titlesThickness.isPositive()) {\r\n viewportSize.addThickness(titlesThickness);\r\n }\r\n viewportSize.cropBySize(autoSizeMaximum);\r\n viewportSize.maxSize(autoSizeMinimum);//ignore jslint\r\n\r\n // disable frame if its square space is bigger than viewport\r\n var framedViewportSize = new Size(viewportSize);\r\n framedViewportSize.removeThickness(frameThickness);\r\n if(titlesThickness.isPositive()) {\r\n framedViewportSize.removeThickness(titlesThickness);\r\n }\r\n if(viewportSize.space() < framedViewportSize.space() * 2) {\r\n viewportSize = framedViewportSize;\r\n } else {\r\n frameThickness = new Thickness( 0, 0, 0, 0 );\r\n titlesThickness = new Thickness( 0, 0, 0, 0 );\r\n }\r\n } else {\r\n if(!hasFrame) {\r\n frameThickness = new Thickness( 0, 0, 0, 0 );\r\n }\r\n if(!hasLevelTitles && titlesThickness.isPositive()) {\r\n titlesThickness = new Thickness( 0, 0, 0, 0 );\r\n }\r\n }\r\n\r\n // Control Size\r\n var decorThickness = new Thickness(frameThickness);\r\n if(titlesThickness.isPositive()) {\r\n decorThickness.addThickness(titlesThickness);\r\n }\r\n var controlSize = new Size(viewportSize);\r\n controlSize.addThickness(decorThickness);\r\n\r\n // Scroll panel placement\r\n var scrollPanelRect = new Rect(decorThickness.left, decorThickness.top, viewportSize.width, viewportSize.height);\r\n\r\n /* frame */\r\n var framePlaceholderSize = new Size(controlSize);\r\n var frameMousePanelRect = new Rect(0, 0, framePlaceholderSize.width, framePlaceholderSize.height);\r\n framePlaceholderSize.scale(1 / scale);\r\n\r\n /* level titles */\r\n var firstPoint = new Point(0, 0), \r\n secondPoint = new Point(0, 0);\r\n if(titlesThickness.left != 0) {\r\n firstPoint = new Point(scrollPanelRect.x, scrollPanelRect.y);\r\n secondPoint = new Point(scrollPanelRect.x - titlesThickness.left, scrollPanelRect.bottom());\r\n } else if(titlesThickness.right != 0) {\r\n firstPoint = new Point(scrollPanelRect.right(), scrollPanelRect.y);\r\n secondPoint = new Point(scrollPanelRect.right() + titlesThickness.right, scrollPanelRect.bottom());\r\n } else if(titlesThickness.top != 0) {\r\n firstPoint = new Point(scrollPanelRect.x, scrollPanelRect.y);\r\n secondPoint = new Point(scrollPanelRect.right(), scrollPanelRect.y - titlesThickness.top);\r\n } else if(titlesThickness.bottom != 0) {\r\n firstPoint = new Point(scrollPanelRect.x, scrollPanelRect.bottom());\r\n secondPoint = new Point(scrollPanelRect.right(), scrollPanelRect.bottom() + titlesThickness.bottom);\r\n }\r\n var titlesMousePanelRect = new Rect(firstPoint, secondPoint);\r\n var titlesPlaceholderSize = new Size(titlesMousePanelRect);\r\n titlesPlaceholderSize.scale(1 / scale);\r\n \r\n graphics.resize(\"frameplaceholder\", framePlaceholderSize.width, framePlaceholderSize.height );\r\n graphics.resize(\"titlesplaceholder\", titlesPlaceholderSize.width, titlesPlaceholderSize.height );\r\n graphics.resize(\"placeholder\", placeholderSize.width, placeholderSize.height);\r\n\r\n setLayout({\r\n autoSize: autoSize, // resize control if true\r\n controlSize: controlSize, // Sets control Size in auto scale mode\r\n scale: scale, // scale is needed for scale transform CSS creation\r\n\r\n frameMousePanelRect: frameMousePanelRect,\r\n framePlaceholderSize: framePlaceholderSize, // the frame content size before CSS Scale Transform applied\r\n\r\n titlesMousePanelRect: titlesMousePanelRect,\r\n titlesPlaceholderSize: titlesPlaceholderSize, // Titles size before CSS Scale Transform applied\r\n\r\n scrollPanelRect: scrollPanelRect,\r\n mousePanelSize: mousePanelSize, // Content mouse panel size\r\n placeholderSize: placeholderSize // Content size before CSS Scale Transform applied\r\n\r\n });\r\n\r\n \r\n _data.viewportSize = viewportSize;\r\n _data.frameThickness = frameThickness;\r\n _data.frameOffset = titlesThickness.isPositive() ? titlesThickness : new Thickness( 0, 0, 0, 0 );\r\n _data.titlesThickness = titlesThickness;\r\n _data.framePlaceholderSize = framePlaceholderSize;\r\n return true;\r\n }\r\n\r\n function getOptimalPanelSize() {\r\n return new Size(_data.viewportSize.width - 25, _data.viewportSize.height - 25);\r\n }\r\n\r\n function getScrollPanelSize() {\r\n return new Size(_data.viewportSize.width, _data.viewportSize.height);\r\n }\r\n\r\n function getFrameThickness() {\r\n return new Thickness(_data.frameThickness);\r\n }\r\n\r\n function getFrameOffset() {\r\n return new Thickness(_data.frameOffset);\r\n }\r\n\r\n function getTitlesThickness() {\r\n return new Thickness(_data.titlesThickness);\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptimalPanelSize: getOptimalPanelSize,\r\n getScrollPanelSize: getScrollPanelSize,\r\n getFrameThickness: getFrameThickness,\r\n getFrameOffset: getFrameOffset,\r\n getTitlesThickness: getTitlesThickness\r\n };\r\n};","import Size from '../../graphics/structs/Size';\r\nimport Point from '../../graphics/structs/Point';\r\nimport Rect from '../../graphics/structs/Rect';\r\n\r\n/*\r\n This method should try to keep cursor item as close as possible to its previous position\r\n*/\r\nexport default function CenterOnCursorTask(layoutOptionsTask, applyLayoutChangesTask, currentScrollPositionTask, cursorItemTask, alignDiagramTask, createTransformTask, scaleOptionTask) {\r\n var _data = {\r\n placeholderOffset: null\r\n },\r\n _transform;\r\n\r\n function process() {\r\n var snapRect,\r\n layoutOptions = layoutOptionsTask.getOptions(),\r\n cursorTreeItemId = cursorItemTask.getCursorTreeItem(),\r\n treeItemPosition = alignDiagramTask.getItemPosition(cursorTreeItemId),\r\n contentSize = new Size(alignDiagramTask.getContentSize()),\r\n scrollPanelSize,\r\n scaleOptions = scaleOptionTask.getOptions(),\r\n scale = scaleOptions.scale;\r\n\r\n _data.placeholderOffset = currentScrollPositionTask.getPlaceholderOffset();\r\n\r\n if (layoutOptions.forceCenterOnCursor) {\r\n _transform = createTransformTask.getTransform();\r\n if (treeItemPosition != null) {\r\n snapRect = getTransformedItemPosition(treeItemPosition.actualPosition);\r\n snapRect.scale(scale);\r\n contentSize.scale(scale);\r\n scrollPanelSize = applyLayoutChangesTask.getScrollPanelSize();\r\n _data.placeholderOffset = new Point(\r\n Math.max(Math.min(snapRect.horizontalCenter() - scrollPanelSize.width / 2, contentSize.width - scrollPanelSize.width), 0),\r\n Math.max(Math.min(snapRect.verticalCenter() - scrollPanelSize.height / 2, contentSize.height - scrollPanelSize.height), 0)\r\n );\r\n }\r\n }\r\n\r\n\r\n return true;\r\n }\r\n\r\n function getTransformedItemPosition(position) {\r\n var result = false;\r\n\r\n _transform.transformRect(position.x, position.y, position.width, position.height, true,\r\n this, function (x, y, width, height) {\r\n result = new Rect(x, y, width, height);\r\n }\r\n );\r\n return result;\r\n }\r\n\r\n function getPlaceholderOffset() {\r\n return _data.placeholderOffset;\r\n }\r\n\r\n return {\r\n process: process,\r\n getPlaceholderOffset: getPlaceholderOffset\r\n };\r\n};","import SpatialIndex from '../../algorithms/SpatialIndex';\r\nimport Thickness from '../../graphics/structs/Thickness';\r\nimport Size from '../../graphics/structs/Size';\r\nimport Point from '../../graphics/structs/Point';\r\nimport Rect from '../../graphics/structs/Rect';\r\n\r\nexport default function ProjectItemsToFrameTask(createTransformTask, frameSizeTask,\r\n applyLayoutChangesTask, scaleOptionTask,\r\n alignDiagramTask, centerOnCursorTask,\r\n itemTemplateParamsTask,\r\n selectedItemsTask) {\r\n\r\n var _data = {\r\n positions: {}\r\n },\r\n _scaleOptions,\r\n _spatialIndex;\r\n\r\n function process() {\r\n var positions = alignDiagramTask.getItemsPositions(),\r\n transform = createTransformTask.getTransform();\r\n\r\n _scaleOptions = scaleOptionTask.getOptions(),\r\n _spatialIndex = null;\r\n _data.positions = [];\r\n\r\n var medianPosition = getFrameMedianPosition(),\r\n selectedItems = selectedItemsTask.getItems();\r\n\r\n if(medianPosition != null) {\r\n for(var index = 0, len = selectedItems.length; index < len; index+=1) {\r\n var treeItemId = selectedItems[index],\r\n treeItemPosition = positions[treeItemId],\r\n actualPosition = treeItemPosition.actualPosition;\r\n\r\n transform.transformRect(actualPosition.x, actualPosition.y, actualPosition.width, actualPosition.height, true,\r\n this, function (x, y, width, height) {\r\n var nodePosition = new Rect(x, y, width, height);\r\n if (!medianPosition.rect.overlaps(nodePosition)) {\r\n var projectionPoint = medianPosition.rect.getProjectionPoint(nodePosition.centerPoint());\r\n if (projectionPoint != null) {\r\n // node position is not scaled, scaling is done with CSS\r\n var templateParams = itemTemplateParamsTask.getTemplateParams(treeItemId),\r\n templateConfig = templateParams.template.templateConfig,\r\n markerSize = new Size(templateConfig.minimizedItemSize),\r\n markerProjectionRect = new Rect(\r\n projectionPoint.x - markerSize.width / 2, \r\n projectionPoint.y - markerSize.height / 2, \r\n markerSize.width, \r\n markerSize.height);\r\n \r\n markerProjectionRect.translate(- medianPosition.offset.x, - medianPosition.offset.y);\r\n _data.positions[treeItemId] = markerProjectionRect;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n function getFrameMedianPosition() {\r\n var result = null;\r\n if (centerOnCursorTask != null) {\r\n var scale = _scaleOptions.scale,\r\n placeholderOffset = new Point(centerOnCursorTask.getPlaceholderOffset()),\r\n scrollPanelSize = new Size(applyLayoutChangesTask.getScrollPanelSize()),\r\n frameThickness = new Thickness(applyLayoutChangesTask.getFrameThickness()),\r\n frameBaseOffset = new Thickness(applyLayoutChangesTask.getFrameOffset()),\r\n medianThickness = new Thickness(frameSizeTask.getMedian());\r\n\r\n if(!frameThickness.isEmpty()) {\r\n placeholderOffset.scale(1.0 / scale);\r\n frameThickness.scale(1.0 / scale);\r\n frameBaseOffset.scale(1.0 / scale);\r\n scrollPanelSize.scale(1.0 / scale);\r\n medianThickness.scale(1.0 / scale);\r\n\r\n var frameOffset = new Point(placeholderOffset.x - frameBaseOffset.left - frameThickness.left, placeholderOffset.y - frameBaseOffset.top - frameThickness.top);\r\n\r\n var medianRect = new Rect(placeholderOffset.x, placeholderOffset.y, scrollPanelSize.width, scrollPanelSize.height);\r\n medianRect.offset(frameBaseOffset);\r\n medianRect.offset(medianThickness);\r\n\r\n result = {\r\n offset: frameOffset,\r\n rect: medianRect \r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function getSizes() {\r\n var result = [];\r\n var hash = {};\r\n for (var treeItemId in _data.positions) {\r\n if(_data.positions.hasOwnProperty(treeItemId)) {\r\n var rect = _data.positions[treeItemId];\r\n var size = Math.max(rect.width, rect.height);\r\n if (!hash.hasOwnProperty(size)) {\r\n hash[size] = true;\r\n result.push(size);\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function getSpatialIndex() {\r\n if (_spatialIndex == null) {\r\n _spatialIndex = SpatialIndex(getSizes());\r\n for (var treeItemId in _data.positions) {\r\n if(_data.positions.hasOwnProperty(treeItemId)) {\r\n var rect = _data.positions[treeItemId];\r\n rect.context = treeItemId;\r\n _spatialIndex.addRect(rect);\r\n }\r\n }\r\n }\r\n return _spatialIndex;\r\n }\r\n\r\n function getTreeItemForMousePosition(x, y, gravityRadius) {\r\n var result = null,\r\n bestDistance = null,\r\n scale = _scaleOptions.scale,\r\n spatialIndex = getSpatialIndex(),\r\n selection,\r\n center;\r\n\r\n x = x / scale;\r\n y = y / scale;\r\n selection = new Rect(x, y, 0, 0);\r\n center = new Point(x, y);\r\n selection.offset(gravityRadius, gravityRadius, gravityRadius, gravityRadius);\r\n\r\n spatialIndex.loopArea(this, selection, function (rect) {\r\n var itemid = rect.context;\r\n var distance = center.distanceTo(rect.horizontalCenter(), rect.verticalCenter());\r\n if (bestDistance == null || distance < bestDistance) {\r\n bestDistance = distance;\r\n result = itemid;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n function getPositions() {\r\n return _data.positions;\r\n }\r\n\r\n return {\r\n getPositions:getPositions,\r\n getTreeItemForMousePosition: getTreeItemForMousePosition,\r\n process: process\r\n };\r\n};","import Rect from '../../graphics/structs/Rect';\r\nimport Point from '../../graphics/structs/Point';\r\nimport Size from '../../graphics/structs/Size';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\nimport ValueReader from '../../readers/ValueReader';\r\n\r\nexport default function ViewPortPlacementTask(scaleOptionTask, centerOnCursorTask, createTransformTask, applyLayoutChangesTask) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n viewPortPosition: new ObjectReader({\r\n x: new ValueReader([\"number\"], false, 0),\r\n y: new ValueReader([\"number\"], false, 0),\r\n width: new ValueReader([\"number\"], false, 0),\r\n height: new ValueReader([\"number\"], false, 0)\r\n }, false, new Rect(0, 0, 0, 0))\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, getTransformedPosition(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getTransformedPosition() {\r\n var viewPortPosition,\r\n transform = createTransformTask.getTransform(),\r\n position = getPosition();\r\n if(position != null ) {\r\n transform.transformRect(position.x, position.y, position.width, position.height, false,\r\n this, function (x, y, width, height) { \r\n viewPortPosition = new Rect(x, y, width, height);\r\n });\r\n }\r\n return { viewPortPosition: viewPortPosition };\r\n }\r\n\r\n function getPosition() {\r\n var scaleOptions = scaleOptionTask.getOptions(),\r\n scale = scaleOptions.scale,\r\n placeholderOffset = centerOnCursorTask ? new Point(centerOnCursorTask.getPlaceholderOffset()) : new Point(0, 0),\r\n optimalPanelSize = new Size(applyLayoutChangesTask.getOptimalPanelSize());\r\n\r\n placeholderOffset.scale(1.0 / scale);\r\n optimalPanelSize.scale(1.0 / scale);\r\n\r\n var result = new Rect(\r\n placeholderOffset.x,\r\n placeholderOffset.y,\r\n optimalPanelSize.width,\r\n optimalPanelSize.height\r\n );\r\n return result;\r\n }\r\n\r\n function getViewPortPosition() {\r\n return _data.viewPortPosition;\r\n }\r\n\r\n return {\r\n process: process,\r\n getViewPortPosition: getViewPortPosition\r\n };\r\n};","import Interval from '../../graphics/structs/Interval';\r\nimport Rect from '../../graphics/structs/Rect';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\nimport ValueReader from '../../readers/ValueReader';\r\n\r\nexport default function VerticalOffsetTask(viewPortPlacementTask) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n verticalOffset: new ObjectReader({\r\n from: new ValueReader([\"number\"], false, 0),\r\n to: new ValueReader([\"number\"], false, 0)\r\n }, false, new Interval(0, 0))\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, getOffset(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getOffset() {\r\n var viewPortPosition = new Rect(viewPortPlacementTask.getViewPortPosition());\r\n return { verticalOffset: viewPortPosition.verticalInterval() };\r\n }\r\n\r\n function getVerticalOffset() {\r\n return _data.verticalOffset;\r\n }\r\n\r\n return {\r\n process: process,\r\n getVerticalOffset: getVerticalOffset\r\n };\r\n};","import { ItemType } from '../../enums';\r\nimport getMergedIntervals from '../../algorithms/getMergedIntervals';\r\nimport Interval from '../../graphics/structs/Interval';\r\nimport { GroupType } from '../transformations/visualTreeBuilder/enums';\r\n\r\nexport default function OrgLogicalLevelsPlacementTask(orgTreeTask, visualTreeTask, alignDiagramTask) {\r\n var _data = {\r\n positions: []\r\n };\r\n\r\n function process() {\r\n _data.positions = null;\r\n return true;\r\n }\r\n\r\n function createPositions() {\r\n var intervals = [],\r\n orgTree = orgTreeTask.getOrgTree(),\r\n itemsPositions = alignDiagramTask.getItemsPositions(),\r\n branchAligner = visualTreeTask.getBranchAligner(),\r\n visited = {};\r\n\r\n orgTree.loopLevels(this, function(nodeId, node, levelIndex) {\r\n if(node.itemType == ItemType.Regular) {\r\n if(node.isVisible) {\r\n var itemPosition = itemsPositions[nodeId];\r\n if(itemPosition) {\r\n var levelOffset = node.levelOffset;\r\n if(levelOffset === null) {\r\n levelOffset = branchAligner.getGroupSize(node.parent, GroupType.RowChildren);\r\n }\r\n var interval = new Interval(itemPosition.topConnectorShift, itemPosition.bottomConnectorShift - 1, levelIndex + levelOffset)\r\n var key = interval.toString();\r\n if(!visited[key]) {\r\n visited[key] = true;\r\n intervals.push(interval);\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n return orgTree.SKIP;\r\n });\r\n\r\n var mergedIntervals = [];\r\n getMergedIntervals(this, intervals, function(interval) {\r\n mergedIntervals.push(interval);\r\n });\r\n intervals = mergedIntervals;\r\n\r\n /* merge intervals having equal logical levels */\r\n mergedIntervals = [];\r\n var currentInterval = null;\r\n for(var index = 0, len = intervals.length; index < len; index+=1) {\r\n var interval = intervals[index];\r\n if(!currentInterval) {\r\n currentInterval = interval;\r\n mergedIntervals.push(interval);\r\n } else {\r\n if(currentInterval.context === interval.context) {\r\n currentInterval.to = interval.to;\r\n } else {\r\n currentInterval = interval;\r\n mergedIntervals.push(interval);\r\n }\r\n }\r\n }\r\n intervals = mergedIntervals;\r\n\r\n /* extend first level to the top */\r\n if(intervals.length > 0) {\r\n intervals[0].from = 0;\r\n }\r\n\r\n /* fill gaps between levels */\r\n for(var index = 0, len = intervals.length - 1; index < len; index+=1) {\r\n var prev = intervals[index];\r\n var next = intervals[index + 1];\r\n\r\n prev.to = next.from;\r\n }\r\n\r\n /* find minimal level */\r\n var minLevelIndex = null;\r\n for(var index = 0, len = intervals.length; index < len; index+=1) {\r\n var interval = intervals[index];\r\n minLevelIndex = (minLevelIndex === null) ? interval.context : Math.min(minLevelIndex, interval.context);\r\n }\r\n\r\n /* group intervals by logical levels */ \r\n var result = {};\r\n for(var index = 0, len = intervals.length; index < len; index+=1) {\r\n var interval = intervals[index];\r\n var levelIndex = interval.context - minLevelIndex;\r\n var logicalLevelPosition = result[levelIndex];\r\n if(!logicalLevelPosition) {\r\n result[levelIndex] = [interval];\r\n } else {\r\n logicalLevelPosition.push(interval);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n\r\n function getPositions() {\r\n if(!_data.positions) {\r\n _data.positions = createPositions();\r\n }\r\n return _data.positions;\r\n }\r\n\r\n return {\r\n getPositions:getPositions,\r\n process: process\r\n };\r\n};","import getMergedIntervals from '../../algorithms/getMergedIntervals';\r\n\r\nexport default function MergeLevelIntervalsTask(levelAnnotationOptionTask, logicalLevelsPlacementTask) {\r\n var _data = {\r\n positions: []\r\n };\r\n\r\n function process() {\r\n var annotations = levelAnnotationOptionTask.getAnnotations();\r\n\r\n _data.positions = [];\r\n \r\n if(annotations.length > 0) {\r\n var positions = logicalLevelsPlacementTask.getPositions();\r\n _data.positions = createPositions(annotations, positions);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function createPositions(annotations, positions) {\r\n var index, len,\r\n index2, len2,\r\n used = {},\r\n result = {};\r\n\r\n for (index = 0, len = annotations.length; index < len; index += 1) {\r\n var annotationConfig = annotations[index];\r\n var levels = annotationConfig.levels;\r\n var intervals = [];\r\n if (levels != null && levels.length > 0) {\r\n for (index2 = 0, len2 = levels.length; index2 < len2; index2 += 1) {\r\n var level = levels[index2];\r\n if(!used[level]) {\r\n used[level] = true;\r\n\r\n var intervals = [];\r\n if (positions[level] != null) {\r\n intervals = intervals.concat(positions[level]);\r\n }\r\n }\r\n }\r\n }\r\n result[index] = [];\r\n getMergedIntervals(this, intervals, function(interval) {\r\n result[index].push(interval);\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n\r\n\r\n function getPositions() {\r\n return _data.positions;\r\n }\r\n\r\n return {\r\n getPositions:getPositions,\r\n process: process\r\n };\r\n};","import Rect from '../structs/Rect';\r\nimport Point from '../structs/Point';\r\nimport { PlacementType } from '../../enums';\r\n\r\nexport default function BaseShape() {\r\n\r\n};\r\n\r\n\r\nBaseShape.prototype._getLabelPosition = function (x, y, width, height, labelWidth, labelHeight, labelOffset, labelPlacement) {\r\n var result = null;\r\n switch (labelPlacement) {\r\n case PlacementType.Top:\r\n result = new Rect(x + width / 2.0 - labelWidth / 2.0, y - labelOffset - labelHeight, labelWidth, labelHeight);\r\n break;\r\n case PlacementType.TopRight:\r\n result = new Rect(x + width - labelWidth, y - labelOffset - labelHeight, labelWidth, labelHeight);\r\n break;\r\n case PlacementType.TopLeft:\r\n result = new Rect(x, y - labelOffset - labelHeight, labelWidth, labelHeight);\r\n break;\r\n case PlacementType.Right:\r\n result = new Rect(x + width + labelOffset, y + height / 2.0 - labelHeight / 2.0, labelWidth, labelHeight);\r\n break;\r\n case PlacementType.RightTop:\r\n result = new Rect(x + width + labelOffset, y, labelWidth, labelHeight);\r\n break;\r\n case PlacementType.RightBottom:\r\n result = new Rect(x + width + labelOffset, y + height - labelHeight, labelWidth, labelHeight);\r\n break;\r\n case PlacementType.BottomRight:\r\n result = new Rect(x + width - labelWidth, y + height + labelOffset, labelWidth, labelHeight);\r\n break;\r\n case PlacementType.BottomLeft:\r\n result = new Rect(x, y + height + labelOffset, labelWidth, labelHeight);\r\n break;\r\n case PlacementType.Left:\r\n result = new Rect(x - labelWidth - labelOffset, y + height / 2.0 - labelHeight / 2.0, labelWidth, labelHeight);\r\n break;\r\n case PlacementType.LeftTop:\r\n result = new Rect(x - labelWidth - labelOffset, y, labelWidth, labelHeight);\r\n break;\r\n case PlacementType.LeftBottom:\r\n result = new Rect(x - labelWidth - labelOffset, y + height - labelHeight, labelWidth, labelHeight);\r\n break;\r\n case PlacementType.Auto: //ignore jslint\r\n case PlacementType.Bottom: //ignore jslint\r\n default: //ignore jslint\r\n result = new Rect(x + width / 2.0 - labelWidth / 2.0, y + height + labelOffset, labelWidth, labelHeight);\r\n break;\r\n }\r\n return result;\r\n};\r\n\r\nBaseShape.prototype._betweenPoint = function (first, second) {\r\n return new Point((first.x + second.x) / 2, (first.y + second.y) / 2);\r\n};\r\n\r\nBaseShape.prototype._offsetPoint = function (first, second, offset) {\r\n var result = null,\r\n distance = first.distanceTo(second);\r\n\r\n if (distance === 0 || offset === 0) {\r\n result = new Point(first);\r\n } else {\r\n result = new Point(first.x + (second.x - first.x) / distance * offset, first.y + (second.y - first.y) / distance * offset);\r\n }\r\n return result;\r\n};","import BaseShape from './BaseShape';\r\nimport Polyline from '../structs/Polyline';\r\nimport PaletteItem from '../structs/PaletteItem';\r\nimport MoveSegment from '../structs/MoveSegment';\r\nimport LineSegment from '../structs/LineSegment';\r\nimport { LineType } from '../../enums';\r\nimport getMergedRectangles from '../../algorithms/getMergedRectangles';\r\n\r\nexport default function MergedRectangles(graphics) {\r\n this.graphics = graphics;\r\n this.transform = null;\r\n\r\n this.lineWidth = 1;\r\n this.opacity = 1;\r\n this.fillColor = null;\r\n this.lineType = LineType.Solid;\r\n this.borderColor = null;\r\n};\r\n\r\nMergedRectangles.prototype = new BaseShape();\r\n\r\nMergedRectangles.prototype.draw = function (rects) {\r\n var paletteItem = new PaletteItem({\r\n lineColor: this.borderColor,\r\n lineWidth: this.lineWidth,\r\n fillColor: this.fillColor,\r\n lineType: this.lineType,\r\n opacity: this.opacity\r\n }),\r\n polyline = new Polyline(paletteItem);\r\n\r\n getMergedRectangles(this, rects, function (points) {\r\n for (var index = 0, len = points.length; index < len; index += 1) {\r\n var point = points[index];\r\n if (index == 0) {\r\n polyline.addSegment(new MoveSegment(point.x, point.y));\r\n } else {\r\n polyline.addSegment(new LineSegment(point.x, point.y));\r\n }\r\n }\r\n });\r\n\r\n polyline.transform(this.transform, true);\r\n\r\n this.graphics.polyline(polyline);\r\n};","import { Layers } from '../../enums';\r\nimport MergedRectangles from '../../graphics/shapes/MergedRectangles';\r\nimport BackgroundAnnotationConfig from '../../configs/BackgroundAnnotationConfig';\r\nimport Rect from '../../graphics/structs/Rect';\r\n\r\nexport default function DrawBackgroundAnnotationTask(getGraphics, createTransformTask, applyLayoutChangesTask,\r\n backgroundAnnotationOptionTask, navigationFamilyTask, alignDiagramTask) {\r\n var _graphics,\r\n _positions,\r\n _transform;\r\n\r\n function process() {\r\n var annotations = backgroundAnnotationOptionTask.getAnnotations(),\r\n navigationFamily;\r\n\r\n _graphics = getGraphics();\r\n _graphics.reset(\"placeholder\", Layers.BackgroundAnnotation);\r\n\r\n if (annotations.length > 0) {\r\n _positions = alignDiagramTask.getItemsPositions();\r\n _transform = createTransformTask.getTransform();\r\n\r\n navigationFamily = navigationFamilyTask.getLogicalFamily();\r\n\r\n drawAnnotations(annotations, _positions, navigationFamily);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function drawAnnotations(annotations, positions, navigationFamily) {\r\n var panel,\r\n index, len,\r\n index2, len2,\r\n index3, len3,\r\n shape,\r\n defaultConfig,\r\n rects, rect,\r\n itemsHash, item,\r\n properties, property,\r\n annotationConfig, treeItemPosition;\r\n\r\n for (index = 0, len = annotations.length; index < len; index += 1) {\r\n annotationConfig = annotations[index];\r\n\r\n if (annotationConfig.items != null && annotationConfig.items.length > 0) {\r\n shape = new MergedRectangles(_graphics);\r\n shape.transform = _transform;\r\n defaultConfig = new BackgroundAnnotationConfig();\r\n properties = [\"opacity\", \"lineWidth\", \"borderColor\", \"fillColor\", \"lineType\"];\r\n for (index3 = 0, len3 = properties.length; index3 < len3; index3 += 1) {\r\n property = properties[index3];\r\n shape[property] = annotationConfig.hasOwnProperty(property) ? annotationConfig[property] : defaultConfig[property];\r\n }\r\n panel = _graphics.activate(\"placeholder\", Layers.BackgroundAnnotation);\r\n\r\n rects = [];\r\n itemsHash = {};\r\n for (index2 = 0, len2 = annotationConfig.items.length; index2 < len2; index2 += 1) {\r\n item = annotationConfig.items[index2];\r\n treeItemPosition = alignDiagramTask.getItemPosition(item);\r\n if (treeItemPosition != null) {\r\n itemsHash[item] = true;\r\n rect = new Rect(treeItemPosition.actualPosition);\r\n rect.offset(annotationConfig.offset);\r\n rects.push(rect);\r\n\r\n if (annotationConfig.includeChildren) {\r\n navigationFamily.loopChildren(this, item, function (childItemId, childItem) {\r\n if (!itemsHash[childItemId]) {\r\n itemsHash[childItemId] = true;\r\n treeItemPosition = alignDiagramTask.getItemPosition(childItemId);\r\n if (treeItemPosition != null) {\r\n rect = new Rect(treeItemPosition.actualPosition);\r\n rect.offset(annotationConfig.offset);\r\n rects.push(rect);\r\n }\r\n }\r\n }); //ignore jslint\r\n }\r\n }\r\n }\r\n shape.draw(rects);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n process: process\r\n };\r\n};","import Polyline from './Polyline';\r\n\r\nexport default function PolylinesBuffer() {\r\n var polylines = {};\r\n\r\n function _getPolyline(polylines, paletteItem) {\r\n if (!polylines[paletteItem.toString()]) {\r\n polylines[paletteItem.toString()] = new Polyline(paletteItem);\r\n }\r\n return polylines[paletteItem.toString()];\r\n }\r\n\r\n function getPolyline(paletteItem) {\r\n return _getPolyline(polylines, paletteItem);\r\n }\r\n\r\n function loop(thisArg, onItem) {\r\n var key,\r\n polyline;\r\n if (onItem != null) {\r\n for (key in polylines) {\r\n if (polylines.hasOwnProperty(key)) {\r\n polyline = polylines[key];\r\n if (polyline) {\r\n polyline.optimizeMoveSegments();\r\n\r\n if (onItem.call(thisArg, polyline)) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function addInverted(callbackFun, copyOnly) {\r\n var backupPolylines, backupPolyline;\r\n\r\n /* backup polylines */\r\n backupPolylines = polylines;\r\n polylines = {};\r\n\r\n if (callbackFun != null) {\r\n callbackFun(this);\r\n }\r\n\r\n /* add inverted polylines to backup collection */\r\n loop(this, function (polyline) {\r\n backupPolyline = _getPolyline(backupPolylines, polyline.paletteItem);\r\n\r\n if (!copyOnly) {\r\n backupPolyline.addInverted(polyline);\r\n } else {\r\n polyline.mergeTo(backupPolyline);\r\n }\r\n });\r\n\r\n /* restore polylines */\r\n polylines = backupPolylines;\r\n }\r\n\r\n function transform(transformArg, forward) {\r\n loop(this, function (polyline) {\r\n polyline.transform(transformArg, forward);\r\n });\r\n }\r\n\r\n return {\r\n getPolyline: getPolyline,\r\n loop: loop,\r\n addInverted: addInverted,\r\n transform: transform\r\n };\r\n};","import PolylinesBuffer from '../../graphics/structs/PolylinesBuffer';\r\nimport PaletteItem from '../../graphics/structs/PaletteItem';\r\nimport { Layers, ZOrderType } from '../../enums';\r\n\r\nexport default function DrawHighlightPathAnnotationTask(getGraphics, connectorsOptionTask, highlightPathAnnotationOptionTask, connectionsGraphTask, zOrderType) {\r\n function process() {\r\n var graph = connectionsGraphTask.getGraph(),\r\n highlightOptions = connectorsOptionTask.getOptions(),\r\n annotations = highlightPathAnnotationOptionTask.getAnnotations(),\r\n graphics = getGraphics();\r\n\r\n switch (zOrderType) {\r\n case ZOrderType.Background://ignore jslint\r\n graphics.reset(\"placeholder\", Layers.BackgroundHighlightPathAnnotations);\r\n break;\r\n case ZOrderType.Foreground://ignore jslint\r\n graphics.reset(\"placeholder\", Layers.ForegroundHighlightPathAnnotations);\r\n break;\r\n }\r\n\r\n drawAnnotations(graphics, highlightOptions, annotations, graph);\r\n\r\n return false;\r\n }\r\n\r\n function drawAnnotations(graphics, highlightOptions, annotations, graph) {\r\n var index, len,\r\n index2, len2,\r\n index3, len3,\r\n firstItemId, nextItemId,\r\n treeItem,\r\n path,\r\n items,\r\n connectorEdge,\r\n annotationConfig,\r\n panel, buffer,\r\n from, to;\r\n\r\n if (annotations.length > 0) {\r\n buffer = new PolylinesBuffer();\r\n\r\n switch (zOrderType) {\r\n case ZOrderType.Background://ignore jslint\r\n panel = graphics.activate(\"placeholder\", Layers.BackgroundHighlightPathAnnotations);\r\n break;\r\n case ZOrderType.Foreground://ignore jslint\r\n panel = graphics.activate(\"placeholder\", Layers.ForegroundHighlightPathAnnotations);\r\n break;\r\n }\r\n\r\n /* group path segments by from node */\r\n var pairs = {};\r\n for (index = 0, len = annotations.length; index < len; index += 1) {\r\n annotationConfig = annotations[index];\r\n if (annotationConfig.items != null && annotationConfig.items.length > 0) {\r\n items = annotationConfig.items.slice(0);\r\n firstItemId = items[0];\r\n if (graph.hasNode(firstItemId)) {\r\n for (index2 = 1, len2 = items.length; index2 < len2; index2 += 1) {\r\n nextItemId = items[index2];\r\n if (graph.hasNode(nextItemId)) {\r\n if (pairs.hasOwnProperty(firstItemId)) {\r\n pairs[firstItemId].push(nextItemId);\r\n } else {\r\n pairs[firstItemId] = [nextItemId];\r\n }\r\n firstItemId = nextItemId;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /* get shortest paths */\r\n var paths = {};\r\n for (from in pairs) {\r\n paths[from] = {};\r\n if (pairs.hasOwnProperty(from)) {\r\n graph.getShortestPath(this, from, pairs[from], function (connectorEdge, fromItem, toItem) {\r\n return connectorEdge.weight;\r\n }, function (path2, to2) {\r\n paths[from][to2] = path2;\r\n }); //ignore jslint\r\n }\r\n }\r\n\r\n /* trace annotations */\r\n for (index = 0, len = annotations.length; index < len; index += 1) {\r\n annotationConfig = annotations[index];\r\n\r\n var paletteItem = new PaletteItem({\r\n lineColor: (annotationConfig.color != null ? annotationConfig.color : highlightOptions.highlightLinesColor),\r\n lineWidth: (annotationConfig.lineWidth != null ? annotationConfig.lineWidth : highlightOptions.highlightLinesWidth),\r\n lineType: (annotationConfig.lineType != null ? annotationConfig.lineType : highlightOptions.highlightLinesType),\r\n fillColor: null,\r\n opacity: annotationConfig.opacity\r\n });\r\n var polyline = buffer.getPolyline(paletteItem);\r\n\r\n if (annotationConfig.items != null && annotationConfig.items.length > 0) {\r\n items = annotationConfig.items.slice(0);\r\n firstItemId = items[0];\r\n\r\n if (graph.hasNode(firstItemId)) {\r\n for (index2 = 1, len2 = items.length; index2 < len2; index2 += 1) {\r\n nextItemId = items[index2];\r\n if (graph.hasNode(nextItemId)) {\r\n path = paths[firstItemId][nextItemId] || [];\r\n for (index3 = path.length - 2; index3 >= 0; index3 -= 1) {\r\n from = path[index3 + 1];\r\n to = path[index3];\r\n connectorEdge = graph.edge(from, to);\r\n if (connectorEdge.from == from) {\r\n connectorEdge.polyline.clone().mergeTo(polyline);\r\n } else {\r\n polyline.addInverted(connectorEdge.polyline.clone());\r\n }\r\n if (annotationConfig.showArrows) {\r\n if (to == connectorEdge.parentsArrowId || to == connectorEdge.childrenArrowId) {\r\n polyline.addArrow(annotationConfig.lineWidth, function (arrowPolyline) {\r\n arrowPolyline.mergeTo(buffer.getPolyline(arrowPolyline.paletteItem));\r\n }); //ignore jslint\r\n }\r\n }\r\n }\r\n\r\n firstItemId = nextItemId;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n graphics.polylinesBuffer(buffer);\r\n }\r\n }\r\n\r\n return {\r\n process: process\r\n };\r\n};","/**\r\n * @class RenderEventArgs\r\n * @classdesc This is object parameter of rendering callback function \r\n */\r\nexport default function RenderEventArgs() {\r\n /**\r\n * Node id\r\n * @type {string}\r\n */\r\n this.id = null;\r\n\r\n /**\r\n * Reference to DOM element.\r\n * @type {object}\r\n */\r\n this.element = null;\r\n\r\n /**\r\n * Context object of the node\r\n * @type {object}\r\n */\r\n this.context = null;\r\n\r\n /**\r\n * Node template name\r\n * @type {string}\r\n */\r\n this.templateName = null;\r\n\r\n /**\r\n * This option indicates current template state.\r\n * @type {RenderingMode}\r\n */\r\n this.renderingMode = null;\r\n\r\n /**\r\n * The rendered item is current diagram cursor item\r\n * @type {boolean}\r\n */\r\n this.isCursor = false;\r\n\r\n /**\r\n * The rendered item is selected\r\n * @type {boolean}\r\n */\r\n this.isSelected = false;\r\n};","import Rect from '../../../graphics/structs/Rect';\r\nimport Pile from '../../../algorithms/Pile';\r\n\r\nexport default function CollinearVectorBundle() {\r\n var _boundingRect = new Rect(),\r\n _vectors = [],\r\n _continuations = [];\r\n\r\n function addVector(vector, continuation) {\r\n _vectors.push(vector);\r\n _continuations.push(continuation);\r\n\r\n _boundingRect.addRect(vector.from.x, vector.from.y);\r\n _boundingRect.addRect(vector.to.x, vector.to.y);\r\n }\r\n\r\n function loopProjections(callback) { // calback(from, to)\r\n var index, len,\r\n vector;\r\n if (_boundingRect.width > _boundingRect.height) {\r\n for (index = 0, len = _vectors.length; index < len; index += 1) {\r\n vector = _vectors[index];\r\n callback(vector.from.x, vector.to.x, _continuations[index]);\r\n }\r\n } else {\r\n for (index = 0, len = _vectors.length; index < len; index += 1) {\r\n vector = _vectors[index];\r\n callback(vector.from.y, vector.to.y, _continuations[index]);\r\n }\r\n }\r\n }\r\n\r\n function resolve() {\r\n if (_vectors.length == 1) {\r\n _continuations[0](0, 1, 1);\r\n } else {\r\n var stackSegments = Pile();\r\n loopProjections(function (from, to, continuation) {\r\n stackSegments.add(from, to, continuation);\r\n });\r\n\r\n var totalOffset = stackSegments.resolve(this, function (from, to, context, offset, bundleSize, direction) {\r\n context(offset, bundleSize, direction);\r\n });\r\n }\r\n }\r\n\r\n return {\r\n addVector: addVector,\r\n resolve: resolve\r\n };\r\n};","import BaseShape from './BaseShape';\r\nimport Rect from '../structs/Rect';\r\nimport Vector from '../structs/Vector';\r\nimport MoveSegment from '../structs/MoveSegment';\r\nimport LineSegment from '../structs/LineSegment';\r\nimport { PlacementType, ConnectorShapeType, ConnectorLabelPlacementType } from '../../enums';\r\n\r\n\r\nexport default function ConnectorStraight() {\r\n\r\n};\r\n\r\nConnectorStraight.prototype = new BaseShape();\r\n\r\nConnectorStraight.prototype.draw = function (buffer, linePaletteItem, fromRect, toRect, linesOffset, bundleOffset, labelSize, panelSize, connectorShapeType, labelOffset, labelPlacementType, hasLabel,\r\n connectorAnnotationOffsetResolver, onLabelPlacement, labelConfig) {\r\n var fromPoint, toPoint, betweenPoint,\r\n vector, newVector,\r\n offset = linesOffset / 2,\r\n labelPlacement = null,\r\n fromLabelPlacement = PlacementType.Auto,\r\n toLabelPlacement = PlacementType.Auto,\r\n self = this;\r\n\r\n vector = new Vector(fromRect.centerPoint(), toRect.centerPoint());\r\n\r\n fromRect.loopEdges(function (sideVector, placementType) {\r\n fromPoint = sideVector.getIntersectionPoint(vector, true, 1.0);\r\n fromLabelPlacement = placementType;\r\n return (fromPoint != null);\r\n });\r\n\r\n toRect.loopEdges(function (sideVector, placementType) {\r\n toPoint = sideVector.getIntersectionPoint(vector, true, 1.0);\r\n toLabelPlacement = placementType;\r\n return (toPoint != null);\r\n });\r\n\r\n if (fromPoint != null && toPoint != null) {\r\n var baseVector = new Vector(fromPoint, toPoint);\r\n connectorAnnotationOffsetResolver.getOffset(baseVector, function (offsetIndex, bundleSize, direction) {\r\n var tempOffset = (offsetIndex * bundleOffset - (bundleSize - 1) * bundleOffset / 2.0) * direction;\r\n baseVector.offset(tempOffset);\r\n fromPoint = baseVector.from;\r\n toPoint = baseVector.to;\r\n\r\n switch (connectorShapeType) {\r\n case ConnectorShapeType.TwoWay:\r\n newVector = new Vector(toPoint.clone(), fromPoint.clone());\r\n newVector.offset(offset);\r\n self._drawLine(buffer, linePaletteItem, newVector.from, newVector.to, false);\r\n\r\n newVector = new Vector(fromPoint.clone(), toPoint.clone());\r\n newVector.offset(offset);\r\n self._drawLine(buffer, linePaletteItem, newVector.from, newVector.to, false);\r\n break;\r\n case ConnectorShapeType.OneWay:\r\n self._drawLine(buffer, linePaletteItem, fromPoint, toPoint, false);\r\n break;\r\n case ConnectorShapeType.BothWay:\r\n self._drawLine(buffer, linePaletteItem, fromPoint, toPoint, true);\r\n break;\r\n }\r\n\r\n if (hasLabel) {\r\n /* end points labels placement */\r\n switch (labelPlacementType) {\r\n case ConnectorLabelPlacementType.From:\r\n labelPlacement = self._getLabelPositionBySnapPoint(fromPoint.x, fromPoint.y, labelSize.width, labelSize.height, labelOffset, fromLabelPlacement);\r\n break;\r\n case ConnectorLabelPlacementType.Between:\r\n betweenPoint = self._betweenPoint(fromPoint, toPoint);\r\n labelPlacement = self._getLabelPositionBySnapPoint(betweenPoint.x, betweenPoint.y, labelSize.width, labelSize.height, labelOffset, PlacementType.Right);\r\n break;\r\n case ConnectorLabelPlacementType.To:\r\n labelPlacement = self._getLabelPositionBySnapPoint(toPoint.x, toPoint.y, labelSize.width, labelSize.height, labelOffset, toLabelPlacement);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if (onLabelPlacement != null) {\r\n onLabelPlacement.call(this, labelPlacement, labelConfig);\r\n }\r\n }\r\n });\r\n\r\n }\r\n};\r\n\r\nConnectorStraight.prototype._drawLine = function (buffer, linePaletteItem, fromPoint, toPoint, bothWays) {\r\n var polyline;\r\n\r\n buffer.addInverted(function (invertedBuffer) {\r\n polyline = invertedBuffer.getPolyline(linePaletteItem);\r\n polyline.addSegment(new MoveSegment(fromPoint));\r\n polyline.addSegment(new LineSegment(toPoint));\r\n\r\n polyline.addArrow(linePaletteItem.lineWidth, function (polyline) {\r\n polyline.mergeTo(buffer.getPolyline(polyline.paletteItem));\r\n }); //ignore jslint\r\n }, false);//ignore jslint\r\n\r\n if (bothWays) {\r\n polyline = buffer.getPolyline(linePaletteItem);\r\n polyline.addArrow(linePaletteItem.lineWidth, function (polyline) {\r\n polyline.mergeTo(buffer.getPolyline(polyline.paletteItem));\r\n }); //ignore jslint\r\n }\r\n};\r\n\r\nConnectorStraight.prototype._getLabelPositionBySnapPoint = function (x, y, labelWidth, labelHeight, labelOffset, placementType) {\r\n var result = null;\r\n switch (placementType) {\r\n case PlacementType.Auto:\r\n case PlacementType.Top:\r\n result = new Rect(x - labelWidth / 2.0, y - labelOffset - labelHeight, labelWidth, labelHeight);\r\n break;\r\n case PlacementType.Right:\r\n result = new Rect(x + labelOffset, y - labelHeight / 2.0, labelWidth, labelHeight);\r\n break;\r\n case PlacementType.Bottom:\r\n result = new Rect(x - labelWidth / 2.0, y + labelOffset, labelWidth, labelHeight);\r\n break;\r\n case PlacementType.Left:\r\n result = new Rect(x - labelWidth - labelOffset, y - labelHeight / 2.0, labelWidth, labelHeight);\r\n break;\r\n }\r\n return result;\r\n};","import BaseShape from './BaseShape';\r\nimport Point from '../structs/Point';\r\nimport Rect from '../structs/Rect';\r\nimport MoveSegment from '../structs/MoveSegment';\r\nimport QuadraticArcSegment from '../structs/QuadraticArcSegment';\r\nimport { PlacementType, ConnectorShapeType, ConnectorLabelPlacementType } from '../../enums';\r\n\r\nexport default function ConnectorOffbeat() {\r\n\r\n};\r\n\r\nConnectorOffbeat.prototype = new BaseShape();\r\n\r\nConnectorOffbeat.prototype.draw = function (buffer, linePaletteItem, fromRect, toRect, linesOffset, bundleOffset, labelSize, panelSize, connectorShapeType, labelOffset, labelPlacementType, hasLabel,\r\n connectorAnnotationOffsetResolver, onLabelPlacement, labelConfig) {\r\n var minimalGap,\r\n connectorRect,\r\n fromPoint, toPoint,\r\n snapPoint,\r\n index, len,\r\n offsets, tempOffset,\r\n invertX, invertY,\r\n fromLabelPlacement = PlacementType.Auto,\r\n toLabelPlacement = PlacementType.Auto,\r\n labelPlacement = null,\r\n polyline,\r\n bothWay;\r\n\r\n polyline = buffer.getPolyline(linePaletteItem);\r\n\r\n offsets = [];\r\n switch (connectorShapeType) {\r\n case ConnectorShapeType.TwoWay:\r\n offsets = [-linesOffset / 2, linesOffset / 2];\r\n bothWay = false;\r\n break;\r\n case ConnectorShapeType.OneWay:\r\n offsets = [0];\r\n bothWay = false;\r\n break;\r\n case ConnectorShapeType.BothWay:\r\n offsets = [0];\r\n bothWay = true;\r\n break;\r\n }\r\n\r\n minimalGap = Math.max(hasLabel ? labelSize.width : 0, linesOffset * 5);\r\n if (fromRect.right() + minimalGap < toRect.left() || fromRect.left() > toRect.right() + minimalGap) {\r\n if (fromRect.left() > toRect.right()) {\r\n fromPoint = new Point(fromRect.left(), fromRect.verticalCenter());\r\n toPoint = new Point(toRect.right(), toRect.verticalCenter());\r\n } else {\r\n fromPoint = new Point(fromRect.right(), fromRect.verticalCenter());\r\n toPoint = new Point(toRect.left(), toRect.verticalCenter());\r\n }\r\n if (hasLabel) {\r\n if (fromRect.left() > toRect.right()) {\r\n fromLabelPlacement = PlacementType.Left;\r\n toLabelPlacement = PlacementType.Right;\r\n } else {\r\n fromLabelPlacement = PlacementType.Right;\r\n toLabelPlacement = PlacementType.Left;\r\n }\r\n }\r\n connectorRect = new Rect(fromPoint, toPoint);\r\n invertY = (fromPoint.y <= toPoint.y);\r\n invertX = (fromPoint.x < toPoint.x);\r\n if (connectorRect.height < connectorRect.width) {\r\n /* horizontal single bended connector between boxes from right side to left side */\r\n if (connectorRect.height < linesOffset * 2) {\r\n connectorRect.offset(0, invertY ? linesOffset * 2 : 0, 0, invertY ? 0 : linesOffset * 2);\r\n }\r\n\r\n for (index = 0, len = offsets.length; index < len; index += 1) {\r\n tempOffset = offsets[index];\r\n buffer.addInverted(function (invertedBuffer) {\r\n var polyline = invertedBuffer.getPolyline(linePaletteItem);\r\n polyline.addSegment(new MoveSegment(fromPoint.x, fromPoint.y + tempOffset));\r\n polyline.addSegment(new QuadraticArcSegment(connectorRect.horizontalCenter(), (invertY ? connectorRect.top() : connectorRect.bottom()) + tempOffset,\r\n toPoint.x, toPoint.y + tempOffset));\r\n\r\n if (bothWay) {\r\n polyline.addArrow(linePaletteItem.lineWidth, function (polyline) {\r\n polyline.mergeTo(buffer.getPolyline(polyline.paletteItem));\r\n });//ignore jslint\r\n }\r\n }, index || (connectorShapeType == ConnectorShapeType.OneWay));//ignore jslint\r\n\r\n polyline.addArrow(linePaletteItem.lineWidth, function (polyline) {\r\n polyline.mergeTo(buffer.getPolyline(polyline.paletteItem));\r\n }); //ignore jslint\r\n }\r\n\r\n if (hasLabel) {\r\n if (labelSize.width < connectorRect.width / 5 * 2) {\r\n snapPoint = QuadraticArcSegment.prototype.offsetPoint(fromPoint.x, fromPoint.y, connectorRect.horizontalCenter(), (invertY ? connectorRect.top() : connectorRect.bottom()), toPoint.x, toPoint.y, 0.5);\r\n } else {\r\n snapPoint = new Point(fromPoint.x, invertY ? connectorRect.top() : connectorRect.bottom());\r\n }\r\n labelPlacement = new Rect(snapPoint.x + (invertX ? linesOffset : -labelSize.width - linesOffset), (invertY ? snapPoint.y - labelSize.height - linesOffset : snapPoint.y + linesOffset), labelSize.width, labelSize.height);\r\n }\r\n } else {\r\n /* horizontal double bended connector between boxes from right side to left side */\r\n for (index = 0, len = offsets.length; index < len; index += 1) {\r\n tempOffset = offsets[index];\r\n buffer.addInverted(function (invertedBuffer) {\r\n var polyline = invertedBuffer.getPolyline(linePaletteItem);\r\n polyline.addSegment(new MoveSegment(fromPoint.x, fromPoint.y + tempOffset));\r\n polyline.addSegment(new QuadraticArcSegment(connectorRect.horizontalCenter() + tempOffset * (invertY != invertX ? 1 : -1), (invertY ? connectorRect.top() : connectorRect.bottom()) + tempOffset,\r\n connectorRect.horizontalCenter() + tempOffset * (invertY != invertX ? 1 : -1), connectorRect.verticalCenter() + tempOffset));\r\n polyline.addSegment(new QuadraticArcSegment(connectorRect.horizontalCenter() + tempOffset * (invertY != invertX ? 1 : -1), (invertY ? connectorRect.bottom() : connectorRect.top()) + tempOffset,\r\n toPoint.x, toPoint.y + tempOffset));\r\n\r\n if (bothWay) {\r\n polyline.addArrow(linePaletteItem.lineWidth, function (polyline) {\r\n polyline.mergeTo(buffer.getPolyline(polyline.paletteItem));\r\n });//ignore jslint\r\n }\r\n }, index || (connectorShapeType == ConnectorShapeType.OneWay));//ignore jslint\r\n\r\n polyline.addArrow(linePaletteItem.lineWidth, function (polyline) {\r\n polyline.mergeTo(buffer.getPolyline(polyline.paletteItem));\r\n }); //ignore jslint\r\n }\r\n\r\n if (hasLabel) {\r\n labelPlacement = new Rect(connectorRect.horizontalCenter() + (invertY != invertX ? linesOffset : -(linesOffset + labelSize.width)),\r\n connectorRect.verticalCenter() - labelSize.height / 2, labelSize.width, labelSize.height);\r\n }\r\n }\r\n } else {\r\n if (fromRect.verticalCenter() < toRect.top() || fromRect.verticalCenter() > toRect.bottom()) {\r\n /* vertical single bended connector between boxes from right side to right side */\r\n invertX = fromRect.x < panelSize.width / 2;\r\n fromPoint = new Point(invertX ? fromRect.right() : fromRect.left(), fromRect.verticalCenter());\r\n toPoint = new Point(invertX ? toRect.right() : toRect.left(), toRect.verticalCenter());\r\n connectorRect = new Rect(fromPoint, toPoint);\r\n connectorRect.offset(linesOffset * 10, 0, linesOffset * 10, 0);\r\n invertY = (fromPoint.y <= toPoint.y);\r\n for (index = 0, len = offsets.length; index < len; index += 1) {\r\n tempOffset = offsets[index];\r\n buffer.addInverted(function (invertedBuffer) {\r\n var polyline = invertedBuffer.getPolyline(linePaletteItem);\r\n polyline.addSegment(new MoveSegment(fromPoint.x, fromPoint.y + tempOffset));\r\n polyline.addSegment(new QuadraticArcSegment(invertX ? connectorRect.right() + tempOffset * (invertY ? -1 : 1) : connectorRect.left() - tempOffset * (invertY ? -1 : 1), connectorRect.verticalCenter(),\r\n invertX ? toRect.right() : toRect.left(), toRect.verticalCenter() - tempOffset));\r\n\r\n if (bothWay) {\r\n polyline.addArrow(linePaletteItem.lineWidth, function (polyline) {\r\n polyline.mergeTo(buffer.getPolyline(polyline.paletteItem));\r\n });//ignore jslint\r\n }\r\n }, index || (connectorShapeType == ConnectorShapeType.OneWay));//ignore jslint\r\n\r\n polyline.addArrow(linePaletteItem.lineWidth, function (polyline) {\r\n polyline.mergeTo(buffer.getPolyline(polyline.paletteItem));\r\n });//ignore jslint\r\n }\r\n\r\n if (hasLabel) {\r\n fromLabelPlacement = invertX ? PlacementType.Right : PlacementType.Left;\r\n toLabelPlacement = fromLabelPlacement;\r\n\r\n snapPoint = QuadraticArcSegment.prototype.offsetPoint(fromPoint.x, fromPoint.y, (invertX ? connectorRect.right() : connectorRect.left()), connectorRect.verticalCenter(), toPoint.x, toPoint.y, 0.5);\r\n labelPlacement = new Rect(snapPoint.x + (invertX ? linesOffset / 2 : -linesOffset / 2 - labelSize.width), snapPoint.y - labelSize.height / 2, labelSize.width, labelSize.height);\r\n }\r\n } else {\r\n fromPoint = new Point(fromRect.horizontalCenter(), fromRect.top());\r\n toPoint = new Point(toRect.horizontalCenter(), toRect.top());\r\n connectorRect = new Rect(fromPoint, toPoint);\r\n connectorRect.offset(0, linesOffset * 7, 0, 0);\r\n invertX = (fromPoint.x < toPoint.x);\r\n for (index = 0, len = offsets.length; index < len; index += 1) {\r\n tempOffset = offsets[index];\r\n buffer.addInverted(function (invertedBuffer) {\r\n var polyline = invertedBuffer.getPolyline(linePaletteItem);\r\n polyline.addSegment(new MoveSegment(fromPoint.x + tempOffset, fromPoint.y));\r\n polyline.addSegment(new QuadraticArcSegment(connectorRect.horizontalCenter(), connectorRect.top() - tempOffset * (invertX ? -1 : 1),\r\n toRect.horizontalCenter() - tempOffset, toRect.top()));\r\n\r\n if (bothWay) {\r\n polyline.addArrow(linePaletteItem.lineWidth, function (polyline) {\r\n polyline.mergeTo(buffer.getPolyline(polyline.paletteItem));\r\n });//ignore jslint\r\n }\r\n }, index || (connectorShapeType == ConnectorShapeType.OneWay));//ignore jslint\r\n\r\n polyline.addArrow(linePaletteItem.lineWidth, function (polyline) {\r\n polyline.mergeTo(buffer.getPolyline(polyline.paletteItem));\r\n }); //ignore jslint\r\n }\r\n\r\n if (hasLabel) {\r\n fromLabelPlacement = PlacementType.Top;\r\n toLabelPlacement = PlacementType.Top;\r\n\r\n snapPoint = QuadraticArcSegment.prototype.offsetPoint(fromPoint.x, fromPoint.y, connectorRect.horizontalCenter(), connectorRect.top(), toPoint.x, toPoint.y, 0.5);\r\n labelPlacement = new Rect(snapPoint.x - labelSize.width / 2, snapPoint.y - (labelOffset + labelSize.height), labelSize.width, labelSize.height);\r\n }\r\n }\r\n }\r\n\r\n if (hasLabel) {\r\n /* end points labels placement */\r\n switch (labelPlacementType) {\r\n case ConnectorLabelPlacementType.From:\r\n labelPlacement = this._getLabelPosition(fromRect.x, fromRect.y, fromRect.width, fromRect.height, labelPlacement.width, labelPlacement.height, labelOffset, fromLabelPlacement);\r\n break;\r\n case ConnectorLabelPlacementType.To:\r\n labelPlacement = this._getLabelPosition(toRect.x, toRect.y, toRect.width, toRect.height, labelPlacement.width, labelPlacement.height, labelOffset, toLabelPlacement);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n if (onLabelPlacement != null) {\r\n onLabelPlacement(labelPlacement, labelConfig);\r\n }\r\n};\r\n","import Size from '../../graphics/structs/Size';\r\nimport Rect from '../../graphics/structs/Rect';\r\nimport RenderEventArgs from '../../events/RenderEventArgs';\r\nimport { Layers, ZOrderType, ConnectorPlacementType } from '../../enums';\r\nimport PolylinesBuffer from '../../graphics/structs/PolylinesBuffer';\r\nimport PaletteItem from '../../graphics/structs/PaletteItem';\r\nimport ConnectorAnnotationOffsetResolver from './offsetResolver/ConnectorAnnotationOffsetResolver';\r\nimport ConnectorStraight from '../../graphics/shapes/ConnectorStraight';\r\nimport ConnectorOffbeat from '../../graphics/shapes/ConnectorOffbeat';\r\nimport { isNullOrEmpty } from '../../common';\r\n\r\n\r\nexport default function DrawConnectorAnnotationTask(getGraphics, createTransformTask, applyLayoutChangesTask,\r\n orientationOptionTask, connectorAnnotationOptionTask, alignDiagramTask, annotationLabelTemplateTask, zOrderType) {\r\n var _graphics,\r\n _transform,\r\n _orientationOptions,\r\n _annotationLabelTemplate,\r\n _panelSize;\r\n\r\n function process() {\r\n\r\n _graphics = getGraphics();\r\n\r\n _transform = createTransformTask.getTransform();\r\n _orientationOptions = orientationOptionTask.getOptions();\r\n\r\n _annotationLabelTemplate = annotationLabelTemplateTask.getTemplate();\r\n\r\n _panelSize = new Size(alignDiagramTask.getContentSize());\r\n\r\n switch (zOrderType) {\r\n case ZOrderType.Background://ignore jslint\r\n _graphics.reset(\"placeholder\", Layers.BackgroundConnectorAnnotation);\r\n break;\r\n case ZOrderType.Foreground://ignore jslint\r\n _graphics.reset(\"placeholder\", Layers.ForegroundConnectorAnnotation);\r\n break;\r\n }\r\n\r\n drawAnnotations(connectorAnnotationOptionTask.getAnnotations(), alignDiagramTask.getItemPosition);\r\n\r\n return false;\r\n }\r\n\r\n function drawAnnotations(annotations, getItemPosition) {\r\n var panel,\r\n index, len,\r\n layer = Layers.ForegroundConnectorAnnotation,\r\n fromItemPosition, fromActualPosition,\r\n toItemPosition, toActualPosition,\r\n shape,\r\n annotationConfig,\r\n uiHash,\r\n buffer = new PolylinesBuffer(),\r\n labelPlacement,\r\n connectorAnnotationOffsetResolver = ConnectorAnnotationOffsetResolver(),\r\n maximumLineWidth = 0;\r\n\r\n switch (zOrderType) {\r\n case ZOrderType.Background://ignore jslint\r\n panel = _graphics.activate(\"placeholder\", Layers.BackgroundConnectorAnnotation);\r\n break;\r\n case ZOrderType.Foreground://ignore jslint\r\n panel = _graphics.activate(\"placeholder\", Layers.ForegroundConnectorAnnotation);\r\n break;\r\n }\r\n\r\n for (index = 0, len = annotations.length; index < len; index += 1) {\r\n annotationConfig = annotations[index];\r\n maximumLineWidth = Math.max(maximumLineWidth, annotationConfig.lineWidth);\r\n }\r\n\r\n for (index = 0, len = annotations.length; index < len; index += 1) {\r\n annotationConfig = annotations[index];\r\n\r\n if (annotationConfig.fromItem != null && annotationConfig.toItem != null) {\r\n fromItemPosition = getItemPosition(annotationConfig.fromItem);\r\n toItemPosition = getItemPosition(annotationConfig.toItem);\r\n if (fromItemPosition != null && toItemPosition != null) {\r\n fromActualPosition = fromItemPosition.actualPosition;\r\n toActualPosition = toItemPosition.actualPosition;\r\n\r\n switch (annotationConfig.connectorPlacementType) {\r\n case ConnectorPlacementType.Offbeat:\r\n shape = new ConnectorOffbeat();\r\n break;\r\n case ConnectorPlacementType.Straight:\r\n shape = new ConnectorStraight();\r\n break;\r\n }\r\n\r\n /* rotate label size to user orientation */\r\n var labelSize;\r\n _transform.transformRect(0, 0, annotationConfig.labelSize.width, annotationConfig.labelSize.height, false,\r\n this, function (x, y, width, height) {\r\n labelSize = new Size(width, height);\r\n });\r\n\r\n /* rotate panel size to user orientation */\r\n var panelSize = null;\r\n _transform.transformRect(0, 0, _panelSize.width, _panelSize.height, false,\r\n this, function (x, y, width, height) {\r\n panelSize = new Size(width, height);\r\n });\r\n\r\n var linePaletteItem = new PaletteItem({\r\n lineColor: annotationConfig.color,\r\n lineWidth: annotationConfig.lineWidth,\r\n lineType: annotationConfig.lineType\r\n });\r\n\r\n var hasLabel = !isNullOrEmpty(annotationConfig.label);\r\n\r\n /* offset rectangles */\r\n var fromRect = new Rect(fromActualPosition).offset(annotationConfig.offset);\r\n var toRect = new Rect(toActualPosition).offset(annotationConfig.offset);\r\n\r\n var linesOffset = annotationConfig.lineWidth * 3;\r\n var bundleOffset = maximumLineWidth * 6;\r\n\r\n /* create connection lines */\r\n shape.draw(buffer, linePaletteItem, fromRect, toRect, linesOffset, bundleOffset, labelSize, panelSize,\r\n annotationConfig.connectorShapeType, 4 /*labelOffset*/, annotationConfig.labelPlacementType, hasLabel,\r\n connectorAnnotationOffsetResolver, function (labelPlacement, labelConfig) {\r\n var hasLabel = !isNullOrEmpty(labelConfig.label);\r\n if (hasLabel && labelPlacement != null) {\r\n /* translate result label placement back to users orientation */\r\n _transform.transformRect(labelPlacement.x, labelPlacement.y, labelPlacement.width, labelPlacement.height, true,\r\n this, function (x, y, width, height) {\r\n labelPlacement = new Rect(x, y, width, height);\r\n });\r\n\r\n uiHash = new RenderEventArgs();\r\n uiHash.context = labelConfig;\r\n\r\n /* draw label */\r\n _graphics.template(\r\n labelPlacement.x\r\n , labelPlacement.y\r\n , 0\r\n , 0\r\n , 0\r\n , 0\r\n , labelPlacement.width\r\n , labelPlacement.height\r\n , _annotationLabelTemplate.template()\r\n , _annotationLabelTemplate.getHashCode()\r\n , _annotationLabelTemplate.render\r\n , uiHash\r\n , null\r\n );\r\n }\r\n }, annotationConfig);\r\n }\r\n }\r\n }\r\n\r\n connectorAnnotationOffsetResolver.resolve();\r\n\r\n\r\n /* translate result polylines back to users orientation */\r\n buffer.transform(_transform, true);\r\n /* draw background polylines */\r\n _graphics.polylinesBuffer(buffer);\r\n }\r\n\r\n return {\r\n process: process\r\n };\r\n};","import CollinearVectorBundle from './CollinearVectorBundle';\r\n\r\nexport default function ConnectorAnnotationOffsetResolver() {\r\n var _bundles = {};\r\n\r\n function getOffset(vector, callback) {\r\n var key = vector.getLineKey();\r\n\r\n if (!_bundles.hasOwnProperty(key)) {\r\n _bundles[key] = new CollinearVectorBundle();\r\n }\r\n\r\n _bundles[key].addVector(vector, callback);\r\n }\r\n\r\n function resolve() {\r\n for (var key in _bundles) {\r\n if (_bundles.hasOwnProperty(key)) {\r\n var bundle = _bundles[key];\r\n bundle.resolve();\r\n }\r\n }\r\n }\r\n\r\n return {\r\n getOffset: getOffset,\r\n resolve: resolve\r\n };\r\n};","import BaseShape from './BaseShape';\r\nimport Point from '../structs/Point';\r\nimport Rect from '../structs/Rect';\r\nimport MoveSegment from '../structs/MoveSegment';\r\nimport LineSegment from '../structs/LineSegment';\r\nimport QuadraticArcSegment from '../structs/QuadraticArcSegment';\r\nimport PaletteItem from '../structs/PaletteItem';\r\nimport PolylinesBuffer from '../structs/PolylinesBuffer';\r\nimport { PlacementType, Colors, LineType } from '../../enums';\r\n\r\n\r\nexport default function Callout(graphics) {\r\n this.m_graphics = graphics;\r\n\r\n this.pointerPlacement = PlacementType.Auto;\r\n this.cornerRadius = \"10%\";\r\n this.offset = 0;\r\n this.opacity = 1;\r\n this.lineWidth = 1;\r\n this.pointerWidth = \"10%\";\r\n this.borderColor = Colors.Black;\r\n this.lineType = LineType.Solid;\r\n this.fillColor = Colors.LightGray;\r\n\r\n this.m_map = [[PlacementType.TopLeft, PlacementType.Left, PlacementType.BottomLeft],\r\n [PlacementType.Top, null, PlacementType.Bottom],\r\n [PlacementType.TopRight, PlacementType.Right, PlacementType.BottomRight]\r\n ];\r\n};\r\n\r\nCallout.prototype = new BaseShape();\r\n\r\nCallout.prototype.draw = function (snapPoint, position) {\r\n position = new Rect(position).offset(this.offset);\r\n\r\n var pointA = new Point(position.x, position.y),\r\n pointB = new Point(position.right(), position.y),\r\n pointC = new Point(position.right(), position.bottom()),\r\n pointD = new Point(position.left(), position.bottom()),\r\n snapPoints = [null, null, null, null, null, null, null, null],\r\n points = [pointA, pointB, pointC, pointD],\r\n radius = this.m_graphics.getPxSize(this.cornerRadius, Math.min(pointA.distanceTo(pointB), pointB.distanceTo(pointC))),\r\n placementType,\r\n point,\r\n index,\r\n attr,\r\n linePaletteItem,\r\n buffer,\r\n polyline;\r\n\r\n attr = {};\r\n if (this.fillColor !== null) {\r\n attr.fillColor = this.fillColor;\r\n attr.opacity = this.opacity;\r\n }\r\n if (this.lineColor !== null) {\r\n attr.lineColor = this.borderColor;\r\n }\r\n attr.lineWidth = this.lineWidth;\r\n attr.lineType = this.lineType;\r\n\r\n linePaletteItem = new PaletteItem(attr);\r\n buffer = new PolylinesBuffer();\r\n polyline = buffer.getPolyline(linePaletteItem);\r\n\r\n if (snapPoint !== null) {\r\n placementType = (this.pointerPlacement === PlacementType.Auto) ? this._getPlacement(snapPoint, pointA, pointC) : this.pointerPlacement;\r\n if (placementType !== null) {\r\n snapPoints[placementType] = snapPoint;\r\n }\r\n }\r\n\r\n for (index = 0; index < points.length; index += 1) {\r\n this._drawSegment(polyline, points[0], points[1], points[2], this.pointerWidth, radius, snapPoints[1], snapPoints[2]);\r\n point = points.shift();\r\n points.push(point);\r\n point = snapPoints.shift();\r\n snapPoints.push(point);\r\n point = snapPoints.shift();\r\n snapPoints.push(point);\r\n }\r\n\r\n this.m_graphics.polylinesBuffer(buffer);\r\n};\r\n\r\nCallout.prototype._getPlacement = function (point, point1, point2) {\r\n var row = null,\r\n column = null;\r\n if (point.x < point1.x) {\r\n row = 0;\r\n }\r\n else if (point.x > point2.x) {\r\n row = 2;\r\n }\r\n else {\r\n row = 1;\r\n }\r\n if (point.y < point1.y) {\r\n column = 0;\r\n }\r\n else if (point.y > point2.y) {\r\n column = 2;\r\n }\r\n else {\r\n column = 1;\r\n }\r\n return this.m_map[row][column];\r\n};\r\n\r\nCallout.prototype._drawSegment = function (polyline, pointA, pointB, pointC, base, radius, sideSnapPoint, cornerSnapPoint) {\r\n var pointA1 = this._offsetPoint(pointA, pointB, radius),\r\n pointB1 = this._offsetPoint(pointB, pointA, radius),\r\n pointB2 = this._offsetPoint(pointB, pointC, radius),\r\n pointS,\r\n pointS1,\r\n pointS2;\r\n\r\n base = this.m_graphics.getPxSize(base, pointA.distanceTo(pointB) / 2.0);\r\n\r\n if (polyline.length() === 0) {\r\n polyline.addSegment(new MoveSegment(pointA1));\r\n }\r\n if (sideSnapPoint !== null) {\r\n pointS = this._betweenPoint(pointA, pointB);\r\n pointS1 = this._offsetPoint(pointS, pointA, base);\r\n pointS2 = this._offsetPoint(pointS, pointB, base);\r\n polyline.addSegment(new LineSegment(pointS1));\r\n polyline.addSegment(new LineSegment(sideSnapPoint));\r\n polyline.addSegment(new LineSegment(pointS2));\r\n }\r\n\r\n polyline.addSegment(new LineSegment(pointB1));\r\n if (cornerSnapPoint !== null) {\r\n polyline.addSegment(new LineSegment(cornerSnapPoint));\r\n polyline.addSegment(new LineSegment(pointB2));\r\n }\r\n else {\r\n polyline.addSegment(new QuadraticArcSegment(pointB, pointB2));\r\n }\r\n};\r\n","import Rect from '../structs/Rect';\r\nimport MoveSegment from '../structs/MoveSegment';\r\nimport LineSegment from '../structs/LineSegment';\r\nimport CubicArcSegment from '../structs/CubicArcSegment';\r\nimport { ShapeType } from '../../enums';\r\n\r\nexport default function Marker() {\r\n\r\n};\r\n\r\nMarker.Markers = {};\r\n\r\nMarker.DrawCircle = function (polyline, position) {\r\n var quarter = Math.min(position.width / 2.0, position.height / 2.0);\r\n position = new Rect(position.horizontalCenter() - quarter, position.verticalCenter() - quarter, quarter * 2.0, quarter * 2.0);\r\n Marker.DrawOval(polyline, position);\r\n};\r\n\r\nMarker.DrawRectangle = function (polyline, position) {\r\n polyline.addSegment(new MoveSegment(position.x, position.verticalCenter()));\r\n polyline.addSegment(new LineSegment(position.x, position.y));\r\n polyline.addSegment(new LineSegment(position.right(), position.y));\r\n polyline.addSegment(new LineSegment(position.right(), position.bottom()));\r\n polyline.addSegment(new LineSegment(position.x, position.bottom()));\r\n polyline.addSegment(new LineSegment(position.x, position.verticalCenter()));\r\n};\r\n\r\nMarker.DrawOval = function (polyline, position) {\r\n var cpX, cpY;\r\n cpX = (position.width / 2) * 0.5522848;\r\n cpY = (position.height / 2) * 0.5522848;\r\n polyline.addSegment(new MoveSegment(position.x, position.verticalCenter()));\r\n polyline.addSegment(new CubicArcSegment(position.x, position.verticalCenter() - cpY, position.horizontalCenter() - cpX, position.y, position.horizontalCenter(), position.y));\r\n polyline.addSegment(new CubicArcSegment(position.horizontalCenter() + cpX, position.y, position.right(), position.verticalCenter() - cpY, position.right(), position.verticalCenter()));\r\n polyline.addSegment(new CubicArcSegment(position.right(), position.verticalCenter() + cpY, position.horizontalCenter() + cpX, position.bottom(), position.horizontalCenter(), position.bottom()));\r\n polyline.addSegment(new CubicArcSegment(position.horizontalCenter() - cpX, position.bottom(), position.x, position.verticalCenter() + cpY, position.x, position.verticalCenter()));\r\n};\r\n\r\nMarker.DrawTriangle = function (polyline, position) {\r\n polyline.addSegment(new MoveSegment(position.left(), position.bottom()));\r\n polyline.addSegment(new LineSegment(position.horizontalCenter(), position.y));\r\n polyline.addSegment(new LineSegment(position.right(), position.bottom()));\r\n polyline.addSegment(new LineSegment(position.left(), position.bottom()));\r\n};\r\n\r\nMarker.DrawCrossOut = function (polyline, position) {\r\n polyline.addSegment(new MoveSegment(position.horizontalCenter(), position.verticalCenter()));\r\n polyline.addSegment(new LineSegment(position.x, position.y));\r\n polyline.addSegment(new MoveSegment(position.horizontalCenter(), position.verticalCenter()));\r\n polyline.addSegment(new LineSegment(position.right(), position.bottom()));\r\n polyline.addSegment(new MoveSegment(position.horizontalCenter(), position.verticalCenter()));\r\n polyline.addSegment(new LineSegment(position.right(), position.y));\r\n polyline.addSegment(new MoveSegment(position.horizontalCenter(), position.verticalCenter()));\r\n polyline.addSegment(new LineSegment(position.left(), position.bottom()));\r\n};\r\n\r\nMarker.DrawRhombus = function (polyline, position) {\r\n polyline.addSegment(new MoveSegment(position.horizontalCenter(), position.bottom()));\r\n polyline.addSegment(new LineSegment(position.left(), position.verticalCenter()));\r\n polyline.addSegment(new LineSegment(position.horizontalCenter(), position.y));\r\n polyline.addSegment(new LineSegment(position.right(), position.verticalCenter()));\r\n polyline.addSegment(new LineSegment(position.horizontalCenter(), position.bottom()));\r\n};\r\n\r\nMarker.DrawWedge = function (polyline, position) {\r\n polyline.addSegment(new MoveSegment(position.horizontalCenter(), position.y));\r\n polyline.addSegment(new LineSegment(position.right(), position.y));\r\n polyline.addSegment(new LineSegment(position.horizontalCenter(), position.bottom()));\r\n polyline.addSegment(new LineSegment(position.left(), position.y));\r\n polyline.addSegment(new LineSegment(position.horizontalCenter(), position.y));\r\n};\r\n\r\nMarker.DrawFramedOval = function (polyline, position) {\r\n Marker.DrawRectangle(polyline, position);\r\n Marker.DrawOval(polyline, position);\r\n};\r\n\r\nMarker.DrawFramedTriangle = function (polyline, position) {\r\n Marker.DrawRectangle(polyline, position);\r\n Marker.DrawTriangle(polyline, position);\r\n};\r\n\r\nMarker.DrawFramedWedge = function (polyline, position) {\r\n Marker.DrawRectangle(polyline, position);\r\n Marker.DrawWedge(polyline, position);\r\n};\r\n\r\nMarker.DrawFramedRhombus = function (polyline, position) {\r\n Marker.DrawRectangle(polyline, position);\r\n Marker.DrawRhombus(polyline, position);\r\n};\r\n\r\nMarker.DrawNone = function (polyline, position) {\r\n\r\n};\r\n\r\nMarker.Markers[ShapeType.Circle] = Marker.DrawCircle;\r\nMarker.Markers[ShapeType.Rectangle] = Marker.DrawRectangle;\r\nMarker.Markers[ShapeType.Oval] = Marker.DrawOval;\r\nMarker.Markers[ShapeType.Triangle] = Marker.DrawTriangle;\r\nMarker.Markers[ShapeType.CrossOut] = Marker.DrawCrossOut;\r\nMarker.Markers[ShapeType.Rhombus] = Marker.DrawRhombus;\r\nMarker.Markers[ShapeType.Wedge] = Marker.DrawWedge;\r\nMarker.Markers[ShapeType.FramedOval] = Marker.DrawFramedOval;\r\nMarker.Markers[ShapeType.FramedTriangle] = Marker.DrawFramedTriangle;\r\nMarker.Markers[ShapeType.FramedWedge] = Marker.DrawFramedWedge;\r\nMarker.Markers[ShapeType.FramedRhombus] = Marker.DrawFramedRhombus;\r\nMarker.Markers[ShapeType.None] = Marker.DrawNone;\r\n\r\nMarker.prototype.draw = function (polylinesBuffer, shapeType, position, paletteItem) {\r\n var polyline;\r\n\r\n // If you need to create custom multi-color marker type\r\n // create color palette object for every fragment \r\n // than request polyline of that that palette style \r\n // add fragment into received polyline\r\n polyline = polylinesBuffer.getPolyline(paletteItem);\r\n Marker.Markers[shapeType](polyline, position);\r\n};\r\n\r\n","import BaseShape from './BaseShape';\r\nimport Callout from './Callout';\r\nimport Marker from './Marker';\r\nimport Size from '../structs/Size';\r\nimport Rect from '../structs/Rect';\r\nimport Thickness from '../structs/Thickness';\r\nimport PaletteItem from '../structs/PaletteItem';\r\nimport Transform from '../Transform';\r\nimport PolylinesBuffer from '../structs/PolylinesBuffer';\r\nimport { LineType, OrientationType, PlacementType, ShapeType } from '../../enums';\r\n\r\nexport default function Shape(graphics) {\r\n this.m_graphics = graphics;\r\n this.transform = null;\r\n\r\n this.orientationType = OrientationType.Top;\r\n this.panelSize = null;\r\n this.shapeType = ShapeType.Rectangle;\r\n this.offset = new Thickness(0, 0, 0, 0);\r\n this.lineWidth = 1;\r\n this.labelOffset = 4;\r\n this.cornerRadius = \"10%\";\r\n this.opacity = 1;\r\n this.fillColor = null;\r\n this.labelSize = new Size(60, 30);\r\n this.lineType = LineType.Solid;\r\n this.borderColor = null;\r\n this.hasLabel = false;\r\n this.labelTemplate = null;\r\n this.labelPlacement = PlacementType.Auto;\r\n};\r\n\r\nShape.prototype = new BaseShape();\r\n\r\nShape.prototype.draw = function (position, uiHash) {\r\n var labelPlacement,\r\n calloutShape,\r\n linePaletteItem,\r\n buffer,\r\n marker;\r\n\r\n position = new Rect(position).offset(this.offset);\r\n\r\n this.transform = new Transform();\r\n this.transform.size = this.panelSize;\r\n this.transform.setOrientation(this.orientationType);\r\n\r\n /* label size */\r\n if (this.hasLabel) {\r\n labelPlacement = this._getLabelPosition(position.x, position.y, position.width, position.height, this.labelSize.width, this.labelSize.height, this.labelOffset, this.labelPlacement);\r\n }\r\n\r\n\r\n switch (this.shapeType) {\r\n case ShapeType.Rectangle:\r\n calloutShape = new Callout(this.m_graphics);\r\n calloutShape.cornerRadius = this.cornerRadius;\r\n calloutShape.opacity = this.opacity;\r\n calloutShape.lineWidth = this.lineWidth;\r\n calloutShape.lineType = this.lineType;\r\n calloutShape.borderColor = this.borderColor;\r\n calloutShape.fillColor = this.fillColor;\r\n calloutShape.draw(null, position);\r\n break;\r\n default:\r\n linePaletteItem = new PaletteItem({\r\n lineColor: this.borderColor,\r\n lineWidth: this.lineWidth,\r\n lineType: this.lineType,\r\n fillColor: this.fillColor,\r\n opacity: this.opacity\r\n });\r\n\r\n /* from rectangle */\r\n this.transform.transformRect(position.x, position.y, position.width, position.height, false,\r\n this, function (x, y, width, height) {\r\n position = new Rect(x, y, width, height);\r\n });\r\n\r\n\r\n marker = new Marker();\r\n buffer = new PolylinesBuffer();\r\n marker.draw(buffer, this.shapeType, position, linePaletteItem);\r\n buffer.transform(this.transform, true);\r\n\r\n this.m_graphics.polylinesBuffer(buffer);\r\n break;\r\n }\r\n\r\n if (this.hasLabel) {\r\n this.m_graphics.template(\r\n labelPlacement.x,\r\n labelPlacement.y,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n labelPlacement.width,\r\n labelPlacement.height,\r\n this.labelTemplate.template(),\r\n this.labelTemplate.getHashCode(),\r\n this.labelTemplate.render,\r\n uiHash,\r\n null\r\n );\r\n }\r\n};\r\n","import Rect from '../../graphics/structs/Rect';\r\nimport RenderEventArgs from '../../events/RenderEventArgs';\r\nimport { Layers, ZOrderType } from '../../enums';\r\nimport Shape from '../../graphics/shapes/Shape';\r\nimport ShapeAnnotationConfig from '../../configs/ShapeAnnotationConfig';\r\n\r\nexport default function DrawShapeAnnotationTask(getGraphics, createTransformTask, applyLayoutChangesTask,\r\n orientationOptionTask, shapeAnnotationOptionTask, alignDiagramTask, annotationLabelTemplateTask, zOrderType) {\r\n var _graphics,\r\n _transform,\r\n _orientationOptions,\r\n _annotationLabelTemplate;\r\n\r\n function process() {\r\n\r\n _graphics = getGraphics();\r\n\r\n _transform = createTransformTask.getTransform();\r\n _orientationOptions = orientationOptionTask.getOptions();\r\n\r\n _annotationLabelTemplate = annotationLabelTemplateTask.getTemplate();\r\n\r\n switch (zOrderType) {\r\n case ZOrderType.Background://ignore jslint\r\n _graphics.reset(\"placeholder\", Layers.BackgroundAnnotations);\r\n break;\r\n case ZOrderType.Foreground://ignore jslint\r\n _graphics.reset(\"placeholder\", Layers.ForegroundAnnotations);\r\n break;\r\n }\r\n\r\n _drawAnnotations(shapeAnnotationOptionTask.getAnnotations(), alignDiagramTask.getItemPosition);\r\n\r\n return false;\r\n }\r\n\r\n function _drawAnnotations(annotations, getItemPosition) {\r\n var panel,\r\n index, len,\r\n index2, len2,\r\n index3, len3,\r\n shape,\r\n defaultConfig,\r\n itemPosition, position,\r\n properties, property,\r\n annotationConfig,\r\n uiHash;\r\n\r\n\r\n switch (zOrderType) {\r\n case ZOrderType.Background://ignore jslint\r\n panel = _graphics.activate(\"placeholder\", Layers.BackgroundAnnotations);\r\n break;\r\n case ZOrderType.Foreground://ignore jslint\r\n panel = _graphics.activate(\"placeholder\", Layers.ForegroundAnnotations);\r\n break;\r\n }\r\n\r\n for (index = 0, len = annotations.length; index < len; index += 1) {\r\n annotationConfig = annotations[index];\r\n\r\n if (annotationConfig.items != null && annotationConfig.items.length > 0) {\r\n position = new Rect();\r\n for (index2 = 0, len2 = annotationConfig.items.length; index2 < len2; index2 += 1) {\r\n itemPosition = getItemPosition(annotationConfig.items[index2]);\r\n if (itemPosition != null) {\r\n position.addRect(itemPosition.actualPosition);\r\n }\r\n }\r\n\r\n if (!position.isEmpty()) {\r\n shape = new Shape(_graphics);\r\n defaultConfig = new ShapeAnnotationConfig();\r\n properties = [\"opacity\", \"cornerRadius\", \"shapeType\", \"offset\", \"lineWidth\", \"borderColor\", \"fillColor\", \"lineType\", \"labelSize\", \"labelOffset\", \"labelPlacement\", \"zOrderType\"];\r\n for (index3 = 0, len3 = properties.length; index3 < len3; index3 += 1) {\r\n property = properties[index3];\r\n shape[property] = annotationConfig.hasOwnProperty(property) ? annotationConfig[property] : defaultConfig[property];\r\n }\r\n\r\n shape.position = position;\r\n shape.orientationType = _orientationOptions.orientationType;\r\n shape.panelSize = panel.size;\r\n shape.labelTemplate = _annotationLabelTemplate;\r\n shape.hasLabel = annotationConfig.templateName != null || annotationConfig.label != null;\r\n\r\n uiHash = new RenderEventArgs();\r\n uiHash.context = annotationConfig;\r\n uiHash.templateName = shape.labelTemplate;\r\n\r\n _transform.transformRect(position.x, position.y, position.width, position.height, true,\r\n this, function (x, y, width, height) {\r\n var position = new Rect(x, y, width, height);\r\n shape.draw(position, uiHash);\r\n });//ignore jslint\r\n }\r\n }\r\n }\r\n }\r\n\r\n return {\r\n process: process\r\n };\r\n};","import Rect from '../../graphics/structs/Rect';\r\nimport RenderEventArgs from '../../events/RenderEventArgs';\r\nimport { Layers } from '../../enums';\r\n\r\nexport default function DrawCursorTask(getGraphics, createTransformTask, applyLayoutChangesTask,\r\n combinedContextsTask,\r\n alignDiagramTask, itemTemplateParamsTask,\r\n cursorItemTask, selectedItemsTask) {\r\n var _graphics,\r\n _transform;\r\n\r\n function process() {\r\n var treeItemId = cursorItemTask.getCursorTreeItem();\r\n\r\n _graphics = getGraphics();\r\n _graphics.reset(\"placeholder\", Layers.Cursor);\r\n\r\n if (treeItemId != null) {\r\n _transform = createTransformTask.getTransform();\r\n\r\n drawCursor(treeItemId);\r\n }\r\n return false;\r\n }\r\n\r\n function drawCursor(treeItemId) {\r\n var treeItem,\r\n uiHash,\r\n panel = _graphics.activate(\"placeholder\", Layers.Cursor),\r\n treeItemPosition = alignDiagramTask.getItemPosition(treeItemId);\r\n if (treeItemPosition != null) {\r\n var actualPosition = treeItemPosition.actualPosition,\r\n position = new Rect(treeItemPosition.contentPosition),\r\n templateParams = itemTemplateParamsTask.getTemplateParams(treeItemId),\r\n template = templateParams.template,\r\n templateConfig = template.templateConfig,\r\n cursorPadding = templateConfig.cursorPadding;\r\n\r\n position.offset(cursorPadding.left, cursorPadding.top, cursorPadding.right, cursorPadding.bottom);\r\n\r\n uiHash = new RenderEventArgs();\r\n uiHash.context = combinedContextsTask.getConfig(treeItemId);\r\n uiHash.isCursor = true;\r\n uiHash.isSelected = selectedItemsTask.isSelected(treeItemId);\r\n uiHash.templateName = templateConfig.name;\r\n\r\n _transform.transformRect(actualPosition.x, actualPosition.y, actualPosition.width, actualPosition.height, true,\r\n this, function (x, y, width, height) {\r\n var element = _graphics.template(\r\n x\r\n , y\r\n , width\r\n , height\r\n , position.x\r\n , position.y\r\n , position.width\r\n , position.height\r\n , template.cursorTemplate.template()\r\n , template.cursorTemplate.getHashCode()\r\n , template.cursorTemplate.render\r\n , uiHash\r\n , { \"borderWidth\": templateConfig.cursorBorderWidth }\r\n );\r\n });\r\n }\r\n }\r\n\r\n return {\r\n process: process\r\n };\r\n};","import Rect from '../../graphics/structs/Rect';\r\nimport RenderEventArgs from '../../events/RenderEventArgs';\r\nimport { Layers, Visibility } from '../../enums';\r\n\r\nexport default function DrawHighlightTask(getGraphics, createTransformTask, applyLayoutChangesTask,\r\n combinedContextsTask,\r\n alignDiagramTask, itemTemplateParamsTask,\r\n highlightItemTask, cursorItemTask, selectedItemsTask) {\r\n var _graphics,\r\n _transform;\r\n\r\n function process() {\r\n var treeItemId = highlightItemTask.getHighlightTreeItem();\r\n\r\n _graphics = getGraphics();\r\n _graphics.reset(\"placeholder\", Layers.Highlight);\r\n\r\n if (treeItemId != null) {\r\n _transform = createTransformTask.getTransform();\r\n drawHighlight(treeItemId);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function drawHighlight(treeItemId) {\r\n var uiHash,\r\n panel = _graphics.activate(\"placeholder\", Layers.Highlight),\r\n treeItemPosition = alignDiagramTask.getItemPosition(treeItemId),\r\n actualPosition = treeItemPosition.actualPosition,\r\n templateParams = itemTemplateParamsTask.getTemplateParams(treeItemId),\r\n template = templateParams.template,\r\n templateConfig = template.templateConfig,\r\n highlightPadding = templateConfig.highlightPadding;\r\n\r\n uiHash = new RenderEventArgs();\r\n uiHash.context = combinedContextsTask.getConfig(treeItemId);\r\n uiHash.isCursor = (cursorItemTask.getCursorTreeItem() == treeItemId);\r\n uiHash.isSelected = selectedItemsTask.isSelected(treeItemId);\r\n uiHash.templateName = templateConfig.name;\r\n\r\n _transform.transformRect(actualPosition.x, actualPosition.y, actualPosition.width, actualPosition.height, true,\r\n this, function (x, y, width, height) {\r\n var position = new Rect(0, 0, Math.round(width), Math.round(height));\r\n position.offset(highlightPadding.left, highlightPadding.top, highlightPadding.right, highlightPadding.bottom);\r\n\r\n var element;\r\n if (treeItemPosition.actualVisibility == Visibility.Normal) {\r\n element = _graphics.template(\r\n x\r\n , y\r\n , width\r\n , height\r\n , position.x\r\n , position.y\r\n , position.width\r\n , position.height\r\n , template.highlightTemplate.template()\r\n , template.highlightTemplate.getHashCode()\r\n , template.highlightTemplate.render\r\n , uiHash\r\n , { \"borderWidth\": templateConfig.highlightBorderWidth }\r\n );\r\n } else {\r\n element = _graphics.template(\r\n Math.round(x)\r\n , Math.round(y)\r\n , Math.round(width)\r\n , Math.round(height)\r\n , Math.round(position.x)\r\n , Math.round(position.y)\r\n , Math.round(position.width)\r\n , Math.round(position.height)\r\n , template.dotHighlightTemplate.template()\r\n , template.dotHighlightTemplate.getHashCode()\r\n , template.dotHighlightTemplate.render\r\n , uiHash\r\n , { \"borderWidth\": templateConfig.highlightBorderWidth }\r\n );\r\n }\r\n });\r\n }\r\n\r\n return {\r\n process: process\r\n };\r\n};","import Point from '../../graphics/structs/Point';\r\nimport Rect from '../../graphics/structs/Rect';\r\nimport Size from '../../graphics/structs/Size';\r\nimport Thickness from '../../graphics/structs/Thickness';\r\nimport RenderEventArgs from '../../events/RenderEventArgs';\r\nimport { Layers, Visibility, Enabled, PlacementType, OrientationType } from '../../enums';\r\nimport Callout from '../../graphics/shapes/Callout';\r\nimport { isNullOrEmpty } from '../../common';\r\n\r\nexport default function DrawHighlightAnnotationTask(getGraphics, createTransformTask, applyLayoutChangesTask, scaleOptionTask,\r\n combinedContextsTask,\r\n calloutOptionTask,\r\n readTemplatesTask,\r\n alignDiagramTask, centerOnCursorTask,\r\n highlightItemTask, cursorItemTask, selectedItemsTask, frameSizeTask) {\r\n var _graphics,\r\n _transform,\r\n _calloutShape = new Callout(getGraphics()),\r\n _options;\r\n\r\n function process() {\r\n var treeItemId = highlightItemTask.getHighlightTreeItem();\r\n\r\n _graphics = getGraphics();\r\n _graphics.reset(\"calloutplaceholder\", Layers.Annotation);\r\n\r\n if (treeItemId !== null) {\r\n _transform = createTransformTask.getTransform();\r\n _options = calloutOptionTask.getOptions();\r\n\r\n drawHighlightAnnotation(treeItemId);\r\n }\r\n return false;\r\n }\r\n\r\n function drawHighlightAnnotation(treeItemId) {\r\n var panel,\r\n itemConfig,\r\n calloutPanelPosition,\r\n position,\r\n uiHash,\r\n calloutTemplateName,\r\n calloutTemplate,\r\n showCallout = true,\r\n treeItemPosition = alignDiagramTask.getItemPosition(treeItemId),\r\n actualPosition = treeItemPosition.actualPosition;\r\n\r\n\r\n switch (treeItemPosition.actualVisibility) {\r\n case Visibility.Dot:\r\n case Visibility.Line:\r\n case Visibility.Normal:\r\n itemConfig = calloutOptionTask.getItemOptions(treeItemId);\r\n\r\n switch (itemConfig.showCallout) {\r\n case Enabled.False:\r\n showCallout = false;\r\n break;\r\n case Enabled.True:\r\n showCallout = false;\r\n break;\r\n default:\r\n showCallout = _options.showCallout;\r\n break;\r\n }\r\n\r\n if (showCallout) {\r\n panel = _graphics.activate(\"placeholder\", Layers.Item);\r\n\r\n _transform.transformRect(actualPosition.x, actualPosition.y, actualPosition.width, actualPosition.height, true,\r\n this, function (x, y, width, height) {\r\n var snapRect = new Rect(x, y, width, height),\r\n snapPoint = new Point(snapRect.centerPoint()),\r\n { medianRect, viewPortRect } = getFrameMedianPosition(),\r\n projectionPoint = medianRect.getProjectionPoint(snapRect.centerPoint());\r\n\r\n if(projectionPoint == null) {\r\n /* snapPoint is inside viewport, no need to project */\r\n projectionPoint = snapPoint;\r\n }\r\n if ((treeItemPosition.actualVisibility >= _options.calloutMaximumVisibility && treeItemPosition.actualVisibility != Visibility.Invisible) || !medianRect.overlaps(snapRect)) {\r\n\r\n calloutTemplateName = !isNullOrEmpty(itemConfig.calloutTemplateName) ? itemConfig.calloutTemplateName :\r\n !isNullOrEmpty(itemConfig.templateName) ? itemConfig.templateName :\r\n !isNullOrEmpty(_options.defaultCalloutTemplateName) ? _options.defaultCalloutTemplateName :\r\n _options.defaultTemplateName;\r\n\r\n calloutTemplate = readTemplatesTask.getTemplate(calloutTemplateName, readTemplatesTask.DefaultWidgetTemplateName);\r\n\r\n position = getAnnotationPosition(projectionPoint, viewPortRect, calloutTemplate.templateConfig.itemSize);\r\n\r\n /* position callout div placeholder */\r\n calloutPanelPosition = new Rect(position);\r\n calloutPanelPosition.addRect(projectionPoint.x, projectionPoint.y);\r\n calloutPanelPosition.offset(50);\r\n\r\n /* recalculate geometries */\r\n projectionPoint.x -= calloutPanelPosition.x;\r\n projectionPoint.y -= calloutPanelPosition.y;\r\n position.x -= calloutPanelPosition.x;\r\n position.y -= calloutPanelPosition.y;\r\n\r\n uiHash = new RenderEventArgs();\r\n uiHash.context = combinedContextsTask.getConfig(treeItemId);\r\n uiHash.isCursor = (cursorItemTask.getCursorTreeItem() == treeItemId);\r\n uiHash.isSelected = selectedItemsTask.isSelected(treeItemId);\r\n uiHash.templateName = calloutTemplate.templateConfig.name;\r\n _graphics.show(\"calloutplaceholder\");\r\n panel = _graphics.activate(\"calloutplaceholder\", Layers.Annotation);\r\n _graphics.position(\"calloutplaceholder\", calloutPanelPosition.x, calloutPanelPosition.y, calloutPanelPosition.width, calloutPanelPosition.height);\r\n _graphics.template(\r\n position.x\r\n , position.y\r\n , position.width\r\n , position.height\r\n , 0\r\n , 0\r\n , position.width\r\n , position.height\r\n , calloutTemplate.itemTemplate.template()\r\n , calloutTemplate.itemTemplate.getHashCode()\r\n , calloutTemplate.itemTemplate.render\r\n , uiHash\r\n , null\r\n );\r\n\r\n _calloutShape.pointerPlacement = PlacementType.Auto;\r\n _calloutShape.cornerRadius = _options.calloutCornerRadius;\r\n _calloutShape.offset = _options.calloutOffset;\r\n _calloutShape.opacity = _options.calloutOpacity;\r\n _calloutShape.lineWidth = _options.calloutLineWidth;\r\n _calloutShape.pointerWidth = _options.calloutPointerWidth;\r\n _calloutShape.borderColor = _options.calloutBorderColor;\r\n _calloutShape.fillColor = _options.calloutfillColor;\r\n _calloutShape.draw(projectionPoint, position);\r\n } else {\r\n _graphics.hide(\"calloutplaceholder\");\r\n }\r\n }\r\n );\r\n } else {\r\n _graphics.hide(\"calloutplaceholder\");\r\n }\r\n break;\r\n case Visibility.Invisible:\r\n _graphics.hide(\"calloutplaceholder\");\r\n break;\r\n }\r\n }\r\n\r\n function getFrameMedianPosition() {\r\n var scaleOptions = scaleOptionTask.getOptions(),\r\n scale = scaleOptions.scale,\r\n placeholderOffset = new Point(centerOnCursorTask.getPlaceholderOffset()),\r\n scrollPanelSize = new Size(applyLayoutChangesTask.getScrollPanelSize()),\r\n frameBaseOffset = new Thickness(applyLayoutChangesTask.getFrameOffset()),\r\n medianThickness = new Thickness(frameSizeTask.getMedian());\r\n\r\n \r\n placeholderOffset.scale(1.0 / scale);\r\n frameBaseOffset.scale(1.0 / scale);\r\n scrollPanelSize.scale(1.0 / scale);\r\n medianThickness.scale(1.0 / scale);\r\n\r\n var viewPortRect = new Rect(placeholderOffset.x, placeholderOffset.y, scrollPanelSize.width, scrollPanelSize.height);\r\n var medianRect = new Rect(viewPortRect);\r\n medianRect.offset(frameBaseOffset);\r\n medianRect.offset(medianThickness);\r\n\r\n return { \r\n medianRect: medianRect,\r\n viewPortRect: viewPortRect\r\n };\r\n }\r\n\r\n function getAnnotationPosition(snapPoint, panelRect, itemSize) {\r\n var result = new Rect(snapPoint.x, snapPoint.y, itemSize.width, itemSize.height);\r\n\r\n switch (_options.orientationType) {\r\n case OrientationType.Top:\r\n case OrientationType.Bottom:\r\n result.y -= (itemSize.height / 4.0);\r\n if (snapPoint.x < panelRect.horizontalCenter()) {\r\n result.x += _options.calloutPlacementOffset;\r\n }\r\n else {\r\n result.x -= (_options.calloutPlacementOffset + itemSize.width);\r\n }\r\n break;\r\n default:\r\n result.x -= (itemSize.width / 4.0);\r\n if (snapPoint.y < panelRect.verticalCenter()) {\r\n result.y += _options.calloutPlacementOffset;\r\n }\r\n else {\r\n result.y -= (_options.calloutPlacementOffset + itemSize.height);\r\n }\r\n break;\r\n }\r\n\r\n // If annotation clipped then move it back into view port\r\n if (result.x < panelRect.x) {\r\n result.x = panelRect.x + _options.calloutPlacementOffset;\r\n }\r\n else if (result.right() > panelRect.right()) {\r\n result.x -= (result.right() - panelRect.right() + _options.calloutPlacementOffset);\r\n }\r\n\r\n if (result.y < panelRect.y) {\r\n result.y = panelRect.y + _options.calloutPlacementOffset;\r\n }\r\n else if (result.bottom() > panelRect.bottom()) {\r\n result.y -= (result.bottom() - panelRect.bottom() + _options.calloutPlacementOffset);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n return {\r\n process: process\r\n };\r\n};","import Point from '../../graphics/structs/Point';\r\nimport Size from '../../graphics/structs/Size';\r\nimport Rect from '../../graphics/structs/Rect';\r\nimport RenderEventArgs from '../../events/RenderEventArgs';\r\nimport { Layers, Visibility, AdviserPlacementType } from '../../enums';\r\n\r\nexport default function DrawTreeItemsTask(getGraphics, createTransformTask, applyLayoutChangesTask, scaleOptionTask,\r\n itemsSizesOptionTask,\r\n combinedContextsTask,\r\n alignDiagramTask, centerOnCursorTask,\r\n itemTemplateParamsTask,\r\n cursorItemTask, selectedItemsTask,\r\n groupTitleTemplateTask, checkBoxTemplateTask, buttonsTemplateTask) {\r\n\r\n var _positions,\r\n _graphics,\r\n _transform,\r\n _itemsSizesOptions,\r\n\r\n _buttonsTemplate,\r\n _checkBoxTemplate,\r\n _groupTitleTemplate;\r\n\r\n function process() {\r\n _graphics = getGraphics();\r\n\r\n _itemsSizesOptions = itemsSizesOptionTask.getOptions();\r\n _positions = alignDiagramTask.getItemsPositions();\r\n _transform = createTransformTask.getTransform();\r\n\r\n _buttonsTemplate = buttonsTemplateTask.getTemplate();\r\n _checkBoxTemplate = checkBoxTemplateTask.getTemplate();\r\n _groupTitleTemplate = groupTitleTemplateTask.getTemplate();\r\n\r\n _graphics.reset(\"placeholder\", Layers.Item);\r\n _graphics.reset(\"placeholder\", Layers.Controls);\r\n\r\n redrawTreeItems();\r\n\r\n return false;\r\n }\r\n\r\n function redrawTreeItems() {\r\n var uiHash,\r\n element,\r\n cursorItemId = cursorItemTask.getCursorTreeItem(),\r\n treeItemPosition,\r\n actualPosition,\r\n viewPortPosition = getViewPortPosition();\r\n\r\n for (var treeItemId in _positions) {\r\n if (_positions.hasOwnProperty(treeItemId)) {\r\n treeItemPosition = _positions[treeItemId],\r\n actualPosition = treeItemPosition.actualPosition;\r\n if (treeItemPosition.actualVisibility == Visibility.Normal) {\r\n _transform.transformRect(actualPosition.x, actualPosition.y, actualPosition.width, actualPosition.height, true,\r\n this, function (x, y, width, height) {\r\n var nodePosition = new Rect(x, y, width, height);\r\n if (viewPortPosition == null || viewPortPosition.overlaps(nodePosition)) {\r\n var templateParams = itemTemplateParamsTask.getTemplateParams(treeItemId);\r\n if(templateParams != null) {\r\n var template = templateParams.template;\r\n\r\n uiHash = new RenderEventArgs();\r\n uiHash.id = treeItemId;\r\n uiHash.context = combinedContextsTask.getConfig(treeItemId);\r\n uiHash.isCursor = (treeItemId == cursorItemId);\r\n uiHash.isSelected = selectedItemsTask.isSelected(treeItemId);\r\n uiHash.templateName = template.templateConfig.name;\r\n\r\n uiHash.template = templateParams.template;\r\n uiHash.isActive = templateParams.isActive;\r\n uiHash.hasSelectorCheckbox = templateParams.hasSelectorCheckbox;\r\n uiHash.hasButtons = templateParams.hasButtons;\r\n uiHash.hasGroupTitle = templateParams.hasGroupTitle;\r\n uiHash.onButtonsRender = templateParams.onButtonsRender;\r\n\r\n _graphics.activate(\"placeholder\", Layers.Item);\r\n element = _graphics.template(\r\n x\r\n , y\r\n , width\r\n , height\r\n , treeItemPosition.contentPosition.x\r\n , treeItemPosition.contentPosition.y\r\n , treeItemPosition.contentPosition.width\r\n , treeItemPosition.contentPosition.height\r\n , template.itemTemplate.template()\r\n , template.itemTemplate.getHashCode()\r\n , template.itemTemplate.render\r\n , uiHash\r\n , { \"borderWidth\": template.templateConfig.itemBorderWidth }\r\n );\r\n\r\n if (templateParams.hasGroupTitle) {\r\n var groupTitlePosition = 0;\r\n switch (_itemsSizesOptions.groupTitlePlacementType) {\r\n case AdviserPlacementType.Left:\r\n case AdviserPlacementType.Auto:\r\n groupTitlePosition = 2;\r\n break;\r\n case AdviserPlacementType.Right:\r\n groupTitlePosition = width - (_itemsSizesOptions.groupTitlePanelSize - 4);\r\n break;\r\n default:\r\n }\r\n element = _graphics.template(\r\n x,\r\n y,\r\n width,\r\n height,\r\n groupTitlePosition,\r\n treeItemPosition.contentPosition.y,\r\n _itemsSizesOptions.groupTitlePanelSize - 4,\r\n treeItemPosition.contentPosition.height + 2,\r\n _groupTitleTemplate.template(),\r\n _groupTitleTemplate.getHashCode(),\r\n _groupTitleTemplate.render,\r\n uiHash,\r\n null\r\n );\r\n }\r\n if (templateParams.hasSelectorCheckbox) {\r\n _graphics.activate(\"placeholder\", Layers.Controls);\r\n element = _graphics.template(\r\n x,\r\n y,\r\n width,\r\n height,\r\n treeItemPosition.contentPosition.x,\r\n height - (_itemsSizesOptions.checkBoxPanelSize - 4),\r\n treeItemPosition.contentPosition.width,\r\n _itemsSizesOptions.checkBoxPanelSize - 4,\r\n _checkBoxTemplate.template(),\r\n _checkBoxTemplate.getHashCode(),\r\n _checkBoxTemplate.render,\r\n uiHash,\r\n null\r\n );\r\n }\r\n if (templateParams.hasButtons) {\r\n _graphics.activate(\"placeholder\", Layers.Controls);\r\n var buttonsPanelPosition = 0;\r\n switch (_itemsSizesOptions.groupTitlePlacementType) {\r\n case AdviserPlacementType.Left:\r\n case AdviserPlacementType.Auto:\r\n buttonsPanelPosition = width - (_itemsSizesOptions.buttonsPanelSize - 4);\r\n break;\r\n case AdviserPlacementType.Right:\r\n buttonsPanelPosition = 2;\r\n break;\r\n default:\r\n }\r\n element = _graphics.template(\r\n x,\r\n y,\r\n width,\r\n height,\r\n buttonsPanelPosition,\r\n treeItemPosition.contentPosition.y,\r\n _itemsSizesOptions.buttonsPanelSize - 4,\r\n Math.max(treeItemPosition.contentPosition.height, height - treeItemPosition.contentPosition.y),\r\n _buttonsTemplate.template(),\r\n template.templateConfig.name + _buttonsTemplate.getHashCode(),\r\n _buttonsTemplate.render,\r\n uiHash,\r\n null\r\n );\r\n }\r\n }\r\n }\r\n });//ignore jslint\r\n }\r\n }\r\n }\r\n }\r\n\r\n function getViewPortPosition() {\r\n var result = null;\r\n if (centerOnCursorTask != null) {\r\n var scaleOptions = scaleOptionTask.getOptions(),\r\n scale = scaleOptions.scale,\r\n placeholderOffset = new Point(centerOnCursorTask.getPlaceholderOffset()),\r\n panelSize = new Rect(alignDiagramTask.getContentSize()),\r\n optimalPanelSize = new Size(applyLayoutChangesTask.getOptimalPanelSize());\r\n\r\n placeholderOffset.scale(1.0 / scale);\r\n optimalPanelSize.scale(1.0 / scale);\r\n\r\n result = new Rect(\r\n placeholderOffset.x,\r\n placeholderOffset.y,\r\n Math.min(optimalPanelSize.width, panelSize.width),\r\n Math.min(optimalPanelSize.height, panelSize.height)\r\n );\r\n }\r\n return result;\r\n }\r\n\r\n return {\r\n process: process\r\n };\r\n};","import { SegmentType } from '../../enums';\r\n\r\nexport default function DotSegment(x, y, width, height, cornerRadius) {\r\n this.segmentType = SegmentType.Dot;\r\n\r\n this.x = x;\r\n this.y = y;\r\n this.width = width;\r\n this.height = height;\r\n this.cornerRadius = cornerRadius;\r\n};\r\n","import Rect from '../../graphics/structs/Rect';\r\nimport { Layers, Visibility, Colors, ShapeType, LineType } from '../../enums';\r\nimport PolylinesBuffer from '../../graphics/structs/PolylinesBuffer';\r\nimport DotSegment from '../../graphics/structs/DotSegment';\r\nimport PaletteItem from '../../graphics/structs/PaletteItem';\r\nimport Marker from '../../graphics/shapes/Marker';\r\n\r\nexport default function DrawMinimizedItemsTask(getGraphics, createTransformTask, applyLayoutChangesTask,\r\n minimizedItemsOptionTask, itemTemplateParamsTask, alignDiagramTask) {\r\n var _graphics,\r\n _transform,\r\n _debug = false,\r\n _options,\r\n _positions;\r\n\r\n function process() {\r\n\r\n _graphics = getGraphics();\r\n\r\n _transform = createTransformTask.getTransform();\r\n _options = minimizedItemsOptionTask.getOptions();\r\n _positions = alignDiagramTask.getItemsPositions();\r\n\r\n _graphics.reset(\"placeholder\", Layers.Marker);\r\n\r\n drawMinimizedItems();\r\n\r\n return false;\r\n }\r\n\r\n function drawMinimizedItems() {\r\n var markers = new PolylinesBuffer(),\r\n paletteItems = {},\r\n polyline,\r\n marker = new Marker(),\r\n itemTitleColor,\r\n itemFillColor,\r\n minimizedItemShapeType,\r\n minimizedItemCornerRadius,\r\n treeItemPosition,\r\n actualPosition,\r\n minimizedItemsOptions,\r\n templateParams,\r\n templateConfig;\r\n\r\n for (var treeItemId in _positions) {\r\n if (_positions.hasOwnProperty(treeItemId)) {\r\n treeItemPosition = _positions[treeItemId],\r\n actualPosition = treeItemPosition.actualPosition,\r\n minimizedItemsOptions = minimizedItemsOptionTask.getItemOptions(treeItemId);\r\n\r\n _transform.transformRect(actualPosition.x, actualPosition.y, actualPosition.width, actualPosition.height, true,\r\n this, function (x, y, width, height) {\r\n switch (treeItemPosition.actualVisibility) {\r\n case Visibility.Dot:\r\n templateParams = itemTemplateParamsTask.getTemplateParams(treeItemId);\r\n templateConfig = templateParams.template.templateConfig;\r\n\r\n itemTitleColor = null;\r\n itemFillColor = null;\r\n minimizedItemShapeType = null;\r\n minimizedItemCornerRadius = 0;\r\n\r\n /* use individual item options first */\r\n if (minimizedItemsOptions != null) {\r\n itemTitleColor = minimizedItemsOptions.itemTitleColor;\r\n itemFillColor = minimizedItemsOptions.itemTitleColor;\r\n minimizedItemShapeType = minimizedItemsOptions.minimizedItemShapeType;\r\n }\r\n\r\n /* use template config & control options next */\r\n itemTitleColor = itemTitleColor || templateConfig.minimizedItemBorderColor || Colors.Navy;\r\n itemFillColor = itemFillColor || templateConfig.minimizedItemFillColor || Colors.Navy;\r\n if (minimizedItemShapeType == null) {\r\n minimizedItemShapeType = (templateConfig.minimizedItemShapeType !== null ? templateConfig.minimizedItemShapeType : _options.minimizedItemShapeType);\r\n }\r\n minimizedItemCornerRadius = templateConfig.minimizedItemCornerRadius === null ? templateConfig.minimizedItemSize.width : templateConfig.minimizedItemCornerRadius;\r\n\r\n if (minimizedItemShapeType == null || minimizedItemShapeType == ShapeType.None) {\r\n polyline = markers.getPolyline(new PaletteItem({\r\n 'lineColor': itemTitleColor,\r\n 'lineWidth': templateConfig.minimizedItemLineWidth,\r\n 'lineType': templateConfig.minimizedItemLineType,\r\n 'fillColor': itemFillColor,\r\n 'opacity': templateConfig.minimizedItemOpacity\r\n }));\r\n polyline.addSegment(new DotSegment(x, y, width, height, minimizedItemCornerRadius));\r\n } else {\r\n marker.draw(markers, minimizedItemShapeType, new Rect(x, y, width, height),\r\n new PaletteItem({\r\n 'lineColor': itemTitleColor,\r\n 'lineWidth': templateConfig.minimizedItemLineWidth,\r\n 'lineType': templateConfig.minimizedItemLineType,\r\n 'fillColor': itemFillColor,\r\n 'opacity': templateConfig.minimizedItemOpacity\r\n })\r\n );\r\n }\r\n break;\r\n case Visibility.Invisible:\r\n if (_debug) {\r\n itemTitleColor = Colors.Red;\r\n if (!paletteItems.hasOwnProperty(itemTitleColor)) {\r\n paletteItems[itemTitleColor] = new PaletteItem({\r\n 'lineColor': itemTitleColor,\r\n 'lineWidth': 1,\r\n 'lineType': LineType.Solid,\r\n 'fillColor': itemTitleColor,\r\n 'opacity': 1\r\n });\r\n }\r\n polyline = markers.getPolyline(paletteItems[itemTitleColor]);\r\n polyline.addSegment(new DotSegment(x - 4, y - 4, 8, 8, 4));\r\n }\r\n break; \r\n default:\r\n break;\r\n }\r\n });//ignore jslint\r\n }\r\n }\r\n\r\n\r\n _graphics.activate(\"placeholder\", Layers.Marker);\r\n _graphics.polylinesBuffer(markers);\r\n }\r\n\r\n return {\r\n process: process\r\n };\r\n};\r\n","import { Layers, ConnectorStyleType, GroupByType, ElbowType } from '../../enums';\r\nimport PolylinesBuffer from '../../graphics/structs/PolylinesBuffer';\r\nimport DotSegment from '../../graphics/structs/DotSegment';\r\n\r\n\r\nexport default function DrawConnectorsTask(getGraphics, connectionsGraphTask, connectorsOptionTask, showElbowDots, paletteManagerTask) {\r\n function process() {\r\n var graphics = getGraphics();\r\n var graph = connectionsGraphTask.getGraph();\r\n var connectorsOptions = connectorsOptionTask.getOptions();\r\n var paletteManager = paletteManagerTask.getPaletteManager();\r\n\r\n graphics.reset(\"placeholder\", Layers.Connector);\r\n graphics.activate(\"placeholder\", Layers.Connector);\r\n\r\n var buffer = new PolylinesBuffer();\r\n\r\n var elbowDotRadius = Math.round(connectorsOptions.elbowDotSize / 2);\r\n\r\n var processed = {};\r\n var processedDots = {};\r\n graph.loopNodes(this, null, function (itemid) {\r\n graph.loopNodeEdges(this, itemid, function (to, connectorEdge) {\r\n if (!processed.hasOwnProperty(to)) {\r\n var paletteItem = null;\r\n if (connectorEdge.fromOffset <= 1) {\r\n paletteItem = paletteManager.getPalette(ConnectorStyleType.Regular);\r\n } else {\r\n paletteManager.selectPalette(connectorEdge.fromOffset);\r\n paletteItem = paletteManager.getPalette(ConnectorStyleType.Extra);\r\n }\r\n var polyline = buffer.getPolyline(paletteItem);\r\n\r\n /* draw intersection dots */\r\n if (showElbowDots && connectorEdge.dotId != null && connectorsOptions.elbowType != ElbowType.None && !processedDots.hasOwnProperty(connectorEdge.dotId)) {\r\n var dotPolyline = buffer.getPolyline(polyline.arrowPaletteItem);\r\n var dotPoint = (connectorEdge.dotId == connectorEdge.from) ? connectorEdge.polyline.getStartPoint() : connectorEdge.polyline.getEndPoint();\r\n dotPolyline.addSegment(new DotSegment(dotPoint.x - elbowDotRadius, dotPoint.y - elbowDotRadius, elbowDotRadius * 2, elbowDotRadius * 2, elbowDotRadius));\r\n processedDots[connectorEdge.dotId] = true;\r\n }\r\n\r\n var arrowId = null;\r\n\r\n if (connectorEdge.hasArrow) {\r\n switch (connectorsOptions.arrowsDirection) {\r\n case GroupByType.Parents:\r\n arrowId = !connectorEdge.isOppositeFlow ? connectorEdge.parentsArrowId : connectorEdge.childrenArrowId;\r\n break;\r\n case GroupByType.Children:\r\n arrowId = !connectorEdge.isOppositeFlow ? connectorEdge.childrenArrowId : connectorEdge.parentsArrowId;\r\n break;\r\n }\r\n }\r\n\r\n if (arrowId == null) {\r\n var newSegment = connectorEdge.polyline.clone();\r\n\r\n if (connectorEdge.hasMiddle && connectorsOptions.arrowsDirection != GroupByType.None) {\r\n var isForward = true;\r\n if (connectorEdge.from == connectorEdge.middleParent) {\r\n isForward = (connectorsOptions.arrowsDirection == GroupByType.Children);\r\n } else {\r\n isForward = (connectorsOptions.arrowsDirection == GroupByType.Parents);\r\n }\r\n if (connectorEdge.isOppositeFlow) {\r\n isForward = !isForward;\r\n }\r\n newSegment.addOffsetArrow(isForward, connectorsOptions.linesWidth, 0.4, connectorsOptions.extraArrowsMinimumSpace, function (arrowPolyline) {\r\n arrowPolyline.mergeTo(buffer.getPolyline(polyline.arrowPaletteItem));\r\n }); //ignore jslint\r\n }\r\n\r\n if (connectorEdge.from == itemid) {\r\n newSegment.mergeTo(polyline);\r\n } else {\r\n polyline.addInverted(newSegment);\r\n }\r\n } else {\r\n if (arrowId == connectorEdge.to) {\r\n connectorEdge.polyline.clone().mergeTo(polyline);\r\n } else {\r\n polyline.addInverted(connectorEdge.polyline.clone());\r\n }\r\n polyline.addArrow(connectorsOptions.linesWidth, function (arrowPolyline) {\r\n arrowPolyline.mergeTo(buffer.getPolyline(arrowPolyline.paletteItem));\r\n }); //ignore jslint\r\n }\r\n }\r\n });\r\n processed[itemid] = true;\r\n });\r\n\r\n graphics.polylinesBuffer(buffer);\r\n\r\n return false;\r\n }\r\n\r\n return {\r\n process: process\r\n };\r\n};","import Rect from './Rect';\r\nimport { LabelType, TextOrientationType, HorizontalAlignmentType, VerticalAlignmentType } from '../../enums';\r\n\r\nexport default function Label() {\r\n this.text = null;\r\n this.position = null; // Rect\r\n this.weight = 0;\r\n\r\n this.isActive = true;\r\n this.labelType = LabelType.Regular;\r\n\r\n this.labelOrientation = TextOrientationType.Horizontal;\r\n this.horizontalAlignmentType = HorizontalAlignmentType.Center;\r\n this.verticalAlignmentType = VerticalAlignmentType.Bottom;\r\n\r\n this.parent = Rect.prototype;\r\n this.parent.constructor.apply(this, arguments);\r\n};\r\n\r\nLabel.prototype = new Rect();\r\n","import Rect from '../../graphics/structs/Rect';\r\nimport { Layers, Enabled, LabelType, TextOrientationType, PlacementType, Visibility, HorizontalAlignmentType, VerticalAlignmentType } from '../../enums';\r\nimport Label from '../../graphics/structs/Label';\r\nimport { isNullOrEmpty } from '../../common';\r\nimport getCrossingRectangles from '../../algorithms/getCrossingRectangles';\r\n\r\nexport default function DrawItemLabelsTask(getGraphics, createTransformTask, applyLayoutChangesTask,\r\n labelsOptionTask,\r\n alignDiagramTask) {\r\n\r\n function process() {\r\n var labelsOption = labelsOptionTask.getOptions();\r\n\r\n var params = {\r\n graphics: getGraphics(),\r\n transform: createTransformTask.getTransform(),\r\n treeItemsPositions: alignDiagramTask.getItemsPositions()\r\n };\r\n\r\n var options = {\r\n showLabels: labelsOption.showLabels,\r\n labelFontSize: labelsOption.labelFontSize,\r\n labelFontFamily: labelsOption.labelFontFamily,\r\n labelFontStyle: labelsOption.labelFontStyle,\r\n labelFontWeight: labelsOption.labelFontWeight,\r\n labelColor: labelsOption.labelColor,\r\n itemsOptions: labelsOptionTask.getItemsOptions(),\r\n labelSize: labelsOption.labelSize,\r\n labelOrientation: labelsOption.labelOrientation,\r\n labelPlacement: labelsOption.labelPlacement,\r\n labelOffset: labelsOption.labelOffset\r\n };\r\n\r\n params.graphics.reset(\"placeholder\", Layers.Label);\r\n\r\n redrawLabels(params, options);\r\n\r\n return false;\r\n }\r\n\r\n function redrawLabels(params, options) {\r\n var labels = [];\r\n if (options.showLabels == Enabled.Auto || options.showLabels == Enabled.True) {\r\n for (var treeItemId in params.treeItemsPositions) {\r\n if (params.treeItemsPositions.hasOwnProperty(treeItemId)) {\r\n var labelOptions = options.itemsOptions[treeItemId],\r\n treeItemPosition = params.treeItemsPositions[treeItemId],\r\n actualPosition = treeItemPosition.actualPosition;\r\n\r\n if (labelOptions != null) {\r\n params.transform.transformRect(actualPosition.x, actualPosition.y, actualPosition.width, actualPosition.height, true,\r\n this, function (x, y, width, height) {\r\n\r\n switch (treeItemPosition.actualVisibility) {\r\n case Visibility.Normal:\r\n if (options.showLabels == Enabled.Auto) {\r\n // Don't allow labels overlap normal items in Auto mode\r\n label = new Label(x, y, width, height);\r\n label.weight = 10000;\r\n label.labelType = LabelType.Dummy;\r\n labels.push(label);\r\n }\r\n break;\r\n case Visibility.Dot:\r\n case Visibility.Line:\r\n var label = createLabel(x, y, width, height, labelOptions, treeItemPosition, options);\r\n if (label != null) {\r\n labels.push(label);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n });//ignore jslint\r\n }\r\n }\r\n }\r\n }\r\n\r\n /* Auto resolve overllapings between nodes */\r\n if (options.showLabels == Enabled.Auto) {\r\n getCrossingRectangles(this, labels, function (label1, label2) {\r\n if (label1.isActive && label2.isActive) {\r\n switch (label1.labelType) {\r\n case LabelType.Dummy:\r\n switch (label2.labelType) {\r\n case LabelType.Dummy:\r\n break;\r\n case LabelType.Regular:\r\n label2.isActive = false;\r\n break;\r\n case LabelType.Fixed:\r\n label2.isActive = false;\r\n break;\r\n }\r\n break;\r\n case LabelType.Fixed:\r\n switch (label2.labelType) {\r\n case LabelType.Dummy:\r\n label1.isActive = false;\r\n break;\r\n case LabelType.Regular:\r\n label2.isActive = false;\r\n break;\r\n case LabelType.Fixed:\r\n break;\r\n }\r\n break;\r\n case LabelType.Regular:\r\n switch (label2.labelType) {\r\n case LabelType.Dummy:\r\n label1.isActive = false;\r\n break;\r\n case LabelType.Regular:\r\n if (label1.weight <= label2.weight) {\r\n label1.isActive = false;\r\n } else {\r\n label2.isActive = false;\r\n }\r\n break;\r\n case LabelType.Fixed:\r\n label1.isActive = false;\r\n break;\r\n }\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n /* Draw labels */\r\n params.graphics.activate(\"placeholder\", Layers.Label);\r\n var attr = {\r\n \"fontSize\": options.labelFontSize,\r\n \"fontFamily\": options.labelFontFamily,\r\n \"fontStyle\": options.labelFontStyle,\r\n \"fontWeight\": options.labelFontWeight,\r\n \"fontColor\": options.labelColor\r\n };\r\n\r\n for (var index = 0, len = labels.length; index < len; index += 1) {\r\n var label = labels[index];\r\n if (label.isActive) {\r\n switch (label.labelType) {\r\n case LabelType.Regular:\r\n case LabelType.Fixed:\r\n params.graphics.text(label.x, label.y, label.width, label.height, label.text,\r\n label.labelOrientation,\r\n label.horizontalAlignmentType,\r\n label.verticalAlignmentType,\r\n attr);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function createLabel(x, y, width, height, labelOptions, treeItemPosition, options) {\r\n var result = null,\r\n labelWidth,\r\n labelHeight,\r\n labelSize,\r\n labelPlacement,\r\n weight;\r\n\r\n\r\n if (!isNullOrEmpty(labelOptions.label)) {\r\n var labelType = getLabelType(treeItemPosition.actualVisibility, labelOptions.showLabel, options.showLabels);\r\n\r\n switch (labelType) {\r\n case LabelType.Regular:\r\n weight = treeItemPosition.actualSize.width + treeItemPosition.actualSize.height;\r\n break;\r\n case LabelType.Fixed:\r\n weight = 10000;\r\n break;\r\n case LabelType.None:\r\n weight = 0;\r\n break;\r\n }\r\n\r\n if (labelType != LabelType.None) {\r\n labelSize = (labelOptions.labelSize != null) ? labelOptions.labelSize : options.labelSize;\r\n\r\n var labelOrientation = (labelOptions.labelOrientation != TextOrientationType.Auto) ? labelOptions.labelOrientation :\r\n (options.labelOrientation != TextOrientationType.Auto) ? options.labelOrientation :\r\n TextOrientationType.Horizontal;\r\n\r\n labelPlacement = (labelOptions.labelPlacement != PlacementType.Auto) ? labelOptions.labelPlacement :\r\n (options.labelPlacement != PlacementType.Auto) ? options.labelPlacement :\r\n PlacementType.Top;\r\n\r\n switch (labelOrientation) {\r\n case TextOrientationType.Horizontal:\r\n labelWidth = labelSize.width;\r\n labelHeight = labelSize.height;\r\n break;\r\n case TextOrientationType.RotateLeft:\r\n case TextOrientationType.RotateRight:\r\n labelHeight = labelSize.width;\r\n labelWidth = labelSize.height;\r\n break;\r\n }\r\n\r\n var position = getLabelPosition(labelPlacement, labelOrientation, x, y, width, height, labelWidth, labelHeight, options.labelOffset);\r\n\r\n result = new Label(position.position);\r\n result.labelType = labelType;\r\n result.weight = weight;\r\n result.text = labelOptions.label;\r\n\r\n\r\n result.labelOrientation = labelOrientation;\r\n result.horizontalAlignmentType = position.horizontalAlignmentType;\r\n result.verticalAlignmentType = position.verticalAlignmentType;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function getLabelType(actualVisibility, showLabel, showLabels) {\r\n var result = LabelType.None;\r\n switch (showLabel) {\r\n case Enabled.Auto:\r\n switch (showLabels) {\r\n case Enabled.Auto:\r\n switch (actualVisibility) {\r\n case Visibility.Line:\r\n case Visibility.Dot:\r\n result = LabelType.Regular;\r\n break;\r\n default:\r\n break;\r\n }\r\n break;\r\n case Enabled.False:\r\n break;\r\n case Enabled.True:\r\n result = LabelType.Fixed;\r\n break;\r\n }\r\n break;\r\n case Enabled.False:\r\n break;\r\n case Enabled.True:\r\n result = LabelType.Fixed;\r\n break;\r\n }\r\n return result;\r\n }\r\n\r\n function getLabelPosition(labelPlacement, labelOrientation, x, y, width, height, labelWidth, labelHeight, labelOffset) {\r\n var position,\r\n horizontalAlignmentType,\r\n verticalAlignmentType;\r\n\r\n switch (labelPlacement) {\r\n case PlacementType.Auto:\r\n case PlacementType.Top:\r\n position = new Rect(x + width / 2.0 - labelWidth / 2.0, y - labelOffset - labelHeight, labelWidth, labelHeight);\r\n switch (labelOrientation) {\r\n case TextOrientationType.Horizontal:\r\n horizontalAlignmentType = HorizontalAlignmentType.Center;\r\n verticalAlignmentType = VerticalAlignmentType.Bottom;\r\n break;\r\n case TextOrientationType.RotateLeft:\r\n horizontalAlignmentType = HorizontalAlignmentType.Left;\r\n verticalAlignmentType = VerticalAlignmentType.Middle;\r\n break;\r\n case TextOrientationType.RotateRight:\r\n horizontalAlignmentType = HorizontalAlignmentType.Right;\r\n verticalAlignmentType = VerticalAlignmentType.Middle;\r\n break;\r\n }\r\n break;\r\n case PlacementType.TopRight:\r\n case PlacementType.RightTop:\r\n position = new Rect(x + width + labelOffset, y - labelOffset - labelHeight, labelWidth, labelHeight);\r\n switch (labelOrientation) {\r\n case TextOrientationType.Horizontal:\r\n horizontalAlignmentType = HorizontalAlignmentType.Left;\r\n verticalAlignmentType = VerticalAlignmentType.Bottom;\r\n break;\r\n case TextOrientationType.RotateLeft:\r\n horizontalAlignmentType = HorizontalAlignmentType.Left;\r\n verticalAlignmentType = VerticalAlignmentType.Top;\r\n break;\r\n case TextOrientationType.RotateRight:\r\n horizontalAlignmentType = HorizontalAlignmentType.Right;\r\n verticalAlignmentType = VerticalAlignmentType.Bottom;\r\n break;\r\n }\r\n break;\r\n case PlacementType.Right:\r\n position = new Rect(x + width + labelOffset, y + height / 2.0 - labelHeight / 2.0, labelWidth, labelHeight);\r\n switch (labelOrientation) {\r\n case TextOrientationType.Horizontal:\r\n horizontalAlignmentType = HorizontalAlignmentType.Left;\r\n verticalAlignmentType = VerticalAlignmentType.Middle;\r\n break;\r\n case TextOrientationType.RotateLeft:\r\n horizontalAlignmentType = HorizontalAlignmentType.Center;\r\n verticalAlignmentType = VerticalAlignmentType.Top;\r\n break;\r\n case TextOrientationType.RotateRight:\r\n horizontalAlignmentType = HorizontalAlignmentType.Center;\r\n verticalAlignmentType = VerticalAlignmentType.Bottom;\r\n break;\r\n }\r\n break;\r\n case PlacementType.BottomRight:\r\n case PlacementType.RightBottom:\r\n position = new Rect(x + width + labelOffset, y + height + labelOffset, labelWidth, labelHeight);\r\n switch (labelOrientation) {\r\n case TextOrientationType.Horizontal:\r\n horizontalAlignmentType = HorizontalAlignmentType.Left;\r\n verticalAlignmentType = VerticalAlignmentType.Top;\r\n break;\r\n case TextOrientationType.RotateLeft:\r\n horizontalAlignmentType = HorizontalAlignmentType.Right;\r\n verticalAlignmentType = VerticalAlignmentType.Top;\r\n break;\r\n case TextOrientationType.RotateRight:\r\n horizontalAlignmentType = HorizontalAlignmentType.Left;\r\n verticalAlignmentType = VerticalAlignmentType.Bottom;\r\n break;\r\n }\r\n break;\r\n case PlacementType.Bottom:\r\n position = new Rect(x + width / 2.0 - labelWidth / 2.0, y + height + labelOffset, labelWidth, labelHeight);\r\n switch (labelOrientation) {\r\n case TextOrientationType.Horizontal:\r\n horizontalAlignmentType = HorizontalAlignmentType.Center;\r\n verticalAlignmentType = VerticalAlignmentType.Top;\r\n break;\r\n case TextOrientationType.RotateLeft:\r\n horizontalAlignmentType = HorizontalAlignmentType.Right;\r\n verticalAlignmentType = VerticalAlignmentType.Middle;\r\n break;\r\n case TextOrientationType.RotateRight:\r\n horizontalAlignmentType = HorizontalAlignmentType.Left;\r\n verticalAlignmentType = VerticalAlignmentType.Middle;\r\n break;\r\n }\r\n break;\r\n case PlacementType.BottomLeft:\r\n case PlacementType.LeftBottom:\r\n position = new Rect(x - labelWidth - labelOffset, y + height + labelOffset, labelWidth, labelHeight);\r\n switch (labelOrientation) {\r\n case TextOrientationType.Horizontal:\r\n horizontalAlignmentType = HorizontalAlignmentType.Right;\r\n verticalAlignmentType = VerticalAlignmentType.Top;\r\n break;\r\n case TextOrientationType.RotateLeft:\r\n horizontalAlignmentType = HorizontalAlignmentType.Right;\r\n verticalAlignmentType = VerticalAlignmentType.Bottom;\r\n break;\r\n case TextOrientationType.RotateRight:\r\n horizontalAlignmentType = HorizontalAlignmentType.Left;\r\n verticalAlignmentType = VerticalAlignmentType.Top;\r\n break;\r\n }\r\n break;\r\n case PlacementType.Left:\r\n position = new Rect(x - labelWidth - labelOffset, y + height / 2.0 - labelHeight / 2.0, labelWidth, labelHeight);\r\n switch (labelOrientation) {\r\n case TextOrientationType.Horizontal:\r\n horizontalAlignmentType = HorizontalAlignmentType.Right;\r\n verticalAlignmentType = VerticalAlignmentType.Middle;\r\n break;\r\n case TextOrientationType.RotateLeft:\r\n horizontalAlignmentType = HorizontalAlignmentType.Center;\r\n verticalAlignmentType = VerticalAlignmentType.Bottom;\r\n break;\r\n case TextOrientationType.RotateRight:\r\n horizontalAlignmentType = HorizontalAlignmentType.Center;\r\n verticalAlignmentType = VerticalAlignmentType.Top;\r\n break;\r\n }\r\n break;\r\n case PlacementType.TopLeft:\r\n case PlacementType.LeftTop:\r\n position = new Rect(x - labelWidth - labelOffset, y - labelOffset - labelHeight, labelWidth, labelHeight);\r\n switch (labelOrientation) {\r\n case TextOrientationType.Horizontal:\r\n horizontalAlignmentType = HorizontalAlignmentType.Right;\r\n verticalAlignmentType = VerticalAlignmentType.Bottom;\r\n break;\r\n case TextOrientationType.RotateLeft:\r\n horizontalAlignmentType = HorizontalAlignmentType.Left;\r\n verticalAlignmentType = VerticalAlignmentType.Bottom;\r\n break;\r\n case TextOrientationType.RotateRight:\r\n horizontalAlignmentType = HorizontalAlignmentType.Right;\r\n verticalAlignmentType = VerticalAlignmentType.Top;\r\n break;\r\n }\r\n break;\r\n }\r\n\r\n return {\r\n position: position,\r\n horizontalAlignmentType: horizontalAlignmentType,\r\n verticalAlignmentType: verticalAlignmentType\r\n };\r\n }\r\n\r\n return {\r\n process: process\r\n };\r\n};","import Thickness from '../../graphics/structs/Thickness';\r\nimport { Layers, Colors, ShapeType } from '../../enums';\r\nimport PolylinesBuffer from '../../graphics/structs/PolylinesBuffer';\r\nimport DotSegment from '../../graphics/structs/DotSegment';\r\nimport PaletteItem from '../../graphics/structs/PaletteItem';\r\nimport Marker from '../../graphics/shapes/Marker';\r\n\r\nexport default function DrawFrameItemsTask(getGraphics, applyLayoutChangesTask, projectItemsToFrameTask, itemTemplateParamsTask, minimizedItemsOptionTask) {\r\n\r\n var _graphics;\r\n\r\n function process() {\r\n var frameThickness = new Thickness(applyLayoutChangesTask.getFrameThickness());\r\n\r\n _graphics = getGraphics();\r\n _graphics.reset(\"frameplaceholder\", Layers.Marker);\r\n\r\n if(!frameThickness.isEmpty()) {\r\n drawFrameItems();\r\n }\r\n return false;\r\n }\r\n\r\n function drawFrameItems() {\r\n var markers = new PolylinesBuffer(),\r\n positions = projectItemsToFrameTask.getPositions(),\r\n options = minimizedItemsOptionTask.getOptions(),\r\n marker = new Marker(),\r\n polyline;\r\n\r\n for (var treeItemId in positions) {\r\n if(positions.hasOwnProperty(treeItemId)) {\r\n var actualPosition = positions[treeItemId],\r\n templateParams = itemTemplateParamsTask.getTemplateParams(treeItemId),\r\n templateConfig = templateParams.template.templateConfig,\r\n minimizedItemsOptions = minimizedItemsOptionTask.getItemOptions(treeItemId),\r\n itemTitleColor = null,\r\n itemFillColor = null,\r\n minimizedItemShapeType = null,\r\n minimizedItemCornerRadius = 0;\r\n\r\n /* use individual item options first */\r\n if (minimizedItemsOptions != null) {\r\n itemTitleColor = minimizedItemsOptions.itemTitleColor;\r\n itemFillColor = minimizedItemsOptions.itemTitleColor;\r\n minimizedItemShapeType = minimizedItemsOptions.minimizedItemShapeType;\r\n }\r\n\r\n /* use template config & control options next */\r\n itemTitleColor = itemTitleColor || templateConfig.minimizedItemBorderColor || Colors.Navy;\r\n itemFillColor = itemFillColor || templateConfig.minimizedItemFillColor || Colors.Navy;\r\n if (minimizedItemShapeType == null) {\r\n minimizedItemShapeType = (templateConfig.minimizedItemShapeType !== null ? templateConfig.minimizedItemShapeType : options.minimizedItemShapeType);\r\n }\r\n minimizedItemCornerRadius = templateConfig.minimizedItemCornerRadius === null ? templateConfig.minimizedItemSize.width : templateConfig.minimizedItemCornerRadius;\r\n\r\n if (minimizedItemShapeType == null || minimizedItemShapeType == ShapeType.None) {\r\n polyline = markers.getPolyline(new PaletteItem({\r\n 'lineColor': itemTitleColor,\r\n 'lineWidth': templateConfig.minimizedItemLineWidth,\r\n 'lineType': templateConfig.minimizedItemLineType,\r\n 'fillColor': itemFillColor,\r\n 'opacity': templateConfig.minimizedItemOpacity\r\n }));\r\n polyline.addSegment(new DotSegment(actualPosition.x, actualPosition.y, actualPosition.width, actualPosition.height, minimizedItemCornerRadius));\r\n } else {\r\n marker.draw(markers, minimizedItemShapeType, actualPosition,\r\n new PaletteItem({\r\n 'lineColor': itemTitleColor,\r\n 'lineWidth': templateConfig.minimizedItemLineWidth,\r\n 'lineType': templateConfig.minimizedItemLineType,\r\n 'fillColor': itemFillColor,\r\n 'opacity': templateConfig.minimizedItemOpacity\r\n })\r\n );\r\n }\r\n }\r\n }\r\n _graphics.activate(\"frameplaceholder\", Layers.Marker);\r\n _graphics.polylinesBuffer(markers);\r\n }\r\n\r\n return {\r\n process: process\r\n };\r\n};","import Rect from '../../graphics/structs/Rect';\r\nimport RenderEventArgs from '../../events/RenderEventArgs';\r\nimport { Layers } from '../../enums';\r\n\r\nexport default function DrawFrameHighlightTask(getGraphics, projectItemsToFrameTask,\r\n combinedContextsTask,\r\n itemTemplateParamsTask,\r\n highlightItemTask, cursorItemTask) {\r\n var _graphics;\r\n\r\n function process() {\r\n var treeItemId = highlightItemTask.getHighlightTreeItem();\r\n\r\n _graphics = getGraphics();\r\n _graphics.reset(\"frameplaceholder\", Layers.Highlight);\r\n\r\n if (treeItemId != null) {\r\n drawHighlight(treeItemId);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function drawHighlight(treeItemId) {\r\n var uiHash,\r\n positions = projectItemsToFrameTask.getPositions(),\r\n position = positions[treeItemId];\r\n if(position != null) {\r\n var templateParams = itemTemplateParamsTask.getTemplateParams(treeItemId),\r\n template = templateParams.template,\r\n templateConfig = template.templateConfig,\r\n highlightPadding = templateConfig.highlightPadding;\r\n\r\n _graphics.activate(\"frameplaceholder\", Layers.Highlight)\r\n\r\n uiHash = new RenderEventArgs();\r\n uiHash.context = combinedContextsTask.getConfig(treeItemId);\r\n uiHash.isCursor = (cursorItemTask.getCursorTreeItem() == treeItemId);\r\n uiHash.isSelected = true;\r\n uiHash.templateName = templateConfig.name;\r\n\r\n var contentPosition = new Rect(0, 0, Math.round(position.width), Math.round(position.height));\r\n contentPosition.offset(highlightPadding.left, highlightPadding.top, highlightPadding.right, highlightPadding.bottom);\r\n\r\n _graphics.template(\r\n Math.round(position.x)\r\n , Math.round(position.y)\r\n , Math.round(position.width)\r\n , Math.round(position.height)\r\n , Math.round(contentPosition.x)\r\n , Math.round(contentPosition.y)\r\n , Math.round(contentPosition.width)\r\n , Math.round(contentPosition.height)\r\n , template.dotHighlightTemplate.template()\r\n , template.dotHighlightTemplate.getHashCode()\r\n , template.dotHighlightTemplate.render\r\n , uiHash\r\n , { \"borderWidth\": templateConfig.highlightBorderWidth }\r\n );\r\n }\r\n }\r\n\r\n return {\r\n process: process\r\n };\r\n};","import { Layers } from '../../enums';\r\nimport Rect from '../../graphics/structs/Rect';\r\nimport Thickness from '../../graphics/structs/Thickness';\r\nimport Interval from '../../graphics/structs/Interval';\r\nimport RenderEventArgs from '../../events/RenderEventArgs';\r\n\r\nexport default function DrawLevelAnnotationTitlesTask(getGraphics, verticalOffsetTask, createTransformTask, applyLayoutChangesTask, \r\n levelAnnotationOptionTask, mergeLevelIntervalsTask, levelAnnotationTemplateTask, levelTitlePlacementOptionTask) {\r\n var _graphics,\r\n _positions,\r\n _transform,\r\n _template;\r\n\r\n function process() {\r\n var annotations = levelAnnotationOptionTask.getAnnotations();\r\n\r\n _graphics = getGraphics();\r\n _graphics.reset(\"titlesplaceholder\", Layers.LevelAnnotation);\r\n\r\n if (annotations.length > 0) {\r\n _positions = mergeLevelIntervalsTask.getPositions();\r\n _transform = createTransformTask.getTransform();\r\n _template = levelAnnotationTemplateTask.getTitleTemplate();\r\n\r\n drawAnnotations(annotations, _positions);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function drawAnnotations(annotations, positions) {\r\n var verticalOffset = new Interval(verticalOffsetTask.getVerticalOffset()),\r\n { levelTitlePanelSize } = levelTitlePlacementOptionTask.getOptions();\r\n\r\n _graphics.activate(\"titlesplaceholder\", Layers.LevelAnnotation);\r\n\r\n var transformedVerticalOffset;\r\n _transform.transformRect(0, verticalOffset.from, 0, verticalOffset.width(), true,\r\n this, function (x, y, width, height) {\r\n transformedVerticalOffset = new Rect(x, y, width, height);\r\n });\r\n\r\n for (var index = 0, len = annotations.length; index < len; index += 1) {\r\n var annotationConfig = annotations[index];\r\n var intervals = positions[index];\r\n if (intervals != null) {\r\n for (var index3 = 0, len3 = intervals.length; index3 < len3; index3 += 1) {\r\n var interval = intervals[index3];\r\n\r\n var position = new Rect(0, interval.from, levelTitlePanelSize, interval.width());\r\n var verticalInterval = position.verticalInterval();\r\n\r\n if(verticalInterval.overlaps(verticalOffset)) {\r\n var offset = new Thickness(0, annotationConfig.offset.top, 0, annotationConfig.offset.bottom);\r\n position.offset(offset);\r\n\r\n var uiHash = new RenderEventArgs();\r\n uiHash.context = annotationConfig;\r\n \r\n _transform.transformRect(position.x, position.y, position.width, position.height, true,\r\n this, function (x, y, width, height) {\r\n _graphics.template(\r\n x - transformedVerticalOffset.x\r\n , y - transformedVerticalOffset.y\r\n , width\r\n , height\r\n , 0\r\n , 0\r\n , width\r\n , height\r\n , _template.template()\r\n , _template.getHashCode()\r\n , _template.render\r\n , uiHash\r\n , null\r\n );\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return {\r\n process: process\r\n };\r\n};","import { Layers } from '../../enums';\r\nimport Rect from '../../graphics/structs/Rect';\r\nimport Interval from '../../graphics/structs/Interval';\r\nimport RenderEventArgs from '../../events/RenderEventArgs';\r\nimport { mergeObjects } from '../../common';\r\n\r\nexport default function DrawLevelAnnotationBackgroundTask(getGraphics, verticalOffsetTask, createTransformTask, applyLayoutChangesTask, \r\n levelAnnotationOptionTask, mergeLevelIntervalsTask, levelAnnotationTemplateTask) {\r\n var _graphics,\r\n _positions,\r\n _transform,\r\n _backgroundTemplate;\r\n\r\n function process() {\r\n var annotations = levelAnnotationOptionTask.getAnnotations();\r\n\r\n _graphics = getGraphics();\r\n _graphics.reset(\"placeholder\", Layers.LevelAnnotation);\r\n\r\n if (annotations.length > 0) {\r\n _positions = mergeLevelIntervalsTask.getPositions();\r\n _transform = createTransformTask.getTransform();\r\n _backgroundTemplate = levelAnnotationTemplateTask.getBackgroundTemplate();\r\n\r\n drawAnnotations(annotations, _positions);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function drawAnnotations(annotations, positions) {\r\n var verticalOffset = new Interval(verticalOffsetTask.getVerticalOffset()),\r\n panel = _graphics.activate(\"placeholder\", Layers.LevelAnnotation),\r\n panelRect;\r\n\r\n _transform.transformRect(0, 0, panel.size.width, panel.size.height, false,\r\n this, function (x, y, width, height) {\r\n panelRect = new Rect(x, y, width, height);\r\n });\r\n\r\n \r\n for (var index = 0, len = annotations.length; index < len; index += 1) {\r\n var annotationConfig = annotations[index];\r\n var lineWidth = _transform.transformThickness(annotationConfig.lineWidth, true);\r\n var intervals = positions[index];\r\n if (intervals != null) {\r\n for (var index3 = 0, len3 = intervals.length; index3 < len3; index3 += 1) {\r\n var interval = intervals[index3];\r\n\r\n var position = new Rect(0, interval.from, panelRect.width, interval.width());\r\n position.offset(annotationConfig.offset);\r\n\r\n var verticalInterval = position.verticalInterval();\r\n if(verticalInterval.overlaps(verticalOffset)) {\r\n var uiHash = new RenderEventArgs();\r\n uiHash.context = annotationConfig;\r\n mergeObjects(uiHash.context, { lineWidth });\r\n \r\n _transform.transformRect(position.x, position.y, position.width, position.height, true,\r\n this, function (x, y, width, height) {\r\n _graphics.template(\r\n x\r\n , y\r\n , width\r\n , height\r\n , 0\r\n , 0\r\n , width\r\n , height\r\n , _backgroundTemplate.template()\r\n , _backgroundTemplate.getHashCode()\r\n , _backgroundTemplate.render\r\n , uiHash\r\n , null\r\n );\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return {\r\n process: process\r\n };\r\n};","import TaskManager from './managers/TaskManager';\r\nimport { Colors, ZOrderType } from './enums';\r\n\r\nimport OrgConfig from './configs/OrgConfig';\r\nimport OrgItemConfig from './configs/OrgItemConfig';\r\nimport TemplateConfig from './configs/TemplateConfig';\r\nimport BackgroundAnnotationConfig from './configs/BackgroundAnnotationConfig';\r\nimport ConnectorAnnotationConfig from './configs/ConnectorAnnotationConfig';\r\nimport HighlightPathAnnotationConfig from './configs/HighlightPathAnnotationConfig';\r\nimport ShapeAnnotationConfig from './configs/ShapeAnnotationConfig';\r\nimport LevelAnnotationConfig from './configs/LevelAnnotationConfig';\r\n\r\nimport OptionsTask from './tasks/options/OptionsTask';\r\nimport CalloutOptionTask from './tasks/options/CalloutOptionTask';\r\nimport ConnectorsOptionTask from './tasks/options/ConnectorsOptionTask';\r\nimport OrgItemsOptionTask from './tasks/options/OrgItemsOptionTask';\r\nimport ItemsContentOptionTask from './tasks/options/ItemsContentOptionTask';\r\nimport ItemsSizesOptionTask from './tasks/options/ItemsSizesOptionTask';\r\nimport MinimumVisibleLevelsOptionTask from './tasks/options/MinimumVisibleLevelsOptionTask';\r\n\r\n\r\nimport LabelsOptionTask from './tasks/options/LabelsOptionTask';\r\nimport TemplatesOptionTask from './tasks/options/TemplatesOptionTask';\r\nimport OrientationOptionTask from './tasks/options/OrientationOptionTask';\r\nimport OrgVisualTreeOptionTask from './tasks/options/OrgVisualTreeOptionTask';\r\nimport MinimizedItemsOptionTask from './tasks/options/MinimizedItemsOptionTask';\r\nimport CursorItemOptionTask from './tasks/options/selection/CursorItemOptionTask';\r\nimport HighlightItemOptionTask from './tasks/options/selection/HighlightItemOptionTask';\r\nimport SelectedItemsOptionTask from './tasks/options/selection/SelectedItemsOptionTask';\r\nimport CursorSelectionPathModeOptionTask from './tasks/options/selection/CursorSelectionPathModeOptionTask';\r\n\r\nimport SplitAnnotationsOptionTask from './tasks/options/annotations/SplitAnnotationsOptionTask';\r\nimport ShapeAnnotationOptionTask from './tasks/options/annotations/ShapeAnnotationOptionTask';\r\nimport HighlightPathAnnotationOptionTask from './tasks/options/annotations/HighlightPathAnnotationOptionTask';\r\nimport ConnectorAnnotationOptionTask from './tasks/options/annotations/ConnectorAnnotationOptionTask';\r\nimport BackgroundAnnotationOptionTask from './tasks/options/annotations/BackgroundAnnotationOptionTask';\r\nimport LevelAnnotationOptionTask from './tasks/options/annotations/LevelAnnotationOptionTask';\r\n\r\nimport ScaleOptionTask from './tasks/options/ScaleOptionTask';\r\nimport FrameOptionTask from './tasks/options/FrameOptionTask';\r\nimport LevelTitlePlacementOptionTask from './tasks/options/LevelTitlePlacementOptionTask';\r\nimport LevelTitleTemplateOptionTask from './tasks/options/LevelTitleTemplateOptionTask';\r\n\r\nimport CombinedContextsTask from './tasks/transformations/CombinedContextsTask';\r\nimport OrgTreeTask from './tasks/transformations/OrgTreeTask';\r\n\r\nimport ReadTemplatesTask from './tasks/templates/ReadTemplatesTask';\r\nimport ActiveItemsTask from './tasks/templates/ActiveItemsTask';\r\nimport ItemTemplateParamsTask from './tasks/templates/ItemTemplateParamsTask';\r\nimport GroupTitleTemplateTask from './tasks/templates/GroupTitleTemplateTask';\r\nimport CheckBoxTemplateTask from './tasks/templates/CheckBoxTemplateTask';\r\nimport ButtonsTemplateTask from './tasks/templates/ButtonsTemplateTask';\r\nimport AnnotationLabelTemplateTask from './tasks/templates/AnnotationLabelTemplateTask';\r\nimport LevelAnnotationTemplateTask from './tasks/templates/LevelAnnotationTemplateTask';\r\n\r\nimport VisualTreeTask from './tasks/transformations/VisualTreeTask';\r\nimport VisualTreeLevelsTask from './tasks/transformations/VisualTreeLevelsTask';\r\nimport ExtractNestedLayoutsTask from './tasks/transformations/OrgExtractNestedLayoutsTask';\r\nimport CreateLayoutsTreeTask from './tasks/transformations/OrgCreateLayoutsTreeTask';\r\nimport ConnectionsGraphTask from './tasks/transformations/ConnectionsGraphTask';\r\nimport HighlightItemTask from './tasks/transformations/selection/HighlightItemTask';\r\nimport CursorItemTask from './tasks/transformations/selection/CursorItemTask';\r\nimport OrgCursorNeighboursTask from './tasks/transformations/selection/OrgCursorNeighboursTask';\r\nimport SelectedItemsTask from './tasks/transformations/selection/SelectedItemsTask';\r\nimport OrgSelectionPathItemsTask from './tasks/transformations/selection/OrgSelectionPathItemsTask';\r\n\r\nimport NormalVisibilityItemsByAnnotationTask from './tasks/transformations/selection/NormalVisibilityItemsByAnnotationTask';\r\nimport NormalVisibilityItemsByConnectorAnnotationTask from './tasks/transformations/selection/NormalVisibilityItemsByConnectorAnnotationTask';\r\nimport NormalVisibilityItemsByMinimumVisibleLevelsTask from './tasks/transformations/selection/OrgNormalVisibilityItemsByMinimumVisibleLevelsTask';\r\nimport CombinedNormalVisibilityItemsTask from './tasks/transformations/selection/CombinedNormalVisibilityItemsTask';\r\n\r\nimport FrameSizeTask from './tasks/layout/FrameSizeTask';\r\nimport LevelTitleSizeTask from './tasks/layout/LevelTitleSizeTask';\r\nimport LayoutOptionsTask from './tasks/options/LayoutOptionsTask';\r\nimport CurrentControlSizeTask from './tasks/layout/CurrentControlSizeTask';\r\nimport CurrentScrollPositionTask from './tasks/layout/CurrentScrollPositionTask';\r\nimport ItemsPositionsTask from './tasks/transformations/ItemsPositionsTask';\r\nimport AlignDiagramTask from './tasks/layout/AlignDiagramTask';\r\nimport CreateTransformTask from './tasks/layout/CreateTransformTask';\r\nimport PaletteManagerTask from './tasks/transformations/PaletteManagerTask';\r\n\r\nimport ApplyLayoutChangesTask from './tasks/layout/ApplyLayoutChangesTask';\r\nimport CenterOnCursorTask from './tasks/layout/CenterOnCursorTask';\r\nimport ProjectItemsToFrameTask from './tasks/layout/ProjectItemsToFrameTask';\r\n\r\nimport ViewPortPlacementTask from './tasks/layout/ViewPortPlacementTask';\r\nimport VerticalOffsetTask from './tasks/layout/VerticalOffsetTask';\r\n\r\nimport OrgLogicalLevelsPlacementTask from './tasks/layout/OrgLogicalLevelsPlacementTask';\r\nimport MergeLevelIntervalsTask from './tasks/layout/MergeLevelIntervalsTask';\r\n\r\nimport DrawBackgroundAnnotationTask from './tasks/renders/DrawBackgroundAnnotationTask';\r\nimport DrawHighlightPathAnnotationTask from './tasks/renders/DrawHighlightPathAnnotationTask';\r\nimport DrawConnectorAnnotationTask from './tasks/renders/DrawConnectorAnnotationTask';\r\nimport DrawShapeAnnotationTask from './tasks/renders/DrawShapeAnnotationTask';\r\nimport DrawCursorTask from './tasks/renders/DrawCursorTask';\r\nimport DrawHighlightTask from './tasks/renders/DrawHighlightTask';\r\nimport DrawHighlightAnnotationTask from './tasks/renders/DrawHighlightAnnotationTask';\r\nimport DrawTreeItemsTask from './tasks/renders/DrawTreeItemsTask';\r\nimport DrawMinimizedItemsTask from './tasks/renders/DrawMinimizedItemsTask';\r\nimport DrawConnectorsTask from './tasks/renders/DrawConnectorsTask';\r\nimport DrawItemLabelsTask from './tasks/renders/DrawItemLabelsTask';\r\nimport DrawFrameItemsTask from './tasks/renders/DrawFrameItemsTask';\r\nimport DrawFrameHighlightTask from './tasks/renders/DrawFrameHighlightTask';\r\nimport DrawLevelAnnotationTitlesTask from './tasks/renders/DrawLevelAnnotationTitlesTask';\r\nimport DrawLevelAnnotationBackgroundTask from './tasks/renders/DrawLevelAnnotationBackgroundTask';\r\n\r\nexport default function TaskManagerFactory(getOptions, getGraphics, getLayout, setLayout, templates) {\r\n var tasks = new TaskManager();\r\n\r\n // Dependencies\r\n tasks.addDependency('options', getOptions);\r\n tasks.addDependency('graphics', getGraphics);\r\n tasks.addDependency('getLayout', getLayout);\r\n tasks.addDependency('setLayout', setLayout);\r\n tasks.addDependency('templates', templates);\r\n\r\n tasks.addDependency('defaultConfig', new OrgConfig());\r\n tasks.addDependency('defaultItemConfig', new OrgItemConfig());\r\n tasks.addDependency('defaultTemplateConfig', new TemplateConfig());\r\n \r\n tasks.addDependency('defaultBackgroundAnnotationConfig', new BackgroundAnnotationConfig());\r\n tasks.addDependency('defaultConnectorAnnotationConfig', new ConnectorAnnotationConfig());\r\n tasks.addDependency('defaultHighlightPathAnnotationConfig', new HighlightPathAnnotationConfig());\r\n tasks.addDependency('defaultShapeAnnotationConfig', new ShapeAnnotationConfig());\r\n tasks.addDependency('defaultLevelAnnotationConfig', new LevelAnnotationConfig());\r\n\r\n tasks.addDependency('showElbowDots', false);\r\n tasks.addDependency('null', null);\r\n tasks.addDependency('foreground', ZOrderType.Foreground);\r\n tasks.addDependency('background', ZOrderType.Background);\r\n\r\n // Options\r\n tasks.addTask('OptionsTask', ['options'], OptionsTask, Colors.Black);\r\n tasks.addTask('CalloutOptionTask', ['OptionsTask', 'defaultConfig', 'defaultItemConfig'], CalloutOptionTask, Colors.Navy);\r\n tasks.addTask('ConnectorsOptionTask', ['OptionsTask', 'defaultConfig'], ConnectorsOptionTask, Colors.Navy);\r\n tasks.addTask('ItemsOptionTask', ['OptionsTask', 'defaultItemConfig'], OrgItemsOptionTask, Colors.Navy);\r\n tasks.addTask('ItemsContentOptionTask', ['OptionsTask', 'defaultItemConfig'], ItemsContentOptionTask, Colors.Navy);\r\n tasks.addTask('ItemsSizesOptionTask', ['OptionsTask', 'defaultConfig', 'defaultItemConfig'], ItemsSizesOptionTask, Colors.Navy);\r\n tasks.addTask('MinimumVisibleLevelsOptionTask', ['OptionsTask', 'defaultConfig'], MinimumVisibleLevelsOptionTask, Colors.Navy); \r\n tasks.addTask('LabelsOptionTask', ['OptionsTask', 'defaultConfig', 'defaultItemConfig'], LabelsOptionTask, Colors.Navy);\r\n tasks.addTask('TemplatesOptionTask', ['OptionsTask', 'defaultConfig', 'defaultTemplateConfig'], TemplatesOptionTask, Colors.Navy);\r\n tasks.addTask('OrientationOptionTask', ['OptionsTask', 'defaultConfig'], OrientationOptionTask, Colors.Navy);\r\n tasks.addTask('VisualTreeOptionTask', ['OptionsTask', 'defaultConfig'], OrgVisualTreeOptionTask, Colors.Navy);\r\n tasks.addTask('MinimizedItemsOptionTask', ['OptionsTask'], MinimizedItemsOptionTask, Colors.Navy);\r\n\r\n tasks.addTask('CursorItemOptionTask', ['OptionsTask', 'defaultConfig'], CursorItemOptionTask, Colors.Navy);\r\n tasks.addTask('HighlightItemOptionTask', ['OptionsTask', 'defaultConfig'], HighlightItemOptionTask, Colors.Navy);\r\n tasks.addTask('SelectedItemsOptionTask', ['OptionsTask'], SelectedItemsOptionTask, Colors.Navy);\r\n tasks.addTask('CursorSelectionPathModeOptionTask', ['OptionsTask', 'defaultConfig'], CursorSelectionPathModeOptionTask, Colors.Navy);\r\n\r\n tasks.addTask('SplitAnnotationsOptionTask', ['OptionsTask'], SplitAnnotationsOptionTask, Colors.Cyan);\r\n\r\n tasks.addTask('ForegroundShapeAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultShapeAnnotationConfig', 'foreground'], ShapeAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('BackgroundShapeAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultShapeAnnotationConfig', 'background'], ShapeAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('ForegroundHighlightPathAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultHighlightPathAnnotationConfig', 'foreground'], HighlightPathAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('BackgroundHighlightPathAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultHighlightPathAnnotationConfig', 'background'], HighlightPathAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('ForegroundConnectorAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultConnectorAnnotationConfig', 'foreground'], ConnectorAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('BackgroundConnectorAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultConnectorAnnotationConfig', 'background'], ConnectorAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('BackgroundAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultBackgroundAnnotationConfig'], BackgroundAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('LevelAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultLevelAnnotationConfig'], LevelAnnotationOptionTask, Colors.Navy);\r\n\r\n tasks.addTask('ScaleOptionTask', ['OptionsTask', 'defaultConfig'], ScaleOptionTask, Colors.Navy);\r\n tasks.addTask('FrameOptionTask', ['OptionsTask', 'defaultConfig'], FrameOptionTask, Colors.Navy);\r\n tasks.addTask('LevelTitlePlacementOptionTask', ['OptionsTask', 'defaultConfig'], LevelTitlePlacementOptionTask, Colors.Navy);\r\n tasks.addTask('LevelTitleTemplateOptionTask', ['OptionsTask', 'defaultConfig'], LevelTitleTemplateOptionTask, Colors.Navy);\r\n\r\n // Transformations\r\n tasks.addTask('CombinedContextsTask', ['ItemsContentOptionTask'], CombinedContextsTask, Colors.Cyan);\r\n tasks.addTask('OrgTreeTask', ['ItemsOptionTask'], OrgTreeTask, Colors.Red);\r\n\r\n // Transformations / Templates\r\n tasks.addTask('ReadTemplatesTask', ['TemplatesOptionTask', 'templates'], ReadTemplatesTask, Colors.Cyan);\r\n tasks.addTask('ActiveItemsTask', ['ItemsSizesOptionTask', 'ReadTemplatesTask'], ActiveItemsTask, Colors.Cyan);\r\n tasks.addTask('ItemTemplateParamsTask', ['ItemsSizesOptionTask', 'CursorItemOptionTask', 'ReadTemplatesTask'], ItemTemplateParamsTask, Colors.Cyan);\r\n\r\n tasks.addTask('GroupTitleTemplateTask', ['TemplatesOptionTask', 'templates'], GroupTitleTemplateTask, Colors.Cyan);\r\n tasks.addTask('CheckBoxTemplateTask', ['ItemsSizesOptionTask', 'templates'], CheckBoxTemplateTask, Colors.Cyan);\r\n tasks.addTask('ButtonsTemplateTask', ['ItemsSizesOptionTask', 'templates'], ButtonsTemplateTask, Colors.Cyan);\r\n tasks.addTask('AnnotationLabelTemplateTask', ['ItemsOptionTask', 'templates'], AnnotationLabelTemplateTask, Colors.Cyan);\r\n tasks.addTask('LevelAnnotationTemplateTask', ['OrientationOptionTask', 'LevelTitleTemplateOptionTask', 'templates'], LevelAnnotationTemplateTask, Colors.Cyan);\r\n\r\n tasks.addTask('VisualTreeTask', ['OrgTreeTask', 'ActiveItemsTask', 'VisualTreeOptionTask'], VisualTreeTask, Colors.Red);\r\n tasks.addTask('VisualTreeLevelsTask', ['VisualTreeTask', 'ItemTemplateParamsTask'], VisualTreeLevelsTask, Colors.Red);\r\n tasks.addTask('ExtractNestedLayoutsTask', ['OptionsTask'], ExtractNestedLayoutsTask, Colors.Red);\r\n tasks.addTask('CreateLayoutsTreeTask', ['VisualTreeTask', 'VisualTreeLevelsTask', 'ExtractNestedLayoutsTask'], CreateLayoutsTreeTask, Colors.Red);\r\n \r\n\r\n tasks.addTask('ConnectionsGraphTask', ['graphics', 'CreateTransformTask', 'ConnectorsOptionTask', 'VisualTreeLevelsTask', 'ExtractNestedLayoutsTask', 'AlignDiagramTask'], ConnectionsGraphTask, Colors.Cyan);\r\n\r\n // Transformations/Selections\r\n tasks.addTask('HighlightItemTask', ['HighlightItemOptionTask', 'ActiveItemsTask'], HighlightItemTask, Colors.Cyan);\r\n\r\n tasks.addTask('CursorItemTask', ['CursorItemOptionTask', 'ActiveItemsTask'], CursorItemTask, Colors.Cyan);\r\n tasks.addTask('CursorNeighboursTask', ['CursorItemTask', 'VisualTreeTask'], OrgCursorNeighboursTask, Colors.Cyan);\r\n tasks.addTask('SelectedItemsTask', ['SelectedItemsOptionTask', 'ItemsOptionTask'], SelectedItemsTask, Colors.Cyan);\r\n tasks.addTask('SelectionPathItemsTask', ['VisualTreeTask', 'CursorItemTask', 'SelectedItemsTask', 'CursorSelectionPathModeOptionTask'], OrgSelectionPathItemsTask, Colors.Cyan);\r\n\r\n tasks.addTask('NormalVisibilityItemsByForegroundShapeAnnotationTask', ['ForegroundShapeAnnotationOptionTask'], NormalVisibilityItemsByAnnotationTask, Colors.Cyan);\r\n tasks.addTask('NormalVisibilityItemsByBackgroundShapeAnnotationTask', ['BackgroundShapeAnnotationOptionTask'], NormalVisibilityItemsByAnnotationTask, Colors.Cyan);\r\n tasks.addTask('NormalVisibilityItemsByBackgroundAnnotationTask', ['BackgroundAnnotationOptionTask'], NormalVisibilityItemsByAnnotationTask, Colors.Cyan);\r\n tasks.addTask('NormalVisibilityItemsByForegroundHighlightPathAnnotationTask', ['ForegroundHighlightPathAnnotationOptionTask'], NormalVisibilityItemsByAnnotationTask, Colors.Cyan);\r\n tasks.addTask('NormalVisibilityItemsByBackgroundHighlightPathAnnotationTask', ['BackgroundHighlightPathAnnotationOptionTask'], NormalVisibilityItemsByAnnotationTask, Colors.Cyan);\r\n tasks.addTask('NormalVisibilityItemsByForegroundConnectorAnnotationTask', ['ForegroundConnectorAnnotationOptionTask'], NormalVisibilityItemsByConnectorAnnotationTask, Colors.Cyan);\r\n tasks.addTask('NormalVisibilityItemsByBackgroundConnectorAnnotationTask', ['BackgroundConnectorAnnotationOptionTask'], NormalVisibilityItemsByConnectorAnnotationTask, Colors.Cyan);\r\n tasks.addTask('NormalVisibilityItemsByMinimumVisibleLevelsTask', ['MinimumVisibleLevelsOptionTask', 'OrgTreeTask'], NormalVisibilityItemsByMinimumVisibleLevelsTask, Colors.Cyan);\r\n \r\n tasks.addTask('CombinedNormalVisibilityItemsTask', [\r\n 'ItemsSizesOptionTask',\r\n 'CursorItemTask',\r\n 'CursorNeighboursTask',\r\n 'SelectedItemsTask',\r\n 'SelectionPathItemsTask',\r\n 'NormalVisibilityItemsByForegroundShapeAnnotationTask',\r\n 'NormalVisibilityItemsByBackgroundShapeAnnotationTask',\r\n 'NormalVisibilityItemsByBackgroundAnnotationTask',\r\n 'NormalVisibilityItemsByForegroundHighlightPathAnnotationTask',\r\n 'NormalVisibilityItemsByBackgroundHighlightPathAnnotationTask',\r\n 'NormalVisibilityItemsByForegroundConnectorAnnotationTask',\r\n 'NormalVisibilityItemsByBackgroundConnectorAnnotationTask',\r\n 'NormalVisibilityItemsByMinimumVisibleLevelsTask'], CombinedNormalVisibilityItemsTask, Colors.Cyan);\r\n\r\n // Layout\r\n tasks.addTask('FrameSizeTask', ['FrameOptionTask', 'ReadTemplatesTask', 'ScaleOptionTask'], FrameSizeTask, Colors.Navy);\r\n tasks.addTask('LevelTitleSizeTask', ['LevelTitlePlacementOptionTask', 'LevelAnnotationOptionTask', 'OrientationOptionTask', 'ScaleOptionTask'], LevelTitleSizeTask, Colors.Navy);\r\n tasks.addTask('LayoutOptionsTask', ['getLayout', 'OptionsTask'], LayoutOptionsTask, Colors.Black);\r\n tasks.addTask('CurrentControlSizeTask', ['LayoutOptionsTask', 'ItemsSizesOptionTask', 'FrameSizeTask', 'LevelTitleSizeTask'], CurrentControlSizeTask, Colors.Black);\r\n tasks.addTask('CurrentScrollPositionTask', ['LayoutOptionsTask'], CurrentScrollPositionTask, Colors.Black);\r\n\r\n tasks.addTask('ItemsPositionsTask', ['CurrentControlSizeTask', 'ScaleOptionTask', 'OrientationOptionTask', 'ItemsSizesOptionTask', 'ConnectorsOptionTask', 'VisualTreeOptionTask',\r\n 'CreateLayoutsTreeTask',\r\n 'ItemTemplateParamsTask',\r\n 'CursorItemTask', 'CombinedNormalVisibilityItemsTask'], ItemsPositionsTask, Colors.Red);\r\n\r\n tasks.addTask('AlignDiagramTask', ['OrientationOptionTask', 'ItemsSizesOptionTask', 'VisualTreeOptionTask', 'ScaleOptionTask', 'CurrentControlSizeTask', 'ActiveItemsTask', 'ItemsPositionsTask'], AlignDiagramTask, Colors.Red);\r\n tasks.addTask('CreateTransformTask', ['OrientationOptionTask', 'ScaleOptionTask', 'AlignDiagramTask'], CreateTransformTask, Colors.Cyan);\r\n\r\n // Managers\r\n tasks.addTask('PaletteManagerTask', ['ConnectorsOptionTask', 'null'], PaletteManagerTask, Colors.Cyan);\r\n\r\n // Apply Layout Changes\r\n tasks.addTask('ApplyLayoutChangesTask', ['graphics', 'setLayout', 'ItemsSizesOptionTask', 'CurrentControlSizeTask', 'ScaleOptionTask', 'AlignDiagramTask', 'FrameSizeTask', 'LevelTitleSizeTask'], ApplyLayoutChangesTask, Colors.Green);\r\n tasks.addTask('CenterOnCursorTask', ['LayoutOptionsTask', 'ApplyLayoutChangesTask', 'CurrentScrollPositionTask', 'CursorItemTask', 'AlignDiagramTask', 'CreateTransformTask', 'ScaleOptionTask'], CenterOnCursorTask, Colors.Cyan);\r\n tasks.addTask('ProjectItemsToFrameTask', ['CreateTransformTask', 'FrameSizeTask',\r\n 'ApplyLayoutChangesTask', 'ScaleOptionTask',\r\n 'AlignDiagramTask', 'CenterOnCursorTask',\r\n 'ItemTemplateParamsTask',\r\n 'SelectedItemsTask'], ProjectItemsToFrameTask, Colors.Green);\r\n\r\n tasks.addTask('ViewPortPlacementTask', ['ScaleOptionTask', 'CenterOnCursorTask', 'CreateTransformTask', 'ApplyLayoutChangesTask'], ViewPortPlacementTask, Colors.Green); \r\n tasks.addTask('VerticalOffsetTask', ['ViewPortPlacementTask'], VerticalOffsetTask, Colors.Green); \r\n\r\n tasks.addTask('LogicalLevelsPlacementTask', ['OrgTreeTask', 'VisualTreeTask', 'AlignDiagramTask'], OrgLogicalLevelsPlacementTask, Colors.Green);\r\n tasks.addTask('MergeLevelIntervalsTask', ['LevelAnnotationOptionTask', 'LogicalLevelsPlacementTask'], MergeLevelIntervalsTask, Colors.Green); \r\n\r\n // Renders\r\n tasks.addTask('DrawBackgroundAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'BackgroundAnnotationOptionTask', 'VisualTreeTask', 'AlignDiagramTask'], DrawBackgroundAnnotationTask, Colors.Green);\r\n\r\n tasks.addTask('DrawBackgroundHighlightPathAnnotationTask', ['graphics', 'ConnectorsOptionTask', 'ForegroundHighlightPathAnnotationOptionTask', 'ConnectionsGraphTask', 'foreground'], DrawHighlightPathAnnotationTask, Colors.Cyan);\r\n tasks.addTask('DrawForegroundHighlightPathAnnotationTask', ['graphics', 'ConnectorsOptionTask', 'BackgroundHighlightPathAnnotationOptionTask', 'ConnectionsGraphTask', 'background'], DrawHighlightPathAnnotationTask, Colors.Cyan);\r\n\r\n tasks.addTask('DrawForegroundConnectorAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'OrientationOptionTask', 'ForegroundConnectorAnnotationOptionTask', 'AlignDiagramTask', 'AnnotationLabelTemplateTask', 'foreground'], DrawConnectorAnnotationTask, Colors.Green);\r\n tasks.addTask('DrawBackgroundConnectorAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'OrientationOptionTask', 'BackgroundConnectorAnnotationOptionTask', 'AlignDiagramTask', 'AnnotationLabelTemplateTask', 'background'], DrawConnectorAnnotationTask, Colors.Green);\r\n tasks.addTask('DrawForegroundShapeAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'OrientationOptionTask', 'ForegroundShapeAnnotationOptionTask', 'AlignDiagramTask', 'AnnotationLabelTemplateTask', 'foreground'], DrawShapeAnnotationTask, Colors.Green);\r\n tasks.addTask('DrawBackgroundShapeAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'OrientationOptionTask', 'BackgroundShapeAnnotationOptionTask', 'AlignDiagramTask', 'AnnotationLabelTemplateTask', 'background'], DrawShapeAnnotationTask, Colors.Green);\r\n\r\n tasks.addTask('DrawCursorTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'CombinedContextsTask', 'AlignDiagramTask', 'ItemTemplateParamsTask', 'CursorItemTask', 'SelectedItemsTask'], DrawCursorTask, Colors.Green);\r\n tasks.addTask('DrawHighlightTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'CombinedContextsTask', 'AlignDiagramTask', 'ItemTemplateParamsTask', 'HighlightItemTask', 'CursorItemTask', 'SelectedItemsTask'], DrawHighlightTask, Colors.Green);\r\n tasks.addTask('DrawHighlightAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'ScaleOptionTask', 'CombinedContextsTask', 'CalloutOptionTask', 'ReadTemplatesTask', 'AlignDiagramTask', 'CenterOnCursorTask', 'HighlightItemTask', 'CursorItemTask', 'SelectedItemsTask', 'FrameSizeTask'], DrawHighlightAnnotationTask, Colors.Green);\r\n\r\n tasks.addTask('DrawTreeItemsTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'ScaleOptionTask',\r\n 'ItemsSizesOptionTask',\r\n 'CombinedContextsTask',\r\n 'AlignDiagramTask', 'CenterOnCursorTask',\r\n 'ItemTemplateParamsTask',\r\n 'CursorItemTask', 'SelectedItemsTask',\r\n 'GroupTitleTemplateTask', 'CheckBoxTemplateTask', 'ButtonsTemplateTask'\r\n ], DrawTreeItemsTask, Colors.Green);\r\n\r\n tasks.addTask('DrawMinimizedItemsTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'MinimizedItemsOptionTask', 'ItemTemplateParamsTask', 'AlignDiagramTask'], DrawMinimizedItemsTask, Colors.Green);\r\n tasks.addTask('DrawConnectorsTask', ['graphics', 'ConnectionsGraphTask', 'ConnectorsOptionTask', 'showElbowDots', 'PaletteManagerTask'], DrawConnectorsTask, Colors.Green);\r\n tasks.addTask('DrawItemLabelsTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'LabelsOptionTask', 'AlignDiagramTask'], DrawItemLabelsTask, Colors.Green);\r\n\r\n tasks.addTask('DrawFrameItemsTask', ['graphics', 'ApplyLayoutChangesTask', 'ProjectItemsToFrameTask', 'ItemTemplateParamsTask', 'MinimizedItemsOptionTask'], DrawFrameItemsTask, Colors.Green);\r\n tasks.addTask('DrawFrameHighlightTask', ['graphics', 'ProjectItemsToFrameTask', 'CombinedContextsTask', 'ItemTemplateParamsTask', 'HighlightItemTask', 'CursorItemTask'], DrawFrameHighlightTask, Colors.Green);\r\n\r\n tasks.addTask('DrawLevelAnnotationBackgroundTask', ['graphics', 'VerticalOffsetTask', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'LevelAnnotationOptionTask', 'MergeLevelIntervalsTask', 'LevelAnnotationTemplateTask'], DrawLevelAnnotationBackgroundTask, Colors.Green);\r\n tasks.addTask('DrawLevelAnnotationTitlesTask', ['graphics', 'VerticalOffsetTask', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'LevelAnnotationOptionTask', 'MergeLevelIntervalsTask', 'LevelAnnotationTemplateTask', 'LevelTitlePlacementOptionTask'], DrawLevelAnnotationTitlesTask, Colors.Green);\r\n return tasks;\r\n};\r\n","import OrgEventArgs from './events/OrgEventArgs';\r\nimport Rect from './graphics/structs/Rect';\r\nimport { getElementOffset } from './graphics/dom';\r\n\r\nexport default function EventArgsFactory(data, oldTreeItemId, newTreeItemId, name) {\r\n var result = new OrgEventArgs(),\r\n combinedContextsTask = data.tasks.getTask(\"CombinedContextsTask\"),\r\n alignDiagramTask = data.tasks.getTask(\"AlignDiagramTask\"),\r\n oldItemConfig = combinedContextsTask.getConfig(oldTreeItemId),\r\n newItemConfig = combinedContextsTask.getConfig(newTreeItemId),\r\n itemPosition,\r\n actualPosition,\r\n offset,\r\n panelOffset;\r\n\r\n if (oldItemConfig && oldItemConfig.id != null) {\r\n result.oldContext = oldItemConfig;\r\n }\r\n\r\n if (newItemConfig && newItemConfig.id != null) {\r\n result.context = newItemConfig;\r\n\r\n if (newItemConfig.parent !== null) {\r\n result.parentItem = combinedContextsTask.getConfig(newItemConfig.parent);\r\n }\r\n\r\n panelOffset = getElementOffset(data.layout.mousePanel);\r\n offset = getElementOffset(data.layout.element);\r\n itemPosition = alignDiagramTask.getItemPosition(newTreeItemId),\r\n result.position = new Rect(itemPosition.actualPosition)\r\n .translate(panelOffset.left, panelOffset.top)\r\n .translate(-offset.left, -offset.top);\r\n }\r\n\r\n if (name != null) {\r\n result.name = name;\r\n }\r\n\r\n return result;\r\n};\r\n","export default function Cache() {\r\n this.threshold = 20;\r\n\r\n this.m_visible = {};\r\n this.m_invisible = {};\r\n};\r\n\r\nCache.prototype.begin = function () {\r\n var placeholder,\r\n type,\r\n index,\r\n control;\r\n\r\n for (placeholder in this.m_visible) {\r\n if (this.m_visible.hasOwnProperty(placeholder)) {\r\n for (type in this.m_visible[placeholder]) {\r\n if (this.m_visible[placeholder].hasOwnProperty(type)) {\r\n for (index = this.m_visible[placeholder][type].length - 1; index >= 0; index -= 1) {\r\n control = this.m_visible[placeholder][type][index];\r\n control.style.visibility = \"hidden\";\r\n this.m_invisible[placeholder][type].push(control);\r\n }\r\n this.m_visible[placeholder][type].length = 0;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nCache.prototype.end = function () {\r\n var placeholder,\r\n type,\r\n control;\r\n for (placeholder in this.m_visible) {\r\n if (this.m_visible.hasOwnProperty(placeholder)) {\r\n for (type in this.m_visible[placeholder]) {\r\n if (this.m_visible[placeholder].hasOwnProperty(type)) {\r\n control = null;\r\n if (this.m_invisible[placeholder][type].length > this.threshold) {\r\n while ((control = this.m_invisible[placeholder][type].pop()) !== undefined) {\r\n control.parentNode.removeChild(control);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nCache.prototype.reset = function (placeholder, layer) {\r\n placeholder = placeholder + \"-\" + layer;\r\n var control = null,\r\n type,\r\n index;\r\n for (type in this.m_visible[placeholder]) {\r\n if (this.m_visible[placeholder].hasOwnProperty(type)) {\r\n for (index = this.m_visible[placeholder][type].length - 1; index >= 0; index -= 1) {\r\n control = this.m_visible[placeholder][type][index];\r\n this.m_invisible[placeholder][type].push(control);\r\n control.style.visibility = \"hidden\";\r\n }\r\n this.m_visible[placeholder][type].length = 0;\r\n }\r\n }\r\n};\r\n\r\nCache.prototype.clear = function () {\r\n var placeholder,\r\n type,\r\n control;\r\n for (placeholder in this.m_visible) {\r\n if (this.m_visible.hasOwnProperty(placeholder)) {\r\n for (type in this.m_visible[placeholder]) {\r\n if (this.m_visible[placeholder].hasOwnProperty(type)) {\r\n control = null;\r\n while ((control = this.m_visible[placeholder][type].pop()) !== undefined) {\r\n control.parentNode.removeChild(control);\r\n }\r\n while ((control = this.m_invisible[placeholder][type].pop()) !== undefined) {\r\n control.parentNode.removeChild(control);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nCache.prototype.get = function (placeholder, layer, type) {\r\n placeholder = placeholder + \"-\" + layer;\r\n var result = null;\r\n if (this.m_visible[placeholder] === undefined) {\r\n this.m_visible[placeholder] = {};\r\n this.m_invisible[placeholder] = {};\r\n }\r\n if (this.m_visible[placeholder][type] === undefined) {\r\n this.m_visible[placeholder][type] = [];\r\n this.m_invisible[placeholder][type] = [];\r\n }\r\n result = this.m_invisible[placeholder][type].pop() || null;\r\n if (result !== null) {\r\n this.m_visible[placeholder][type].push(result);\r\n result.style.visibility = \"inherit\";\r\n }\r\n return result;\r\n};\r\n\r\nCache.prototype.put = function (placeholder, layer, type, control) {\r\n placeholder = placeholder + \"-\" + layer;\r\n this.m_visible[placeholder][type].push(control);\r\n};","export default function Placeholder(name) {\r\n this.name = name;\r\n\r\n this.layers = {};\r\n this.activeLayer = null;\r\n\r\n this.size = null;\r\n this.rect = null;\r\n\r\n this.div = null;\r\n};","export default function Layer(name) {\r\n this.name = name;\r\n\r\n this.canvas = null;\r\n\r\n this.svgcanvas = null;\r\n};","import Cache from './Cache';\r\nimport { Layers } from '../enums';\r\nimport { loop, getHashCode, mergeObjects } from '../common';\r\nimport { TextOrientationType, VerticalAlignmentType, RenderingMode } from '../enums';\r\nimport JsonML from '../common/jsonml-html';\r\nimport Size from './structs/Size';\r\nimport Rect from './structs/Rect';\r\nimport Placeholder from './Placeholder';\r\nimport Layer from './Layer';\r\nimport { getInnerSize } from './dom';\r\nimport RenderEventArgs from '../events/RenderEventArgs';\r\nimport { getTextAlign, getVerticalAlignment } from './EnumValues';\r\n\r\nexport default function Graphics(element) {\r\n this.m_element = element;\r\n\r\n this.m_placeholders = {};\r\n this.m_activePlaceholder = null;\r\n\r\n this.m_cache = new Cache();\r\n\r\n this.debug = false;\r\n this.layerNames = {};\r\n\r\n loop(this, Layers, function (key, value) {\r\n this.layerNames[value] = key;\r\n });\r\n};\r\n\r\nGraphics.prototype.clean = function () {\r\n var key,\r\n placeholder,\r\n layerKey,\r\n layer;\r\n this.m_cache.clear();\r\n\r\n this.m_cache = null;\r\n\r\n this.m_element = null;\r\n for (key in this.m_placeholders) {\r\n if (this.m_placeholders.hasOwnProperty(key)) {\r\n placeholder = this.m_placeholders[key];\r\n\r\n for (layerKey in placeholder.layers) {\r\n if (placeholder.layers.hasOwnProperty(layerKey)) {\r\n layer = placeholder.layers[layerKey];\r\n layer.canvas.parentNode.removeChild(layer.canvas);\r\n layer.canvas = null;\r\n }\r\n }\r\n placeholder.layers.length = 0;\r\n placeholder.activeLayer = null;\r\n\r\n placeholder.size = null;\r\n placeholder.rect = null;\r\n placeholder.div = null;\r\n }\r\n }\r\n this.m_placeholders.length = 0;\r\n this.m_activePlaceholder = null;\r\n};\r\n\r\nGraphics.prototype.resize = function (name, width, height) {\r\n var placeholder = this.m_placeholders[name];\r\n if (placeholder === undefined) {\r\n placeholder = this._activatePlaceholder(name);\r\n }\r\n this.resizePlaceholder(placeholder, 0, 0, width, height);\r\n};\r\n\r\nGraphics.prototype.position = function (name, left, top, width, height) {\r\n var placeholder = this.m_placeholders[name];\r\n if (placeholder === undefined) {\r\n placeholder = this._activatePlaceholder(name);\r\n }\r\n this.resizePlaceholder(placeholder, left, top, width, height);\r\n};\r\n\r\nGraphics.prototype.show = function (name) {\r\n var placeholder = this.m_placeholders[name];\r\n if (placeholder != null) {\r\n JsonML.applyStyles(placeholder.div, {\r\n display: \"inherit\",\r\n visibility: \"inherit\"\r\n });\r\n }\r\n};\r\n\r\nGraphics.prototype.hide = function (name) {\r\n var placeholder = this.m_placeholders[name];\r\n if (placeholder != null) {\r\n JsonML.applyStyles(placeholder.div, {\r\n \"display\": \"none\",\r\n \"visibility\": \"hidden\"\r\n });\r\n }\r\n};\r\n\r\nGraphics.prototype.resizePlaceholder = function (placeholder, left, top, width, height) {\r\n var layerKey,\r\n layer;\r\n\r\n placeholder.size = new Size(width, height);\r\n placeholder.rect = new Rect(left, top, width, height);\r\n\r\n JsonML.applyStyles(placeholder.div, placeholder.rect.getCSS());\r\n for (layerKey in placeholder.layers) {\r\n if (placeholder.layers.hasOwnProperty(layerKey)) {\r\n layer = placeholder.layers[layerKey];\r\n if (layer.name !== -1) {\r\n JsonML.applyStyles(layer.canvas, {\r\n \"position\": \"absolute\",\r\n \"width\": \"0px\",\r\n \"height\": \"0px\"\r\n });\r\n }\r\n }\r\n }\r\n};\r\n\r\nGraphics.prototype.begin = function () {\r\n this.m_cache.begin();\r\n};\r\n\r\nGraphics.prototype.end = function () {\r\n this.m_cache.end();\r\n};\r\n\r\n\r\nGraphics.prototype.reset = function (arg0, arg1) {\r\n var placeholderName = \"none\",\r\n layerName = -1;\r\n switch (arguments.length) {\r\n case 1:\r\n if (typeof arg0 === \"string\") {\r\n placeholderName = arg0;\r\n }\r\n else {\r\n layerName = arg0;\r\n }\r\n break;\r\n case 2:\r\n placeholderName = arg0;\r\n layerName = arg1;\r\n break;\r\n }\r\n this.m_cache.reset(placeholderName, layerName);\r\n};\r\n\r\nGraphics.prototype.activate = function (arg0, arg1) {\r\n switch (arguments.length) {\r\n case 1:\r\n if (typeof arg0 === \"string\") {\r\n this._activatePlaceholder(arg0);\r\n this._activateLayer(-1);\r\n }\r\n else {\r\n this._activatePlaceholder(\"none\");\r\n this._activateLayer(arg0);\r\n }\r\n break;\r\n case 2:\r\n this._activatePlaceholder(arg0);\r\n this._activateLayer(arg1);\r\n break;\r\n }\r\n return this.m_activePlaceholder;\r\n};\r\n\r\nGraphics.prototype._activatePlaceholder = function (placeholderName) {\r\n var placeholder = this.m_placeholders[placeholderName],\r\n div, divs;\r\n if (placeholder === undefined) {\r\n div = null;\r\n if (placeholderName === \"none\") {\r\n div = this.m_element;\r\n }\r\n else {\r\n divs = this.m_element.getElementsByClassName(placeholderName);\r\n div = divs.length > 0 ? divs[0] : this.m_element;\r\n }\r\n\r\n placeholder = new Placeholder(placeholderName);\r\n placeholder.div = div;\r\n placeholder.size = getInnerSize(div);\r\n placeholder.rect = new Rect(0, 0, placeholder.size.width, placeholder.size.height);\r\n\r\n this.m_placeholders[placeholderName] = placeholder;\r\n }\r\n this.m_activePlaceholder = placeholder;\r\n return this.m_activePlaceholder;\r\n};\r\n\r\nGraphics.prototype._activateLayer = function (layerName) {\r\n var layer = this.m_activePlaceholder.layers[layerName],\r\n placeholder,\r\n canvas,\r\n position,\r\n maximumLayer,\r\n layerKey;\r\n if (layer === undefined) {\r\n placeholder = this.m_activePlaceholder;\r\n if (layerName === -1) {\r\n layer = new Layer(layerName);\r\n layer.canvas = placeholder.div;\r\n }\r\n else {\r\n canvas = JsonML.toHTML([\"div\",\r\n {\r\n \"style\": {\r\n \"position\": \"absolute\",\r\n \"width\": \"0px\",\r\n \"height\": \"0px\"\r\n },\r\n \"class\": [\"Layer\" + layerName, \"Layer\" + this.layerNames[layerName]]\r\n }\r\n ]);\r\n\r\n maximumLayer = null;\r\n for (layerKey in placeholder.layers) {\r\n if (placeholder.layers.hasOwnProperty(layerKey)) {\r\n layer = placeholder.layers[layerKey];\r\n if (layer.name < layerName) {\r\n maximumLayer = (maximumLayer !== null) ? Math.max(maximumLayer, layer.name) : layer.name;\r\n }\r\n }\r\n }\r\n\r\n layer = new Layer(layerName);\r\n layer.canvas = canvas;\r\n\r\n if (maximumLayer === null) {\r\n this.prepend(placeholder.div, layer.canvas);\r\n } else {\r\n this.insertAfter(placeholder.layers[maximumLayer].canvas, layer.canvas);\r\n }\r\n }\r\n placeholder.layers[layerName] = layer;\r\n }\r\n this.m_activePlaceholder.activeLayer = layer;\r\n};\r\n\r\nGraphics.prototype.prepend = function (parent, newElement) {\r\n if (parent.firstChild == null) {\r\n parent.appendChild(newElement);\r\n } else {\r\n parent.insertBefore(newElement, parent.firstChild);\r\n }\r\n};\r\n\r\nGraphics.prototype.insertAfter = function (insertAfterElement, newElement) {\r\n var parent = insertAfterElement.parentNode;\r\n if (parent.lastChild == insertAfterElement) {\r\n parent.appendChild(newElement);\r\n } else {\r\n parent.insertBefore(newElement, insertAfterElement.nextSibling);\r\n }\r\n};\r\n\r\nGraphics.prototype.text = function (x, y, width, height, label, orientation, horizontalAlignment, verticalAlignment, attr) {\r\n var placeholder = this.m_activePlaceholder,\r\n style = {\r\n \"position\": \"absolute\",\r\n \"padding\": 0,\r\n \"margin\": 0,\r\n \"textAlign\": getTextAlign(horizontalAlignment),\r\n \"fontSize\": attr.fontSize,\r\n \"fontFamily\": attr.fontFamily,\r\n \"fontWeight\": attr.fontWeight,\r\n \"fontStyle\": attr.fontStyle,\r\n \"color\": attr.fontColor,\r\n \"lineHeight\": 1\r\n },\r\n rotation = \"\",\r\n element,\r\n tdstyle;\r\n\r\n switch (orientation) {\r\n case TextOrientationType.Horizontal:\r\n case TextOrientationType.Auto:\r\n style.left = x + \"px\";\r\n style.top = y + \"px\";\r\n style.width = width + \"px\";\r\n style.height = height + \"px\";\r\n break;\r\n case TextOrientationType.RotateLeft:\r\n style.left = x + Math.round(width / 2.0 - height / 2.0) + \"px\";\r\n style.top = y + Math.round(height / 2.0 - width / 2.0) + \"px\";\r\n style.width = height + \"px\";\r\n style.height = width + \"px\";\r\n rotation = \"rotate(-90deg)\";\r\n break;\r\n case TextOrientationType.RotateRight:\r\n style.left = x + Math.round(width / 2.0 - height / 2.0) + \"px\";\r\n style.top = y + Math.round(height / 2.0 - width / 2.0) + \"px\";\r\n style.width = height + \"px\";\r\n style.height = width + \"px\";\r\n rotation = \"rotate(90deg)\";\r\n break;\r\n }\r\n\r\n style[\"-webkit-transform-origin\"] = \"center center\";\r\n style[\"-moz-transform-origin\"] = \"center center\";\r\n style[\"-o-transform-origin\"] = \"center center\";\r\n style[\"-ms-transform-origin\"] = \"center center\";\r\n\r\n\r\n style[\"-webkit-transform\"] = rotation;\r\n style[\"-moz-transform\"] = rotation;\r\n style[\"-o-transform\"] = rotation;\r\n style[\"-ms-transform\"] = rotation;\r\n style.transform = rotation;\r\n\r\n\r\n style.maxWidth = style.width;\r\n style.maxHeight = style.height;\r\n\r\n label = label.replace(new RegExp(\"\\n\", 'g'), \"
\");\r\n switch (verticalAlignment) {\r\n case VerticalAlignmentType.Top:\r\n if (this.debug) {\r\n style.border = \"solid 1px black\";\r\n }\r\n element = this.m_cache.get(placeholder.name, placeholder.activeLayer.name, \"text\");\r\n if (element === null) {\r\n element = JsonML.toHTML([\"div\",\r\n {\r\n \"style\": style,\r\n $: function (element) { element.innerHTML = label; }\r\n }\r\n ]);\r\n placeholder.activeLayer.canvas.appendChild(element);\r\n this.m_cache.put(placeholder.name, placeholder.activeLayer.name, \"text\", element);\r\n }\r\n else {\r\n JsonML.applyStyles(element, style);\r\n element.innerHTML = label;\r\n }\r\n break;\r\n default:\r\n style.borderCollapse = \"collapse\";\r\n tdstyle = {\r\n \"verticalAlign\": getVerticalAlignment(verticalAlignment),\r\n \"padding\": 0\r\n };\r\n if (this.debug) {\r\n tdstyle.border = \"solid 1px black\";\r\n }\r\n element = this.m_cache.get(placeholder.name, placeholder.activeLayer.name, \"textintable\");\r\n if (element === null) {\r\n element = JsonML.toHTML([\"table\",\r\n {\r\n \"style\": style\r\n },\r\n [\"tbody\",\r\n [\"tr\",\r\n [\"td\",\r\n {\r\n \"style\": tdstyle,\r\n $: function (element) { element.innerHTML = label; }\r\n }\r\n ]\r\n ]\r\n ]\r\n ]);\r\n placeholder.activeLayer.canvas.appendChild(element);\r\n this.m_cache.put(placeholder.name, placeholder.activeLayer.name, \"textintable\", element);\r\n }\r\n else {\r\n JsonML.applyStyles(element, style);\r\n var td = element.getElementsByTagName(\"td\")[0];\r\n JsonML.applyStyles(td, tdstyle);\r\n td.innerHTML = label;\r\n }\r\n break;\r\n }\r\n};\r\n\r\nGraphics.prototype.polylinesBuffer = function (buffer) {\r\n buffer.loop(this, function (polyline) {\r\n if (polyline.length() > 0) {\r\n this.polyline(polyline);\r\n }\r\n });\r\n};\r\n\r\n\r\nGraphics.prototype.template = function (x, y, width, height, contentx, contenty, contentWidth, contentHeight, template, hashCode, onRenderTemplate, uiHash, attr) { //ignore jslint\r\n var placeholder = this.m_activePlaceholder,\r\n element,\r\n templateKey = \"template\" + ((hashCode !== null) ? hashCode : getHashCode(template)),\r\n gap = 0,\r\n style;\r\n\r\n element = this.m_cache.get(placeholder.name, placeholder.activeLayer.name, templateKey);\r\n\r\n if (attr !== null) {\r\n if (attr.borderWidth !== undefined) {\r\n attr.borderWidth = attr.borderWidth.toString();\r\n gap = this.getPxSize(attr.borderWidth);\r\n }\r\n }\r\n\r\n style = {\r\n \"width\": (contentWidth - gap) + \"px\",\r\n \"height\": (contentHeight - gap) + \"px\",\r\n \"top\": (y + contenty) + \"px\",\r\n \"left\": (x + contentx) + \"px\"\r\n };\r\n\r\n mergeObjects(style, attr);\r\n\r\n if (uiHash == null) {\r\n uiHash = new RenderEventArgs();\r\n }\r\n\r\n uiHash.x = x + contentx;\r\n uiHash.y = y + contenty;\r\n uiHash.width = contentWidth - gap;\r\n uiHash.height = contentHeight - gap;\r\n\r\n if (element == null) {\r\n element = this.getElementByTemplate(template);\r\n style = mergeObjects(style, {\r\n \"position\": \"absolute\",\r\n \"padding\": \"0px\",\r\n \"margin\": \"0px\"\r\n }, attr);\r\n JsonML.applyStyles(element, style);\r\n\r\n uiHash.element = element;\r\n uiHash.renderingMode = RenderingMode.Create;\r\n\r\n if (onRenderTemplate !== null) {\r\n onRenderTemplate(null, uiHash);\r\n }\r\n placeholder.activeLayer.canvas.appendChild(element);\r\n this.m_cache.put(placeholder.name, placeholder.activeLayer.name, templateKey, element);\r\n } else {\r\n uiHash.element = element;\r\n uiHash.renderingMode = RenderingMode.Update;\r\n JsonML.applyStyles(element, style);\r\n if (onRenderTemplate !== null) {\r\n onRenderTemplate(null, uiHash);\r\n }\r\n }\r\n return element;\r\n};\r\n\r\nGraphics.prototype.getElementByTemplate = function (template) {\r\n var result = null;\r\n if (Array.isArray(template)) {\r\n result = JsonML.toHTML(template);\r\n } else {\r\n var parent = document.createElement('div');\r\n parent.innerHTML = template;\r\n result = parent.firstChild;\r\n }\r\n return result;\r\n};\r\n\r\nGraphics.prototype.getPxSize = function (value, base) {\r\n var result = value;\r\n if (typeof value === \"string\") {\r\n if (value.indexOf(\"pt\") > 0) {\r\n result = parseInt(value, 10) * 96 / 72;\r\n }\r\n else if (value.indexOf(\"%\") > 0) {\r\n result = parseFloat(value) / 100.0 * base;\r\n }\r\n else {\r\n result = parseInt(value, 10);\r\n }\r\n }\r\n return result;\r\n};","export default function Element(arg0, arg1) {\r\n this.ns = null;\r\n this.name = null;\r\n this.attr = {};\r\n this.style = {};\r\n\r\n this.children = [];\r\n\r\n switch (arguments.length) {\r\n case 1:\r\n this.name = arg0;\r\n break;\r\n case 2:\r\n this.ns = arg0;\r\n this.name = arg1;\r\n break;\r\n default:\r\n break;\r\n }\r\n};\r\n\r\nElement.prototype.setAttribute = function (key, value) {\r\n this.attr[key] = value;\r\n};\r\n\r\nElement.prototype.appendChild = function (child) {\r\n this.children[this.children.length] = child;\r\n};\r\n\r\nElement.prototype.create = function (ie8mode) {\r\n var result = null,\r\n name,\r\n child,\r\n index;\r\n if (this.ns !== null) {\r\n result = document.createElementNS(this.ns, this.name);\r\n }\r\n else {\r\n result = document.createElement(this.name);\r\n }\r\n for (name in this.attr) {\r\n if (this.attr.hasOwnProperty(name)) {\r\n if (ie8mode !== undefined) {\r\n result[name] = this.attr[name];\r\n }\r\n else {\r\n result.setAttribute(name, this.attr[name]);\r\n }\r\n }\r\n }\r\n for (name in this.style) {\r\n if (this.style.hasOwnProperty(name)) {\r\n result.style[name] = this.style[name];\r\n }\r\n }\r\n for (index = 0; index < this.children.length; index += 1) {\r\n child = this.children[index];\r\n if (typeof child === \"string\") {\r\n result.appendChild(document.createTextNode(child));\r\n }\r\n else {\r\n result.appendChild(child.create(ie8mode));\r\n }\r\n }\r\n return result;\r\n};\r\n\r\nElement.prototype.update = function (target, ie8mode) {\r\n var name,\r\n length,\r\n index,\r\n child,\r\n value;\r\n for (name in this.style) {\r\n if (this.style.hasOwnProperty(name)) {\r\n value = this.style[name];\r\n if (target.style[name] !== value) {\r\n target.style[name] = value;\r\n }\r\n }\r\n }\r\n for (name in this.attr) {\r\n if (this.attr.hasOwnProperty(name)) {\r\n value = this.attr[name];\r\n if (ie8mode !== undefined) {\r\n /* if you see exception here, it may be result of following situation: \r\n You made changes in Polyline graphics primitive and added extra sub nodes to it, so number and type of children for shape \r\n have been changed, so sub nodes mismatch is a reason for this exception.\r\n */\r\n if (target[name] !== value) {\r\n target[name] = value;\r\n }\r\n }\r\n else {\r\n if (target.getAttribute(name) !== value) {\r\n target.setAttribute(name, value);\r\n }\r\n }\r\n }\r\n }\r\n length = this.children.length;\r\n for (index = 0; index < length; index += 1) {\r\n child = this.children[index];\r\n if (typeof child === \"string\") {\r\n if (target.innerHtml !== child) {\r\n target.innerHtml = child;\r\n }\r\n }\r\n else {\r\n this.children[index].update(target.children[index], ie8mode);\r\n }\r\n }\r\n};","import Graphics from './Graphics';\r\nimport Element from './Element';\r\nimport { LineType, SegmentType } from '../enums';\r\nimport JsonML from '../common/jsonml-html';\r\n\r\nexport default function SvgGraphics(element) {\r\n this.parent = Graphics.prototype;\r\n\r\n this.parent.constructor.apply(this, arguments);\r\n\r\n this._svgxmlns = \"http://www.w3.org/2000/svg\";\r\n};\r\n\r\nSvgGraphics.prototype = new Graphics();\r\n\r\nSvgGraphics.prototype.clean = function () {\r\n var key,\r\n placeholder,\r\n layerKey,\r\n layer;\r\n for (key in this.m_placeholders) {\r\n if (this.m_placeholders.hasOwnProperty(key)) {\r\n placeholder = this.m_placeholders[key];\r\n for (layerKey in placeholder.layers) {\r\n if (placeholder.layers.hasOwnProperty(layerKey)) {\r\n layer = placeholder.layers[layerKey];\r\n if (layer.svgcanvas !== null) {\r\n layer.svgcanvas.parentNode.removeChild(layer.svgcanvas);\r\n layer.svgcanvas = null;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.parent.clean.apply(this, arguments);\r\n};\r\n\r\nSvgGraphics.prototype.resizePlaceholder = function (placeholder, left, top, width, height) {\r\n var layerKey,\r\n layer;\r\n\r\n this.parent.resizePlaceholder.apply(this, arguments);\r\n\r\n for (layerKey in placeholder.layers) {\r\n if (placeholder.layers.hasOwnProperty(layerKey)) {\r\n layer = placeholder.layers[layerKey];\r\n if (layer.svgcanvas !== null) {\r\n JsonML.applyStyles(layer.svgcanvas, {\r\n \"position\": \"absolute\",\r\n \"width\": width + \"px\",\r\n \"height\": height + \"px\"\r\n });\r\n layer.svgcanvas.setAttribute('viewBox', \"0 0 \" + width + \" \" + height);\r\n }\r\n }\r\n }\r\n};\r\n\r\nSvgGraphics.prototype._getCanvas = function () {\r\n var placeholder = this.m_activePlaceholder,\r\n layer = placeholder.activeLayer,\r\n panelSize = placeholder.rect;\r\n if (layer.svgcanvas === null) {\r\n layer.svgcanvas = document.createElementNS(this._svgxmlns, \"svg\");\r\n layer.svgcanvas.setAttribute(\"viewBox\", panelSize.x + \" \" + panelSize.y + \" \" + panelSize.width + \" \" + panelSize.height);\r\n JsonML.applyStyles(layer.svgcanvas, {\r\n \"width\": panelSize.width + \"px\",\r\n \"height\": panelSize.height + \"px\"\r\n });\r\n\r\n this.prepend(placeholder.activeLayer.canvas, layer.svgcanvas);\r\n }\r\n\r\n return layer.svgcanvas;\r\n};\r\n\r\nSvgGraphics.prototype.polyline = function (polylineData) {\r\n var placeholder = this.m_activePlaceholder,\r\n polyline,\r\n data,\r\n attr = polylineData.paletteItem.toAttr(),\r\n element,\r\n svgcanvas,\r\n step,\r\n radius,\r\n cornerRadius;\r\n\r\n\r\n polyline = new Element(this._svgxmlns, \"path\");\r\n if (attr.fillColor !== undefined) {\r\n polyline.setAttribute(\"fill\", attr.fillColor);\r\n polyline.setAttribute(\"fill-opacity\", attr.opacity);\r\n }\r\n else {\r\n polyline.setAttribute(\"fill-opacity\", 0);\r\n }\r\n\r\n if (attr.lineWidth !== undefined && attr.borderColor !== undefined) {\r\n polyline.setAttribute(\"stroke\", attr.borderColor);\r\n polyline.setAttribute(\"stroke-width\", attr.lineWidth);\r\n\r\n if (attr.opacity !== undefined) {\r\n polyline.setAttribute(\"stroke-opacity\", attr.opacity);\r\n } else {\r\n polyline.setAttribute(\"stroke-opacity\", 1);\r\n }\r\n } else {\r\n polyline.setAttribute(\"stroke\", \"transparent\");\r\n polyline.setAttribute(\"stroke-width\", 0);\r\n }\r\n\r\n if (attr.lineType != null) {\r\n step = Math.round(attr.lineWidth) || 1;\r\n switch (attr.lineType) {\r\n case LineType.Solid:\r\n polyline.setAttribute(\"stroke-dasharray\", \"\");\r\n break;\r\n case LineType.Dotted:\r\n polyline.setAttribute(\"stroke-dasharray\", step + \",\" + step);\r\n break;\r\n case LineType.Dashed:\r\n polyline.setAttribute(\"stroke-dasharray\", (step * 5) + \",\" + (step * 3));\r\n break;\r\n }\r\n }\r\n\r\n data = \"\";\r\n polylineData.loop(this, function (segment) {\r\n switch (segment.segmentType) {\r\n case SegmentType.Move:\r\n data += \"M\" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y) + 0.5);\r\n break;\r\n case SegmentType.Line:\r\n data += \"L\" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y) + 0.5);\r\n break;\r\n case SegmentType.QuadraticArc:\r\n data += \"Q\" + (Math.round(segment.cpX) + 0.5) + \" \" + (Math.round(segment.cpY) + 0.5) + \" \" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y) + 0.5);\r\n break;\r\n case SegmentType.Dot:\r\n // A rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y\r\n if (segment.width == segment.height && segment.width / 2.0 <= segment.cornerRadius) {\r\n // dot\r\n radius = segment.width / 2.0;\r\n data += \"M\" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y) + segment.height / 2.0 + 0.5);\r\n data += \"A\" + radius + \" \" + radius + \" 0 0 0 \" + (Math.round(segment.x + segment.width) + 0.5) + \" \" + (Math.round(segment.y) + segment.height / 2.0 + 0.5);\r\n data += \"A\" + radius + \" \" + radius + \" 0 0 0 \" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y) + segment.height / 2.0 + 0.5);\r\n } else if (segment.cornerRadius === 0) {\r\n // square\r\n data += \"M\" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y) + 0.5);\r\n data += \"L\" + (Math.round(segment.x + segment.width) + 0.5) + \" \" + (Math.round(segment.y) + 0.5);\r\n data += \"L\" + (Math.round(segment.x + segment.width) + 0.5) + \" \" + (Math.round(segment.y + segment.height) + 0.5);\r\n data += \"L\" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y + segment.height) + 0.5);\r\n data += \"L\" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y) + 0.5);\r\n } else {\r\n cornerRadius = Math.min(segment.cornerRadius, Math.min(segment.width / 2.0, segment.height / 2.0));\r\n data += \"M\" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y + cornerRadius) + 0.5);\r\n data += \"A\" + Math.round(cornerRadius) + \" \" + Math.round(cornerRadius) + \" 0 0 1 \" + (Math.round(segment.x + cornerRadius) + 0.5) + \" \" + (Math.round(segment.y) + 0.5);\r\n data += \"L\" + (Math.round(segment.x + segment.width - cornerRadius) + 0.5) + \" \" + (Math.round(segment.y) + 0.5);\r\n data += \"A\" + Math.round(cornerRadius) + \" \" + Math.round(cornerRadius) + \" 0 0 1 \" + (Math.round(segment.x + segment.width) + 0.5) + \" \" + (Math.round(segment.y + cornerRadius) + 0.5);\r\n data += \"L\" + (Math.round(segment.x + segment.width) + 0.5) + \" \" + (Math.round(segment.y + segment.height - cornerRadius) + 0.5);\r\n data += \"A\" + Math.round(cornerRadius) + \" \" + Math.round(cornerRadius) + \" 0 0 1 \" + (Math.round(segment.x + segment.width - cornerRadius) + 0.5) + \" \" + (Math.round(segment.y + segment.height) + 0.5);\r\n data += \"L\" + (Math.round(segment.x + cornerRadius) + 0.5) + \" \" + (Math.round(segment.y + segment.height) + 0.5);\r\n data += \"A\" + Math.round(cornerRadius) + \" \" + Math.round(cornerRadius) + \" 0 0 1 \" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y + segment.height - cornerRadius) + 0.5);\r\n data += \"L\" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y + cornerRadius) + 0.5);\r\n }\r\n break;\r\n case SegmentType.CubicArc:\r\n data += \"C\" + (Math.round(segment.cpX1) + 0.5) + \" \" + (Math.round(segment.cpY1) + 0.5) +\r\n \" \" + (Math.round(segment.cpX2) + 0.5) + \" \" + (Math.round(segment.cpY2) + 0.5) +\r\n \" \" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y) + 0.5);\r\n break;\r\n }\r\n });\r\n\r\n polyline.setAttribute(\"d\", data);\r\n element = this.m_cache.get(placeholder.name, placeholder.activeLayer.name, \"path\");\r\n if (element === null) {\r\n element = polyline.create();\r\n svgcanvas = this._getCanvas();\r\n svgcanvas.appendChild(element);\r\n this.m_cache.put(placeholder.name, placeholder.activeLayer.name, \"path\", element);\r\n }\r\n else {\r\n polyline.update(element);\r\n }\r\n};","import Point from './graphics/structs/Point';\r\nimport Rect from './graphics/structs/Rect';\r\nimport { UpdateMode, OrientationType } from './enums';\r\nimport { isNullOrEmpty } from './common';\r\nimport createGraphics, { isChrome } from './graphics/createGraphics';\r\nimport { getFixOfPixelAlignment, getInnerSize, getElementOffset } from './graphics/dom';\r\nimport JsonML from './common/jsonml-html';\r\nimport { mergeObjects } from './common';\r\n\r\n/**\r\n * JavaScript Abstract Control\r\n * @class BaseControl\r\n */\r\nexport default function BaseControl(element, options, taskManagerFactory, eventArgsFactory, templates) {\r\n var _data = {\r\n name: \"orgdiagram\",\r\n options: options,\r\n tasks: null,\r\n graphics: null,\r\n mouse: null,\r\n layout: {\r\n element: element,\r\n controlPanel: null,\r\n frameMousePanel: null,\r\n framePlaceholder: null,\r\n titlesMousePanel: null,\r\n titlesPlaceholder: null,\r\n scrollPanel: null,\r\n mousePanel: null,\r\n placeholder: null,\r\n calloutPlaceholder: null,\r\n forceCenterOnCursor: true\r\n }\r\n },\r\n _dragFrom,\r\n _scrollFrom,\r\n _scrollTo,\r\n _dragImage,\r\n _dragTimer,\r\n _debug = false,\r\n _timer = null;\r\n\r\n /**\r\n * Performs full redraw of the diagram contents via reevaluating all API options. This method has to be called explicitly\r\n * after all options are set in order to update controls contents.\r\n * \r\n * @param {UpdateMode} updateMode \r\n * @param {boolean} forceCenterOnCursor \r\n */\r\n function update(updateMode, forceCenterOnCursor) {\r\n if (forceCenterOnCursor == null) {\r\n forceCenterOnCursor = true;\r\n }\r\n switch (updateMode) {\r\n case UpdateMode.Refresh:\r\n refresh(forceCenterOnCursor, _debug);\r\n break;\r\n case UpdateMode.PositonHighlight:\r\n positionHighlight(_debug);\r\n break;\r\n default:\r\n redraw();\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Removes all elements control added to DOM including event listeners.\r\n */\r\n function destroy() {\r\n unbind(_data.layout);\r\n cleanLayout(_data.layout);\r\n\r\n _data.tasks = null;\r\n _data.graphics = null;\r\n }\r\n\r\n function redraw() {\r\n unbind(_data.layout);\r\n cleanLayout(_data.layout);\r\n\r\n createLayout(_data.layout, _data.name);\r\n bind(_data.layout);\r\n _data.tasks = taskManagerFactory(getOptions, getGraphics, getLayout, setLayout, templates);\r\n _data.graphics = createGraphics(_data.layout.element);\r\n _data.graphics.debug = _debug;\r\n\r\n refresh(true, _debug);\r\n }\r\n\r\n function refresh(forceCenterOnCursor, debug) {\r\n var centerOnCursorTask,\r\n placeholderOffset;\r\n\r\n //_data.layout.scrollPanel.css({\r\n // \"display\": \"none\",\r\n // \"-webkit-overflow-scrolling\": \"auto\"\r\n //});\r\n\r\n //this.graphics.begin();\r\n\r\n _data.layout.forceCenterOnCursor = forceCenterOnCursor;\r\n _data.tasks.process('OptionsTask', null, debug);\r\n\r\n _data.graphics.end();\r\n\r\n //_data.layout.scrollPanel.css({\r\n // \"display\": \"block\"\r\n //});\r\n\r\n if (forceCenterOnCursor) {\r\n /* scroll to offset */\r\n centerOnCursorTask = _data.tasks.getTask(\"CenterOnCursorTask\");\r\n placeholderOffset = centerOnCursorTask.getPlaceholderOffset();\r\n _data.layout.scrollPanel.scrollLeft = placeholderOffset.x;\r\n _data.layout.scrollPanel.scrollTop = placeholderOffset.y;\r\n }\r\n //_data.layout.scrollPanel.css({\r\n // \"-webkit-overflow-scrolling\": \"touch\"\r\n //});\r\n\r\n /* fix pixel alignment */\r\n var pixelAlignmentFix = getFixOfPixelAlignment(_data.layout.element);\r\n JsonML.applyStyles(_data.layout.scrollPanel, {\r\n \"marginBottom\": \"0px\",\r\n \"marginRight\": \"0px\",\r\n \"marginLeft\": pixelAlignmentFix.width + \"px\", /* fixes div pixel alignment */\r\n \"marginTop\": pixelAlignmentFix.height + \"px\"\r\n });\r\n }\r\n\r\n function positionHighlight(debug) {\r\n _data.layout.forceCenterOnCursor = false;\r\n _data.tasks.process('HighlightItemOptionTask', null, debug);\r\n\r\n _data.graphics.end();\r\n }\r\n\r\n function redrawCurrentViewPort(debug) {\r\n _data.layout.forceCenterOnCursor = false;\r\n _data.tasks.process('LayoutOptionsTask', null, debug);\r\n\r\n _data.graphics.end();\r\n }\r\n\r\n function onScroll(event) {\r\n if (_timer == null) {\r\n _timer = window.setTimeout(function () {\r\n redrawCurrentViewPort(_debug);\r\n window.clearTimeout(_timer);\r\n _timer = null;\r\n }, 200);\r\n }\r\n }\r\n\r\n /**\r\n * Call this method to update controls configuration. Control uses default Config instance to initialize itself, \r\n * so it sets only options provided in the options parameter.\r\n * \r\n * @param {object} options Options\r\n */\r\n function setOptions(options) {\r\n for (var option in options) {\r\n if (options.hasOwnProperty(option)) {\r\n _data.options[option] = options[option];\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * This method returns current configuration object.\r\n * \r\n * @returns {object} Returns reference to current configuration object\r\n */\r\n function getOptions() {\r\n return _data.options;\r\n }\r\n\r\n /**\r\n * This method returns configuration option by name.\r\n * \r\n * @param {*} option Option name\r\n */\r\n function getOption(option) {\r\n return _data.options[option];\r\n }\r\n\r\n /**\r\n * Sets configuration option of the control by name.\r\n * \r\n * @param {*} option Option name\r\n * @param {*} value Option value\r\n */\r\n function setOption(option, value) {\r\n return _data.options[option] = value;\r\n }\r\n\r\n function getGraphics() {\r\n return _data.graphics;\r\n }\r\n\r\n function getLayout() {\r\n var layout = _data.layout,\r\n scrollPanelSize = getInnerSize(layout.controlPanel),\r\n placeholderOffset = new Point(layout.scrollPanel.scrollLeft, layout.scrollPanel.scrollTop);\r\n return {\r\n forceCenterOnCursor: layout.forceCenterOnCursor,\r\n scrollPanelSize: scrollPanelSize,\r\n placeholderOffset: placeholderOffset\r\n }\r\n }\r\n\r\n function setLayout(layoutOptions) {\r\n var layout = _data.layout,\r\n pixelAlignmentFix = getFixOfPixelAlignment(layout.element);\r\n\r\n JsonML.applyStyles(layout.controlPanel, {\r\n \"marginLeft\": pixelAlignmentFix.width + \"px\", /* fixes div pixel alignment */\r\n \"marginTop\": pixelAlignmentFix.height + \"px\"\r\n });\r\n\r\n /* set scroll panel position */\r\n JsonML.applyStyles(layout.scrollPanel, layoutOptions.scrollPanelRect.getCSS());\r\n\r\n /* set scaled content panel for tracking mouse events without scaling */\r\n JsonML.applyStyles(layout.mousePanel, layoutOptions.mousePanelSize.getCSS());\r\n\r\n /* set size and scale of content panel */\r\n var scaleText = \"scale(\" + layoutOptions.scale + \",\" + layoutOptions.scale + \")\";\r\n var scaleProperties = {\r\n \"transform-origin\": \"0 0\",\r\n \"transform\": scaleText,\r\n \"-ms-transform\": scaleText, /* IE 9 */\r\n \"-webkit-transform\": scaleText, /* Safari and Chrome */\r\n \"-o-transform\": scaleText, /* Opera */\r\n \"-moz-transform\": scaleText /* Firefox */\r\n };\r\n JsonML.applyStyles(layout.placeholder, mergeObjects(scaleProperties, layoutOptions.placeholderSize.getCSS()));\r\n\r\n if (layoutOptions.autoSize) {\r\n /* resize element to fit placeholder if control in auto size mode */\r\n JsonML.applyStyles(layout.element, layoutOptions.controlSize.getCSS());\r\n }\r\n\r\n /* set titles panel scale and size */\r\n JsonML.applyStyles(layout.titlesMousePanel, layoutOptions.titlesMousePanelRect.getCSS());\r\n JsonML.applyStyles(layout.titlesPlaceholder, mergeObjects(scaleProperties, layoutOptions.titlesPlaceholderSize.getCSS()));\r\n\r\n /* set frame panel scale and size */\r\n JsonML.applyStyles(layout.frameMousePanel, layoutOptions.frameMousePanelRect.getCSS());\r\n JsonML.applyStyles(layout.framePlaceholder, mergeObjects(scaleProperties, layoutOptions.framePlaceholderSize.getCSS()));\r\n \r\n layout.scrollPanel.setAttribute(\"class\", layoutOptions.scrollPanelRect.left > 0 ? name : \"bp-scrollframe \" + name);\r\n }\r\n\r\n function createLayout(layout, name) {\r\n var viewportSize = getInnerSize(layout.element),\r\n viewportRect = new Rect(0, 0, viewportSize.width, viewportSize.height),\r\n pixelAlignmentFix = getFixOfPixelAlignment(element);\r\n\r\n\r\n JsonML.appendDOM(layout.element, JsonML.toHTML(\r\n [\"div\", /* root control panel */\r\n {\r\n \"tabindex\": 0,\r\n \"style\": {\r\n \"position\": \"relative\",\r\n \"overflow\": \"hidden\",\r\n \"top\": \"0px\",\r\n \"left\": \"0px\",\r\n \"width\": \"100%\",\r\n \"height\": \"100%\",\r\n \"padding\": \"0px\",\r\n \"marginBottom\": \"0px\",\r\n \"marginRight\": \"0px\",\r\n \"marginLeft\": pixelAlignmentFix.width + \"px\", /* fixes div pixel alignment */\r\n \"marginTop\": pixelAlignmentFix.height + \"px\"\r\n },\r\n \"name\": \"controlPanel\",\r\n \"class\": name,\r\n \"$\": function (element) { layout.controlPanel = element; }\r\n },\r\n [\"div\", /* frameMousePanel - frame mouse tracking events panel */\r\n {\r\n \"style\": mergeObjects({\r\n position: \"absolute\",\r\n overflow: \"hidden\"\r\n },\r\n viewportRect.getCSS()),\r\n \"name\": \"frameMousePanel\",\r\n \"class\": name,\r\n \"$\": function (element) { layout.frameMousePanel = element; }\r\n },\r\n [\"div\", /* frameplaceholder - contents scalable panel */\r\n {\r\n \"style\": mergeObjects({\r\n position: \"absolute\",\r\n overflow: \"hidden\"\r\n },\r\n viewportRect.getCSS()),\r\n \"name\": \"framePlaceholder\",\r\n \"class\": [\"frameplaceholder\", name],\r\n \"$\": function (element) { layout.framePlaceholder = element; }\r\n }\r\n ]\r\n ],\r\n [\"div\", /* titlesMousePanel - titles mouse tracking events panel */\r\n {\r\n \"style\": mergeObjects({\r\n position: \"absolute\",\r\n overflow: \"hidden\"\r\n },\r\n viewportRect.getCSS()),\r\n \"name\": \"titlesMousePanel\",\r\n \"class\": [\"bp-titles-frame\", name],\r\n \"$\": function (element) { layout.titlesMousePanel = element; }\r\n },\r\n [\"div\", /* titlesplaceholder - contents scalable panel */\r\n {\r\n \"style\": mergeObjects({\r\n position: \"absolute\",\r\n overflow: \"hidden\"\r\n },\r\n viewportRect.getCSS()),\r\n \"name\": \"titlesPlaceholder\",\r\n \"class\": [\"titlesplaceholder\", name],\r\n \"$\": function (element) { layout.titlesPlaceholder = element; }\r\n }\r\n ]\r\n ],\r\n [\"div\", /* scrollPanel - root scroll panel */\r\n {\r\n \"style\": mergeObjects({\r\n position: \"absolute\",\r\n \"overflow\": \"auto\",\r\n \"-webkit-overflow-scrolling\": \"touch\",\r\n \"top\": \"0px\",\r\n \"left\": \"0px\",\r\n \"width\": viewportRect.width + \"px\",\r\n \"height\": viewportRect.height + \"px\"\r\n },\r\n viewportRect.getCSS()),\r\n \"name\": \"scrollPanel\",\r\n \"class\": name,\r\n \"$\": function (element) { layout.scrollPanel = element; }\r\n },\r\n [\"div\", /* mousePanel - mouse tracking events panel */\r\n {\r\n \"style\": mergeObjects({\r\n position: \"absolute\",\r\n overflow: \"visible\"\r\n },\r\n viewportRect.getCSS()),\r\n \"name\": \"mousePanel\",\r\n \"class\": name,\r\n \"$\": function (element) { layout.mousePanel = element; }\r\n },\r\n [\"div\", /* placeholder - contents scalable panel */\r\n {\r\n \"style\": mergeObjects({\r\n position: \"absolute\",\r\n overflow: \"hidden\"\r\n },\r\n viewportRect.getCSS()),\r\n \"name\": \"placeholder\",\r\n \"class\": [\"placeholder\", name],\r\n \"$\": function (element) { layout.placeholder = element; }\r\n },\r\n [\"div\", /* calloutPlaceholder - callout panel */\r\n {\r\n \"style\": {\r\n position: \"absolute\",\r\n overflow: \"visible\",\r\n top: \"0px\",\r\n left: \"0px\",\r\n width: \"0px\",\r\n height: \"0px\"\r\n },\r\n \"name\": \"calloutPlaceholder\",\r\n \"class\": [\"calloutplaceholder\", name],\r\n \"$\": function (element) { layout.calloutPlaceholder = element; }\r\n }\r\n ]\r\n ]\r\n ]\r\n ]\r\n ])\r\n );\r\n }\r\n\r\n function cleanLayout() {\r\n var controlPanel = _data.layout.controlPanel;\r\n if (controlPanel != null) {\r\n var parent = controlPanel.parentNode;\r\n if (parent != null) {\r\n parent.removeChild(controlPanel);\r\n }\r\n }\r\n }\r\n\r\n function bind(layout) {\r\n layout.mousePanel.addEventListener('mousemove', onMouseMove);\r\n layout.mousePanel.addEventListener('click', onMouseClick);\r\n layout.mousePanel.addEventListener('dblclick', onMouseDblClick);\r\n layout.mousePanel.addEventListener('change', onCheckboxChange);\r\n\r\n layout.element.addEventListener('keydown', onKeyDown);\r\n\r\n layout.scrollPanel.addEventListener('scroll', onScroll);\r\n\r\n if (_data.options.enablePanning && isChrome()) {\r\n layout.scrollPanel.draggable = true;\r\n layout.scrollPanel.addEventListener('dragstart', onDragStart);\r\n layout.scrollPanel.addEventListener('drag', onDragScroll);\r\n layout.scrollPanel.addEventListener('dragend', onDragScroll);\r\n layout.scrollPanel.addEventListener('dragover', onDragOver);\r\n }\r\n\r\n layout.frameMousePanel.addEventListener('mousemove', onFrameMouseMove);\r\n layout.frameMousePanel.addEventListener('click', onFrameMouseClick);\r\n }\r\n\r\n function unbind(layout) {\r\n if (layout.mousePanel != null) {\r\n layout.mousePanel.removeEventListener(\"mousemove\", onMouseMove);\r\n layout.mousePanel.removeEventListener(\"click\", onMouseClick);\r\n layout.mousePanel.removeEventListener(\"dblclick\", onMouseDblClick);\r\n layout.mousePanel.removeEventListener(\"change\", onCheckboxChange);\r\n }\r\n if (layout.element != null) {\r\n layout.element.removeEventListener(\"keydown\", onKeyDown);\r\n }\r\n if (layout.scrollPanel != null) {\r\n layout.scrollPanel.removeEventListener(\"scroll\", onScroll);\r\n layout.scrollPanel.removeEventListener('dragstart', onDragStart);\r\n layout.scrollPanel.removeEventListener('drag', onDragScroll);\r\n layout.scrollPanel.removeEventListener('dragend', onDragScroll);\r\n layout.scrollPanel.removeEventListener('dragover', onDragOver);\r\n }\r\n\r\n if (layout.frameMousePanel != null) {\r\n layout.frameMousePanel.removeEventListener('mousemove', onFrameMouseMove);\r\n layout.frameMousePanel.removeEventListener('click', onFrameMouseClick);\r\n }\r\n }\r\n\r\n function onFrameMouseMove(event) {\r\n var placeholderOffset = getElementOffset(_data.layout.frameMousePanel),\r\n x = event.pageX - placeholderOffset.left,\r\n y = event.pageY - placeholderOffset.top;\r\n var projectItemsToFrameTask = _data.tasks.getTask(\"ProjectItemsToFrameTask\"),\r\n highlightItemOptionTask = _data.tasks.getTask(\"HighlightItemOptionTask\"),\r\n itemId;\r\n\r\n if (highlightItemOptionTask.hasHighlightEnabled()) {\r\n itemId = projectItemsToFrameTask.getTreeItemForMousePosition(x, y, highlightItemOptionTask.getGravityRadius());\r\n setHighlightItem(event, itemId);\r\n }\r\n }\r\n\r\n function onFrameMouseClick(event) {\r\n var placeholderOffset = getElementOffset(_data.layout.frameMousePanel),\r\n x = event.pageX - placeholderOffset.left,\r\n y = event.pageY - placeholderOffset.top,\r\n projectItemsToFrameTask = _data.tasks.getTask(\"ProjectItemsToFrameTask\"),\r\n cursorItemOptionTask = _data.tasks.getTask(\"CursorItemOptionTask\"),\r\n highlightItemOptionTask = _data.tasks.getTask(\"HighlightItemOptionTask\"),\r\n newCursorItemId = projectItemsToFrameTask.getTreeItemForMousePosition(x, y, highlightItemOptionTask.getGravityRadius()),\r\n target,\r\n eventArgs;\r\n target = event.target;\r\n if (newCursorItemId !== null) {\r\n eventArgs = getEventArgs(null, newCursorItemId);\r\n trigger(\"onMouseClick\", event, eventArgs);\r\n if (!eventArgs.cancel) {\r\n if (cursorItemOptionTask.hasCursorEnabled()) {\r\n setCursorItem(event, newCursorItemId);\r\n _data.layout.element.focus();\r\n }\r\n }\r\n }\r\n }\r\n\r\n function onMouseMove(event) {\r\n var placeholderOffset = getElementOffset(_data.layout.mousePanel),\r\n x = event.pageX - placeholderOffset.left,\r\n y = event.pageY - placeholderOffset.top,\r\n createTransformTask = _data.tasks.getTask(\"CreateTransformTask\"),\r\n highlightItemOptionTask = _data.tasks.getTask(\"HighlightItemOptionTask\"),\r\n itemId;\r\n\r\n if (highlightItemOptionTask.hasHighlightEnabled()) {\r\n itemId = createTransformTask.getTreeItemForMousePosition(x, y, highlightItemOptionTask.getGravityRadius());\r\n setHighlightItem(event, itemId);\r\n }\r\n }\r\n\r\n function onCheckboxChange(event) {\r\n var target = event.target;\r\n var selectedId = target.getAttribute(\"data-id\");\r\n if (selectedId != null) {\r\n var selectedItems = (_data.options.selectedItems || []).slice();\r\n var eventArgs = getEventArgs(null, selectedId);\r\n var position = selectedItems.findIndex(function(itemid) { return selectedId == itemid});\r\n trigger(\"onSelectionChanging\", event, eventArgs);\r\n if (!eventArgs.cancel) {\r\n if (position >= 0) {\r\n selectedItems.splice(position, 1);\r\n }\r\n else {\r\n selectedItems.push(selectedId);\r\n }\r\n _data.options.selectedItems = selectedItems;\r\n\r\n if (position < 0) {\r\n target.setAttribute(\"checked\", \"checked\");\r\n } else {\r\n target.removeAttribute(\"checked\");\r\n }\r\n\r\n //refresh(false, false);\r\n\r\n trigger(\"onSelectionChanged\", event, eventArgs);\r\n }\r\n }\r\n }\r\n\r\n function onMouseClick(event) {\r\n var placeholderOffset = getElementOffset(_data.layout.mousePanel),\r\n x = event.pageX - placeholderOffset.left,\r\n y = event.pageY - placeholderOffset.top,\r\n createTransformTask = _data.tasks.getTask(\"CreateTransformTask\"),\r\n cursorItemOptionTask = _data.tasks.getTask(\"CursorItemOptionTask\"),\r\n highlightItemOptionTask = _data.tasks.getTask(\"HighlightItemOptionTask\"),\r\n newCursorItemId = createTransformTask.getTreeItemForMousePosition(x, y, highlightItemOptionTask.getGravityRadius()),\r\n target,\r\n buttonName,\r\n eventArgs;\r\n target = event.target;\r\n if (newCursorItemId !== null) {\r\n var buttonName = target.getAttribute(\"data-buttonname\");\r\n if(isNullOrEmpty(buttonName)) {\r\n buttonName = target.parentNode && target.parentNode.getAttribute(\"data-buttonname\");\r\n };\r\n if (!isNullOrEmpty(buttonName)) {\r\n eventArgs = getEventArgs(null, newCursorItemId, buttonName);\r\n trigger(\"onButtonClick\", event, eventArgs);\r\n }\r\n else if (target.getAttribute(\"name\") === \"checkbox\" || target.getAttribute(\"name\") === \"selectiontext\") { \r\n\r\n }\r\n else {\r\n eventArgs = getEventArgs(null, newCursorItemId);\r\n trigger(\"onMouseClick\", event, eventArgs);\r\n if (!eventArgs.cancel) {\r\n if (cursorItemOptionTask.hasCursorEnabled()) {\r\n setCursorItem(event, newCursorItemId);\r\n _data.layout.element.focus();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function onMouseDblClick(event) {\r\n var eventArgs,\r\n highlightItemTask = _data.tasks.getTask(\"HighlightItemTask\"),\r\n highlightTreeItem = highlightItemTask.getHighlightTreeItem();\r\n\r\n if (highlightTreeItem !== null) {\r\n eventArgs = getEventArgs(null, highlightTreeItem);\r\n trigger(\"onMouseDblClick\", event, eventArgs);\r\n }\r\n }\r\n\r\n function onKeyDown(event) {\r\n var highlightItemTask = _data.tasks.getTask(\"HighlightItemTask\"),\r\n highlightItemOptionTask = _data.tasks.getTask(\"HighlightItemOptionTask\"),\r\n cursorItemTask = _data.tasks.getTask(\"CursorItemTask\"),\r\n cursorItemOptionTask = _data.tasks.getTask(\"CursorItemOptionTask\"),\r\n alignDiagramTask = _data.tasks.getTask('AlignDiagramTask'),\r\n createTransformTask = _data.tasks.getTask('CreateTransformTask'),\r\n transform = createTransformTask.getTransform(),\r\n navigationItem = null,\r\n newNavigationItem,\r\n direction = null,\r\n accepted,\r\n layout = _data.layout;\r\n\r\n if (highlightItemOptionTask.hasHighlightEnabled() && cursorItemOptionTask.hasCursorEnabled()) {\r\n navigationItem = highlightItemTask.getHighlightTreeItem();\r\n if (navigationItem === null) {\r\n navigationItem = cursorItemTask.getCursorTreeItem();\r\n }\r\n } else if (highlightItemOptionTask.hasHighlightEnabled()) {\r\n navigationItem = highlightItemTask.getHighlightTreeItem();\r\n } else if (cursorItemOptionTask.hasCursorEnabled()) {\r\n navigationItem = cursorItemTask.getCursorTreeItem();\r\n }\r\n\r\n\r\n if (navigationItem != null) {\r\n switch (event.which) {\r\n case 13: /*Enter*/\r\n if (cursorItemOptionTask.hasCursorEnabled()) {\r\n setCursorItem(event, navigationItem);\r\n event.preventDefault();\r\n layout.element.focus();\r\n }\r\n break;\r\n case 40: /*Down*/\r\n direction = OrientationType.Bottom;\r\n break;\r\n case 38: /*Up*/\r\n direction = OrientationType.Top;\r\n break;\r\n case 37: /*Left*/\r\n direction = OrientationType.Left;\r\n break;\r\n case 39: /*Right*/\r\n direction = OrientationType.Right;\r\n break;\r\n }\r\n\r\n if (direction != null) {\r\n\r\n accepted = false;\r\n\r\n while (!accepted) {\r\n accepted = true;\r\n\r\n direction = transform.getOrientation(direction);\r\n newNavigationItem = alignDiagramTask.getNextItem(navigationItem, direction);\r\n\r\n if (newNavigationItem != null) {\r\n event.preventDefault();\r\n if (highlightItemOptionTask.hasHighlightEnabled()) {\r\n setHighlightItem(event, newNavigationItem);\r\n } else if (cursorItemOptionTask.hasCursorEnabled()) {\r\n setCursorItem(event, newNavigationItem);\r\n }\r\n\r\n }\r\n }\r\n layout.element.focus();\r\n }\r\n }\r\n }\r\n\r\n function onDragStart(event) {\r\n var scrollPanel = _data.layout.scrollPanel;\r\n _dragFrom = new Point(event.clientX, event.clientY);\r\n _scrollFrom = new Point(scrollPanel.scrollLeft, scrollPanel.scrollTop);\r\n _dragImage = _dragImage || new Image(); \r\n event.dataTransfer.setDragImage(_dragImage, 0, 0);\r\n }\r\n\r\n function onDragOver(event) {\r\n event.preventDefault();\r\n event.dataTransfer.dropEffect = \"move\";\r\n }\r\n\r\n function onDragScroll(event) {\r\n _scrollTo = new Point(_scrollFrom.x - (event.clientX - _dragFrom.x), _scrollFrom.y - (event.clientY - _dragFrom.y));\r\n if (_dragTimer == null) {\r\n _dragTimer = window.setTimeout(function () {\r\n var scrollPanel = _data.layout.scrollPanel;\r\n scrollPanel.scrollLeft = _scrollTo.x;\r\n scrollPanel.scrollTop = _scrollTo.y;\r\n window.clearTimeout(_dragTimer);\r\n _dragTimer = null;\r\n }, 50);\r\n }\r\n }\r\n\r\n function setHighlightItem(event, newHighlightItemId) {\r\n var result = true,\r\n eventArgs;\r\n if (newHighlightItemId !== null) {\r\n if (newHighlightItemId !== _data.options.highlightItem) {\r\n eventArgs = getEventArgs(_data.options.highlightItem, newHighlightItemId);\r\n\r\n _data.options.highlightItem = newHighlightItemId;\r\n\r\n trigger(\"onHighlightChanging\", event, eventArgs);\r\n\r\n if (!eventArgs.cancel) {\r\n refresh(false, false);\r\n\r\n trigger(\"onHighlightChanged\", event, eventArgs);\r\n } else {\r\n result = false;\r\n }\r\n }\r\n } else {\r\n if (_data.options.highlightItem !== null) {\r\n eventArgs = getEventArgs(_data.options.highlightItem, null);\r\n\r\n _data.options.highlightItem = null;\r\n\r\n trigger(\"onHighlightChanging\", event, eventArgs);\r\n\r\n if (!eventArgs.cancel) {\r\n refresh(false, false);\r\n\r\n trigger(\"onHighlightChanged\", event, eventArgs);\r\n } else {\r\n result = false;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function setCursorItem(event, newCursorItemId) {\r\n var eventArgs;\r\n if (newCursorItemId !== _data.options.cursorItem) {\r\n eventArgs = getEventArgs(_data.options.cursorItem, newCursorItemId);\r\n\r\n _data.options.cursorItem = newCursorItemId;\r\n\r\n trigger(\"onCursorChanging\", event, eventArgs);\r\n\r\n if (!eventArgs.cancel) {\r\n refresh(true, _debug);\r\n\r\n trigger(\"onCursorChanged\", event, eventArgs);\r\n }\r\n }\r\n }\r\n\r\n function getEventArgs(oldTreeItemId, newTreeItemId, name) {\r\n return eventArgsFactory(_data, oldTreeItemId, newTreeItemId, name);\r\n }\r\n\r\n function trigger(eventHandlerName, event, eventArgs) {\r\n var eventHandler = _data.options[eventHandlerName];\r\n if (eventHandler != null) {\r\n eventHandler(event, eventArgs);\r\n }\r\n }\r\n\r\n update(); /* init control on create */\r\n\r\n return {\r\n destroy: destroy,\r\n setOptions: setOptions,\r\n getOptions: getOptions,\r\n setOption: setOption,\r\n getOption: getOption,\r\n update: update\r\n };\r\n};\r\n","import SvgGraphics from './SvgGraphics';\r\n\r\n/**\r\n * Checks if browser is Chrome.\r\n * \r\n * @returns {boolean} Returns true if browser is chrome.\r\n * @ignore\r\n */\r\nexport function isChrome () {\r\n if (navigator != null) { //ignore jslint\r\n return /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor); //ignore jslint\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Creates graphics object for chart rendering\r\n * \r\n * @param {object} element Reference to dom element the graphics object is created for\r\n * @returns {Graphics} Returns graphics object\r\n * @ignore\r\n */\r\nexport default function createGraphics(element) {\r\n return new SvgGraphics(element);\r\n};","import AnnotationLabelTemplate from './templates/html/AnnotationLabelTemplate';\r\nimport ButtonsTemplate from './templates/html/ButtonsTemplate';\r\nimport CustomRenderTemplate from './templates/html/CustomRenderTemplate';\r\nimport CheckBoxTemplate from './templates/html/CheckBoxTemplate';\r\nimport CursorTemplate from './templates/html/CursorTemplate';\r\nimport DotHighlightTemplate from './templates/html/DotHighlightTemplate';\r\nimport GroupTitleTemplate from './templates/html/GroupTitleTemplate';\r\nimport HighlightTemplate from './templates/html/HighlightTemplate';\r\nimport ItemTemplate from './templates/html/ItemTemplate';\r\nimport UserTemplate from './templates/html/UserTemplate';\r\nimport LabelAnnotationTemplate from './templates/html/LabelAnnotationTemplate';\r\nimport LevelTitleTemplate from './templates/html/LevelTitleTemplate';\r\nimport LevelBackgroundTemplate from './templates/html/LevelBackgroundTemplate';\r\n\r\nimport OrgTaskManagerFactory from './OrgTaskManagerFactory';\r\nimport OrgEventArgsFactory from './OrgEventArgsFactory';\r\nimport BaseControl from './BaseControl';\r\n/**\r\n * Creates JavaScript Organizational Chart Control\r\n * @class Control\r\n * @param {object} element Reference to placeholder `div` element in the DOM. The control renders diagram content\r\n * inside of that div element and adds events listeners.\r\n * @param {OrgConfig} options Organizational Chart Configuration object\r\n * \r\n * @returns {OrgDiagram} Returns reference to Organizational Chart control. Since control adds event listeners bound\r\n * to its contents, call `destroy` method to clean up everything.\r\n */\r\nexport default function OrgDiagram(element, options, templates) {\r\n return BaseControl(element, options, OrgTaskManagerFactory, OrgEventArgsFactory, {\r\n AnnotationLabelTemplate,\r\n ButtonsTemplate,\r\n CustomRenderTemplate,\r\n CheckBoxTemplate,\r\n CursorTemplate,\r\n DotHighlightTemplate,\r\n GroupTitleTemplate,\r\n HighlightTemplate,\r\n ItemTemplate,\r\n UserTemplate,\r\n LevelTitleTemplate,\r\n LevelBackgroundTemplate,\r\n /* FamDiagram specific templates */\r\n LabelAnnotationTemplate,\r\n ...templates\r\n });\r\n};\r\n","import ArrayReader from '../../readers/ArrayReader';\r\nimport ValueReader from '../../readers/ValueReader';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\n\r\nexport default function FamItemsOptionTask(optionsTask, defaultItemConfig) {\r\n var _data = {},\r\n _hash = {},\r\n _sourceHash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n items: new ArrayReader(\r\n new ObjectReader({\r\n id: new ValueReader([\"string\", \"number\"], true),\r\n parents: new ArrayReader(\r\n new ValueReader([\"string\", \"number\"], true),\r\n true\r\n ),\r\n isActive: new ValueReader([\"boolean\"], false, defaultItemConfig.isActive)\r\n }),\r\n true,\r\n \"id\",\r\n true\r\n )\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash,\r\n sourceHash: _sourceHash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getItems() {\r\n return _data.items;\r\n }\r\n\r\n function getConfig(itemId) {\r\n return _sourceHash[\"options-items\"][itemId];\r\n }\r\n\r\n return {\r\n process: process,\r\n getItems: getItems,\r\n getConfig: getConfig\r\n };\r\n};","import ArrayReader from '../../../readers/ArrayReader';\r\nimport ValueReader from '../../../readers/ValueReader';\r\nimport { PageFitMode, Visibility } from '../../../enums';\r\n\r\nexport default function FamNormalVisibilityItemsByMinimumVisibleLevelsTask(minimumVisibleLevelsOptionTask, orderFamilyNodesTask) {\r\n var _data = {\r\n items: []\r\n },\r\n _hash = {};\r\n\r\n var _dataTemplate = new ArrayReader(\r\n new ValueReader([\"string\", \"number\"], true),\r\n true\r\n );\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n },\r\n treeLevels = orderFamilyNodesTask.getTreeLevels(),\r\n { pageFitMode, minimalVisibility, minimumVisibleLevels } = minimumVisibleLevelsOptionTask.getOptions();\r\n\r\n _data.items = _dataTemplate.read(_data.items, getSelectedItems(treeLevels, pageFitMode, minimalVisibility, minimumVisibleLevels), \"items\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getSelectedItems(treeLevels, pageFitMode, minimalVisibility, minimumVisibleLevels ) {\r\n var result = [];\r\n\r\n if(minimumVisibleLevels > 0) {\r\n if(PageFitMode.PageWidth == pageFitMode || PageFitMode.PageHeight || PageFitMode.FitToPage) {\r\n if(minimalVisibility != Visibility.Normal) {\r\n var index = 0,\r\n currentLevel = null;\r\n treeLevels.loopLevels(this, function(levelIndex, level) {\r\n treeLevels.loopLevelItems(this, levelIndex, function(nodeId, node, position) {\r\n if(node.isVisible) {\r\n if(currentLevel !== levelIndex) {\r\n currentLevel = levelIndex;\r\n index+=1;\r\n }\r\n result.push(nodeId);\r\n }\r\n })\r\n if(index >= minimumVisibleLevels) {\r\n return true;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function getItems() {\r\n return _data.items;\r\n }\r\n\r\n return {\r\n process: process,\r\n getItems: getItems\r\n };\r\n};","import getMergedIntervals from '../../algorithms/getMergedIntervals';\r\nimport Interval from '../../graphics/structs/Interval';\r\n\r\nexport default function FamLogicalLevelsPlacementTask(orderFamilyNodesTask, alignDiagramTask) {\r\n var _data = {\r\n positions: []\r\n };\r\n\r\n function process() {\r\n _data.positions = null;\r\n return true;\r\n }\r\n\r\n function createPositions() {\r\n var intervals = [],\r\n treeLevels = orderFamilyNodesTask.getTreeLevels(),\r\n itemsPositions = alignDiagramTask.getItemsPositions(),\r\n index = 0;\r\n treeLevels.loopLevels(this, function(levelIndex, level) {\r\n treeLevels.loopLevelItems(this, levelIndex, function(nodeId, node, position) {\r\n if(node.isVisible && node.isActive) {\r\n var itemPosition = itemsPositions[nodeId];\r\n if(itemPosition) {\r\n var interval = new Interval(itemPosition.topConnectorShift || itemPosition.actualPosition.y, itemPosition.bottomConnectorShift - 1, index++)\r\n intervals.push(interval);\r\n }\r\n return true; /* only one item per level is needed */\r\n }\r\n })\r\n });\r\n\r\n var mergedIntervals = [];\r\n getMergedIntervals(this, intervals, function(interval) {\r\n mergedIntervals.push(interval);\r\n });\r\n intervals = mergedIntervals;\r\n\r\n /* merge intervals having equal logical levels */\r\n mergedIntervals = [];\r\n var currentInterval = null;\r\n for(var index = 0, len = intervals.length; index < len; index+=1) {\r\n var interval = intervals[index];\r\n if(!currentInterval) {\r\n currentInterval = interval;\r\n mergedIntervals.push(interval);\r\n } else {\r\n if(currentInterval.context === interval.context) {\r\n currentInterval.to = interval.to;\r\n } else {\r\n currentInterval = interval;\r\n mergedIntervals.push(interval);\r\n }\r\n }\r\n }\r\n intervals = mergedIntervals;\r\n\r\n /* extend first level to the top */\r\n if(intervals.length > 0) {\r\n intervals[0].from = 0;\r\n }\r\n\r\n /* fill gaps between levels */\r\n for(var index = 0, len = intervals.length - 1; index < len; index+=1) {\r\n var prev = intervals[index];\r\n var next = intervals[index + 1];\r\n\r\n prev.to = next.from;\r\n }\r\n\r\n /* find minimal level */\r\n var minLevelIndex = null;\r\n for(var index = 0, len = intervals.length; index < len; index+=1) {\r\n var interval = intervals[index];\r\n minLevelIndex = (minLevelIndex === null) ? interval.context : Math.min(minLevelIndex, interval.context);\r\n }\r\n\r\n /* group intervals by logical levels */ \r\n var result = {};\r\n for(var index = 0, len = intervals.length; index < len; index+=1) {\r\n var interval = intervals[index];\r\n var levelIndex = interval.context - minLevelIndex;\r\n var logicalLevelPosition = result[levelIndex];\r\n if(!logicalLevelPosition) {\r\n result[levelIndex] = [interval];\r\n } else {\r\n logicalLevelPosition.push(interval);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n\r\n function getPositions() {\r\n if(!_data.positions) {\r\n _data.positions = createPositions();\r\n }\r\n return _data.positions;\r\n }\r\n\r\n return {\r\n getPositions:getPositions,\r\n process: process\r\n };\r\n};","import { ChildrenPlacementType, HorizontalAlignmentType } from '../../enums';\r\nexport default function FamVisualTreeOptionTask(optionsTask) {\r\n var _data = {\r\n leavesPlacementType: ChildrenPlacementType.Horizontal,\r\n childrenPlacementType: ChildrenPlacementType.Horizontal,\r\n maximumColumnsInMatrix: 6,\r\n horizontalAlignment: HorizontalAlignmentType.Center\r\n };\r\n\r\n function process() {\r\n return false;\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions\r\n };\r\n};","import ValueReader from '../../readers/ValueReader';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\n\r\nexport default function HideGrandParentsConnectorsOptionTask(optionsTask, defaultConfig) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n hideGrandParentsConnectors: new ValueReader([\"boolean\"], false, defaultConfig.hideGrandParentsConnectors)\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions\r\n };\r\n};","import ValueReader from '../../readers/ValueReader';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\nimport EnumerationReader from '../../readers/EnumerationReader';\r\nimport { GroupByType } from '../../enums';\r\n\r\nexport default function NormalizeOptionTask(optionsTask, defaultConfig) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n groupByType: new EnumerationReader(GroupByType, false, defaultConfig.groupByType),\r\n alignBylevels: new ValueReader([\"boolean\"], false, defaultConfig.alignBylevels)\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions\r\n };\r\n};","import ValueReader from '../../readers/ValueReader';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\nimport ArrayReader from '../../readers/ArrayReader';\r\n\r\nexport default function ExtractNestedLayoutsOptionTask(optionsTask, defaultConfig, defaultItemConfig) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n enableMatrixLayout: new ValueReader([\"boolean\"], false, defaultConfig.enableMatrixLayout),\r\n minimumMatrixSize: new ValueReader([\"number\"], false, defaultConfig.minimumMatrixSize),\r\n maximumColumnsInMatrix: new ValueReader([\"number\"], false, defaultConfig.maximumColumnsInMatrix),\r\n items: new ArrayReader(\r\n new ObjectReader({\r\n id: new ValueReader([\"string\", \"number\"], true),\r\n matrixId: new ValueReader([\"string\", \"number\"], false, defaultItemConfig.matrixId),\r\n addToMatrix: new ValueReader([\"boolean\"], false, defaultItemConfig.addToMatrix),\r\n }),\r\n true,\r\n \"id\"\r\n )\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n function getConfig(itemId) {\r\n return _hash[\"options-items\"][itemId];\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions,\r\n getConfig: getConfig\r\n };\r\n};","import ValueReader from '../../readers/ValueReader';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\nimport ArrayReader from '../../readers/ArrayReader';\r\nimport EnumerationReader from '../../readers/EnumerationReader';\r\nimport { AdviserPlacementType } from '../../enums';\r\n\r\nexport default function OrderFamilyNodesOptionTask(optionsTask, defaultConfig, defaultItemConfig) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n enableMatrixLayout: new ValueReader([\"boolean\"], false, defaultConfig.enableMatrixLayout),\r\n minimumMatrixSize: new ValueReader([\"number\"], false, defaultConfig.minimumMatrixSize),\r\n maximumColumnsInMatrix: new ValueReader([\"number\"], false, defaultConfig.maximumColumnsInMatrix),\r\n items: new ArrayReader(\r\n new ObjectReader({\r\n id: new ValueReader([\"string\", \"number\"], true),\r\n position: new ValueReader([\"number\"], true),\r\n relativeItem: new ValueReader([\"string\", \"number\"], true),\r\n placementType: new EnumerationReader(AdviserPlacementType, false, defaultItemConfig.placementType),\r\n primaryParent: new ValueReader([\"string\", \"number\"], true),\r\n matrixId: new ValueReader([\"string\", \"number\"], false, defaultItemConfig.matrixId),\r\n addToMatrix: new ValueReader([\"boolean\"], false, defaultItemConfig.addToMatrix),\r\n }),\r\n true,\r\n \"id\"\r\n )\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n function getConfig(itemId) {\r\n return _hash[\"options-items\"][itemId];\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions,\r\n getConfig: getConfig\r\n };\r\n};","import ValueReader from '../../readers/ValueReader';\r\nimport ObjectReader from '../../readers/ObjectReader';\r\nimport ArrayReader from '../../readers/ArrayReader';\r\nimport EnumerationReader from '../../readers/EnumerationReader';\r\nimport { LineType } from '../../enums';\r\n\r\nexport default function LinePaletteOptionTask(optionsTask, defaultPaletteItemConfig) {\r\n var _data = {},\r\n _hash = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n linesPalette: new ArrayReader(\r\n new ObjectReader({\r\n lineColor: new ValueReader([\"string\"], false, defaultPaletteItemConfig.lineColor),\r\n lineWidth: new ValueReader([\"number\"], false, defaultPaletteItemConfig.lineWidth),\r\n lineType: new EnumerationReader(LineType, false, defaultPaletteItemConfig.lineType)\r\n }),\r\n false\r\n )\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getOptions() {\r\n return _data;\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions\r\n };\r\n};","import ObjectReader from '../../../readers/ObjectReader';\r\nimport EnumerationReader from '../../../readers/EnumerationReader';\r\nimport {NeighboursSelectionMode} from '../../../enums';\r\n\r\nexport default function NeighboursSelectionModeOptionTask(optionsTask, defaultConfig) {\r\n var _data = {};\r\n\r\n var _dataTemplate = new ObjectReader({\r\n neighboursSelectionMode: new EnumerationReader(NeighboursSelectionMode, false, defaultConfig.neighboursSelectionMode)\r\n });\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false\r\n };\r\n\r\n _data = _dataTemplate.read(_data, optionsTask.getOptions(), \"options\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getNeighboursSelectionMode() {\r\n return _data.neighboursSelectionMode;\r\n }\r\n\r\n return {\r\n process: process,\r\n getNeighboursSelectionMode: getNeighboursSelectionMode\r\n };\r\n};","import Tree from '../../../algorithms/Tree';\r\nimport { AdviserPlacementType } from '../../../enums';\r\n\r\nexport default function UserDefinedNodesOrder() {\r\n\r\n};\r\n\r\nUserDefinedNodesOrder.prototype.getUserDefinedPositions = function (items) {\r\n var userItem,\r\n index, len,\r\n relationTree = Tree(),\r\n referencedItems = {};\r\n\r\n for (index = 0, len = items.length; index < len; index += 1) {\r\n userItem = items[index];\r\n /* user should define unique id for every FamItemConfig otherwise we ignore it\r\n user should define relativeItem otherwise we cannot position item\r\n */\r\n if (userItem.relativeItem != null) {\r\n referencedItems[userItem.relativeItem] = true;\r\n }\r\n if (userItem.id != null) {\r\n referencedItems[userItem.id] = true;\r\n }\r\n }\r\n\r\n /* convert items relations into tree, it is not necessary to be a single root tree */\r\n for (index = 0, len = items.length; index < len; index += 1) {\r\n userItem = items[index];\r\n if (referencedItems.hasOwnProperty(userItem.id)) {\r\n var relativeItem = userItem.relativeItem || null;\r\n relationTree.add(relativeItem, userItem.id, userItem);\r\n }\r\n }\r\n\r\n /* at this step relationTree should contain some set of root items \r\n if it has no root items that means we ether don't have any user defined relations\r\n or relations tree is looped so we ignore loops\r\n */\r\n function Set(position, items) {\r\n this.position = position;\r\n this.items = items;\r\n }\r\n\r\n var itemsOrder = {};\r\n var lefts = {};\r\n var rights = {};\r\n relationTree.loopPostOrder(this, function (nodeid, node, parentid, parent) {\r\n var items = [],\r\n leftItems = lefts[nodeid],\r\n rightItems = rights[nodeid],\r\n index;\r\n if (leftItems != null) {\r\n leftItems.sort(function (a, b) {\r\n return b.position - a.position\r\n });\r\n for (index = 0; index < leftItems.length; index += 1) {\r\n items = items.concat(leftItems[index].items);\r\n }\r\n }\r\n items.push(nodeid);\r\n if (rightItems != null) {\r\n rightItems.sort(function (a, b) {\r\n return a.position - b.position\r\n });\r\n for (index = 0; index < rightItems.length; index += 1) {\r\n items = items.concat(rightItems[index].items);\r\n }\r\n }\r\n\r\n if (parentid != null) {\r\n if (node.placementType == AdviserPlacementType.Left) {\r\n if (!lefts.hasOwnProperty(parentid)) {\r\n lefts[parentid] = [];\r\n }\r\n lefts[parentid].push(new Set(node.position, items));\r\n } else {\r\n if (!rights.hasOwnProperty(parentid)) {\r\n rights[parentid] = [];\r\n }\r\n rights[parentid].push(new Set(node.position, items));\r\n }\r\n } else {\r\n itemsOrder[nodeid] = items;\r\n }\r\n });\r\n\r\n /* convert root items collections into a sinle result hash */\r\n var position = {},\r\n group = {};\r\n\r\n for (var rootItemId in itemsOrder) {\r\n if (itemsOrder.hasOwnProperty(rootItemId)) {\r\n items = itemsOrder[rootItemId];\r\n for (index = 0; index < items.length; index += 1) {\r\n var itemid = items[index];\r\n position[itemid] = index;\r\n group[itemid] = rootItemId;\r\n }\r\n }\r\n }\r\n return {\r\n position: position,\r\n group: group\r\n };\r\n}","import UserDefinedNodesOrder from './familyTransformations/UserDefinedNodesOrder';\r\n\r\nexport default function UserDefinedNodesOrderTask(orderFamilyNodesOptionTask) {\r\n var _data = {\r\n position: null, /* hash[itemid] = position*/\r\n group: null /* hash[itemid] = root itemid */\r\n },\r\n _userDefinedNodesOrder = new UserDefinedNodesOrder();\r\n\r\n function process() {\r\n var options = orderFamilyNodesOptionTask.getOptions();\r\n var result = _userDefinedNodesOrder.getUserDefinedPositions(options.items);\r\n\r\n _data.position = result.position;\r\n _data.group = result.group;\r\n\r\n return true;\r\n }\r\n\r\n function getPositions() {\r\n return _data.position;\r\n }\r\n\r\n function getGroups() {\r\n return _data.group;\r\n }\r\n\r\n return {\r\n process: process,\r\n getPositions: getPositions,\r\n getGroups: getGroups\r\n };\r\n};","import { GroupByType } from '../enums';\r\n\r\nexport default function FamilyItem(arg0) {\r\n var property;\r\n\r\n this.id = null;\r\n this.familyId = null;\r\n this.itemConfig = null;\r\n\r\n this.isVisible = true;\r\n this.isActive = true; // item is clickable\r\n this.isLevelNeutral = false; // This option allows to place fake item in between of original item levels\r\n\r\n this.level = null;\r\n this.levelGravity = GroupByType.None; // If item can be moved between its parent and children levels in diagram, this option defines preference\r\n this.hideParentConnection = false;\r\n this.hideChildrenConnection = false;\r\n\r\n switch (arguments.length) {\r\n case 1:\r\n for (property in arg0) {\r\n if (arg0.hasOwnProperty(property)) {\r\n this[property] = arg0[property];\r\n }\r\n }\r\n break;\r\n }\r\n};","import Family from '../../algorithms/Family';\r\nimport FamilyItem from '../../models/FamilyItem';\r\n\r\nexport default function LogicalFamilyTask(itemsOptionTask) {\r\n var _data = {\r\n logicalFamily: null,\r\n maximumId: null\r\n };\r\n\r\n function process(debug) {\r\n var index, len,\r\n itemConfig, famItem,\r\n items = itemsOptionTask.getItems(),\r\n logicalFamily = Family(), /*family contains FamItemConfig */\r\n maximumId = 0,\r\n parsedId;\r\n\r\n if (items.length > 0) {\r\n for (index = 0, len = items.length; index < len; index += 1) {\r\n itemConfig = items[index];\r\n\r\n if (itemConfig != null) {\r\n famItem = new FamilyItem({\r\n id: itemConfig.id,\r\n itemConfig: itemConfig,\r\n isActive: itemConfig.isActive\r\n });\r\n\r\n logicalFamily.add(itemConfig.parents, famItem.id, famItem);\r\n\r\n parsedId = parseInt(itemConfig.id, 10);\r\n maximumId = Math.max(isNaN(parsedId) ? 0 : parsedId, maximumId);\r\n }\r\n }\r\n }\r\n\r\n _data.logicalFamily = logicalFamily;\r\n _data.maximumId = maximumId;\r\n\r\n if (debug && !logicalFamily.validate()) {\r\n throw \"References are broken in family structure!\";\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function getLogicalFamily() {\r\n return _data.logicalFamily;\r\n }\r\n\r\n function getMaximumId() {\r\n return _data.maximumId;\r\n }\r\n\r\n return {\r\n process: process,\r\n getLogicalFamily: getLogicalFamily,\r\n getMaximumId: getMaximumId\r\n };\r\n};","import getFamilyLoops from '../../algorithms/getFamilyLoops';\r\nimport FamilyItem from '../../models/FamilyItem';\r\nimport { GroupByType } from '../../enums';\r\n\r\nexport default function RemoveLoopsTask(logicalFamilyTask) {\r\n var _data = {\r\n logicalFamily: null,\r\n maximumId: null,\r\n loops: [] // populate collection of pairs between fake parents and fake children\r\n };\r\n\r\n function process(debug) {\r\n var logicalFamily = logicalFamilyTask.getLogicalFamily(),\r\n maximumId = logicalFamilyTask.getMaximumId();\r\n\r\n var result = removeLoops(logicalFamily, maximumId, debug);\r\n\r\n _data.logicalFamily = result.logicalFamily;\r\n _data.maximumId = result.maximumId;\r\n _data.loops = result.loops;\r\n\r\n if (debug && !logicalFamily.validate()) {\r\n throw \"References are broken in family structure!\";\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function removeLoops(logicalFamily, maximumId, debug) {\r\n var fakeChild, fakeParent,\r\n index, len,\r\n index2, len2,\r\n edgesToReverse = getFamilyLoops(logicalFamily, debug),\r\n fakePairs = [];\r\n\r\n /* group edges by child node */\r\n var loops = [];\r\n var loopsHash = {};\r\n for (index = 0, len = edgesToReverse.length; index < len; index += 1) {\r\n var edge = edgesToReverse[index];\r\n\r\n if (!loopsHash.hasOwnProperty(edge.to)) {\r\n loopsHash[edge.to] = { itemid: edge.to, parents: [edge.from] };\r\n loops.push(loopsHash[edge.to]);\r\n } else {\r\n loopsHash[edge.to].parents.push(edge.from);\r\n }\r\n }\r\n\r\n var fakeChildren = {}; // reuse fake children across removed edges\r\n if (loops.length > 0) {\r\n logicalFamily = logicalFamily.clone();\r\n for (index = 0, len = loops.length; index < len; index += 1) {\r\n var loop = loops[index];\r\n var parents = loop.parents;\r\n\r\n var itemParents = [];\r\n logicalFamily.loopParents(this, loop.itemid, function (parentid, parent) {\r\n itemParents.push(parentid);\r\n return logicalFamily.SKIP;\r\n });\r\n\r\n for (index2 = 0, len2 = itemParents.length; index2 < len2; index2 += 1) {\r\n /* remove relation in temp structure */\r\n logicalFamily.removeChildRelation(itemParents[index2], loop.itemid);\r\n }\r\n\r\n /* create fake parent and child items to loop item to its parent */\r\n maximumId += 1;\r\n\r\n var isConnectionsVisible = (itemParents.length <= parents.length);\r\n /* add fake parent */\r\n fakeParent = new FamilyItem({\r\n id: (maximumId),\r\n isVisible: false,\r\n isActive: false,\r\n isLevelNeutral: false,\r\n hideParentConnection: isConnectionsVisible,\r\n hideChildrenConnection: isConnectionsVisible,\r\n levelGravity: GroupByType.Children,\r\n itemConfig: { title: \"fake parent #\" + maximumId, description: \"This is a fake parent item, it was created by loops removal task.\" }\r\n });\r\n\r\n logicalFamily.add([], fakeParent.id, fakeParent);\r\n logicalFamily.adopt([fakeParent.id], loop.itemid);\r\n fakePairs.push({ from: fakeParent.id, to: loop.itemid, isOppositeFlow: false });\r\n\r\n for (index2 = 0, len2 = parents.length; index2 < len2; index2 += 1) {\r\n var parentid = parents[index2];\r\n\r\n fakeChild = fakeChildren[parentid];\r\n\r\n if (fakeChild == null) {\r\n /* add fake child */\r\n maximumId += 1;\r\n fakeChild = new FamilyItem({\r\n id: (maximumId),\r\n isVisible: false,\r\n isActive: false,\r\n isLevelNeutral: false,\r\n hideParentConnection: true,\r\n hideChildrenConnection: true,\r\n levelGravity: GroupByType.Parents,\r\n itemConfig: { title: \"fake child #\" + maximumId, description: \"This is a fake child item, it was created by loops removal task.\" }\r\n });\r\n fakeChildren[parentid] = fakeChild;\r\n\r\n logicalFamily.add([parentid], fakeChild.id, fakeChild);\r\n fakePairs.push({ from: parentid, to: fakeChild.id, isOppositeFlow: false });\r\n }\r\n\r\n logicalFamily.adopt([fakeParent.id], fakeChild.id);\r\n fakePairs.push({ from: fakeParent.id, to: fakeChild.id, isOppositeFlow: true });\r\n\r\n }\r\n\r\n // assign remaining parents of our item to the fake parent\r\n var parentsHash = {};\r\n for (index2 = 0, len2 = parents.length; index2 < len2; index2 += 1) {\r\n parentsHash[parents[index2]] = true;\r\n }\r\n for (index2 = 0, len2 = itemParents.length; index2 < len2; index2 += 1) {\r\n if (!parentsHash.hasOwnProperty(itemParents[index2])) {\r\n logicalFamily.adopt([itemParents[index2]], fakeParent.id);\r\n }\r\n }\r\n }\r\n }\r\n return {\r\n maximumId: maximumId,\r\n logicalFamily: logicalFamily,\r\n loops: fakePairs\r\n }\r\n }\r\n\r\n function getLogicalFamily() {\r\n return _data.logicalFamily;\r\n }\r\n\r\n function getMaximumId() {\r\n return _data.maximumId;\r\n }\r\n\r\n function getLoops() {\r\n return _data.loops;\r\n }\r\n\r\n return {\r\n process: process,\r\n getLogicalFamily: getLogicalFamily,\r\n getMaximumId: getMaximumId,\r\n getLoops: getLoops\r\n };\r\n};","import ArrayReader from '../../../readers/ArrayReader';\r\nimport ValueReader from '../../../readers/ValueReader';\r\nimport ObjectReader from '../../../readers/ObjectReader';\r\nimport EnumerationReader from '../../../readers/EnumerationReader';\r\nimport {ZOrderType, AnnotationType} from '../../../enums';\r\n\r\nexport default function LabelAnnotationOptionTask(splitAnnotationsOptionTask, logicalFamilyTask, defaultLabelAnnotationConfig) {\r\n var _data = {\r\n annotations: [],\r\n configs: {},\r\n maximumId: null\r\n },\r\n _hash = {};\r\n\r\n var _dataTemplate = new ArrayReader(\r\n new ObjectReader({\r\n zOrderType: new EnumerationReader(ZOrderType, false, defaultLabelAnnotationConfig.zOrderType),\r\n fromItem: new ValueReader([\"string\", \"number\"], true),\r\n toItems: new ArrayReader(\r\n new ValueReader([\"string\", \"number\"], true),\r\n true\r\n ),\r\n title: new ValueReader([\"string\"], true),\r\n itemTitleColor: new ValueReader([\"string\"], false, defaultLabelAnnotationConfig.itemTitleColor),\r\n templateName: new ValueReader([\"string\"], true)\r\n },\r\n false\r\n ),\r\n false,\r\n null,\r\n true\r\n );\r\n\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash,\r\n sourceHash: {}\r\n },\r\n maximumId = logicalFamilyTask.getMaximumId(),\r\n index, len, annotation;\r\n\r\n _data.annotations = _dataTemplate.read(_data.annotations, splitAnnotationsOptionTask.getAnnotations(AnnotationType.Label), \"annotations\", context);\r\n _data.configs = {};\r\n\r\n /* here we assign unique id to every annotation used in layout\r\n and populate configs hash mapping id to source annotation\r\n these source items used as context objects in rendering cycle\r\n */\r\n var sourceItems = context.sourceHash.annotations;\r\n for (index = 0, len = _data.annotations.length; index < len; index += 1) {\r\n annotation = _data.annotations[index];\r\n maximumId += 1;\r\n annotation.id = maximumId;\r\n\r\n _data.configs[annotation.id] = sourceItems[index];\r\n }\r\n\r\n _data.maximumId = maximumId;\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getAnnotations() {\r\n return _data.annotations;\r\n }\r\n\r\n function getMaximumId() {\r\n return _data.maximumId;\r\n }\r\n\r\n function getConfig(itemId) {\r\n return _data.configs[itemId];\r\n }\r\n\r\n return {\r\n process: process,\r\n getAnnotations: getAnnotations,\r\n getMaximumId: getMaximumId,\r\n getConfig: getConfig\r\n };\r\n};","import ArrayReader from '../../../readers/ArrayReader';\r\nimport ValueReader from '../../../readers/ValueReader';\r\nimport ObjectReader from '../../../readers/ObjectReader';\r\n\r\nexport default function LabelAnnotationTemplateOptionTask(labelAnnotationOptionTask, defaultLabelAnnotationConfig) {\r\n var _data = {\r\n annotations: []\r\n },\r\n _hash = {};\r\n\r\n var _dataTemplate = new ArrayReader(\r\n new ObjectReader({\r\n id: new ValueReader([\"number\"], true),\r\n title: new ValueReader([\"string\"], true),\r\n itemTitleColor: new ValueReader([\"string\"], false, defaultLabelAnnotationConfig.itemTitleColor),\r\n templateName: new ValueReader([\"string\"], true)\r\n }),\r\n true,\r\n \"id\"\r\n );\r\n\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data.annotations = _dataTemplate.read(_data.annotations, labelAnnotationOptionTask.getAnnotations(), \"annotations\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getAnnotations() {\r\n return _data.annotations;\r\n }\r\n\r\n return {\r\n process: process,\r\n getAnnotations: getAnnotations\r\n };\r\n};","import ArrayReader from '../../../readers/ArrayReader';\r\nimport ValueReader from '../../../readers/ValueReader';\r\nimport ObjectReader from '../../../readers/ObjectReader';\r\n\r\nexport default function LabelAnnotationPlacementOptionTask(labelAnnotationOptionTask, defaultLabelAnnotationConfig) {\r\n var _data = {\r\n annotations: []\r\n },\r\n _hash = {};\r\n\r\n var _dataTemplate = new ArrayReader(\r\n new ObjectReader({\r\n id: new ValueReader([\"number\"], true),\r\n fromItem: new ValueReader([\"string\", \"number\"], true),\r\n toItems: new ArrayReader(\r\n new ValueReader([\"string\", \"number\"], true),\r\n true\r\n )\r\n }),\r\n true,\r\n \"id\"\r\n );\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n };\r\n\r\n _data.annotations = _dataTemplate.read(_data.annotations, labelAnnotationOptionTask.getAnnotations(), \"annotations\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getAnnotations() {\r\n return _data.annotations;\r\n }\r\n\r\n function getMaximumId() {\r\n return labelAnnotationOptionTask.getMaximumId();\r\n }\r\n\r\n return {\r\n process: process,\r\n getAnnotations: getAnnotations,\r\n getMaximumId: getMaximumId\r\n };\r\n};","export default function EdgeItem(key0, val0, key1, val1) {\r\n this.values = [val0, val1];\r\n this[key0] = 0;\r\n this[key1] = 1;\r\n};\r\n\r\nEdgeItem.prototype.getNear = function (key) {\r\n return this.values[this[key]];\r\n};\r\n\r\nEdgeItem.prototype.getFar = function (key) {\r\n return this.values[Math.abs(this[key] - 1)];\r\n};\r\n\r\nEdgeItem.prototype.setNear = function (key, value) {\r\n this.values[this[key]] = value;\r\n};\r\n\r\nEdgeItem.prototype.setFar = function (key, value) {\r\n this.values[Math.abs(this[key] - 1)] = value;\r\n};\r\n\r\nEdgeItem.prototype.toString = function () {\r\n return this.parent + ',' + this.child;\r\n};","import Graph from '../../algorithms/Graph';\r\nimport EdgeItem from '../../models/EdgeItem';\r\nimport FamilyItem from '../../models/FamilyItem';\r\nimport { GroupByType } from '../../enums';\r\n\r\nexport default function AddLabelAnnotationsTask(labelAnnotationPlacementOptionTask, removeLoopsTask) {\r\n var _data = {\r\n logicalFamily: null,\r\n maximumId: null\r\n };\r\n\r\n function process(debug) {\r\n var logicalFamily = removeLoopsTask.getLogicalFamily(),\r\n annotations = labelAnnotationPlacementOptionTask.getAnnotations();\r\n\r\n logicalFamily = logicalFamily.clone();\r\n\r\n addLabelAnnotations(logicalFamily, annotations);\r\n\r\n _data.logicalFamily = logicalFamily;\r\n\r\n _data.maximumId = labelAnnotationPlacementOptionTask.getMaximumId();\r\n\r\n if (debug && !logicalFamily.validate()) {\r\n throw \"References are broken in family structure!\";\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function addLabelAnnotations(logicalFamily, annotations) {\r\n var edges = Graph(), /* edge item is new EdgeItem(fromItem, toItem); */\r\n configsHash = {},\r\n configs, config,\r\n fromItem,\r\n index, len;\r\n\r\n if (annotations.length > 0) {\r\n /* group annotations by from item */\r\n for (index = 0, len = annotations.length; index < len; index += 1) {\r\n config = annotations[index];\r\n if (!configsHash.hasOwnProperty(config.fromItem)) {\r\n configsHash[config.fromItem] = [config];\r\n\r\n /* create edges hash for item */\r\n logicalFamily.loopChildren(this, config.fromItem, function (childid, child, level) {\r\n edges.addEdge(config.fromItem, childid, new EdgeItem(config.fromItem, config.fromItem, childid, childid));\r\n return logicalFamily.SKIP;\r\n });//ignore jslint\r\n logicalFamily.loopParents(this, config.fromItem, function (parentid, parent, level) {\r\n edges.addEdge(parentid, config.fromItem, new EdgeItem(parentid, parentid, config.fromItem, config.fromItem));\r\n return logicalFamily.SKIP;\r\n });//ignore jslint\r\n\r\n } else {\r\n configsHash[config.fromItem].push(config);\r\n }\r\n }\r\n\r\n for (fromItem in configsHash) {\r\n if (configsHash.hasOwnProperty(fromItem)) {\r\n configs = configsHash[fromItem];\r\n\r\n /* process annotations having greater number of references first */\r\n configs.sort(function (a, b) {\r\n return b.toItems.length - a.toItems.length;\r\n }); //ignore jslint\r\n\r\n\r\n for (index = 0; index < configs.length; index += 1) {\r\n config = configs[index];\r\n\r\n addLabelAnnotation(logicalFamily, edges, config.fromItem, config.toItems, function () {\r\n /* add label annotation as new diagram family item */\r\n return new FamilyItem({\r\n id: config.id,\r\n isVisible: true,\r\n isLevelNeutral: true,\r\n isActive: false,\r\n itemConfig: config\r\n });\r\n }); //ignore jslint\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function addLabelAnnotation(logicalFamily, edges, fromItem, toItems, onCreate) {\r\n var edge,\r\n isValid = true,\r\n commonParentId = null,\r\n toItem,\r\n index, len,\r\n bundleItem,\r\n bundleItems = [];\r\n\r\n for (index = 0, len = toItems.length; index < len; index += 1) {\r\n toItem = toItems[index];\r\n\r\n edge = edges.edge(fromItem, toItem);\r\n if (edge != null) {\r\n if (commonParentId == null) {\r\n commonParentId = edge.getFar(toItem);\r\n } else {\r\n if (commonParentId != edge.getFar(toItem)) {\r\n isValid = false;\r\n break;\r\n }\r\n }\r\n bundleItems.push(edge.getNear(toItem));\r\n } else {\r\n isValid = false;\r\n break;\r\n }\r\n }\r\n\r\n if (isValid) {\r\n bundleItem = onCreate();\r\n if (logicalFamily.bundleParents(commonParentId, bundleItems, bundleItem.id, bundleItem)) {\r\n bundleItem.levelGravity = GroupByType.Children;\r\n isValid = true;\r\n } else if (logicalFamily.bundleChildren(commonParentId, bundleItems, bundleItem.id, bundleItem)) {\r\n bundleItem.levelGravity = GroupByType.Parents;\r\n isValid = true;\r\n } else if (logicalFamily.bundleParents(commonParentId, toItems, bundleItem.id, bundleItem)) {\r\n bundleItem.levelGravity = GroupByType.Children;\r\n isValid = true;\r\n } else if (logicalFamily.bundleParents(commonParentId, toItems, bundleItem.id, bundleItem)) {\r\n bundleItem.levelGravity = GroupByType.Parents;\r\n isValid = true;\r\n }\r\n\r\n if (isValid) {\r\n for (index = 0, len = toItems.length; index < len; index += 1) {\r\n toItem = toItems[index];\r\n\r\n edge = edges.edge(fromItem, toItem);\r\n edge.setFar(toItem, bundleItem.id);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function getLogicalFamily() {\r\n return _data.logicalFamily;\r\n }\r\n\r\n function getMaximumId() {\r\n return _data.maximumId;\r\n }\r\n\r\n return {\r\n process: process,\r\n getLogicalFamily: getLogicalFamily,\r\n getMaximumId: getMaximumId\r\n };\r\n};","/* This task optionally eliminates direct connections to grand parents */\r\nexport default function HideGrandParentsConnectorsTask(hideGrandParentsConnectorsOptionTask, removeLoopsTask) {\r\n var _data = {\r\n maximumId: null, /* maximum of OrgItem.id */\r\n logicalFamily: null\r\n }\r\n\r\n function process(debug) {\r\n var logicalFamily = removeLoopsTask.getLogicalFamily(),\r\n maximumId = removeLoopsTask.getMaximumId();\r\n\r\n var options = hideGrandParentsConnectorsOptionTask.getOptions();\r\n\r\n if (options.hideGrandParentsConnectors == true) {\r\n /* optionally eliminate grand parents connectors */\r\n logicalFamily = logicalFamily.getFamilyWithoutGrandParentsRelations();\r\n } else {\r\n logicalFamily = logicalFamily.clone();\r\n }\r\n\r\n _data.logicalFamily = logicalFamily;\r\n _data.maximumId = maximumId;\r\n\r\n return true;\r\n }\r\n\r\n function getLogicalFamily() {\r\n return _data.logicalFamily;\r\n }\r\n\r\n function getMaximumId() {\r\n return _data.maximumId;\r\n }\r\n\r\n return {\r\n process: process,\r\n getLogicalFamily: getLogicalFamily,\r\n getMaximumId: getMaximumId\r\n };\r\n};\r\n","import FamilyItem from '../../models/FamilyItem';\r\nimport { GroupByType } from '../../enums';\r\n\r\nexport default function BindFamilyConnectorsTask(hideGrandParentsConnectorsTask) {\r\n var _data = {\r\n maximumId: null, /* maximum of OrgItem.id */\r\n logicalFamily: null\r\n };\r\n\r\n function process(debug) {\r\n var logicalFamily = hideGrandParentsConnectorsTask.getLogicalFamily(),\r\n maximumId = hideGrandParentsConnectorsTask.getMaximumId();\r\n\r\n logicalFamily = logicalFamily.clone();\r\n\r\n /* Optimize family references. Bundle connectors where it is possible */\r\n logicalFamily.optimizeReferences(function () {\r\n maximumId += 1;\r\n\r\n return new FamilyItem({\r\n id: maximumId,\r\n isVisible: false,\r\n isActive: false,\r\n itemConfig: { title: \"bundle #\" + maximumId, description: \" This item was created by references optimizer.\" },\r\n levelGravity: GroupByType.Children,\r\n isLevelNeutral: true\r\n });\r\n }); //ignore jslint\r\n\r\n if (debug && !logicalFamily.validate()) {\r\n throw \"References are broken in family structure!\";\r\n }\r\n if (debug && logicalFamily.hasLoops()) {\r\n throw \"Structure has loops!\";\r\n }\r\n\r\n /* eliminate many to many connections in chart, every connection should be ether child or parent relation. */\r\n logicalFamily.eliminateManyToMany(function () {\r\n maximumId += 1;\r\n\r\n return new FamilyItem({\r\n id: maximumId,\r\n isVisible: false,\r\n isActive: false,\r\n itemConfig: { title: \"dummy #\" + maximumId, description: \"This is item used to eliminate M:M relations.\" },\r\n levelGravity: GroupByType.Children,\r\n hideParentConnection: false,\r\n hideChildrenConnection: false,\r\n isLevelNeutral: true\r\n });\r\n } //ignore jslint\r\n );\r\n\r\n if (debug && !logicalFamily.validate()) {\r\n throw \"References are broken in family structure!\";\r\n }\r\n\r\n _data.logicalFamily = logicalFamily;\r\n _data.maximumId = maximumId;\r\n\r\n return true;\r\n }\r\n\r\n function getLogicalFamily() {\r\n return _data.logicalFamily;\r\n }\r\n\r\n function getMaximumId() {\r\n return _data.maximumId;\r\n }\r\n\r\n return {\r\n process: process,\r\n getLogicalFamily: getLogicalFamily,\r\n getMaximumId: getMaximumId\r\n };\r\n};\r\n","export default function BaseTransformer(debug) {\r\n this.debug = debug;\r\n};\r\n\r\nBaseTransformer.prototype.validate = function (logicalFamily, strongValidate) {\r\n /* test consistency of references in family tree */\r\n if (!logicalFamily.validate()) {\r\n throw \"Family structure failed to pass validation!\";\r\n }\r\n\r\n logicalFamily.loop(this, function (famItemId, famItem) {\r\n\r\n logicalFamily.loopChildren(this, famItemId, function (childid, child, level) {\r\n if (child.level === null || famItem.level === null || (strongValidate ? child.level != famItem.level + 1 : child.level <= famItem.level)) {\r\n throw \"Family tree is broken. Children/Parents or levels mismatch!\";\r\n }\r\n return logicalFamily.SKIP;\r\n });\r\n });\r\n};\r\n","import Polyline from '../graphics/structs/Polyline';\r\nimport MoveSegment from '../graphics/structs/MoveSegment';\r\nimport LineSegment from '../graphics/structs/LineSegment';\r\nimport { Visibility } from '../enums';\r\nimport BaseConnectorBundle from './BaseConnectorBundle';\r\n\r\nexport default function MatrixConnectorBundle(isChildren, items, matrixNodeId, connectionId, matrixWidth) {\r\n this.isChildren = isChildren;\r\n this.items = items;\r\n this.len = items.length;\r\n this.matrixNodeId = matrixNodeId;\r\n this.connectionId = connectionId;\r\n this.matrixWidth = matrixWidth;\r\n\r\n this.blocksCount = Math.ceil(this.matrixWidth / 2);\r\n this.rowsCount = Math.ceil(this.len / this.matrixWidth);\r\n};\r\n\r\nMatrixConnectorBundle.prototype = new BaseConnectorBundle();\r\n\r\nMatrixConnectorBundle.prototype.trace = function (data, params, options) {\r\n if (this.isChildren) {\r\n this.traceChildrenLayout(data, params, options);\r\n } else {\r\n this.traceParentsLayout(data, params, options);\r\n }\r\n};\r\n\r\nMatrixConnectorBundle.prototype.traceChildrenLayout = function (data, params, options) {\r\n var actualPosition,\r\n forkItems = [];\r\n for (var blockIndex = 0; blockIndex < this.blocksCount; blockIndex += 1) {\r\n var prevMedianPoint = null;\r\n for (var rowIndex = this.rowsCount - 1; rowIndex >= 0; rowIndex -= 1) {\r\n\r\n var leftNodeIndex = this.getNodeIndex(blockIndex, rowIndex, true, true);\r\n var leftNodeId = null;\r\n var leftTreeItemPosition = null;\r\n if (leftNodeIndex < this.len) {\r\n leftNodeId = this.items[leftNodeIndex];\r\n leftTreeItemPosition = params.treeItemsPositions[leftNodeId];\r\n }\r\n\r\n var rightNodeIndex = this.getNodeIndex(blockIndex, rowIndex, false, true);\r\n var rightNodeId = null;\r\n var rightTreeItemPosition = null;\r\n if (rightNodeIndex < this.len) {\r\n rightNodeId = this.items[rightNodeIndex];\r\n rightTreeItemPosition = params.treeItemsPositions[rightNodeId];\r\n }\r\n\r\n var medianPoint = null;\r\n if (medianPoint == null && leftTreeItemPosition != null) {\r\n medianPoint = new this.ConnectorDestination({\r\n id: this.getId(data),\r\n x: leftTreeItemPosition.actualPosition.horizontalCenter() + leftTreeItemPosition.rightMedianOffset,\r\n y: leftTreeItemPosition.horizontalConnectorsShift\r\n });\r\n }\r\n\r\n if (medianPoint == null && rightTreeItemPosition != null) {\r\n medianPoint = new this.ConnectorDestination({\r\n id: this.getId(data),\r\n x: rightTreeItemPosition.actualPosition.horizontalCenter() - rightTreeItemPosition.leftMedianOffset,\r\n y: rightTreeItemPosition.horizontalConnectorsShift\r\n });\r\n }\r\n\r\n if (leftTreeItemPosition != null) {\r\n actualPosition = leftTreeItemPosition.actualPosition;\r\n params.transform.transformPoints(actualPosition.right(), medianPoint.y, medianPoint.x, medianPoint.y,\r\n true, this, function (fromX, fromY, toX, toY) {\r\n var polyline = new Polyline();\r\n polyline.addSegment(new MoveSegment(fromX, fromY));\r\n polyline.addSegment(new LineSegment(toX, toY));\r\n leftNodeId = params.nestedLayoutParentConnectorIds[leftNodeId] || leftNodeId;\r\n data.graph.addEdge(leftNodeId, medianPoint.id, new this.ConnectorEdge(leftNodeId, medianPoint.id, polyline,\r\n null,\r\n leftNodeId,\r\n null, 10/* weight */, null, null, null,\r\n true));\r\n });\r\n }\r\n\r\n if (rightTreeItemPosition != null) {\r\n actualPosition = rightTreeItemPosition.actualPosition;\r\n params.transform.transformPoints(actualPosition.left(), medianPoint.y, medianPoint.x, medianPoint.y,\r\n true, this, function (fromX, fromY, toX, toY) {\r\n var polyline = new Polyline();\r\n polyline.addSegment(new MoveSegment(fromX, fromY));\r\n polyline.addSegment(new LineSegment(toX, toY));\r\n rightNodeId = params.nestedLayoutParentConnectorIds[rightNodeId] || rightNodeId;\r\n data.graph.addEdge(rightNodeId, medianPoint.id, new this.ConnectorEdge(rightNodeId, medianPoint.id, polyline,\r\n null,\r\n rightNodeId,\r\n null, 10/* weight */, null, null, null,\r\n true));\r\n });\r\n }\r\n\r\n if (prevMedianPoint != null && medianPoint != null) {\r\n // draw segment between previous and current row median points\r\n params.transform.transformPoints(prevMedianPoint.x, prevMedianPoint.y, medianPoint.x, medianPoint.y,\r\n true, this, function (fromX, fromY, toX, toY) {\r\n var polyline = new Polyline();\r\n polyline.addSegment(new MoveSegment(fromX, fromY));\r\n polyline.addSegment(new LineSegment(toX, toY));\r\n\r\n data.graph.addEdge(prevMedianPoint.id, medianPoint.id, new this.ConnectorEdge(prevMedianPoint.id, medianPoint.id, polyline,\r\n null,\r\n null,\r\n null, 0/* weight */));\r\n });\r\n }\r\n\r\n if (medianPoint != null) {\r\n prevMedianPoint = medianPoint;\r\n }\r\n }\r\n if (prevMedianPoint != null) {\r\n forkItems.push(new this.ConnectorDestination({\r\n id: prevMedianPoint.id,\r\n bundleid: this.getId(data),\r\n x: prevMedianPoint.x,\r\n y: prevMedianPoint.y,\r\n isSquared: true,\r\n visibility: Visibility.Invisible\r\n }));\r\n }\r\n }\r\n // draw parents fork\r\n var parentTreeItemPosition = params.treeItemsPositions[this.matrixNodeId];\r\n actualPosition = parentTreeItemPosition.actualPosition;\r\n var parentPoint = new this.ConnectorDestination({\r\n id: this.matrixNodeId,\r\n x: actualPosition.horizontalCenter(),\r\n y: actualPosition.top()\r\n });\r\n this.traceFork(data, params, options, parentPoint, forkItems, true, false, 0, options.showExtraArrows);\r\n};\r\n\r\nMatrixConnectorBundle.prototype.traceParentsLayout = function (data, params, options) {\r\n var actualPosition,\r\n forkItems = [];\r\n for (var blockIndex = 0; blockIndex <= this.blocksCount; blockIndex += 1) {\r\n var prevMedianPoint = null;\r\n for (var rowIndex = 0; rowIndex < this.rowsCount; rowIndex += 1) {\r\n\r\n var leftNodeIndex = this.getNodeIndex(blockIndex, rowIndex, true, false);\r\n var leftNodeId = null;\r\n var leftTreeItemPosition = null;\r\n if (leftNodeIndex < this.len) {\r\n leftNodeId = this.items[leftNodeIndex];\r\n leftTreeItemPosition = params.treeItemsPositions[leftNodeId];\r\n }\r\n\r\n var rightNodeIndex = this.getNodeIndex(blockIndex, rowIndex, false, false);\r\n var rightNodeId = null;\r\n var rightTreeItemPosition = null;\r\n if (rightNodeIndex < this.len) {\r\n rightNodeId = this.items[rightNodeIndex];\r\n rightTreeItemPosition = params.treeItemsPositions[rightNodeId];\r\n }\r\n\r\n var medianPoint = null;\r\n if (medianPoint == null && leftTreeItemPosition != null) {\r\n medianPoint = new this.ConnectorDestination({\r\n id: this.getId(data),\r\n x: leftTreeItemPosition.actualPosition.horizontalCenter() + leftTreeItemPosition.rightMedianOffset,\r\n y: leftTreeItemPosition.horizontalConnectorsShift\r\n });\r\n }\r\n\r\n if (medianPoint == null && rightTreeItemPosition != null) {\r\n medianPoint = new this.ConnectorDestination({\r\n id: this.getId(data),\r\n x: rightTreeItemPosition.actualPosition.horizontalCenter() - rightTreeItemPosition.leftMedianOffset,\r\n y: rightTreeItemPosition.horizontalConnectorsShift\r\n });\r\n }\r\n\r\n if (leftTreeItemPosition != null) {\r\n actualPosition = leftTreeItemPosition.actualPosition;\r\n params.transform.transformPoints(actualPosition.right(), medianPoint.y, medianPoint.x, medianPoint.y,\r\n true, this, function (fromX, fromY, toX, toY) {\r\n var polyline = new Polyline();\r\n polyline.addSegment(new MoveSegment(fromX, fromY));\r\n polyline.addSegment(new LineSegment(toX, toY));\r\n leftNodeId = params.nestedLayoutBottomConnectorIds[leftNodeId] || leftNodeId;\r\n data.graph.addEdge(leftNodeId, medianPoint.id, new this.ConnectorEdge(leftNodeId, medianPoint.id, polyline,\r\n leftNodeId,\r\n null,\r\n null, 10/* weight */, null, null, null,\r\n true));\r\n });\r\n }\r\n\r\n if (rightTreeItemPosition != null) {\r\n actualPosition = rightTreeItemPosition.actualPosition;\r\n params.transform.transformPoints(actualPosition.left(), medianPoint.y, medianPoint.x, medianPoint.y,\r\n true, this, function (fromX, fromY, toX, toY) {\r\n var polyline = new Polyline();\r\n polyline.addSegment(new MoveSegment(fromX, fromY));\r\n polyline.addSegment(new LineSegment(toX, toY));\r\n\r\n rightNodeId = params.nestedLayoutBottomConnectorIds[rightNodeId] || rightNodeId;\r\n data.graph.addEdge(rightNodeId, medianPoint.id, new this.ConnectorEdge(rightNodeId, medianPoint.id, polyline,\r\n rightNodeId,\r\n null,\r\n null, 10/* weight */, null, null, null,\r\n true));\r\n });\r\n }\r\n\r\n if (prevMedianPoint != null && medianPoint != null) {\r\n // draw segment between previous and current row median points\r\n params.transform.transformPoints(prevMedianPoint.x, prevMedianPoint.y, medianPoint.x, medianPoint.y,\r\n true, this, function (fromX, fromY, toX, toY) {\r\n var polyline = new Polyline();\r\n polyline.addSegment(new MoveSegment(fromX, fromY));\r\n polyline.addSegment(new LineSegment(toX, toY));\r\n\r\n data.graph.addEdge(prevMedianPoint.id, medianPoint.id, new this.ConnectorEdge(prevMedianPoint.id, medianPoint.id, polyline,\r\n null,\r\n null,\r\n null, 0/* weight */, null, null, null,\r\n true));\r\n });\r\n }\r\n\r\n if (medianPoint != null) {\r\n prevMedianPoint = medianPoint;\r\n }\r\n }\r\n if (prevMedianPoint != null) {\r\n forkItems.push(new this.ConnectorDestination({\r\n id: prevMedianPoint.id,\r\n bundleid: this.getId(data),\r\n x: prevMedianPoint.x,\r\n y: prevMedianPoint.y,\r\n isSquared: true,\r\n visibility: Visibility.Invisible\r\n }));\r\n }\r\n }\r\n // draw parents fork\r\n var parentTreeItemPosition = params.treeItemsPositions[this.matrixNodeId];\r\n actualPosition = parentTreeItemPosition.actualPosition;\r\n var parentPoint = new this.ConnectorDestination({\r\n id: this.connectionId,\r\n x: actualPosition.horizontalCenter(),\r\n y: actualPosition.bottom()\r\n });\r\n this.traceFork(data, params, options, parentPoint, forkItems, true, true, 0, options.showExtraArrows);\r\n};\r\n\r\nMatrixConnectorBundle.prototype.getNodeIndex = function (blockIndex, row, isLeft, isChild) {\r\n var result = null,\r\n column;\r\n if (isChild) {\r\n column = blockIndex * 2 + (isLeft ? 0 : 1);\r\n if (this.matrixWidth > column) {\r\n result = row * this.matrixWidth + column;\r\n }\r\n } else {\r\n column = blockIndex * 2 + (isLeft ? -1 : 0);\r\n if (column >= 0 && column < this.matrixWidth) {\r\n result = row * this.matrixWidth + column;\r\n }\r\n }\r\n return result;\r\n};\r\n\r\n","import Rect from '../../../graphics/structs/Rect';\r\nimport { VerticalAlignmentType, Visibility, GroupByType, AdviserPlacementType } from '../../../enums';\r\nimport TreeItemPosition from '../../../models/TreeItemPosition';\r\n\r\nexport default function MatrixLayout(items, hideParentConnection, hideChildrenConnection) {\r\n this.items = items;\r\n this.hideParentConnection = hideParentConnection;\r\n this.hideChildrenConnection = hideChildrenConnection;\r\n\r\n this.data = {\r\n columns: [],\r\n rows: []\r\n };\r\n};\r\n\r\nMatrixLayout.prototype.loop = function (thisArg, onItem) {\r\n if(onItem != null) {\r\n for(var index = 0, len = this.items.length; index < len; index+=1) {\r\n var item = this.items[index];\r\n\r\n onItem.call(thisArg, item, 0);\r\n }\r\n }\r\n};\r\n\r\nMatrixLayout.prototype.Column = function () {\r\n this.depth = 0;\r\n this.offset = 0;\r\n this.leftPadding = 0;\r\n this.rightPadding = 0;\r\n this.layoutDirection = AdviserPlacementType.Left;\r\n};\r\n\r\nMatrixLayout.prototype.Row = function () {\r\n this.depth = 0;\r\n this.offset = 0;\r\n this.horizontalConnectorsDepth = 0;\r\n this.minimalDepth = null;\r\n this.dotsDepth = null;\r\n};\r\n\r\nMatrixLayout.prototype.getMatrixWidth = function (maximumColumnsInMatrix, len) {\r\n return Math.min(maximumColumnsInMatrix, Math.ceil(Math.sqrt(len)));\r\n};\r\n\r\nMatrixLayout.prototype.measure = function (levelVisibility, isCursor, isSelected, treeItemTemplate, treeItemsPositions, options) {\r\n var data = {\r\n columns: [],\r\n rows: []\r\n };\r\n\r\n this.measureColumns(data, this.items, treeItemsPositions, options);\r\n this.measureRows(data, this.items, treeItemsPositions, options);\r\n\r\n this.data = data;\r\n\r\n var treeItemPosition = new TreeItemPosition();\r\n treeItemPosition.actualVisibility = Visibility.Normal;\r\n treeItemPosition.actualSize = this.getLayoutSize(data);\r\n return treeItemPosition;\r\n};\r\n\r\nMatrixLayout.prototype.measureColumns = function (data, items, treeItemsPositions, options) {\r\n var column,\r\n index, len,\r\n maximumColumns = this.getMatrixWidth(options.maximumColumnsInMatrix, items.length);\r\n for (index = 0, len = items.length; index < len; index += 1) {\r\n var treeItem = items[index];\r\n var treeItemId = treeItem.id;\r\n var treeItemPosition = treeItemsPositions[treeItemId];\r\n\r\n var horizontalPadding = options.intervals[treeItemPosition.actualVisibility] / 2;\r\n\r\n var columnIndex = index % maximumColumns;\r\n column = data.columns[columnIndex];\r\n if (column == null) {\r\n column = new this.Column();\r\n column.layoutDirection = columnIndex % 2 ? AdviserPlacementType.Right : AdviserPlacementType.Left;\r\n data.columns[columnIndex] = column;\r\n }\r\n var itemWidth = horizontalPadding + treeItemPosition.actualSize.width + horizontalPadding;\r\n column.depth = Math.max(column.depth, itemWidth);\r\n }\r\n\r\n var arrowTipLength = options.linesWidth * 8;\r\n\r\n\r\n var offset = 0;\r\n for (index = 0, len = data.columns.length; index < len; index += 1) {\r\n column = data.columns[index];\r\n\r\n\r\n if (index % 2 == 0) {\r\n switch (options.arrowsDirection) {\r\n case GroupByType.Parents:\r\n column.leftPadding = this.hideChildrenConnection ? 0 : arrowTipLength;\r\n column.rightPadding = 0;\r\n break;\r\n case GroupByType.Children:\r\n column.leftPadding = 0;\r\n column.rightPadding = this.hideParentConnection ? 0 : arrowTipLength;\r\n break;\r\n }\r\n } else {\r\n switch (options.arrowsDirection) {\r\n case GroupByType.Parents:\r\n column.leftPadding = 0;\r\n column.rightPadding = this.hideChildrenConnection ? 0 : arrowTipLength;\r\n break;\r\n case GroupByType.Children:\r\n column.leftPadding = this.hideParentConnection ? 0 : arrowTipLength;\r\n column.rightPadding = 0;\r\n break;\r\n }\r\n }\r\n\r\n column.offset = offset + column.leftPadding + column.depth / 2;\r\n\r\n offset = column.offset + column.depth / 2 + column.rightPadding;\r\n }\r\n};\r\n\r\nMatrixLayout.prototype.measureRows = function (data, items, treeItemsPositions, options) {\r\n var index, len,\r\n row,\r\n maximumColumns = this.getMatrixWidth(options.maximumColumnsInMatrix, items.length);\r\n for (index = 0, len = items.length; index < len; index += 1) {\r\n var treeItem = items[index];\r\n var treeItemId = treeItem.id;\r\n var treeItemPosition = treeItemsPositions[treeItemId];\r\n\r\n var rowIndex = Math.floor(index / maximumColumns);\r\n var verticalPadding = options.shifts[treeItemPosition.actualVisibility] / 2;\r\n\r\n row = data.rows[rowIndex];\r\n if (row == null) {\r\n row = new this.Row();\r\n data.rows[rowIndex] = row;\r\n }\r\n row.depth = Math.max(row.depth, verticalPadding + treeItemPosition.actualSize.height + verticalPadding);\r\n\r\n switch (treeItemPosition.actualVisibility) {\r\n case Visibility.Dot:\r\n case Visibility.Line:\r\n case Visibility.Invisible:\r\n row.dotsDepth = !row.dotsDepth ? treeItemPosition.actualSize.height : Math.min(row.dotsDepth, treeItemPosition.actualSize.height);\r\n break;\r\n default:\r\n row.minimalDepth = !row.minimalDepth ? treeItemPosition.actualSize.height : Math.min(row.minimalDepth, treeItemPosition.actualSize.height);\r\n break;\r\n }\r\n }\r\n\r\n var offset = 0;\r\n for (index = 0, len = data.rows.length; index < len; index += 1) {\r\n row = data.rows[index];\r\n\r\n row.offset = offset + row.depth / 2;\r\n offset = row.offset + row.depth / 2;\r\n\r\n if (row.minimalDepth == null) {\r\n row.minimalDepth = row.depth;\r\n }\r\n if (row.dotsDepth != null && row.dotsDepth > row.minimalDepth) {\r\n row.minimalDepth = row.dotsDepth;\r\n }\r\n\r\n switch (options.verticalAlignment) {\r\n case VerticalAlignmentType.Top:\r\n row.horizontalConnectorsDepth = row.minimalDepth / 2.0;\r\n break;\r\n case VerticalAlignmentType.Middle:\r\n row.horizontalConnectorsDepth = row.depth / 2.0;\r\n break;\r\n case VerticalAlignmentType.Bottom:\r\n row.horizontalConnectorsDepth = row.depth - row.minimalDepth / 2.0;\r\n break;\r\n }\r\n }\r\n};\r\n\r\nMatrixLayout.prototype.getLayoutSize = function (data) {\r\n return new Rect(0, 0, Math.round(this.getLayoutWidth(data)), Math.round(this.getLayoutHeight(data)));\r\n};\r\n\r\nMatrixLayout.prototype.getLayoutWidth = function (data) {\r\n var result = 0,\r\n length = data.columns.length;\r\n if (length > 0) {\r\n var lastColumn = data.columns[length - 1];\r\n result = lastColumn.offset + lastColumn.depth / 2 + lastColumn.rightPadding;\r\n }\r\n return result;\r\n};\r\n\r\nMatrixLayout.prototype.getLayoutHeight = function (data) {\r\n var result = 0,\r\n length = data.rows.length;\r\n if (length > 0) {\r\n var lastRow = data.rows[length - 1];\r\n result = lastRow.offset + lastRow.depth / 2;\r\n }\r\n return result;\r\n};\r\n\r\nMatrixLayout.prototype.arrange = function (thisArg, parentPosition, layoutDirection, treeItemsPositions, options, onItemPositioned) {\r\n if (onItemPositioned != null) {\r\n var maximumColumns = this.getMatrixWidth(options.maximumColumnsInMatrix, this.items.length);\r\n for (var index = 0, len = this.items.length; index < len; index += 1) {\r\n var treeItem = this.items[index],\r\n treeItemId = treeItem.id;\r\n\r\n var columnIndex = index % maximumColumns;\r\n var column = this.data.columns[columnIndex];\r\n\r\n var rowIndex = Math.floor(index / maximumColumns);\r\n var row = this.data.rows[rowIndex];\r\n\r\n var treeItemPosition = treeItemsPositions[treeItemId];\r\n\r\n var actualPosition = this.getItemPosition(treeItemPosition.actualVisibility, column, row, treeItemPosition.actualSize, options.verticalAlignment);\r\n actualPosition.translate(parentPosition.x, parentPosition.y);\r\n\r\n treeItemPosition = {\r\n ...treeItemPosition,\r\n actualPosition,\r\n horizontalConnectorsShift: parentPosition.y + row.offset - row.depth / 2 + row.horizontalConnectorsDepth,\r\n leftMedianOffset: column.depth / 2 + column.leftPadding,\r\n rightMedianOffset: column.depth / 2 + column.rightPadding,\r\n topConnectorShift: row.depth / 2,\r\n bottomConnectorShift: row.depth / 2\r\n }; \r\n\r\n onItemPositioned.call(thisArg, treeItemId, treeItemPosition, column.layoutDirection);\r\n }\r\n }\r\n};\r\n\r\nMatrixLayout.prototype.getItemPosition = function (visibility, column, row, size, verticalAlignment) {\r\n var itemShift = 0;\r\n\r\n switch (visibility) {\r\n case Visibility.Normal:\r\n switch (verticalAlignment) {\r\n case VerticalAlignmentType.Top:\r\n itemShift = 0;\r\n break;\r\n case VerticalAlignmentType.Middle:\r\n itemShift = (row.depth - size.height) / 2.0;\r\n break;\r\n case VerticalAlignmentType.Bottom:\r\n itemShift = row.depth - size.height;\r\n break;\r\n }\r\n break;\r\n case Visibility.Dot:\r\n case Visibility.Line:\r\n case Visibility.Invisible:\r\n itemShift = row.horizontalConnectorsDepth - size.height / 2.0;\r\n break;\r\n }\r\n\r\n return new Rect(column.offset - size.width / 2, row.offset - row.depth / 2 + itemShift, size.width, size.height);\r\n};","import Rect from '../../../graphics/structs/Rect';\r\nimport { Visibility, GroupByType, AdviserPlacementType } from '../../../enums';\r\nimport TreeItemPosition from '../../../models/TreeItemPosition';\r\n\r\nexport default function HorizontalLayout(items, hideParentConnection, hideChildrenConnection) {\r\n this.items = items;\r\n this.hideParentConnection = hideParentConnection;\r\n this.hideChildrenConnection = hideChildrenConnection;\r\n\r\n this.data = {\r\n columns: [],\r\n row: null\r\n };\r\n};\r\n\r\nHorizontalLayout.prototype.loop = function (thisArg, onItem) {\r\n if(onItem != null) {\r\n for(var index = 0, len = this.items.length; index < len; index+=1) {\r\n var item = this.items[index];\r\n\r\n onItem.call(thisArg, item, 0);\r\n }\r\n }\r\n};\r\n\r\nHorizontalLayout.prototype.Column = function () {\r\n this.depth = 0;\r\n this.offset = 0;\r\n this.parentsPadding = 0;\r\n this.childrenPadding = 0;\r\n};\r\n\r\nHorizontalLayout.prototype.Row = function () {\r\n this.depth = 0;\r\n this.offset = 0;\r\n this.minimalDepth = null;\r\n this.dotsDepth = null;\r\n};\r\n\r\nHorizontalLayout.prototype.measure = function (levelVisibility, isCursor, isSelected, treeItemTemplate, treeItemsPositions, options) {\r\n var data = {\r\n columns: [],\r\n row: null\r\n };\r\n\r\n this.measureColumns(data, this.items, treeItemsPositions, options);\r\n this.measureRow(data, this.items, treeItemsPositions, options);\r\n\r\n this.data = data;\r\n\r\n var treeItemPosition = new TreeItemPosition();\r\n treeItemPosition.actualVisibility = Visibility.Normal;\r\n treeItemPosition.actualSize = this.getLayoutSize(data);\r\n return treeItemPosition;\r\n};\r\n\r\nHorizontalLayout.prototype.measureColumns = function (data, items, treeItemsPositions, options) {\r\n var column;\r\n var offset = 0;\r\n var arrowTipLength = options.linesWidth * 8;\r\n\r\n for(var index = 0; index < items.length; index+=1) {\r\n var treeItem = items[index];\r\n var treeItemId = treeItem.id;\r\n var treeItemPosition = treeItemsPositions[treeItemId];\r\n\r\n column = data.columns[index];\r\n if (column == null) {\r\n column = new this.Column();\r\n data.columns[index] = column;\r\n }\r\n column.depth = treeItemPosition.actualSize.width;\r\n var padding = options.intervals[treeItemPosition.actualVisibility] / 2;\r\n if(index != 0) {\r\n column.parentsPadding = padding;\r\n }\r\n if(index != items.length - 1) {\r\n column.childrenPadding = padding;\r\n }\r\n\r\n switch (options.arrowsDirection) {\r\n case GroupByType.Parents:\r\n if(index != items.length - 1) {\r\n column.childrenPadding += this.hideChildrenConnection ? 0 : arrowTipLength;\r\n }\r\n break;\r\n case GroupByType.Children:\r\n if(index != 0) {\r\n column.parentsPadding += this.hideParentConnection ? 0 : arrowTipLength;\r\n }\r\n break;\r\n }\r\n\r\n column.offset = offset + column.parentsPadding + column.depth / 2;\r\n\r\n offset = column.offset + column.depth / 2 + column.childrenPadding;\r\n }\r\n};\r\n\r\nHorizontalLayout.prototype.measureRow = function (data, items, treeItemsPositions, options) {\r\n data.row = new this.Row();\r\n var row = data.row;\r\n for(var index = 0; index < items.length; index+=1) {\r\n var treeItem = items[index];\r\n var treeItemId = treeItem.id;\r\n var treeItemPosition = treeItemsPositions[treeItemId];\r\n var verticalPadding = options.shifts[treeItemPosition.actualVisibility] / 2;\r\n row.depth = Math.max(row.depth, verticalPadding + treeItemPosition.actualSize.height + verticalPadding);\r\n\r\n switch (treeItemPosition.actualVisibility) {\r\n case Visibility.Dot:\r\n case Visibility.Line:\r\n case Visibility.Invisible:\r\n row.dotsDepth = !row.dotsDepth ? treeItemPosition.actualSize.height : Math.min(row.dotsDepth, treeItemPosition.actualSize.height);\r\n break;\r\n default:\r\n row.minimalDepth = !row.minimalDepth ? treeItemPosition.actualSize.height : Math.min(row.minimalDepth, treeItemPosition.actualSize.height);\r\n break;\r\n }\r\n };\r\n \r\n row.offset = row.depth / 2;\r\n\r\n if (row.minimalDepth == null) {\r\n row.minimalDepth = row.depth;\r\n }\r\n if (row.dotsDepth != null && row.dotsDepth > row.minimalDepth) {\r\n row.minimalDepth = row.dotsDepth;\r\n }\r\n};\r\n\r\nHorizontalLayout.prototype.getLayoutSize = function (data) {\r\n var width = 0,\r\n length = data.columns.length;\r\n if (length > 0) {\r\n var lastColumn = data.columns[length - 1];\r\n width = lastColumn.offset + lastColumn.depth / 2 + lastColumn.childrenPadding;\r\n }\r\n var height = data.row.offset + data.row.depth / 2;\r\n\r\n return new Rect(0, 0, Math.round(width), Math.round(height));\r\n};\r\n\r\nHorizontalLayout.prototype.arrange = function (thisArg, parentPosition, layoutDirection, treeItemsPositions, options, onItemPositioned) {\r\n if (onItemPositioned != null) {\r\n for(var index = 0; index < this.items.length; index+=1) {\r\n var treeItem = this.items[index];\r\n var treeItemId = treeItem.id;\r\n\r\n var column = this.data.columns[index];\r\n var row = this.data.row;\r\n\r\n var treeItemPosition = treeItemsPositions[treeItemId];\r\n\r\n var offset = column.offset;\r\n if(layoutDirection == AdviserPlacementType.Left) {\r\n offset = parentPosition.width - column.offset;\r\n } \r\n\r\n var actualPosition = this.getItemPosition(treeItemPosition.actualVisibility, offset, row, treeItemPosition.actualSize, options);\r\n actualPosition.translate(parentPosition.x, parentPosition.y);\r\n\r\n treeItemPosition = {\r\n ...treeItemPosition,\r\n actualPosition,\r\n horizontalConnectorsShift: parentPosition.y + row.offset - row.depth / 2 + row.offset,\r\n leftMedianOffset: column.depth / 2 + (layoutDirection == AdviserPlacementType.Left ? column.childrenPadding : column.parentsPadding),\r\n rightMedianOffset: column.depth / 2 + (layoutDirection == AdviserPlacementType.Left ? column.parentsPadding : column.childrenPadding),\r\n topConnectorShift: row.depth / 2,\r\n bottomConnectorShift: row.depth / 2\r\n }; \r\n\r\n onItemPositioned.call(thisArg, treeItemId, treeItemPosition);\r\n };\r\n }\r\n};\r\n\r\nHorizontalLayout.prototype.getItemPosition = function (visibility, offset, row, size, options) {\r\n return new Rect(offset - size.width / 2, row.offset - size.height / 2.0, size.width, size.height);\r\n};","import BaseTransformer from './BaseTransformer';\r\nimport FamilyItem from '../../../models/FamilyItem';\r\nimport { GroupByType } from '../../../enums';\r\nimport MatrixConnectorBundle from '../../../connectors/MatrixConnectorBundle';\r\nimport HorizontalConnectorBundle from '../../../connectors/HorizontalConnectorBundle';\r\nimport MatrixLayout from '../../transformations/layouts/MatrixLayout';\r\nimport HorizontalLayout from '../../transformations/layouts/HorizontalLayout';\r\n\r\nexport default function FamilyMatrixesExtractor(debug) {\r\n this.parent = BaseTransformer.prototype;\r\n this.parent.constructor.apply(this, arguments);\r\n};\r\n\r\nFamilyMatrixesExtractor.prototype = new BaseTransformer();\r\n\r\nFamilyMatrixesExtractor.prototype.extract = function (options, getConfig, logicalFamily, maximumId) {\r\n var layouts = {},\r\n nestedLayoutParentConnectorIds = {},\r\n nestedLayoutBottomConnectorIds = {},\r\n bundles = [];\r\n\r\n if (logicalFamily.hasNodes() > 0) {\r\n /* find nodes having the same parent and child nodes and replace them with matrix placeholder node */\r\n if (options.enableMatrixLayout) {\r\n logicalFamily.groupBy(this, Math.max(2, options.minimumMatrixSize), function (parentIds, childIds, groups) {\r\n\r\n var nodes = [];\r\n for(var groupIndex = 0; groupIndex < groups.length; groupIndex+=1) {\r\n var group = groups[groupIndex];\r\n\r\n if(group.length == 1) {\r\n nodes.push(group[0].node);\r\n } else {\r\n maximumId += 1;\r\n var id = maximumId;\r\n maximumId += 1;\r\n var id2 = maximumId;\r\n\r\n var horizontalNode = new FamilyItem({\r\n id: id,\r\n isVisible: false,\r\n isActive: false,\r\n itemConfig: { title: \"dummy #\" + id, description: \"This is item used as aggregator of horizontally grouped nodes.\" },\r\n hideParentConnection: true,\r\n hideChildrenConnection: true\r\n }); \r\n \r\n nestedLayoutParentConnectorIds[id] = group[0].id; /* id is needed for connectors graph */\r\n nestedLayoutBottomConnectorIds[id] = group[group.length - 1].id; /* id is needed for connectors graph */\r\n\r\n for(var index = 0; index < group.length - 1; index+=1) {\r\n var fromNode = group[index];\r\n var toNode = group[index+1];\r\n bundles.push(new HorizontalConnectorBundle(toNode.id, fromNode.id));\r\n }\r\n\r\n for (var index = 0; index < group.length; index += 1) {\r\n var node = group[index];\r\n logicalFamily.removeNode(node.id);\r\n }\r\n\r\n var ids = nodes.map(node => node.id);\r\n if (parentIds.length > 0) {\r\n logicalFamily.add(parentIds, id, horizontalNode);\r\n horizontalNode.hideParentConnection = false;\r\n } else {\r\n logicalFamily.add(null, id, horizontalNode);\r\n }\r\n \r\n if (childIds.length > 0) {\r\n for(var index = 0; index < childIds.length; index+=1) {\r\n logicalFamily.adopt([id], childIds[index]);\r\n }\r\n horizontalNode.hideChildrenConnection = false;\r\n } \r\n\r\n layouts[id] = new HorizontalLayout(group.map(item => item.node), horizontalNode.hideParentConnection, horizontalNode.hideChildrenConnection);\r\n\r\n nodes.push(horizontalNode);\r\n }\r\n }\r\n\r\n maximumId += 1;\r\n var id = maximumId;\r\n maximumId += 1;\r\n var id2 = maximumId;\r\n\r\n var matrixNode = new FamilyItem({\r\n id: id,\r\n isVisible: false,\r\n isActive: false,\r\n itemConfig: { title: \"dummy #\" + id, description: \"This is item used as aggregator of matrixed nodes.\" },\r\n hideParentConnection: true,\r\n hideChildrenConnection: true\r\n });\r\n\r\n nestedLayoutBottomConnectorIds[id] = id2; /* id2 is needed for connectors graph */\r\n\r\n for (var index = 0, len = nodes.length; index < len; index += 1) {\r\n var node = nodes[index];\r\n logicalFamily.removeNode(node.id);\r\n }\r\n\r\n var ids = nodes.map(node => node.id);\r\n if (parentIds.length > 0 ) {\r\n logicalFamily.add(parentIds, id, matrixNode);\r\n matrixNode.hideParentConnection = false;\r\n bundles.push(new MatrixConnectorBundle(true, ids, id, id, this.getMatrixWidth(options.maximumColumnsInMatrix, ids.length)));\r\n } else {\r\n logicalFamily.add(null, id, matrixNode);\r\n }\r\n\r\n if (childIds.length > 0) {\r\n for(var index = 0; index < childIds.length; index+=1) {\r\n logicalFamily.adopt([id], childIds[index]);\r\n }\r\n matrixNode.hideChildrenConnection = false;\r\n bundles.push(new MatrixConnectorBundle(false, ids, id, id2, this.getMatrixWidth(options.maximumColumnsInMatrix, ids.length)));\r\n }\r\n layouts[id] = new MatrixLayout(nodes, matrixNode.hideParentConnection, matrixNode.hideChildrenConnection);\r\n }, function(items) {\r\n var result = null;\r\n var count = 0;\r\n for(var index = 0; index < items.length; index+=1) {\r\n var item = items[index];\r\n var itemConfig = getConfig(item.id);\r\n if(itemConfig != null) {\r\n if(count > 0) {\r\n result = -1;\r\n break; \r\n }\r\n count++;\r\n if(itemConfig.addToMatrix) {\r\n result = itemConfig.matrixId;\r\n } else {\r\n result = -1;\r\n break;\r\n }\r\n }\r\n }\r\n if(count == 0) {\r\n result = -1;\r\n }\r\n return result;\r\n }\r\n );\r\n }\r\n }\r\n return { maximumId, nestedLayoutParentConnectorIds, nestedLayoutBottomConnectorIds, layouts, bundles };\r\n};\r\n\r\nFamilyMatrixesExtractor.prototype.getMatrixWidth = function (maximumColumnsInMatrix, len) {\r\n return Math.min(maximumColumnsInMatrix, Math.ceil(Math.sqrt(len)));\r\n};","import FamilyMatrixesExtractor from './familyTransformations/FamilyMatrixesExtractor';\r\n\r\nexport default function ExtractNestedLayoutsTask(extractNestedLayoutsOptionTask, bindFamilyConnectorsTask) {\r\n var _data = {\r\n maximumId: null, /* maximum of OrgItem.id */\r\n logicalFamily: null\r\n },\r\n _familyMatrixesExtractor = new FamilyMatrixesExtractor(false);\r\n\r\n function process(debug) {\r\n var logicalFamily = bindFamilyConnectorsTask.getLogicalFamily(),\r\n maximumId = bindFamilyConnectorsTask.getMaximumId(),\r\n extractNestedLayoutsOptions = extractNestedLayoutsOptionTask.getOptions();\r\n\r\n var options = {\r\n enableMatrixLayout: extractNestedLayoutsOptions.enableMatrixLayout,\r\n minimumMatrixSize: extractNestedLayoutsOptions.minimumMatrixSize,\r\n maximumColumnsInMatrix: extractNestedLayoutsOptions.maximumColumnsInMatrix\r\n };\r\n\r\n logicalFamily = logicalFamily.clone();\r\n var { maximumId, layouts, nestedLayoutParentConnectorIds, nestedLayoutBottomConnectorIds, bundles } = _familyMatrixesExtractor.extract(options, extractNestedLayoutsOptionTask.getConfig, logicalFamily, maximumId);\r\n\r\n _data.logicalFamily = logicalFamily;\r\n _data.maximumId = maximumId;\r\n _data.layouts = layouts;\r\n _data.nestedLayoutParentConnectorIds = nestedLayoutParentConnectorIds;\r\n _data.nestedLayoutBottomConnectorIds = nestedLayoutBottomConnectorIds;\r\n _data.bundles = bundles;\r\n\r\n return true;\r\n }\r\n\r\n function getLogicalFamily() {\r\n return _data.logicalFamily;\r\n }\r\n\r\n function getLayouts() {\r\n return _data.layouts;\r\n }\r\n\r\n function getNestedLayoutParentConnectorIds() {\r\n return _data.nestedLayoutParentConnectorIds;\r\n }\r\n\r\n function getNestedLayoutBottomConnectorIds() {\r\n return _data.nestedLayoutBottomConnectorIds;\r\n }\r\n\r\n function getBundles() {\r\n return _data.bundles;\r\n }\r\n\r\n function getMaximumId() {\r\n return _data.maximumId;\r\n }\r\n\r\n return {\r\n process: process,\r\n getLogicalFamily: getLogicalFamily,\r\n getMaximumId: getMaximumId,\r\n getLayouts: getLayouts,\r\n getNestedLayoutParentConnectorIds: getNestedLayoutParentConnectorIds,\r\n getNestedLayoutBottomConnectorIds: getNestedLayoutBottomConnectorIds,\r\n getBundles: getBundles\r\n };\r\n};\r\n","import BaseTransformer from './BaseTransformer';\r\nimport FamilyItem from '../../../models/FamilyItem';\r\nimport { GroupByType } from '../../../enums';\r\nimport { isEmptyObject } from '../../../common';\r\n\r\nexport default function FamilyNormalizer(debug) {\r\n this.parent = BaseTransformer.prototype;\r\n this.parent.constructor.apply(this, arguments);\r\n};\r\n\r\nFamilyNormalizer.prototype = new BaseTransformer();\r\n\r\nFamilyNormalizer.prototype.normalize = function (options, logicalFamily, maximumId) {\r\n if (logicalFamily.hasNodes() > 0) {\r\n\r\n /* create temp family without labels and invisible node used to bind connections and eliminate many to many relations */\r\n var toBeRemoved = [];\r\n logicalFamily.loop(this, function(itemId, item) {\r\n if(item.isLevelNeutral) {\r\n toBeRemoved.push(itemId);\r\n }\r\n })\r\n var logicalFamily2 = logicalFamily;\r\n if(toBeRemoved.length > 0) {\r\n logicalFamily2 = logicalFamily.clone();\r\n for(var index = 0; index < toBeRemoved.length; index+=1) {\r\n var itemId = toBeRemoved[index];\r\n var parents = [];\r\n logicalFamily2.loopParents(this, itemId, function(parentId, parent, levelIndex) {\r\n if(levelIndex == 0) {\r\n parents.push(parentId);\r\n return;\r\n }\r\n return true;\r\n });\r\n var children = [];\r\n if(parents.length > 0) {\r\n logicalFamily2.loopChildren(this, itemId, function(childId, child, levelIndex) {\r\n if(levelIndex == 0) {\r\n children.push(childId);\r\n return;\r\n }\r\n return true;\r\n });\r\n }\r\n logicalFamily2.removeNode(itemId);\r\n\r\n if(children.length > 0) {\r\n for(var childIndex = 0; childIndex < children.length; childIndex+=1) {\r\n var childId = children[childIndex];\r\n logicalFamily2.adopt(parents, childId);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /* Distribute Temp Family nodes by levels. Item levels aligned to bottom. */\r\n logicalFamily2.loopLevels(this, options.groupByType == GroupByType.Parents, function (itemId, item, levelIndex) {\r\n item.level = levelIndex;\r\n });\r\n\r\n if (options.alignBylevels) {\r\n /* Distribute optimized FamilyItem-s by levels. The original family items visible to user should keep their levels after all transformations */\r\n this.resortItemsBylevels(logicalFamily);\r\n } else {\r\n logicalFamily.loopLevels(this, options.groupByType == GroupByType.Parents, function (itemid, item, levelIndex) {\r\n item.level = levelIndex;\r\n });\r\n }\r\n\r\n if (this.debug) {\r\n this.validate(logicalFamily, false);\r\n }\r\n\r\n /* Fill in items between parent/child relations having gaps in levels */\r\n this.fillInItems(logicalFamily,\r\n function (famItem) {\r\n var result;\r\n\r\n maximumId += 1;\r\n\r\n result = new FamilyItem({\r\n id: maximumId,\r\n levelGravity: GroupByType.Children,\r\n isVisible: false,\r\n isActive: false,\r\n itemConfig: { title: \"extension #\" + maximumId, description: \"This is item used to fill gaps in levels.\" }\r\n });\r\n\r\n return result;\r\n } //ignore jslint\r\n );\r\n\r\n if (this.debug) {\r\n this.validate(logicalFamily, true);\r\n }\r\n }\r\n return maximumId;\r\n};\r\n\r\nFamilyNormalizer.prototype.resortItemsBylevels = function (logicalFamily) {\r\n var itemsAtLevels = [],\r\n minimumLevel = null,\r\n maximumLevel = null,\r\n index, itemsAtLevel;\r\n\r\n logicalFamily.loop(this, function (famItemId, famItem) {\r\n famItem.originalLevel = famItem.level;\r\n famItem.level = null;\r\n if (famItem.originalLevel != null) {\r\n if (!itemsAtLevels[famItem.originalLevel]) {\r\n itemsAtLevels[famItem.originalLevel] = {};\r\n }\r\n itemsAtLevels[famItem.originalLevel][famItemId] = famItem;\r\n\r\n minimumLevel = minimumLevel != null ? Math.min(famItem.originalLevel, minimumLevel) : famItem.originalLevel;\r\n maximumLevel = maximumLevel != null ? Math.max(famItem.originalLevel, maximumLevel) : famItem.originalLevel;\r\n }\r\n });\r\n\r\n /* assign levels*/\r\n for (index = minimumLevel; index <= maximumLevel; index += 1) {\r\n itemsAtLevel = itemsAtLevels[index];\r\n\r\n this.setLevelsForItems(itemsAtLevel, logicalFamily);\r\n }\r\n\r\n logicalFamily.loopTopo(this, function (famItemId, famItem, position) {\r\n var level;\r\n if (famItem.levelGravity == GroupByType.Parents) {\r\n level = null;\r\n logicalFamily.loopParents(this, famItemId, function (childItemId, childFamItem, levelIndex) {\r\n level = level == null ? childFamItem.level + 1 : Math.max(childFamItem.level + 1, level);\r\n return logicalFamily.SKIP;\r\n }); //ignore jslint\r\n famItem.level = !level ? famItem.level : level;\r\n }\r\n });\r\n};\r\n\r\nFamilyNormalizer.prototype.setLevelsForItems = function (items, logicalFamily) {\r\n var level = 0,\r\n key, famItem,\r\n nextItems;\r\n\r\n for (key in items) {\r\n if (items.hasOwnProperty(key)) {\r\n logicalFamily.loopParents(this, key, function (parentid, parent, levelIndex) {\r\n level = Math.max(parent.level + 1, level);\r\n return logicalFamily.SKIP;\r\n }); //ignore jslint\r\n }\r\n }\r\n\r\n for (key in items) {\r\n if (items.hasOwnProperty(key)) {\r\n famItem = items[key];\r\n famItem.level = level;\r\n }\r\n }\r\n\r\n while (!isEmptyObject(items)) {\r\n nextItems = {};\r\n\r\n for (key in items) {\r\n if (items.hasOwnProperty(key)) {\r\n famItem = items[key];\r\n logicalFamily.loopChildren(this, key, function (childid, child, levelIndex) {\r\n if (child.originalLevel == null || child.isLevelNeutral) {\r\n child.level = child.level == null ? famItem.level + 1 : Math.max(child.level, famItem.level + 1);\r\n nextItems[childid] = child;\r\n }\r\n return logicalFamily.SKIP;\r\n }); //ignore jslint\r\n }\r\n }\r\n items = nextItems;\r\n }\r\n};\r\n\r\nFamilyNormalizer.prototype.fillInItems = function (logicalFamily, createFamItem) {\r\n var bundleItem;\r\n\r\n logicalFamily.loop(this, function (famItemId, famItem) {\r\n var extNeeded = true,\r\n itemsToBundle;\r\n while (extNeeded) {\r\n extNeeded = false;\r\n\r\n /* extend children down */\r\n itemsToBundle = [];\r\n\r\n logicalFamily.loopParents(this, famItemId, function (parentItemId, parentItem, level) {\r\n if (famItem.level - 1 > parentItem.level) {\r\n itemsToBundle.push(parentItemId);\r\n }\r\n return logicalFamily.SKIP;\r\n }); //ignore jslint\r\n\r\n if (itemsToBundle.length > 1) {\r\n bundleItem = createFamItem(famItem);\r\n bundleItem.level = famItem.level - 1;\r\n\r\n bundleItem.hideParentConnection = false;\r\n bundleItem.hideChildrenConnection = false;\r\n\r\n logicalFamily.bundleParents(famItemId, itemsToBundle, bundleItem.id, bundleItem);\r\n\r\n extNeeded = true;\r\n\r\n famItemId = bundleItem.id;\r\n famItem = bundleItem;\r\n }\r\n }\r\n });\r\n\r\n logicalFamily.loop(this, function (famItemId, famItem) {\r\n var extNeeded = true,\r\n itemsToBundle,\r\n isSingleExtension = true;\r\n while (extNeeded) {\r\n extNeeded = false;\r\n\r\n /* extend children down */\r\n itemsToBundle = [];\r\n logicalFamily.loopChildren(this, famItemId, function (childItemId, childItem, level) {\r\n if (famItem.level + 1 < childItem.level) {\r\n itemsToBundle.push(childItemId);\r\n } else {\r\n isSingleExtension = false;\r\n }\r\n return logicalFamily.SKIP;\r\n }); //ignore jslint\r\n\r\n if (itemsToBundle.length > 1) {\r\n bundleItem = createFamItem(famItem);\r\n bundleItem.level = famItem.level + 1;\r\n\r\n if (isSingleExtension) {\r\n bundleItem.hideParentConnection = false;\r\n bundleItem.hideChildrenConnection = false;\r\n }\r\n\r\n logicalFamily.bundleChildren(famItemId, itemsToBundle, bundleItem.id, bundleItem);\r\n\r\n extNeeded = true;\r\n\r\n famItemId = bundleItem.id;\r\n famItem = bundleItem;\r\n }\r\n }\r\n });\r\n\r\n logicalFamily.loop(this, function (famItemId, famItem) {\r\n var extNeeded = true,\r\n itemsToBundle;\r\n while (extNeeded) {\r\n extNeeded = false;\r\n\r\n /* extend children down */\r\n itemsToBundle = [];\r\n\r\n logicalFamily.loopParents(this, famItemId, function (parentItemId, parentItem, level) {\r\n if (famItem.level - 1 > parentItem.level) {\r\n itemsToBundle.push(parentItemId);\r\n }\r\n return logicalFamily.SKIP;\r\n }); //ignore jslint\r\n\r\n if (itemsToBundle.length > 0) {\r\n bundleItem = createFamItem(famItem);\r\n bundleItem.level = famItem.level - 1;\r\n\r\n bundleItem.hideParentConnection = false;\r\n bundleItem.hideChildrenConnection = false;\r\n\r\n logicalFamily.bundleParents(famItemId, itemsToBundle, bundleItem.id, bundleItem);\r\n\r\n extNeeded = true;\r\n\r\n famItemId = bundleItem.id;\r\n famItem = bundleItem;\r\n }\r\n }\r\n });\r\n};","/* 1. Topologically sort _logicalFamily items and assign levels.\r\n 2. Optimize references. Transform M:N relations to M:1:N where it is possible.\r\n 3. Eliminate Many to Many relations. Logical family consists of 1:M and M:1 relations only.\r\n 4. Resort items, so original visible items stay at the same level.\r\n 5. Fill in missed items between levels. So that way we have invisible items between parent/child family items if they have gap between levels.\r\n Such invisible family items have isVisible option set to false.\r\n*/\r\n\r\nimport FamilyNormalizer from './familyTransformations/FamilyNormalizer';\r\n\r\nexport default function NormalizeLogicalFamilyTask(normalizeOptionTask, extractNestedLayoutsTask) {\r\n var _data = {\r\n maximumId: null, /* maximum of OrgItem.id */\r\n logicalFamily: null\r\n },\r\n _familyNormalizer = new FamilyNormalizer(false);\r\n\r\n function process(debug) {\r\n var logicalFamily = extractNestedLayoutsTask.getLogicalFamily(),\r\n maximumId = extractNestedLayoutsTask.getMaximumId(),\r\n normalizeOptions = normalizeOptionTask.getOptions();\r\n\r\n var options = {\r\n groupByType: normalizeOptions.groupByType,\r\n alignBylevels: normalizeOptions.alignBylevels\r\n };\r\n logicalFamily = logicalFamily.clone();\r\n maximumId = _familyNormalizer.normalize(options, logicalFamily, maximumId);\r\n\r\n _data.logicalFamily = logicalFamily;\r\n _data.maximumId = maximumId;\r\n\r\n return true;\r\n }\r\n\r\n function getLogicalFamily() {\r\n return _data.logicalFamily;\r\n }\r\n\r\n function getMaximumId() {\r\n return _data.maximumId;\r\n }\r\n\r\n return {\r\n process: process,\r\n getLogicalFamily: getLogicalFamily,\r\n getMaximumId: getMaximumId\r\n };\r\n};\r\n","export default function FamilyBalanceItem(id, familyId, level) {\r\n this.id = id;\r\n this.familyId = familyId;\r\n this.level = level;\r\n this.childIndex = 0;\r\n}","export default function Slot(itemid) {\r\n this.itemId = itemid; /* if itemId is null then this slot is empty */\r\n this.position = null;\r\n this.balance = 0;\r\n\r\n this.left = {}; /* total number of children at the level on the left side of this slot */\r\n this.right = {}; /* total number of children at the level on the right side of this slot */\r\n this.crossings = {}; /* number of connections crossing this slot from side to side at the level */\r\n};\r\n\r\nSlot.prototype.clone = function (itemid) {\r\n var result = new Slot(itemid),\r\n level;\r\n\r\n for (level in this.left) {\r\n if (this.left.hasOwnProperty(level)) {\r\n result.left[level] = this.left[level];\r\n }\r\n }\r\n for (level in this.right) {\r\n if (this.right.hasOwnProperty(level)) {\r\n result.right[level] = this.right[level];\r\n }\r\n }\r\n for (level in this.crossings) {\r\n if (this.crossings.hasOwnProperty(level)) {\r\n result.crossings[level] = this.crossings[level];\r\n }\r\n }\r\n\r\n result.itemid = itemid;\r\n return result;\r\n};","/* This class transforms normalized logical family into levels of nodes.\r\n The current approach to optimize items placement is to transform family into hierarchy of nodes and order \r\n children of every node in the way minimizing number of intersections between connection lines.\r\n 1. Extract families into _families array of type FamilyItem. Family is sub tree of items logicalFamily. \r\n In order to extract families out of logicalFamily we count from bottom to roots total number of descendants for evry item and then extract \r\n sub hierarchy having minimum number of members. This process is repeated till all nodes are extracted into separate families.\r\n orgPartners - When we extract families we store links to parents in other branches having the same children of \r\n some already extracted item as partner in orgPartners hash\r\n This hash table is used to create links collections between families\r\n The orgTree collection is used to define final org hierarchy used to balance nodes in levels.\r\n 2. Use links in families to build family graph\r\n 3. Find maximum spanning tree of family graph\r\n 4. Since spanning tree is the tree we calculate number of descendants in every branch. So when we join families into one \r\n org chart we sort them taking first child family having maximum number of links to its parent family\r\n sortedFamilies collection\r\n 5. Using sortedFamilies collection we merge roots of families back to primary org chart. The rule of that backward merging is \r\n to find ancestor in target tree having level less then root item of merged family.\r\n this is done without extra collection creation via making changes in orgTree\r\n If family has no links it is added to root of orgTree\r\n 6. Balance organizational chart in order to place items having extra connections close to each other. \r\n Assign every extra link to every pair of parent nodes up to the root.\r\n 7. Scan orgTree hierarchy from root to bottom and balance children using extra links collected from children\r\n So at the top most level we know number of links between children, so we sort them, then number of overlappings between branches should be minimal\r\n Balancing algorithms finds maximum spanning tree in connections between children and groups them from bottom of that tree up to the root\r\n In the way when groups having maximum mutual links placed close to each other.\r\n*/\r\nimport TreeLevels from '../../../algorithms/TreeLevels';\r\nimport LinkedHashItems from '../../../algorithms/LinkedHashItems';\r\nimport Tree from '../../../algorithms/Tree';\r\nimport Graph from '../../../algorithms/Graph';\r\nimport Pile from '../../../algorithms/Pile';\r\nimport SortedList from '../../../algorithms/SortedList';\r\nimport FamilyBalanceItem from './FamilyBalanceItem';\r\nimport Slot from '../../../models/Slot';\r\nimport TreeLevelConnectorStackSize from '../../../models/TreeLevelConnectorStackSize';\r\nimport VerticalConnectorBundle from '../../../connectors/VerticalConnectorBundle';\r\n\r\nexport default function FamilyBalance() {\r\n\r\n};\r\n\r\n//var params = {\r\n// logicalFamily,\r\n// maximumId,\r\n// items\r\n//};\r\nFamilyBalance.prototype.balance = function (params) {\r\n var result = {\r\n maximumId: null,\r\n treeLevels: TreeLevels(),\r\n bundles: [],\r\n connectorStacks: []\r\n };\r\n\r\n var data = {\r\n orgTree: Tree(), /*tree OrgItem */\r\n maximumId: params.maximumId,\r\n orgPartners: {}, /* Creates extra partners collection of relations between visual tree items They are used to draw connectors between items in different branches of organizational chart*/\r\n itemByChildrenKey: {},\r\n minimumLevel: null,\r\n maximumLevel: null\r\n };\r\n\r\n this.createOrgTree(params, data);\r\n\r\n var currentLevelIndex, index = -1;\r\n data.orgTree.loopLevels(this, function (treeItemId, treeItem, levelIndex) {\r\n var familyItem = params.logicalFamily.node(treeItemId);\r\n if (familyItem != null) {\r\n if (currentLevelIndex !== levelIndex) {\r\n currentLevelIndex = levelIndex;\r\n index += 1;\r\n }\r\n result.treeLevels.addItem(index, treeItemId, familyItem);\r\n }\r\n });\r\n\r\n this.recalcLevelsDepth(result.bundles, result.connectorStacks, result.treeLevels, params.logicalFamily);\r\n\r\n result.maximumId = data.maximumId;\r\n\r\n return result;\r\n};\r\n\r\nFamilyBalance.prototype.Family = function (id) {\r\n this.id = null;\r\n this.familyPriority = 1;\r\n this.childFamilies = [];\r\n this.items = [];\r\n\r\n this.links = []; /* array of FamLink(s) */\r\n this.backLinks = []; /* array of FamLink(s) */\r\n\r\n if (arguments.length == 1) {\r\n this.id = id;\r\n }\r\n};\r\n\r\nFamilyBalance.prototype.FamLink = function (fromItem, toItem) {\r\n this.fromItem = fromItem; /* FamilyItem.id */\r\n this.toItem = toItem; /* FamilyItem.id */\r\n};\r\n\r\nFamilyBalance.prototype.createOrgTree = function (params, data) {\r\n var index, len, index2, len2,\r\n familiesGraph, /* Graph */\r\n link, links,\r\n fromFamily,\r\n toFamily,\r\n sortedFamilies = [], sortedFamiliesHash,\r\n attachedFamilies,\r\n familyId,\r\n family,\r\n familyRootItem,\r\n fromItem,\r\n toItem,\r\n rootItem, rootItems, bestRootItem, bestReference,\r\n spanningTree,\r\n extraGravities, grandChildren,\r\n orgItemRoot,\r\n famItemsExtracted,\r\n families = [],\r\n families2;\r\n\r\n if (params.logicalFamily.hasNodes() > 0) {\r\n /* create hash of extracted family items */\r\n famItemsExtracted = {};\r\n\r\n familyId = 0;\r\n families2 = [];\r\n params.logicalFamily.loopRoots(this, function (grandParentId, grandParent) {\r\n //ignore jslint\r\n family = new this.Family(familyId);\r\n /* extractOrgChart method extracts hiearchy of family members starting from grandParent and takes only non extracted family items \r\n * For every extracted item it assigns its familyId, it is used for building families relations graph and finding cross family links\r\n */\r\n this.extractOrgChart(grandParentId, params.logicalFamily, params.primaryParents, data.orgTree, data.orgPartners, data.itemByChildrenKey, famItemsExtracted, family);\r\n families.push(family);\r\n families2.push(family);\r\n familyId += 1;\r\n });\r\n\r\n families2.sort(function (a, b) {\r\n /* sort families by root item level ASC and size DESC */\r\n var aLevel = a.items[0].level,\r\n bLevel = b.items[0].level;\r\n\r\n return aLevel != bLevel ? (aLevel - bLevel) : (b.items.length - a.items.length);\r\n });\r\n\r\n sortedFamilies = [];\r\n sortedFamiliesHash = {};\r\n if (families.length > 0) {\r\n\r\n /* Build families graph */\r\n familiesGraph = Graph();\r\n for (index = 0, len = families.length; index < len; index += 1) {\r\n family = families[index];\r\n\r\n for (index2 = 0, len2 = family.links.length; index2 < len2; index2 += 1) {\r\n link = family.links[index2];\r\n\r\n fromFamily = params.logicalFamily.node(link.fromItem).familyId;\r\n toFamily = params.logicalFamily.node(link.toItem).familyId;\r\n\r\n if (fromFamily != toFamily) {\r\n familiesGraph.addEdge(fromFamily, toFamily, { weight: 0 });\r\n familiesGraph.edge(fromFamily, toFamily).weight += 1;\r\n }\r\n\r\n families[toFamily].backLinks.push(new this.FamLink(link.toItem, link.fromItem));\r\n }\r\n }\r\n\r\n /* Flatten families graph into array for merging */\r\n while (sortedFamilies.length < families.length) {\r\n for (index = 0, len = families2.length; index < len; index += 1) {\r\n family = families2[index];\r\n\r\n if (!sortedFamiliesHash.hasOwnProperty(family.id)) {\r\n\r\n /* find maximum spanning tree of families graph*/\r\n spanningTree = familiesGraph.getSpanningTree(family.id, function (edge) {\r\n return -edge.weight;\r\n }); //ignore jslint\r\n\r\n if (spanningTree.node(family.id) != null) {\r\n\r\n /* count number of sub families for every family in spanning tree and sorts child families desc*/\r\n spanningTree.loopPostOrder(this, function (nodeid, node, parentid, parent) {\r\n var family = families[nodeid],\r\n parentFamily = families[parentid],\r\n children = [];\r\n\r\n if (parentid != null) {\r\n parentFamily.familyPriority = parentFamily.familyPriority + family.familyPriority;\r\n }\r\n\r\n children = [];\r\n spanningTree.loopChildren(this, nodeid, function (childid, child, index) {\r\n children.push(childid);\r\n });\r\n\r\n children.sort(function (a, b) { return families[a].familyPriority - families[b].familyPriority; });\r\n spanningTree.arrangeChildren(nodeid, children);\r\n }); //ignore jslint\r\n\r\n /* merge tree items in pre order sequence */\r\n spanningTree.loopPreOrder(this, function (familyid, node) {\r\n sortedFamilies.push(familyid);\r\n sortedFamiliesHash[familyid] = true;\r\n }); //ignore jslint\r\n\r\n } else {\r\n /* family has no links to any other family so we add it as orphant */\r\n sortedFamilies.push(family.id);\r\n sortedFamiliesHash[family.id] = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /* create chart root */\r\n data.maximumId += 1;\r\n orgItemRoot = new FamilyBalanceItem(data.maximumId, null, data.minimumLevel - 1);\r\n data.orgTree.add(null, orgItemRoot.id, orgItemRoot);\r\n\r\n /* Place family roots to organizational chart */\r\n attachedFamilies = {};\r\n for (index = 0, len = sortedFamilies.length; index < len; index += 1) {\r\n family = families[sortedFamilies[index]];\r\n\r\n rootItems = {}; // Hash where key = rootItem.id and value is number of references\r\n bestRootItem = orgItemRoot;\r\n bestReference = 0;\r\n links = family.links.concat(family.backLinks);\r\n for (index2 = 0; index2 < links.length; index2 += 1) {\r\n link = links[index2];\r\n\r\n toItem = data.orgTree.node(link.toItem);\r\n fromItem = data.orgTree.node(link.fromItem);\r\n\r\n if (attachedFamilies[toItem.familyId] === true) {\r\n familyRootItem = family.items[0];\r\n rootItem = toItem;\r\n\r\n if (rootItem.level >= familyRootItem.level) {\r\n data.orgTree.loopParents(this, rootItem.id, function (nodeid, node) {\r\n rootItem = node;\r\n if (node.level < familyRootItem.level) {\r\n return true;\r\n }\r\n });//ignore jslint\r\n }\r\n\r\n if (rootItems.hasOwnProperty(rootItem.id)) {\r\n rootItems[rootItem.id] += 1;\r\n } else {\r\n rootItems[rootItem.id] = 1;\r\n }\r\n /* family may be nested to multiple places, so we select root item having maximum connections with our new sub family */\r\n if (bestReference < rootItems[rootItem.id]) {\r\n bestRootItem = rootItem;\r\n bestReference = rootItems[rootItem.id];\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n this.attachFamilyToOrgChart(data, bestRootItem, family);\r\n\r\n attachedFamilies[family.id] = true;\r\n }\r\n\r\n /* balance organizational chart in order to place items having extra connections close to each other */\r\n extraGravities = this.getExtraGravity(data);\r\n\r\n /* count number of vertical connections for every item */\r\n grandChildren = this.getGrandChildren(data);\r\n\r\n /* scan orgTree hierarchy from root to bottom and balance its children */\r\n this.balanceOrgTree(data.orgTree, extraGravities, grandChildren, params.itemsPositions, params.itemsGroups);\r\n }\r\n};\r\n\r\nFamilyBalance.prototype.getGrandChildren = function (data) {\r\n var result = {}; /* Key = OrgItem.id, Value= Hash {} having Key = level and Value = number of grand children*/\r\n\r\n data.orgTree.loopPostOrder(this, function (itemId, orgItem, parentId, parent) {\r\n var level;\r\n\r\n data.minimumLevel = data.minimumLevel != null ? Math.min(data.minimumLevel, orgItem.level) : orgItem.level;\r\n data.maximumLevel = data.maximumLevel != null ? Math.max(data.maximumLevel, orgItem.level) : orgItem.level;\r\n\r\n if (parentId != null) {\r\n if (!result[parentId]) {\r\n result[parentId] = {};\r\n }\r\n\r\n level = orgItem.level - 1; /* project children qty to parent level, it is needed to match cross hierarchy connectors levels*/\r\n if (!result[parentId][level]) {\r\n result[parentId][level] = 1;\r\n } else {\r\n result[parentId][level] += 1;\r\n }\r\n\r\n if (result[itemId] != null) {\r\n for (level in result[itemId]) {\r\n if (result[itemId].hasOwnProperty(level)) {\r\n if (!result[parentId][level]) {\r\n result[parentId][level] = result[itemId][level];\r\n } else {\r\n result[parentId][level] += result[itemId][level];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n return result;\r\n};\r\n\r\nFamilyBalance.prototype.balanceOrgTree = function (orgTree, extraGravities, grandChildren, itemsPositions, itemsGroups) {\r\n var index2, len2,\r\n index3, len3,\r\n extraGravity,\r\n childExtraGravities,\r\n sortedChildren,\r\n subChildren, subOrgItem,\r\n leftId = '__left__',\r\n rightId = '__right__',\r\n levelExtraGravities,\r\n sequence;\r\n\r\n orgTree.loopLevels(this, function (parentOrgItemId, parentOrgItem, levelid) {\r\n var graph = Graph(),\r\n graphGravities = {},\r\n firstOrgItem = null,\r\n toItemId;\r\n /* build gravities graph for children */\r\n sortedChildren = [];\r\n orgTree.loopChildren(this, parentOrgItem.id, function (childOrgItemId, childOrgItem, index) {\r\n var levelKey;\r\n if (firstOrgItem == null) {\r\n firstOrgItem = childOrgItem;\r\n }\r\n\r\n graphGravities[childOrgItem.id] = {};\r\n if (extraGravities.hasOwnProperty(childOrgItem.id)) {\r\n childExtraGravities = extraGravities[childOrgItem.id];\r\n\r\n for (levelKey in childExtraGravities) {\r\n if (childExtraGravities.hasOwnProperty(levelKey)) {\r\n levelExtraGravities = childExtraGravities[levelKey];\r\n\r\n graphGravities[childOrgItem.id][levelKey] = {};\r\n for (index2 = 0, len2 = levelExtraGravities.length; index2 < len2; index2 += 1) {\r\n extraGravity = levelExtraGravities[index2];\r\n\r\n if (extraGravity.commonParent == parentOrgItem.id) {\r\n /* this is link between two children */\r\n toItemId = extraGravity.toParent;\r\n } else {\r\n /* this is external link on left or on right side, we create virtual graph item ids for external links */\r\n if (orgTree.node(extraGravity.fromParent).childIndex < orgTree.node(extraGravity.toParent).childIndex) {\r\n toItemId = rightId;\r\n } else {\r\n toItemId = leftId;\r\n }\r\n }\r\n\r\n /* add connection to graph */\r\n if (childOrgItem.id != toItemId) {\r\n graph.addEdge(childOrgItem.id, toItemId, { weight: 0 });\r\n graph.edge(childOrgItem.id, toItemId).weight += 1.0;\r\n\r\n if (graphGravities[childOrgItem.id][levelKey][toItemId] == null) {\r\n graphGravities[childOrgItem.id][levelKey][toItemId] = 0;\r\n }\r\n graphGravities[childOrgItem.id][levelKey][toItemId] += 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n /* add extra zero connection to graph when child org item has no connections\r\n it is connected to the first item in the graph with zero link\r\n */\r\n if (index > 0) {\r\n graph.addEdge(childOrgItem.id, firstOrgItem.id, { weight: 0 });\r\n }\r\n });\r\n\r\n if (firstOrgItem != null) {\r\n /* sort items in graph from the most connected to the least */\r\n\r\n sequence = [];\r\n\r\n graph.getTotalWeightGrowthSequence(this,\r\n function (a) { return a.weight; },\r\n function (a) { sequence.push(a); }\r\n ); //ignore jslint\r\n\r\n if (sequence.length === 0) {\r\n sequence = [firstOrgItem.id];\r\n }\r\n\r\n /* sort children from top to down */\r\n subChildren = this.balanceItems(sequence, leftId, rightId, graphGravities, grandChildren, itemsPositions, itemsGroups);\r\n\r\n /* save items indexes for further use */\r\n for (index3 = 0, len3 = subChildren.length; index3 < len3; index3 += 1) {\r\n subOrgItem = orgTree.node(subChildren[index3]);\r\n\r\n subOrgItem.childIndex = index3;\r\n\r\n sortedChildren.push(subOrgItem.id);\r\n }\r\n }\r\n orgTree.arrangeChildren(parentOrgItem.id, sortedChildren);\r\n });\r\n};\r\n\r\nFamilyBalance.prototype.balanceItems = function (sequence, leftId, rightId, graphGravities, grandChildren, itemsPositions, itemsGroups) {\r\n var result = [],\r\n index,\r\n slots = LinkedHashItems(), // key = counter++, value = slot object\r\n counter = 0,\r\n positions = {}, // hash[groupId] = SortedList, key = user defined item position, value = key in slots -- create only when user defined itemsPositions exists for items\r\n startSlotKey, endSlotKey,\r\n key, slot,\r\n items = {}, itemid, itemsToAdd,\r\n bestSlotKey, bestSlot, bestSlotValue, bestSlotDistance, bestSlotBalance, bestSlotCrossings,\r\n slotValue, slotDistance, slotBalance, slotCrossings,\r\n itemGrandChildren,\r\n itemSlot, itemSlotKey,\r\n level, levelGravities, toItemId, toItemSlot,\r\n userItemPosition, position, itemGroup, groupPositions,\r\n toItemSlotKey;\r\n\r\n /* populate initital slots */\r\n itemsToAdd = [leftId, null, rightId];\r\n for (index = 0; index < itemsToAdd.length; index += 1) {\r\n itemid = itemsToAdd[index];\r\n key = counter++;\r\n slot = new Slot(itemid);\r\n slot.position = index;\r\n slots.add(key, slot);\r\n if (itemid !== null) {\r\n items[itemid] = key;\r\n }\r\n }\r\n\r\n for (index = 0; index < sequence.length; index += 1) {\r\n itemid = sequence[index];\r\n\r\n /* ignore left and right margin */\r\n if (itemid != leftId && itemid != rightId) {\r\n\r\n bestSlotKey = null;\r\n bestSlot = null;\r\n bestSlotValue = null;\r\n bestSlotDistance = null;\r\n bestSlotBalance = null;\r\n bestSlotCrossings = null;\r\n\r\n startSlotKey = null;\r\n endSlotKey = null;\r\n if (itemsGroups.hasOwnProperty(itemid)) {\r\n itemGroup = itemsGroups[itemid];\r\n if (positions.hasOwnProperty(itemGroup)) {\r\n userItemPosition = itemsPositions[itemid];\r\n groupPositions = positions[itemGroup];\r\n startSlotKey = groupPositions.previousContext(userItemPosition);\r\n endSlotKey = groupPositions.nextContext(userItemPosition);\r\n }\r\n }\r\n\r\n slots.iterate(function (slot, slotKey) {\r\n var level, toItemId,\r\n levelGravities,\r\n toItemSlot;\r\n\r\n if (slot.itemId == null) {\r\n itemGrandChildren = grandChildren[itemid];\r\n slotValue = 0;\r\n slotDistance = 0;\r\n slotBalance = 0;\r\n slotCrossings = 0;\r\n\r\n for (level in slot.crossings) {\r\n if (slot.crossings.hasOwnProperty(level)) {\r\n if (itemGrandChildren && itemGrandChildren[level] != null) {\r\n slotValue += slot.crossings[level] * itemGrandChildren[level];\r\n }\r\n slotCrossings += slot.crossings[level];\r\n }\r\n }\r\n for (level in graphGravities[itemid]) {\r\n if (graphGravities[itemid].hasOwnProperty(level)) {\r\n levelGravities = graphGravities[itemid][level];\r\n for (toItemId in levelGravities) {\r\n if (levelGravities.hasOwnProperty(toItemId)) {\r\n if (items.hasOwnProperty(toItemId)) {\r\n toItemSlot = slots.item(items[toItemId]);\r\n if (toItemSlot != null) {\r\n if (toItemSlot.position < slot.position) {\r\n /* on the left side */\r\n slotValue += ((slot.left[level] || 0.0) - (toItemSlot.left[level] || 0.0));\r\n slotBalance += Math.abs(toItemSlot.balance + 1);\r\n } else {\r\n /* on the right side */\r\n slotValue += ((slot.right[level] || 0.0) - (toItemSlot.right[level] || 0.0));\r\n slotBalance += Math.abs(toItemSlot.balance - 1);\r\n }\r\n slotDistance += Math.abs(toItemSlot.position - slot.position);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (bestSlotValue == null ||\r\n bestSlotValue > slotValue ||\r\n (bestSlotValue == slotValue &&\r\n (bestSlotDistance > slotDistance ||\r\n (bestSlotDistance == slotDistance &&\r\n (bestSlotBalance > slotBalance ||\r\n (bestSlotBalance == slotBalance && bestSlotCrossings > slotCrossings)\r\n )\r\n )\r\n )\r\n )\r\n ) {\r\n bestSlotKey = slotKey;\r\n bestSlotValue = slotValue;\r\n bestSlot = slot;\r\n bestSlotDistance = slotDistance;\r\n bestSlotBalance = slotBalance;\r\n bestSlotCrossings = slotCrossings;\r\n }\r\n }\r\n }, startSlotKey, endSlotKey); //ignore jslint\r\n\r\n slots.insertBefore(bestSlotKey, counter++, bestSlot.clone(null));\r\n items[itemid] = counter;\r\n itemSlotKey = counter;\r\n itemSlot = bestSlot.clone(itemid);\r\n if (itemsPositions.hasOwnProperty(itemid)) {\r\n itemGroup = itemsGroups[itemid];\r\n if (!positions.hasOwnProperty(itemGroup)) {\r\n positions[itemGroup] = SortedList();\r\n }\r\n groupPositions = positions[itemGroup];\r\n groupPositions.add(itemsPositions[itemid], counter);\r\n }\r\n slots.insertBefore(bestSlotKey, counter++, itemSlot);\r\n\r\n /* add new item grand children qty to all slots to their grand totals for right & left sides */\r\n itemSlot.position = 0;\r\n position = 0;\r\n slots.iterate(function (slot, slotKey) {\r\n var level, itemGrandChildren;\r\n if (slotKey != itemSlotKey) {\r\n itemGrandChildren = grandChildren[itemid];\r\n for (level in itemGrandChildren) {\r\n if (itemGrandChildren.hasOwnProperty(level)) {\r\n if (!slot.left[level]) {\r\n slot.left[level] = itemGrandChildren[level];\r\n } else {\r\n slot.left[level] += itemGrandChildren[level];\r\n }\r\n }\r\n }\r\n position += 1;\r\n slot.position = position;\r\n }\r\n }, itemSlotKey); //ignore jslint\r\n\r\n position = 0;\r\n slots.iterateBack(function (slot, slotKey) {\r\n var level, itemGrandChildren;\r\n if (slotKey != itemSlotKey) {\r\n itemGrandChildren = grandChildren[itemid];\r\n for (level in grandChildren[itemid]) {\r\n if (grandChildren[itemid].hasOwnProperty(level)) {\r\n if (!slot.right[level]) {\r\n slot.right[level] = itemGrandChildren[level];\r\n } else {\r\n slot.right[level] += itemGrandChildren[level];\r\n }\r\n }\r\n }\r\n position -= 1;\r\n slot.position = position;\r\n }\r\n }, itemSlotKey); //ignore jslint\r\n\r\n /* add crossings */\r\n for (level in graphGravities[itemid]) {\r\n if (graphGravities[itemid].hasOwnProperty(level)) {\r\n levelGravities = graphGravities[itemid][level];\r\n for (toItemId in levelGravities) {\r\n if (levelGravities.hasOwnProperty(toItemId)) {\r\n if (items.hasOwnProperty(toItemId)) {\r\n toItemSlotKey = items[toItemId];\r\n toItemSlot = slots.item(toItemSlotKey);\r\n if (toItemSlot != null) {\r\n if (toItemSlot.position < 0) {\r\n /* on the left side */\r\n toItemSlot.balance += 1;\r\n itemSlot.balance -= 1;\r\n slots.iterateBack(function (slot, slotKey) {\r\n if (slotKey != itemSlotKey && slotKey != toItemSlotKey) {\r\n if (!slot.crossings[level]) {\r\n slot.crossings[level] = levelGravities[toItemId];\r\n } else {\r\n slot.crossings[level] += levelGravities[toItemId];\r\n }\r\n }\r\n }, itemSlotKey, toItemSlotKey); //ignore jslint\r\n } else {\r\n /* on the right side */\r\n toItemSlot.balance -= 1;\r\n itemSlot.balance += 1;\r\n slots.iterate(function (slot, slotKey) {\r\n if (slotKey != itemSlotKey && slotKey != toItemSlotKey) {\r\n if (!slot.crossings[level]) {\r\n slot.crossings[level] = levelGravities[toItemId];\r\n } else {\r\n slot.crossings[level] += levelGravities[toItemId];\r\n }\r\n }\r\n }, itemSlotKey, toItemSlotKey); //ignore jslint\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n slots.iterate(function (slot) {\r\n var itemId = slot.itemId;\r\n if (itemId != null && itemId != leftId && itemId != rightId) {\r\n result.push(itemId);\r\n }\r\n });\r\n\r\n return result;\r\n};\r\n\r\nFamilyBalance.prototype.ExtraGravity = function (level) {\r\n this.commonParent = null; // OrgItem.id\r\n this.fromParent = null; // OrgItem.id\r\n this.toParent = null; // OrgItem.id\r\n this.level = level;\r\n};\r\n\r\nFamilyBalance.prototype.getExtraGravity = function (data) {\r\n var orgItemId, orgItem,\r\n result = {}, /* Key = OrgItem.id, Value= Hash {} having Key = level and Value = [] array of ExtraGravity objects*/\r\n index, len,\r\n extraPartners, extraPartner;\r\n\r\n /* collect gravities for extra partners */\r\n for (orgItemId in data.orgPartners) {\r\n if (data.orgPartners.hasOwnProperty(orgItemId)) {\r\n orgItem = data.orgTree.node(orgItemId);\r\n extraPartners = data.orgPartners[orgItemId];\r\n\r\n for (index = 0, len = extraPartners.length; index < len; index += 1) {\r\n extraPartner = data.orgTree.node(extraPartners[index]);\r\n\r\n this.addExtraGravitiesForConnection(data.orgTree, result, extraPartner, orgItem);\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n\r\nFamilyBalance.prototype.addExtraGravitiesForConnection = function (orgTree, extraGravities, fromItem, toItem) {\r\n var extraGravityFrom = new this.ExtraGravity(fromItem.level),\r\n extraGravityTo = new this.ExtraGravity(toItem.level);\r\n\r\n /* find common parent for evry child and orgItem and create connector for evey parent in selection path */\r\n orgTree.zipUp(this, fromItem.id, toItem.id, function (fromItemId, parentFromItemId, toItemId, parentToItemId) {\r\n /* all parent items in chain up to the common root share the same gravity object for one connector */\r\n this.addExtraGravityForItem(extraGravities, fromItemId, extraGravityFrom);\r\n this.addExtraGravityForItem(extraGravities, toItemId, extraGravityTo);\r\n\r\n /* initialize gravity objects */\r\n if (parentFromItemId == parentToItemId) {\r\n extraGravityFrom.commonParent = parentFromItemId;\r\n extraGravityFrom.fromParent = fromItemId;\r\n extraGravityFrom.toParent = toItemId;\r\n\r\n extraGravityTo.commonParent = parentFromItemId;\r\n extraGravityTo.fromParent = toItemId;\r\n extraGravityTo.toParent = fromItemId;\r\n\r\n return true;\r\n }\r\n });\r\n};\r\n\r\nFamilyBalance.prototype.addExtraGravityForItem = function (extraGravities, id, extraGravity) {\r\n if (!extraGravities.hasOwnProperty(id)) {\r\n extraGravities[id] = {};\r\n }\r\n if (extraGravities[id][extraGravity.level] == null) {\r\n extraGravities[id][extraGravity.level] = [];\r\n }\r\n extraGravities[id][extraGravity.level].push(extraGravity);\r\n};\r\n\r\nFamilyBalance.prototype.attachFamilyToOrgChart = function (data, parent, family) {\r\n var levelIndex,\r\n familyRoot = family.items[0],\r\n newOrgItem = null,\r\n rootItem = parent;\r\n\r\n // fill in levels between parent and family root with invisible items\r\n for (levelIndex = parent.level + 1; levelIndex < familyRoot.level; levelIndex += 1) {\r\n data.maximumId += 1;\r\n newOrgItem = new FamilyBalanceItem(data.maximumId, null, levelIndex);\r\n data.orgTree.add(rootItem.id, newOrgItem.id, newOrgItem);\r\n family.items.push(newOrgItem);\r\n\r\n rootItem = newOrgItem;\r\n }\r\n\r\n // attach family root \r\n familyRoot.hideParentConnection = true;\r\n data.orgTree.adopt(rootItem.id, familyRoot.id, familyRoot);\r\n};\r\n\r\nFamilyBalance.prototype.extractOrgChart = function (grandParentId, logicalFamily, primaryParentsPath, orgTree, orgPartners, itemByChildrenKey, famItemsExtracted, family) {\r\n var index, len,\r\n children = [], tempChildren,\r\n childItem,\r\n rootItem = null,\r\n newOrgItem,\r\n grandParent = logicalFamily.node(grandParentId);\r\n\r\n /* extract root item */\r\n newOrgItem = new FamilyBalanceItem(grandParent.id, family.id, grandParent.level);\r\n orgTree.add(rootItem, newOrgItem.id, newOrgItem);\r\n family.items.push(newOrgItem);\r\n\r\n famItemsExtracted[grandParent.id] = grandParent;\r\n grandParent.familyId = family.id;\r\n\r\n /* extract its children */\r\n children = this.extractChildren(grandParent, logicalFamily, primaryParentsPath, orgTree, orgPartners, itemByChildrenKey, famItemsExtracted, family);\r\n\r\n while (children.length > 0) {\r\n tempChildren = [];\r\n for (index = 0, len = children.length; index < len; index += 1) {\r\n childItem = children[index];\r\n tempChildren = tempChildren.concat(this.extractChildren(childItem, logicalFamily, primaryParentsPath, orgTree, orgPartners, itemByChildrenKey, famItemsExtracted, family));\r\n }\r\n\r\n children = tempChildren;\r\n }\r\n};\r\n\r\nFamilyBalance.prototype.extractChildren = function (parentItem, logicalFamily, primaryParentsPath, orgTree, orgPartners, itemByChildrenKey, famItemsExtracted, family) {\r\n var result = [],\r\n firstChild = null,\r\n partnerItem = null,\r\n newOrgItem;\r\n\r\n if (logicalFamily.countChildren(parentItem.id) == 1) {\r\n firstChild = logicalFamily.firstChild(parentItem.id);\r\n }\r\n\r\n if (itemByChildrenKey[firstChild] != null) {\r\n /* all children already extracted */\r\n partnerItem = itemByChildrenKey[firstChild];\r\n\r\n if (orgPartners[partnerItem.id] == null) {\r\n orgPartners[partnerItem.id] = [];\r\n }\r\n orgPartners[partnerItem.id].push(parentItem.id);\r\n\r\n family.links.push(new this.FamLink(parentItem.id, firstChild));\r\n } else {\r\n if (firstChild != null) {\r\n if (primaryParentsPath.hasOwnProperty(firstChild)) {\r\n var realParent = primaryParentsPath[firstChild];\r\n if (realParent != parentItem.id) {\r\n if (orgPartners[realParent] == null) {\r\n orgPartners[realParent] = [];\r\n }\r\n orgPartners[realParent].push(parentItem.id);\r\n family.links.push(new this.FamLink(parentItem.id, firstChild));\r\n return result;\r\n }\r\n }\r\n itemByChildrenKey[firstChild] = parentItem;\r\n }\r\n\r\n logicalFamily.loopChildren(this, parentItem.id, function (childid, childItem, levelIndex) {\r\n if (famItemsExtracted[childItem.id]) {\r\n throw \"Many to many relations should not exist at this stage\";\r\n }\r\n result.push(childItem);\r\n\r\n newOrgItem = new FamilyBalanceItem(childItem.id, family.id, childItem.level);\r\n orgTree.add(parentItem.id, newOrgItem.id, newOrgItem);\r\n family.items.push(newOrgItem);\r\n\r\n famItemsExtracted[childItem.id] = true;\r\n\r\n childItem.familyId = family.id;\r\n return logicalFamily.SKIP;\r\n });\r\n }\r\n return result;\r\n};\r\n\r\nFamilyBalance.prototype.recalcLevelsDepth = function (bundles, connectorStacks, treeLevels, logicalFamily) {\r\n var index2, len2,\r\n index3, len3,\r\n itemPosition,\r\n bundle, bundlesToStack,\r\n processed = {},\r\n startIndex, endIndex, stackSegments;\r\n\r\n\r\n treeLevels.loopLevels(this, function (levelIndex, treeLevel) {\r\n var stacksSizes = new TreeLevelConnectorStackSize();\r\n connectorStacks[levelIndex] = stacksSizes;\r\n\r\n bundlesToStack = [];\r\n\r\n treeLevels.loopLevelItems(this, levelIndex, function (itemid, familyItem, position) {\r\n var fromItems = [],\r\n toItems = [],\r\n dotId = null;\r\n if (!processed.hasOwnProperty(itemid)) {\r\n processed[itemid] = true;\r\n if (!familyItem.hideChildrenConnection) {\r\n fromItems.push(itemid);\r\n } else {\r\n dotId = itemid;\r\n }\r\n\r\n logicalFamily.loopChildren(this, itemid, function (childid, child, index) {\r\n logicalFamily.loopParents(this, childid, function (parentid, parentItem) {\r\n if (!processed.hasOwnProperty(parentid)) {\r\n processed[parentid] = true;\r\n if (!parentItem.hideChildrenConnection) {\r\n fromItems.push(parentid);\r\n } else {\r\n dotId = parentid;\r\n }\r\n }\r\n return logicalFamily.SKIP;\r\n });\r\n\r\n if (!child.hideParentConnection) {\r\n toItems.push(childid);\r\n } else {\r\n dotId = childid;\r\n }\r\n return logicalFamily.SKIP;\r\n }); //ignore jslint\r\n\r\n if (fromItems.length > 1 || toItems.length > 0) {\r\n /* if bundle has more than one parent without children we draw connection line between parents */\r\n /* if bundles has no parents, but has children we draw connectors between children, top loop */\r\n bundle = new VerticalConnectorBundle(fromItems, toItems, dotId);\r\n\r\n bundles.push(bundle);\r\n\r\n if (fromItems.length > 1) {\r\n bundlesToStack.push(bundle);\r\n }\r\n }\r\n }\r\n });\r\n\r\n if (bundlesToStack.length > 0) {\r\n /* find minimum and maximum partner index at level */\r\n stackSegments = Pile();\r\n for (index2 = 0, len2 = bundlesToStack.length; index2 < len2; index2 += 1) {\r\n bundle = bundlesToStack[index2];\r\n\r\n startIndex = null;\r\n endIndex = null;\r\n for (index3 = 0, len3 = bundle.fromItems.length; index3 < len3; index3 += 1) {\r\n itemPosition = treeLevels.getItemPosition(bundle.fromItems[index3]);\r\n\r\n startIndex = (startIndex != null) ? Math.min(startIndex, itemPosition) : itemPosition;\r\n endIndex = (endIndex != null) ? Math.max(endIndex, itemPosition) : itemPosition;\r\n }\r\n stackSegments.add(startIndex, endIndex, bundle);\r\n }\r\n\r\n stacksSizes.parentsStackSize = stackSegments.resolve(this, function (from, to, bundle, offset, stackSize) {\r\n bundle.fromOffset = offset + 1;\r\n bundle.fromStackSize = stackSize;\r\n });//ignore jslint\r\n }\r\n });\r\n};","export default function UserDefinedPrimaryParents() {\r\n\r\n};\r\n\r\nUserDefinedPrimaryParents.prototype.getUserDefinedPrimaryParents = function (items, family) {\r\n var result = {},\r\n index, len;\r\n\r\n var primaryParents = {};\r\n for (index = 0, len = items.length; index < len; index += 1) {\r\n var item = items[index];\r\n if (item.primaryParent != null) {\r\n primaryParents[item.id] = item.primaryParent;\r\n }\r\n }\r\n\r\n for (var nodeid in primaryParents) {\r\n var primaryParent = primaryParents[nodeid];\r\n var trace = {}\r\n\r\n var nodes = [nodeid];\r\n while (nodes.length > 0) {\r\n var tempNodes = [];\r\n for (index = 0, len = nodes.length; index < len; index += 1) {\r\n nodeid = nodes[index];\r\n family.loopParents(this, nodeid, function (parentid, parent) {\r\n trace[parentid] = nodeid;\r\n if (parentid == primaryParent) {\r\n while (trace[parentid] != null) {\r\n result[trace[parentid]] = parentid;\r\n parentid = trace[parentid];\r\n }\r\n tempNodes = [];\r\n return family.BREAK;\r\n }\r\n if (parent.isVisible == false) {\r\n tempNodes.push(parentid);\r\n }\r\n return family.SKIP;\r\n })\r\n }\r\n nodes = tempNodes;\r\n }\r\n }\r\n return result;\r\n}\r\n","/* Balance family tree so parents sharing the most children stay close to each other \r\n Account for users position and primaryParent options\r\n*/\r\nimport FamilyBalance from './familyTransformations/FamilyBalance';\r\nimport UserDefinedPrimaryParents from './familyTransformations/UserDefinedPrimaryParents';\r\nimport TreeLevelConnectorStackSize from '../../models/TreeLevelConnectorStackSize';\r\n\r\nexport default function OrderFamilyNodesTask(orderFamilyNodesOptionTask, userDefinedNodesOrderTask, normalizeLogicalFamilyTask) {\r\n var _data = {\r\n maximumId: null, /* maximum of OrgItem.id */\r\n logicalFamily: null,\r\n treeLevels: null, /* TreeLevels */\r\n bundles: null, /* array of BaseConnectorBundle objects */\r\n connectorStacks: null /* array of TreeLevelConnectorStackSize objects, it keeps total number of horizontal connectors lines between parents and children stack on top of each other */\r\n },\r\n _familyBalance = new FamilyBalance(),\r\n _userDefinedPrimaryParents = new UserDefinedPrimaryParents(),\r\n _nullTreeLevelConnectorStackSize = new TreeLevelConnectorStackSize();\r\n\r\n function process(debug) {\r\n var logicalFamily = normalizeLogicalFamilyTask.getLogicalFamily(),\r\n maximumId = normalizeLogicalFamilyTask.getMaximumId(),\r\n orderFamilyNodesOptions = orderFamilyNodesOptionTask.getOptions();\r\n\r\n var balanceParams = {\r\n logicalFamily: logicalFamily,\r\n maximumId: maximumId,\r\n itemsPositions: userDefinedNodesOrderTask.getPositions(),\r\n itemsGroups: userDefinedNodesOrderTask.getGroups(),\r\n primaryParents: _userDefinedPrimaryParents.getUserDefinedPrimaryParents(orderFamilyNodesOptions.items, logicalFamily)\r\n };\r\n\r\n var {maximumId, treeLevels, bundles, connectorStacks} = _familyBalance.balance(balanceParams);\r\n\r\n _data.maximumId = maximumId;\r\n _data.treeLevels = treeLevels;\r\n _data.bundles = bundles;\r\n _data.connectorStacks = connectorStacks;\r\n _data.logicalFamily = logicalFamily;\r\n\r\n return true;\r\n }\r\n\r\n function getLogicalFamily() {\r\n return _data.logicalFamily;\r\n }\r\n\r\n function getMaximumId() {\r\n return _data.maximumId;\r\n }\r\n\r\n function getTreeLevels() {\r\n return _data.treeLevels;\r\n }\r\n\r\n function getBundles() {\r\n return _data.bundles;\r\n }\r\n\r\n function getConnectorsStacksSizes(levelid) {\r\n return _data.connectorStacks[levelid] || _nullTreeLevelConnectorStackSize;\r\n }\r\n\r\n return {\r\n process: process,\r\n getLogicalFamily: getLogicalFamily,\r\n getMaximumId: getMaximumId,\r\n getTreeLevels: getTreeLevels,\r\n getBundles: getBundles,\r\n getConnectorsStacksSizes: getConnectorsStacksSizes\r\n };\r\n};\r\n","import TemplateParams from '../../models/TemplateParams';\r\n\r\nexport default function LabelAnnotationTemplateParamsTask(itemsSizesOptionTask, labelAnnotationTemplateOptionTask, readTemplatesTask) {\r\n var _data = {\r\n items: {} // TemplateParams\r\n };\r\n\r\n function process() {\r\n var itemsSizesOptions = itemsSizesOptionTask.getOptions(),\r\n items = labelAnnotationTemplateOptionTask.getAnnotations(),\r\n index, len;\r\n\r\n _data.items = {};\r\n\r\n for (index = 0, len = items.length; index < len; index += 1) {\r\n var annotation = items[index],\r\n templateParams = new TemplateParams(),\r\n template = readTemplatesTask.getTemplate(annotation.templateName, itemsSizesOptions.defaultLabelAnnotationTemplate, readTemplatesTask.DefaultWidgetLabelAnnotationTemplateName);\r\n\r\n templateParams.template = template;\r\n\r\n _data.items[annotation.id] = templateParams;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function getTemplateParams(itemId) {\r\n return _data.items[itemId];\r\n }\r\n\r\n return {\r\n process: process,\r\n getTemplateParams: getTemplateParams\r\n };\r\n};","export default function CombinedTemplateParamsTask(itemTemplateParamsTask, labelAnnotationTemplateParamsTask) {\r\n function process() {\r\n return true;\r\n }\r\n\r\n function getTemplateParams(itemId) {\r\n return itemTemplateParamsTask.getTemplateParams(itemId) || labelAnnotationTemplateParamsTask.getTemplateParams(itemId);\r\n }\r\n\r\n return {\r\n process: process,\r\n getTemplateParams: getTemplateParams\r\n };\r\n};","import ArrayReader from '../../../readers/ArrayReader';\r\nimport ValueReader from '../../../readers/ValueReader';\r\nimport { NeighboursSelectionMode } from '../../../enums';\r\n\r\nexport default function FamCursorNeighboursTask(cursorItemTask, neighboursSelectionModeOptionTask, navigationFamilyTask, activeItemsTask) {\r\n var _data = {\r\n items: []\r\n },\r\n _hash = {};\r\n\r\n var _dataTemplate = new ArrayReader(\r\n new ValueReader([\"string\", \"number\"], true),\r\n true\r\n );\r\n\r\n function process() {\r\n var context = {\r\n isChanged: false,\r\n hash: _hash\r\n },\r\n cursorTreeItemId = cursorItemTask.getCursorTreeItem(),\r\n navigationFamily = navigationFamilyTask.getLogicalFamily(),\r\n neighboursSelectionMode = neighboursSelectionModeOptionTask.getNeighboursSelectionMode(),\r\n activeItems = activeItemsTask.getActiveItems();\r\n\r\n _data.items = _dataTemplate.read(_data.items, getCursorNeighbours(cursorTreeItemId, neighboursSelectionMode, navigationFamily, activeItems), \"items\", context);\r\n\r\n return context.isChanged;\r\n }\r\n\r\n function getCursorNeighbours(cursorTreeItemId, neighboursSelectionMode, navigationFamily, activeItems) {\r\n var result = [],\r\n processed = {};\r\n if (cursorTreeItemId !== null) {\r\n switch (neighboursSelectionMode) {\r\n case NeighboursSelectionMode.ParentsAndChildren:\r\n navigationFamily.loopParents(this, cursorTreeItemId, function (itemid, item) {\r\n if (item.isVisible && !processed.hasOwnProperty(itemid)) {\r\n processed[itemid] = true;\r\n result.push(itemid);\r\n }\r\n if (activeItems.hasOwnProperty(itemid)) {\r\n return navigationFamily.SKIP;\r\n }\r\n });\r\n navigationFamily.loopChildren(this, cursorTreeItemId, function (itemid, item) {\r\n if (item.isVisible && !processed.hasOwnProperty(itemid)) {\r\n processed[itemid] = true;\r\n result.push(itemid);\r\n }\r\n if (activeItems.hasOwnProperty(itemid)) {\r\n return navigationFamily.SKIP;\r\n }\r\n });\r\n break;\r\n case NeighboursSelectionMode.ParentsChildrenSiblingsAndSpouses:\r\n navigationFamily.loopNeighbours(this, cursorTreeItemId, function (itemid, item) {\r\n if (item.isVisible && !processed.hasOwnProperty(itemid)) {\r\n processed[itemid] = true;\r\n result.push(itemid);\r\n }\r\n if (activeItems.hasOwnProperty(itemid)) {\r\n return true;\r\n }\r\n });\r\n break;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function getItems() {\r\n return _data.items;\r\n }\r\n\r\n return {\r\n process: process,\r\n getItems: getItems\r\n };\r\n};","import { SelectionPathMode } from '../../../enums';\r\n\r\nexport default function FamSelectionPathItemsTask(navigationFamilyTask, cursorItemTask, selectedItemsTask, cursorSelectionPathModeOptionTask) {\r\n var _data = {\r\n items: []\r\n };\r\n\r\n function process() {\r\n var selectionPathMode = cursorSelectionPathModeOptionTask.getSelectionPathMode(),\r\n navigationFamily = navigationFamilyTask.getLogicalFamily(),\r\n cursorTreeItemId = cursorItemTask.getCursorTreeItem(),\r\n selectedItems = selectedItemsTask.getItems().slice(0);\r\n\r\n selectedItems.push(cursorTreeItemId);\r\n\r\n _data.items = getSelectionPathItems(selectedItems, navigationFamily, selectionPathMode);\r\n\r\n return true;\r\n }\r\n\r\n function getSelectionPathItems(selectedItems, navigationFamily, selectionPathMode) {\r\n var result = [],\r\n processed = {},\r\n selectedItem,\r\n index, len;\r\n\r\n for (index = 0, len = selectedItems.length; index < len; index += 1) {\r\n selectedItem = selectedItems[index];\r\n /* show cursor full stack */\r\n switch (selectionPathMode) {\r\n case SelectionPathMode.None:\r\n break;\r\n case SelectionPathMode.FullStack:\r\n /* select all parents up to the root */\r\n navigationFamily.loopParents(this, selectedItem, function (parentItemId, parentItem) {\r\n if (processed[parentItemId] != null) {\r\n return navigationFamily.SKIP;\r\n }\r\n if (parentItem.isVisible) {\r\n result.push(parentItemId);\r\n }\r\n processed[parentItemId] = true;\r\n });\r\n break;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function getItems() {\r\n return _data.items;\r\n }\r\n\r\n return {\r\n process: process,\r\n getItems: getItems\r\n };\r\n};","import Rect from '../../../graphics/structs/Rect';\r\nimport { VerticalAlignmentType, Visibility, GroupByType } from '../../../enums';\r\nimport FamilyAlignment from '../../../algorithms/FamilyAlignment';\r\nimport TreeLevelPosition from '../../../models/TreeLevelPosition';\r\nimport TreeItemPosition from '../../../models/TreeItemPosition';\r\n\r\nfunction ChildLayoutPosition( offset, leftPadding, rightPadding ) {\r\n this.offset = offset;\r\n this.leftPadding = leftPadding;\r\n this.rightPadding = rightPadding;\r\n}\r\n\r\nexport default function FamilyLayout(logicalFamily, treeLevels, getConnectorsStacksSizes) {\r\n this.logicalFamily = logicalFamily; // Family of FamilyItem\r\n this.treeLevels = treeLevels; // TreeLevels of OrgItem used properties: isVisible\r\n this.getConnectorsStacksSizes = getConnectorsStacksSizes; // TreeLevelConnectorStackSize\r\n\r\n this.treeLevelsPositions = [];\r\n this.childLayoutsPositions = {};\r\n};\r\n\r\nFamilyLayout.prototype.loop = function (thisArg, onItem) {\r\n if(onItem != null) {\r\n var zeroBasedLevelIndex = 0;\r\n this.treeLevels.loopLevels(this, function (levelIndex) {\r\n this.treeLevels.loopLevelItems(this, levelIndex, function (treeItemId, treeItem) {\r\n onItem.call(thisArg, treeItem, zeroBasedLevelIndex);\r\n });\r\n zeroBasedLevelIndex+=1;\r\n });\r\n }\r\n};\r\n\r\n\r\nFamilyLayout.prototype.measure = function (levelVisibility, isCursor, isSelected, treeItemTemplate, treeItemsPositions, options) {\r\n this.treeLevelsPositions = [];\r\n\r\n this.treeLevels.loopLevels(this, function (index, levelContext) {\r\n var treeLevelPosition = new TreeLevelPosition();\r\n this.treeLevelsPositions.push(treeLevelPosition);\r\n });\r\n\r\n this.setOffsets(this.treeLevels, treeItemsPositions, this.childLayoutsPositions, this.treeLevelsPositions, this.logicalFamily, options.intervals, options.padding);\r\n this.setLevelsDepth(this.treeLevels, treeItemsPositions, this.treeLevelsPositions, options.verticalAlignment);\r\n this.shiftLevels(this.treeLevelsPositions, options.padding.top, options.shifts, options.arrowsDirection, options.linesWidth, this.getConnectorsStacksSizes);\r\n\r\n var treeItemPosition = new TreeItemPosition();\r\n treeItemPosition.actualVisibility = Visibility.Normal;\r\n treeItemPosition.actualSize = this.getLayoutSize(this.treeLevels, treeItemsPositions, this.childLayoutsPositions, this.treeLevelsPositions, options.padding);\r\n return treeItemPosition;\r\n};\r\n\r\nFamilyLayout.prototype.getLayoutSize = function (treeLevels, treeItemsPositions, childLayoutsPositions, treeLevelsPositions, padding) {\r\n return new Rect(0, 0, Math.round(this.getLayoutWidth(treeLevels, treeItemsPositions, childLayoutsPositions, padding)), Math.round(this.getLayoutHeight(treeLevelsPositions, padding)));\r\n};\r\n\r\nFamilyLayout.prototype.getLayoutWidth = function (treeLevels, treeItemsPositions, childLayoutsPositions, padding) {\r\n var result = 0;\r\n treeLevels.loopLevels(this, function (levelIndex, level) {\r\n var levelLength = treeLevels.getLevelLength(levelIndex);\r\n\r\n if (levelLength > 0) {\r\n var itemId = treeLevels.getItemAtPosition(levelIndex, levelLength - 1),\r\n treeItemPosition = treeItemsPositions[itemId],\r\n childLayoutPosition = childLayoutsPositions[itemId];\r\n result = Math.max(result, childLayoutPosition.offset + treeItemPosition.actualSize.width + padding.right);\r\n }\r\n });\r\n return result;\r\n};\r\n\r\nFamilyLayout.prototype.getLayoutHeight = function (treeLevelsPositions, padding) {\r\n var len = treeLevelsPositions.length,\r\n treeLevel = treeLevelsPositions[len - 1];\r\n return treeLevel.getNodesBottom() + padding.bottom;\r\n};\r\n\r\nFamilyLayout.prototype.setLevelsDepth = function (treeLevels, treeItemsPositions, treeLevelsPositions, verticalAlignment) {\r\n var minimalDepth,\r\n dotsDepth;\r\n\r\n treeLevels.loopLevels(this, function (levelIndex, treeLevel) {\r\n var treeLevelPosition = treeLevelsPositions[levelIndex];\r\n treeLevelPosition.shift = 0.0;\r\n treeLevelPosition.depth = 0.0;\r\n treeLevelPosition.actualVisibility = Visibility.Invisible;\r\n\r\n minimalDepth = null; /* minimum height of non-dot items in level */\r\n dotsDepth = null; /* maximum dots height */\r\n\r\n treeLevels.loopLevelItems(this, levelIndex, function (itemid, treeItem, position) {\r\n var treeItemPosition = treeItemsPositions[itemid];\r\n treeLevelPosition.depth = Math.max(treeLevelPosition.depth, treeItemPosition.actualSize.height);\r\n switch (treeItemPosition.actualVisibility) {\r\n case Visibility.Dot:\r\n case Visibility.Line:\r\n case Visibility.Invisible:\r\n dotsDepth = !dotsDepth ? treeItemPosition.actualSize.height : Math.min(dotsDepth, treeItemPosition.actualSize.height);\r\n break;\r\n default:\r\n minimalDepth = !minimalDepth ? treeItemPosition.actualSize.height : Math.min(minimalDepth, treeItemPosition.actualSize.height);\r\n break;\r\n }\r\n\r\n treeLevelPosition.actualVisibility = Math.min(treeLevelPosition.actualVisibility, treeItemPosition.actualVisibility);\r\n });\r\n\r\n if (minimalDepth == null) {\r\n minimalDepth = treeLevelPosition.depth;\r\n }\r\n if (dotsDepth != null && dotsDepth > minimalDepth) {\r\n minimalDepth = dotsDepth;\r\n }\r\n\r\n switch (verticalAlignment) {\r\n case VerticalAlignmentType.Top:\r\n treeLevelPosition.horizontalConnectorsDepth = minimalDepth / 2.0;\r\n break;\r\n case VerticalAlignmentType.Middle:\r\n treeLevelPosition.horizontalConnectorsDepth = treeLevelPosition.depth / 2.0;\r\n break;\r\n case VerticalAlignmentType.Bottom:\r\n treeLevelPosition.horizontalConnectorsDepth = treeLevelPosition.depth - minimalDepth / 2.0;\r\n break;\r\n }\r\n });\r\n};\r\n\r\nFamilyLayout.prototype.shiftLevels = function (treeLevelsPositions, shift, shifts, arrowsDirection, linesWidth, getConnectorsStacksSizes) {\r\n var index,\r\n len,\r\n treeLevelPosition,\r\n parentsStackSize,\r\n childrenSpace = 0,\r\n parentsSpace = 0,\r\n arrowTipLength = linesWidth * 8;\r\n\r\n switch (arrowsDirection) {\r\n case GroupByType.Parents:\r\n childrenSpace = arrowTipLength;\r\n parentsSpace = 0;\r\n break;\r\n case GroupByType.Children:\r\n childrenSpace = 0;\r\n parentsSpace = arrowTipLength;\r\n break;\r\n }\r\n\r\n for (index = 0, len = treeLevelsPositions.length; index < len; index += 1) {\r\n treeLevelPosition = treeLevelsPositions[index];\r\n parentsStackSize = getConnectorsStacksSizes(index).parentsStackSize;\r\n shift += treeLevelPosition.setShift(shift, shifts[treeLevelPosition.actualVisibility], parentsSpace, childrenSpace, parentsStackSize);\r\n }\r\n};\r\n\r\nFamilyLayout.prototype.setOffsets = function (treeLevels, treeItemsPositions, childLayoutsPositions, treeLevelsPositions, logicalFamily, intervals, padding) {\r\n var index, len;\r\n\r\n for (index = 0, len = treeLevelsPositions.length; index < len; index += 1) {\r\n treeLevelsPositions[index].currentOffset = 0.0;\r\n }\r\n\r\n var family = logicalFamily.getPlanarFamily(treeLevels);\r\n\r\n var familyAlignment = new FamilyAlignment(this, family, treeLevels, function (nodeId, node) {\r\n var treeItemPosition = treeItemsPositions[nodeId];\r\n\r\n var treeItemPadding = intervals[treeItemPosition.actualVisibility] / 2;\r\n childLayoutsPositions[nodeId] = new ChildLayoutPosition(0, treeItemPadding, treeItemPadding);\r\n\r\n return treeItemPadding + treeItemPosition.actualSize.width + treeItemPadding;\r\n });\r\n\r\n var leftMargin = null;\r\n treeLevels.loopLevels(this, function (levelIndex, level) {\r\n var nodeId = treeLevels.getItemAtPosition(levelIndex, 0);\r\n if (nodeId != null) {\r\n var treeItemPosition = treeItemsPositions[nodeId];\r\n var nodeOffset = familyAlignment.getOffset(nodeId) - treeItemPosition.actualSize.width / 2;\r\n leftMargin = (leftMargin === null) ? nodeOffset : Math.min(leftMargin, nodeOffset);\r\n }\r\n });\r\n\r\n treeLevels.loopLevels(this, function (levelIndex, level) {\r\n treeLevels.loopLevelItems(this, levelIndex, function (nodeId, node, position) {\r\n var treeItemPosition = treeItemsPositions[nodeId];\r\n var nodeOffset = familyAlignment.getOffset(nodeId);\r\n childLayoutsPositions[nodeId].offset = nodeOffset - treeItemPosition.actualSize.width / 2 - leftMargin + padding.left;\r\n });\r\n });\r\n};\r\n\r\nFamilyLayout.prototype.arrange = function (thisArg, position, layoutDirection, treeItemsPositions, options, onItemPositioned) {\r\n var prevLevelPosition = null;\r\n if (onItemPositioned != null) {\r\n this.treeLevels.loopLevels(this, function (levelIndex, treeLevel) {\r\n var treeLevelPosition = this.treeLevelsPositions[levelIndex];\r\n\r\n this.treeLevels.loopLevelItems(this, levelIndex, function (itemId, treeItem, position) {\r\n var treeItemPosition = treeItemsPositions[itemId];\r\n var childLayoutPosition = this.childLayoutsPositions[itemId];\r\n var result = this.getItemPosition(treeItemPosition.actualVisibility, childLayoutPosition.offset, treeItemPosition.actualSize, prevLevelPosition, treeLevelPosition, options.verticalAlignment);\r\n\r\n onItemPositioned.call(thisArg, itemId, { ...treeItemPosition, ...result});\r\n });\r\n\r\n prevLevelPosition = treeLevelPosition;\r\n });\r\n }\r\n};\r\n\r\nFamilyLayout.prototype.getItemPosition = function (visibility, offset, size, prevLevel, level, verticalAlignment) {\r\n var itemShift = 0;\r\n\r\n switch (visibility) {\r\n case Visibility.Normal:\r\n switch (verticalAlignment) {\r\n case VerticalAlignmentType.Top:\r\n itemShift = 0;\r\n break;\r\n case VerticalAlignmentType.Middle:\r\n itemShift = (level.depth - size.height) / 2.0;\r\n break;\r\n case VerticalAlignmentType.Bottom:\r\n itemShift = level.depth - size.height;\r\n break;\r\n }\r\n break;\r\n case Visibility.Dot:\r\n case Visibility.Line:\r\n case Visibility.Invisible:\r\n itemShift = level.horizontalConnectorsDepth - size.height / 2.0;\r\n break;\r\n }\r\n\r\n return {\r\n actualPosition: new Rect(offset, level.shift + itemShift, size.width, size.height),\r\n horizontalConnectorsShift: level.shift + level.horizontalConnectorsDepth,\r\n topConnectorShift: prevLevel != null ? prevLevel.shift + prevLevel.connectorShift : null,\r\n topConnectorInterval: prevLevel != null ? prevLevel.levelSpace / 2 : null,\r\n bottomConnectorShift: level.shift + level.connectorShift,\r\n bottomConnectorInterval: level.levelSpace / 2\r\n };\r\n};","import FamilyLayout from './layouts/FamilyLayout';\r\nimport ItemLayout from './layouts/ItemLayout';\r\nimport Tree from '../../algorithms/Tree';\r\nimport { Visibility } from '../../enums';\r\n\r\nexport default function FamCreateLayoutsTreeTask(orderFamilyNodesTask, extractNestedLayoutsTask ) {\r\n\r\n var _data = {\r\n layoutsTree: {},\r\n maximumId: null\r\n };\r\n\r\n function process() {\r\n var logicalFamily = orderFamilyNodesTask.getLogicalFamily();\r\n var treeLevels = orderFamilyNodesTask.getTreeLevels();\r\n var maximumId = orderFamilyNodesTask.getMaximumId();\r\n var getConnectorsStacksSizes = orderFamilyNodesTask.getConnectorsStacksSizes;\r\n\r\n var layouts = extractNestedLayoutsTask.getLayouts();\r\n var rootLayout = new FamilyLayout(logicalFamily, treeLevels, getConnectorsStacksSizes);\r\n var layoutsTree = Tree();\r\n maximumId++;\r\n layoutsTree.add(null, maximumId, rootLayout);\r\n\r\n var levelLayouts = [{ id: maximumId, levelLayout: rootLayout }];\r\n while(levelLayouts.length > 0) {\r\n var nextLevelLayouts = [];\r\n for(var index = 0; index < levelLayouts.length; index+=1) {\r\n var { id, levelLayout } = levelLayouts[index];\r\n levelLayout.loop(this, function(treeItem) {\r\n var treeItemId = treeItem.id;\r\n var itemLayout = layouts[treeItemId];\r\n if(!itemLayout) {\r\n itemLayout = new ItemLayout(treeItem.isVisible ? Visibility.Auto : Visibility.Invisible);\r\n } else {\r\n nextLevelLayouts.push({id: treeItemId, levelLayout: itemLayout});\r\n }\r\n layoutsTree.add(id, treeItemId, itemLayout);\r\n })\r\n }\r\n levelLayouts = nextLevelLayouts;\r\n }\r\n\r\n _data.layoutsTree = layoutsTree;\r\n _data.maximumId = maximumId;\r\n\r\n return true;\r\n }\r\n\r\n\r\n function getLayoutsTree() {\r\n return _data.layoutsTree;\r\n }\r\n\r\n function getMaximumId() {\r\n return _data.maximumId;\r\n }\r\n\r\n return {\r\n process: process,\r\n getLayoutsTree: getLayoutsTree,\r\n getMaximumId: getMaximumId\r\n };\r\n};","import FamConfig from './configs/FamConfig';\r\nimport FamItemConfig from './configs/FamItemConfig';\r\nimport TemplateConfig from './configs/TemplateConfig';\r\nimport PaletteItemConfig from './configs/PaletteItemConfig';\r\nimport BackgroundAnnotationConfig from './configs/BackgroundAnnotationConfig';\r\nimport ConnectorAnnotationConfig from './configs/ConnectorAnnotationConfig';\r\nimport HighlightPathAnnotationConfig from './configs/HighlightPathAnnotationConfig';\r\nimport ShapeAnnotationConfig from './configs/ShapeAnnotationConfig';\r\nimport LabelAnnotationConfig from './configs/LabelAnnotationConfig';\r\nimport LevelAnnotationConfig from './configs/LevelAnnotationConfig';\r\n\r\nimport { ZOrderType, Colors } from './enums';\r\n\r\n// reused tasks from org diagram\r\nimport CalloutOptionTask from './tasks/options/CalloutOptionTask';\r\nimport ConnectorsOptionTask from './tasks/options/ConnectorsOptionTask';\r\nimport FamItemsOptionTask from './tasks/options/FamItemsOptionTask';\r\nimport ItemsContentOptionTask from './tasks/options/ItemsContentOptionTask';\r\nimport ItemsSizesOptionTask from './tasks/options/ItemsSizesOptionTask';\r\nimport MinimumVisibleLevelsOptionTask from './tasks/options/MinimumVisibleLevelsOptionTask';\r\n\r\nimport LabelsOptionTask from './tasks/options/LabelsOptionTask';\r\nimport TemplatesOptionTask from './tasks/options/TemplatesOptionTask';\r\nimport OrientationOptionTask from './tasks/options/OrientationOptionTask';\r\nimport MinimizedItemsOptionTask from './tasks/options/MinimizedItemsOptionTask';\r\nimport CursorItemOptionTask from './tasks/options/selection/CursorItemOptionTask';\r\nimport HighlightItemOptionTask from './tasks/options/selection/HighlightItemOptionTask';\r\nimport SelectedItemsOptionTask from './tasks/options/selection/SelectedItemsOptionTask';\r\nimport CursorSelectionPathModeOptionTask from './tasks/options/selection/CursorSelectionPathModeOptionTask';\r\nimport SplitAnnotationsOptionTask from './tasks/options/annotations/SplitAnnotationsOptionTask';\r\nimport ShapeAnnotationOptionTask from './tasks/options/annotations/ShapeAnnotationOptionTask';\r\nimport HighlightPathAnnotationOptionTask from './tasks/options/annotations/HighlightPathAnnotationOptionTask';\r\nimport ConnectorAnnotationOptionTask from './tasks/options/annotations/ConnectorAnnotationOptionTask';\r\nimport BackgroundAnnotationOptionTask from './tasks/options/annotations/BackgroundAnnotationOptionTask';\r\nimport LevelAnnotationOptionTask from './tasks/options/annotations/LevelAnnotationOptionTask';\r\n\r\nimport ScaleOptionTask from './tasks/options/ScaleOptionTask';\r\nimport FrameOptionTask from './tasks/options/FrameOptionTask';\r\nimport LevelTitlePlacementOptionTask from './tasks/options/LevelTitlePlacementOptionTask';\r\nimport LevelTitleTemplateOptionTask from './tasks/options/LevelTitleTemplateOptionTask';\r\n\r\nimport CombinedContextsTask from './tasks/transformations/CombinedContextsTask';\r\nimport ReadTemplatesTask from './tasks/templates/ReadTemplatesTask';\r\nimport ActiveItemsTask from './tasks/templates/ActiveItemsTask';\r\nimport ItemTemplateParamsTask from './tasks/templates/ItemTemplateParamsTask';\r\nimport GroupTitleTemplateTask from './tasks/templates/GroupTitleTemplateTask';\r\nimport CheckBoxTemplateTask from './tasks/templates/CheckBoxTemplateTask';\r\nimport ButtonsTemplateTask from './tasks/templates/ButtonsTemplateTask';\r\nimport AnnotationLabelTemplateTask from './tasks/templates/AnnotationLabelTemplateTask';\r\nimport LevelAnnotationTemplateTask from './tasks/templates/LevelAnnotationTemplateTask';\r\nimport ConnectionsGraphTask from './tasks/transformations/ConnectionsGraphTask';\r\nimport HighlightItemTask from './tasks/transformations/selection/HighlightItemTask';\r\nimport CursorItemTask from './tasks/transformations/selection/CursorItemTask';\r\nimport SelectedItemsTask from './tasks/transformations/selection/SelectedItemsTask';\r\nimport NormalVisibilityItemsByAnnotationTask from './tasks/transformations/selection/NormalVisibilityItemsByAnnotationTask';\r\nimport NormalVisibilityItemsByConnectorAnnotationTask from './tasks/transformations/selection/NormalVisibilityItemsByConnectorAnnotationTask';\r\nimport NormalVisibilityItemsByMinimumVisibleLevelsTask from './tasks/transformations/selection/FamNormalVisibilityItemsByMinimumVisibleLevelsTask';\r\nimport CombinedNormalVisibilityItemsTask from './tasks/transformations/selection/CombinedNormalVisibilityItemsTask';\r\n\r\nimport FrameSizeTask from './tasks/layout/FrameSizeTask';\r\nimport LevelTitleSizeTask from './tasks/layout/LevelTitleSizeTask';\r\nimport LayoutOptionsTask from './tasks/options/LayoutOptionsTask';\r\nimport CurrentControlSizeTask from './tasks/layout/CurrentControlSizeTask';\r\nimport CurrentScrollPositionTask from './tasks/layout/CurrentScrollPositionTask';\r\nimport AlignDiagramTask from './tasks/layout/AlignDiagramTask';\r\nimport CreateTransformTask from './tasks/layout/CreateTransformTask';\r\nimport PaletteManagerTask from './tasks/transformations/PaletteManagerTask';\r\nimport ApplyLayoutChangesTask from './tasks/layout/ApplyLayoutChangesTask';\r\nimport CenterOnCursorTask from './tasks/layout/CenterOnCursorTask';\r\nimport ProjectItemsToFrameTask from './tasks/layout/ProjectItemsToFrameTask';\r\nimport DrawHighlightPathAnnotationTask from './tasks/renders/DrawHighlightPathAnnotationTask';\r\nimport ViewPortPlacementTask from './tasks/layout/ViewPortPlacementTask';\r\nimport VerticalOffsetTask from './tasks/layout/VerticalOffsetTask';\r\n\r\nimport FamLogicalLevelsPlacementTask from './tasks/layout/FamLogicalLevelsPlacementTask';\r\nimport MergeLevelIntervalsTask from './tasks/layout/MergeLevelIntervalsTask';\r\nimport DrawBackgroundAnnotationTask from './tasks/renders/DrawBackgroundAnnotationTask';\r\nimport DrawConnectorAnnotationTask from './tasks/renders/DrawConnectorAnnotationTask';\r\nimport DrawShapeAnnotationTask from './tasks/renders/DrawShapeAnnotationTask';\r\nimport DrawCursorTask from './tasks/renders/DrawCursorTask';\r\nimport DrawHighlightTask from './tasks/renders/DrawHighlightTask';\r\nimport DrawHighlightAnnotationTask from './tasks/renders/DrawHighlightAnnotationTask';\r\nimport DrawTreeItemsTask from './tasks/renders/DrawTreeItemsTask';\r\nimport DrawMinimizedItemsTask from './tasks/renders/DrawMinimizedItemsTask';\r\nimport DrawConnectorsTask from './tasks/renders/DrawConnectorsTask';\r\nimport DrawItemLabelsTask from './tasks/renders/DrawItemLabelsTask';\r\nimport DrawFrameItemsTask from './tasks/renders/DrawFrameItemsTask';\r\nimport DrawFrameHighlightTask from './tasks/renders/DrawFrameHighlightTask';\r\nimport DrawLevelAnnotationTitlesTask from './tasks/renders/DrawLevelAnnotationTitlesTask';\r\nimport DrawLevelAnnotationBackgroundTask from './tasks/renders/DrawLevelAnnotationBackgroundTask';\r\n\r\n\r\n// family diagram specific tasks\r\nimport OptionsTask from './tasks/options/OptionsTask';\r\nimport FamVisualTreeOptionTask from './tasks/options/FamVisualTreeOptionTask';\r\nimport HideGrandParentsConnectorsOptionTask from './tasks/options/HideGrandParentsConnectorsOptionTask';\r\nimport NormalizeOptionTask from './tasks/options/NormalizeOptionTask';\r\nimport ExtractNestedLayoutsOptionTask from './tasks/options/ExtractNestedLayoutsOptionTask';\r\nimport OrderFamilyNodesOptionTask from './tasks/options/OrderFamilyNodesOptionTask';\r\nimport LinePaletteOptionTask from './tasks/options/LinePaletteOptionTask';\r\nimport NeighboursSelectionModeOptionTask from './tasks/options/selection/NeighboursSelectionModeOptionTask';\r\nimport UserDefinedNodesOrderTask from './tasks/transformations/UserDefinedNodesOrderTask';\r\nimport LogicalFamilyTask from './tasks/transformations/LogicalFamilyTask';\r\nimport RemoveLoopsTask from './tasks/transformations/RemoveLoopsTask';\r\nimport LabelAnnotationOptionTask from './tasks/options/annotations/LabelAnnotationOptionTask';\r\nimport LabelAnnotationTemplateOptionTask from './tasks/options/annotations/LabelAnnotationTemplateOptionTask';\r\nimport LabelAnnotationPlacementOptionTask from './tasks/options/annotations/LabelAnnotationPlacementOptionTask';\r\n\r\nimport AddLabelAnnotationsTask from './tasks/transformations/AddLabelAnnotationsTask';\r\nimport HideGrandParentsConnectorsTask from './tasks/transformations/HideGrandParentsConnectorsTask';\r\nimport BindFamilyConnectorsTask from './tasks/transformations/BindFamilyConnectorsTask';\r\nimport ExtractNestedLayoutsTask from './tasks/transformations/ExtractNestedLayoutsTask';\r\nimport NormalizeLogicalFamilyTask from './tasks/transformations/NormalizeLogicalFamilyTask';\r\nimport OrderFamilyNodesTask from './tasks/transformations/OrderFamilyNodesTask';\r\nimport LabelAnnotationTemplateParamsTask from './tasks/templates/LabelAnnotationTemplateParamsTask';\r\nimport CombinedTemplateParamsTask from './tasks/templates/CombinedTemplateParamsTask';\r\nimport FamCursorNeighboursTask from './tasks/transformations/selection/FamCursorNeighboursTask';\r\nimport FamSelectionPathItemsTask from './tasks/transformations/selection/FamSelectionPathItemsTask';\r\nimport FamCreateLayoutsTreeTask from './tasks/transformations/FamCreateLayoutsTreeTask';\r\nimport ItemsPositionsTask from './tasks/transformations/ItemsPositionsTask';\r\n\r\nimport TaskManager from './managers/TaskManager';\r\n\r\nexport default function FamTaskManagerFactory(getOptions, getGraphics, getLayout, setLayout, templates) {\r\n var tasks = new TaskManager();\r\n\r\n // Dependencies\r\n tasks.addDependency('options', getOptions);\r\n tasks.addDependency('graphics', getGraphics);\r\n tasks.addDependency('getLayout', getLayout);\r\n tasks.addDependency('setLayout', setLayout);\r\n tasks.addDependency('templates', templates);\r\n\r\n tasks.addDependency('defaultConfig', new FamConfig());\r\n tasks.addDependency('defaultItemConfig', new FamItemConfig());\r\n tasks.addDependency('defaultTemplateConfig', new TemplateConfig());\r\n tasks.addDependency('defaultPaletteItemConfig', new PaletteItemConfig());\r\n\r\n tasks.addDependency('defaultBackgroundAnnotationConfig', new BackgroundAnnotationConfig());\r\n tasks.addDependency('defaultConnectorAnnotationConfig', new ConnectorAnnotationConfig());\r\n tasks.addDependency('defaultHighlightPathAnnotationConfig', new HighlightPathAnnotationConfig());\r\n tasks.addDependency('defaultShapeAnnotationConfig', new ShapeAnnotationConfig());\r\n tasks.addDependency('defaultLabelAnnotationConfig', new LabelAnnotationConfig());\r\n tasks.addDependency('defaultLevelAnnotationConfig', new LevelAnnotationConfig());\r\n\r\n tasks.addDependency('showElbowDots', true);/* in regular org chart we don;t have situations when connector lines cross, but we have such situations in \r\n family tree so we need extra visual attribute to distinguish intersections betwen connectors */\r\n tasks.addDependency('null', null);\r\n tasks.addDependency('foreground', ZOrderType.Foreground);\r\n tasks.addDependency('background', ZOrderType.Background);\r\n\r\n // Options\r\n tasks.addTask('OptionsTask', ['options'], OptionsTask, Colors.Black);\r\n\r\n tasks.addTask('CalloutOptionTask', ['OptionsTask', 'defaultConfig', 'defaultItemConfig'], CalloutOptionTask, Colors.Navy);\r\n tasks.addTask('ConnectorsOptionTask', ['OptionsTask', 'defaultConfig'], ConnectorsOptionTask, Colors.Navy);\r\n tasks.addTask('ItemsOptionTask', ['OptionsTask', 'defaultItemConfig'], FamItemsOptionTask, Colors.Navy);\r\n tasks.addTask('ItemsContentOptionTask', ['OptionsTask', 'defaultItemConfig'], ItemsContentOptionTask, Colors.Navy);\r\n tasks.addTask('ItemsSizesOptionTask', ['OptionsTask', 'defaultConfig', 'defaultItemConfig'], ItemsSizesOptionTask, Colors.Navy);\r\n tasks.addTask('MinimumVisibleLevelsOptionTask', ['OptionsTask', 'defaultConfig'], MinimumVisibleLevelsOptionTask, Colors.Navy); \r\n tasks.addTask('LabelsOptionTask', ['OptionsTask', 'defaultConfig', 'defaultItemConfig'], LabelsOptionTask, Colors.Navy);\r\n tasks.addTask('TemplatesOptionTask', ['OptionsTask', 'defaultConfig', 'defaultTemplateConfig'], TemplatesOptionTask, Colors.Navy);\r\n tasks.addTask('OrientationOptionTask', ['OptionsTask', 'defaultConfig'], OrientationOptionTask, Colors.Navy);\r\n tasks.addTask('VisualTreeOptionTask', ['OptionsTask', 'defaultConfig'], FamVisualTreeOptionTask, Colors.Navy);\r\n tasks.addTask('MinimizedItemsOptionTask', ['OptionsTask'], MinimizedItemsOptionTask, Colors.Navy);\r\n tasks.addTask('HideGrandParentsConnectorsOptionTask', ['OptionsTask', 'defaultConfig'], HideGrandParentsConnectorsOptionTask, Colors.Navy);\r\n tasks.addTask('NormalizeOptionTask', ['OptionsTask', 'defaultConfig'], NormalizeOptionTask, Colors.Navy);\r\n tasks.addTask('ExtractNestedLayoutsOptionTask', ['OptionsTask', 'defaultConfig', 'defaultItemConfig'], ExtractNestedLayoutsOptionTask, Colors.Navy);\r\n tasks.addTask('OrderFamilyNodesOptionTask', ['OptionsTask', 'defaultConfig', 'defaultItemConfig'], OrderFamilyNodesOptionTask, Colors.Navy);\r\n tasks.addTask('LinePaletteOptionTask', ['OptionsTask', 'defaultPaletteItemConfig'], LinePaletteOptionTask, Colors.Navy);\r\n\r\n tasks.addTask('CursorItemOptionTask', ['OptionsTask', 'defaultConfig'], CursorItemOptionTask, Colors.Navy);\r\n tasks.addTask('HighlightItemOptionTask', ['OptionsTask', 'defaultConfig'], HighlightItemOptionTask, Colors.Navy);\r\n tasks.addTask('SelectedItemsOptionTask', ['OptionsTask'], SelectedItemsOptionTask, Colors.Navy);\r\n tasks.addTask('CursorSelectionPathModeOptionTask', ['OptionsTask', 'defaultConfig'], CursorSelectionPathModeOptionTask, Colors.Navy);\r\n tasks.addTask('NeighboursSelectionModeOptionTask', ['OptionsTask', 'defaultConfig'], NeighboursSelectionModeOptionTask, Colors.Navy);\r\n\r\n tasks.addTask('SplitAnnotationsOptionTask', ['OptionsTask'], SplitAnnotationsOptionTask, Colors.Cyan);\r\n\r\n tasks.addTask('ForegroundShapeAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultShapeAnnotationConfig', 'foreground'], ShapeAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('BackgroundShapeAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultShapeAnnotationConfig', 'background'], ShapeAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('ForegroundHighlightPathAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultHighlightPathAnnotationConfig', 'foreground'], HighlightPathAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('BackgroundHighlightPathAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultHighlightPathAnnotationConfig', 'background'], HighlightPathAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('ForegroundConnectorAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultConnectorAnnotationConfig', 'foreground'], ConnectorAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('BackgroundConnectorAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultConnectorAnnotationConfig', 'background'], ConnectorAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('BackgroundAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultBackgroundAnnotationConfig'], BackgroundAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('LevelAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultLevelAnnotationConfig'], LevelAnnotationOptionTask, Colors.Navy);\r\n\r\n tasks.addTask('ScaleOptionTask', ['OptionsTask', 'defaultConfig'], ScaleOptionTask, Colors.Navy);\r\n tasks.addTask('FrameOptionTask', ['OptionsTask', 'defaultConfig'], FrameOptionTask, Colors.Navy);\r\n tasks.addTask('LevelTitlePlacementOptionTask', ['OptionsTask', 'defaultConfig'], LevelTitlePlacementOptionTask, Colors.Navy);\r\n tasks.addTask('LevelTitleTemplateOptionTask', ['OptionsTask', 'defaultConfig'], LevelTitleTemplateOptionTask, Colors.Navy);\r\n\r\n // Transformations\r\n tasks.addTask('UserDefinedNodesOrderTask', ['OrderFamilyNodesOptionTask', 'defaultItemConfig'], UserDefinedNodesOrderTask, Colors.Red);\r\n\r\n tasks.addTask('LogicalFamilyTask', ['ItemsOptionTask'], LogicalFamilyTask, Colors.Cyan);\r\n\r\n tasks.addTask('LabelAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'LogicalFamilyTask', 'defaultLabelAnnotationConfig'], LabelAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('LabelAnnotationTemplateOptionTask', ['LabelAnnotationOptionTask', 'defaultLabelAnnotationConfig'], LabelAnnotationTemplateOptionTask, Colors.Navy);\r\n tasks.addTask('LabelAnnotationPlacementOptionTask', ['LabelAnnotationOptionTask', 'defaultLabelAnnotationConfig'], LabelAnnotationPlacementOptionTask, Colors.Navy);\r\n\r\n tasks.addTask('CombinedContextsTask', ['ItemsContentOptionTask', 'LabelAnnotationOptionTask'], CombinedContextsTask, Colors.Cyan);\r\n\r\n tasks.addTask('AddLabelAnnotationsTask', ['LabelAnnotationPlacementOptionTask', 'LogicalFamilyTask'], AddLabelAnnotationsTask, Colors.Red);\r\n tasks.addTask('RemoveLoopsTask', ['AddLabelAnnotationsTask'], RemoveLoopsTask, Colors.Red);\r\n tasks.addTask('HideGrandParentsConnectorsTask', ['HideGrandParentsConnectorsOptionTask', 'RemoveLoopsTask'], HideGrandParentsConnectorsTask, Colors.Red);\r\n tasks.addTask('BindFamilyConnectorsTask', ['HideGrandParentsConnectorsTask'], BindFamilyConnectorsTask, Colors.Red); \r\n tasks.addTask('ExtractNestedLayoutsTask', ['ExtractNestedLayoutsOptionTask', 'BindFamilyConnectorsTask'], ExtractNestedLayoutsTask, Colors.Red); \r\n tasks.addTask('NormalizeLogicalFamilyTask', ['NormalizeOptionTask', 'ExtractNestedLayoutsTask'], NormalizeLogicalFamilyTask, Colors.Red);\r\n tasks.addTask('OrderFamilyNodesTask', ['OrderFamilyNodesOptionTask', 'UserDefinedNodesOrderTask', 'NormalizeLogicalFamilyTask'], OrderFamilyNodesTask, Colors.Red);\r\n tasks.addTask('FamCreateLayoutsTreeTask', ['OrderFamilyNodesTask', 'ExtractNestedLayoutsTask'], FamCreateLayoutsTreeTask, Colors.Red);\r\n\r\n // Transformations / Templates\r\n tasks.addTask('ReadTemplatesTask', ['TemplatesOptionTask', 'templates'], ReadTemplatesTask, Colors.Cyan);\r\n tasks.addTask('ActiveItemsTask', ['ItemsSizesOptionTask', 'ReadTemplatesTask'], ActiveItemsTask, Colors.Cyan);\r\n tasks.addTask('ItemTemplateParamsTask', ['ItemsSizesOptionTask', 'CursorItemOptionTask', 'ReadTemplatesTask'], ItemTemplateParamsTask, Colors.Cyan);\r\n tasks.addTask('LabelAnnotationTemplateParamsTask', ['ItemsSizesOptionTask', 'LabelAnnotationTemplateOptionTask', 'ReadTemplatesTask'], LabelAnnotationTemplateParamsTask, Colors.Cyan);\r\n tasks.addTask('CombinedTemplateParamsTask', ['ItemTemplateParamsTask', 'LabelAnnotationTemplateParamsTask'], CombinedTemplateParamsTask, Colors.Cyan);\r\n\r\n tasks.addTask('GroupTitleTemplateTask', ['TemplatesOptionTask', 'templates'], GroupTitleTemplateTask, Colors.Cyan);\r\n tasks.addTask('CheckBoxTemplateTask', ['ItemsSizesOptionTask', 'templates'], CheckBoxTemplateTask, Colors.Cyan);\r\n tasks.addTask('ButtonsTemplateTask', ['ItemsSizesOptionTask', 'templates'], ButtonsTemplateTask, Colors.Cyan);\r\n tasks.addTask('AnnotationLabelTemplateTask', ['ItemsOptionTask', 'templates'], AnnotationLabelTemplateTask, Colors.Cyan);\r\n tasks.addTask('LevelAnnotationTemplateTask', ['OrientationOptionTask', 'LevelTitleTemplateOptionTask', 'templates'], LevelAnnotationTemplateTask, Colors.Cyan);\r\n\r\n tasks.addTask('ConnectionsGraphTask', ['graphics', 'CreateTransformTask', 'ConnectorsOptionTask', 'OrderFamilyNodesTask', 'ExtractNestedLayoutsTask', 'AlignDiagramTask', 'RemoveLoopsTask'], ConnectionsGraphTask, Colors.Cyan);\r\n\r\n // Transformations/Selections\r\n tasks.addTask('HighlightItemTask', ['HighlightItemOptionTask', 'ActiveItemsTask'], HighlightItemTask, Colors.Cyan);\r\n\r\n tasks.addTask('CursorItemTask', ['CursorItemOptionTask', 'ActiveItemsTask'], CursorItemTask, Colors.Cyan);\r\n tasks.addTask('CursorNeighboursTask', ['CursorItemTask', 'NeighboursSelectionModeOptionTask', 'AddLabelAnnotationsTask', 'ActiveItemsTask'], FamCursorNeighboursTask, Colors.Cyan);\r\n tasks.addTask('SelectedItemsTask', ['SelectedItemsOptionTask', 'ItemsOptionTask'], SelectedItemsTask, Colors.Cyan);\r\n tasks.addTask('SelectionPathItemsTask', ['RemoveLoopsTask', 'CursorItemTask', 'SelectedItemsTask', 'CursorSelectionPathModeOptionTask'], FamSelectionPathItemsTask, Colors.Cyan);\r\n\r\n tasks.addTask('NormalVisibilityItemsByForegroundShapeAnnotationTask', ['ForegroundShapeAnnotationOptionTask'], NormalVisibilityItemsByAnnotationTask, Colors.Cyan);\r\n tasks.addTask('NormalVisibilityItemsByBackgroundShapeAnnotationTask', ['BackgroundShapeAnnotationOptionTask'], NormalVisibilityItemsByAnnotationTask, Colors.Cyan);\r\n tasks.addTask('NormalVisibilityItemsByBackgroundAnnotationTask', ['BackgroundAnnotationOptionTask'], NormalVisibilityItemsByAnnotationTask, Colors.Cyan);\r\n tasks.addTask('NormalVisibilityItemsByForegroundHighlightPathAnnotationTask', ['ForegroundHighlightPathAnnotationOptionTask'], NormalVisibilityItemsByAnnotationTask, Colors.Cyan);\r\n tasks.addTask('NormalVisibilityItemsByBackgroundHighlightPathAnnotationTask', ['BackgroundHighlightPathAnnotationOptionTask'], NormalVisibilityItemsByAnnotationTask, Colors.Cyan);\r\n tasks.addTask('NormalVisibilityItemsByForegroundConnectorAnnotationTask', ['ForegroundConnectorAnnotationOptionTask'], NormalVisibilityItemsByConnectorAnnotationTask, Colors.Cyan);\r\n tasks.addTask('NormalVisibilityItemsByBackgroundConnectorAnnotationTask', ['BackgroundConnectorAnnotationOptionTask'], NormalVisibilityItemsByConnectorAnnotationTask, Colors.Cyan);\r\n tasks.addTask('NormalVisibilityItemsByMinimumVisibleLevelsTask', ['MinimumVisibleLevelsOptionTask', 'OrderFamilyNodesTask'], NormalVisibilityItemsByMinimumVisibleLevelsTask, Colors.Cyan);\r\n tasks.addTask('CombinedNormalVisibilityItemsTask', [\r\n 'ItemsSizesOptionTask',\r\n 'CursorItemTask',\r\n 'CursorNeighboursTask',\r\n 'SelectedItemsTask',\r\n 'SelectionPathItemsTask',\r\n 'NormalVisibilityItemsByForegroundShapeAnnotationTask',\r\n 'NormalVisibilityItemsByBackgroundShapeAnnotationTask',\r\n 'NormalVisibilityItemsByBackgroundAnnotationTask',\r\n 'NormalVisibilityItemsByForegroundHighlightPathAnnotationTask',\r\n 'NormalVisibilityItemsByBackgroundHighlightPathAnnotationTask',\r\n 'NormalVisibilityItemsByForegroundConnectorAnnotationTask',\r\n 'NormalVisibilityItemsByBackgroundConnectorAnnotationTask',\r\n 'NormalVisibilityItemsByMinimumVisibleLevelsTask'], CombinedNormalVisibilityItemsTask, Colors.Cyan);\r\n\r\n // Layout\r\n tasks.addTask('FrameSizeTask', ['FrameOptionTask', 'ReadTemplatesTask', 'ScaleOptionTask'], FrameSizeTask, Colors.Navy);\r\n tasks.addTask('LevelTitleSizeTask', ['LevelTitlePlacementOptionTask', 'LevelAnnotationOptionTask', 'OrientationOptionTask', 'ScaleOptionTask'], LevelTitleSizeTask, Colors.Navy);\r\n tasks.addTask('LayoutOptionsTask', ['getLayout', 'OptionsTask'], LayoutOptionsTask, Colors.Black);\r\n tasks.addTask('CurrentControlSizeTask', ['LayoutOptionsTask', 'ItemsSizesOptionTask', 'FrameSizeTask', 'LevelTitleSizeTask'], CurrentControlSizeTask, Colors.Black);\r\n tasks.addTask('CurrentScrollPositionTask', ['LayoutOptionsTask'], CurrentScrollPositionTask, Colors.Black);\r\n\r\n tasks.addTask('ItemsPositionsTask', ['CurrentControlSizeTask', 'ScaleOptionTask', 'OrientationOptionTask', 'ItemsSizesOptionTask', 'ConnectorsOptionTask',\r\n 'OrderFamilyNodesOptionTask', 'FamCreateLayoutsTreeTask',\r\n 'CombinedTemplateParamsTask',\r\n 'CursorItemTask', 'CombinedNormalVisibilityItemsTask'], ItemsPositionsTask, Colors.Red);\r\n\r\n tasks.addTask('AlignDiagramTask', ['OrientationOptionTask', 'ItemsSizesOptionTask', 'VisualTreeOptionTask', 'ScaleOptionTask', 'CurrentControlSizeTask', 'ActiveItemsTask', 'ItemsPositionsTask'], AlignDiagramTask, Colors.Red);\r\n tasks.addTask('CreateTransformTask', ['OrientationOptionTask', 'ScaleOptionTask', 'AlignDiagramTask'], CreateTransformTask, Colors.Cyan);\r\n\r\n // Managers\r\n tasks.addTask('PaletteManagerTask', ['ConnectorsOptionTask', 'LinePaletteOptionTask'], PaletteManagerTask, Colors.Cyan);\r\n\r\n // Apply Layout Changes\r\n tasks.addTask('ApplyLayoutChangesTask', ['graphics', 'setLayout', 'ItemsSizesOptionTask', 'CurrentControlSizeTask', 'ScaleOptionTask', 'AlignDiagramTask', 'FrameSizeTask', 'LevelTitleSizeTask'], ApplyLayoutChangesTask, Colors.Cyan);\r\n tasks.addTask('CenterOnCursorTask', ['LayoutOptionsTask', 'ApplyLayoutChangesTask', 'CurrentScrollPositionTask', 'CursorItemTask', 'AlignDiagramTask', 'CreateTransformTask', 'ScaleOptionTask'], CenterOnCursorTask, Colors.Cyan);\r\n tasks.addTask('ProjectItemsToFrameTask', ['CreateTransformTask', 'FrameSizeTask',\r\n 'ApplyLayoutChangesTask', 'ScaleOptionTask',\r\n 'AlignDiagramTask', 'CenterOnCursorTask',\r\n 'ItemTemplateParamsTask',\r\n 'SelectedItemsTask'], ProjectItemsToFrameTask, Colors.Cyan); \r\n tasks.addTask('ViewPortPlacementTask', ['ScaleOptionTask', 'CenterOnCursorTask', 'CreateTransformTask', 'ApplyLayoutChangesTask'], ViewPortPlacementTask, Colors.Green); \r\n tasks.addTask('VerticalOffsetTask', ['ViewPortPlacementTask'], VerticalOffsetTask, Colors.Green); \r\n\r\n tasks.addTask('LogicalLevelsPlacementTask', ['OrderFamilyNodesTask', 'AlignDiagramTask'], FamLogicalLevelsPlacementTask, Colors.Green);\r\n tasks.addTask('MergeLevelIntervalsTask', ['LevelAnnotationOptionTask', 'LogicalLevelsPlacementTask'], MergeLevelIntervalsTask, Colors.Green); \r\n\r\n // Renders\r\n tasks.addTask('DrawBackgroundHighlightPathAnnotationTask', ['graphics', 'ConnectorsOptionTask', 'ForegroundHighlightPathAnnotationOptionTask', 'ConnectionsGraphTask', 'foreground'], DrawHighlightPathAnnotationTask, Colors.Cyan);\r\n tasks.addTask('DrawForegroundHighlightPathAnnotationTask', ['graphics', 'ConnectorsOptionTask', 'BackgroundHighlightPathAnnotationOptionTask', 'ConnectionsGraphTask', 'background'], DrawHighlightPathAnnotationTask, Colors.Cyan);\r\n\r\n tasks.addTask('DrawBackgroundAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'BackgroundAnnotationOptionTask', 'LogicalFamilyTask', 'AlignDiagramTask'], DrawBackgroundAnnotationTask, Colors.Green);\r\n tasks.addTask('DrawForegroundConnectorAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'OrientationOptionTask', 'ForegroundConnectorAnnotationOptionTask', 'AlignDiagramTask', 'AnnotationLabelTemplateTask', 'foreground'], DrawConnectorAnnotationTask, Colors.Green);\r\n tasks.addTask('DrawBackgroundConnectorAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'OrientationOptionTask', 'BackgroundConnectorAnnotationOptionTask', 'AlignDiagramTask', 'AnnotationLabelTemplateTask', 'background'], DrawConnectorAnnotationTask, Colors.Green);\r\n tasks.addTask('DrawForegroundShapeAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'OrientationOptionTask', 'ForegroundShapeAnnotationOptionTask', 'AlignDiagramTask', 'AnnotationLabelTemplateTask', 'foreground'], DrawShapeAnnotationTask, Colors.Green);\r\n tasks.addTask('DrawBackgroundShapeAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'OrientationOptionTask', 'BackgroundShapeAnnotationOptionTask', 'AlignDiagramTask', 'AnnotationLabelTemplateTask', 'background'], DrawShapeAnnotationTask, Colors.Green);\r\n\r\n tasks.addTask('DrawCursorTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'CombinedContextsTask', 'AlignDiagramTask', 'CombinedTemplateParamsTask', 'CursorItemTask', 'SelectedItemsTask'], DrawCursorTask, Colors.Green);\r\n tasks.addTask('DrawHighlightTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'CombinedContextsTask', 'AlignDiagramTask', 'CombinedTemplateParamsTask', 'HighlightItemTask', 'CursorItemTask', 'SelectedItemsTask'], DrawHighlightTask, Colors.Green);\r\n tasks.addTask('DrawHighlightAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'ScaleOptionTask', 'CombinedContextsTask', 'CalloutOptionTask', 'ReadTemplatesTask', 'AlignDiagramTask', 'CenterOnCursorTask', 'HighlightItemTask', 'CursorItemTask', 'SelectedItemsTask', 'FrameSizeTask'], DrawHighlightAnnotationTask, Colors.Green);\r\n\r\n tasks.addTask('DrawTreeItemsTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'ScaleOptionTask',\r\n 'ItemsSizesOptionTask',\r\n 'CombinedContextsTask',\r\n 'AlignDiagramTask', 'CenterOnCursorTask',\r\n 'CombinedTemplateParamsTask',\r\n 'CursorItemTask', 'SelectedItemsTask',\r\n 'GroupTitleTemplateTask', 'CheckBoxTemplateTask', 'ButtonsTemplateTask'\r\n ], DrawTreeItemsTask, Colors.Green);\r\n\r\n tasks.addTask('DrawMinimizedItemsTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'MinimizedItemsOptionTask', 'CombinedTemplateParamsTask', 'AlignDiagramTask'], DrawMinimizedItemsTask, Colors.Green);\r\n\r\n tasks.addTask('DrawConnectorsTask', ['graphics', 'ConnectionsGraphTask', 'ConnectorsOptionTask', 'showElbowDots', 'PaletteManagerTask'], DrawConnectorsTask, Colors.Green);\r\n tasks.addTask('DrawItemLabelsTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'LabelsOptionTask', 'AlignDiagramTask'], DrawItemLabelsTask, Colors.Green);\r\n\r\n tasks.addTask('DrawFrameItemsTask', ['graphics', 'ApplyLayoutChangesTask', 'ProjectItemsToFrameTask', 'ItemTemplateParamsTask', 'MinimizedItemsOptionTask'], DrawFrameItemsTask, Colors.Green);\r\n tasks.addTask('DrawFrameHighlightTask', ['graphics', 'ProjectItemsToFrameTask', 'CombinedContextsTask', 'ItemTemplateParamsTask', 'HighlightItemTask', 'CursorItemTask'], DrawFrameHighlightTask, Colors.Green);\r\n\r\n tasks.addTask('DrawLevelAnnotationBackgroundTask', ['graphics', 'VerticalOffsetTask', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'LevelAnnotationOptionTask', 'MergeLevelIntervalsTask', 'LevelAnnotationTemplateTask'], DrawLevelAnnotationBackgroundTask, Colors.Green);\r\n tasks.addTask('DrawLevelAnnotationTitlesTask', ['graphics', 'VerticalOffsetTask', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'LevelAnnotationOptionTask', 'MergeLevelIntervalsTask', 'LevelAnnotationTemplateTask', 'LevelTitlePlacementOptionTask'], DrawLevelAnnotationTitlesTask, Colors.Green);\r\n return tasks;\r\n};\r\n","import FamEventArgs from './events/FamEventArgs';\r\nimport { getElementOffset } from './graphics/dom';\r\nimport Rect from './graphics/structs/Rect';\r\n\r\nexport default function FamEventArgsFactory(data, oldTreeItemId, newTreeItemId, name) {\r\n var result = new FamEventArgs(),\r\n combinedContextsTask = data.tasks.getTask(\"CombinedContextsTask\"),\r\n alignDiagramTask = data.tasks.getTask(\"AlignDiagramTask\"),\r\n logicalFamilyTask = data.tasks.getTask(\"LogicalFamilyTask\"),\r\n oldItemConfig = combinedContextsTask.getConfig(oldTreeItemId),\r\n newItemConfig = combinedContextsTask.getConfig(newTreeItemId),\r\n family = logicalFamilyTask.getLogicalFamily(),\r\n itemPosition,\r\n offset,\r\n panelOffset;\r\n\r\n if (oldItemConfig && oldItemConfig.id != null) {\r\n result.oldContext = oldItemConfig;\r\n }\r\n\r\n if (newItemConfig && newItemConfig.id != null) {\r\n result.context = newItemConfig;\r\n\r\n family.loopParents(this, newItemConfig.id, function (itemid, item, levelIndex) {\r\n if (levelIndex > 0) {\r\n return family.BREAK;\r\n }\r\n result.parentItems.push(combinedContextsTask.getConfig(itemid));\r\n });\r\n\r\n family.loopChildren(this, newItemConfig.id, function (itemid, item, levelIndex) {\r\n if (levelIndex > 0) {\r\n return family.BREAK;\r\n }\r\n result.childrenItems.push(combinedContextsTask.getConfig(itemid));\r\n });\r\n\r\n panelOffset = getElementOffset(data.layout.mousePanel);\r\n offset = getElementOffset(data.layout.element);\r\n itemPosition = alignDiagramTask.getItemPosition(newTreeItemId);\r\n result.position = new Rect(itemPosition.actualPosition)\r\n .translate(panelOffset.left, panelOffset.top)\r\n .translate(-offset.left, -offset.top);\r\n }\r\n\r\n if (name != null) {\r\n result.name = name;\r\n }\r\n\r\n return result;\r\n};","import AnnotationLabelTemplate from './templates/html/AnnotationLabelTemplate';\r\nimport ButtonsTemplate from './templates/html/ButtonsTemplate';\r\nimport CustomRenderTemplate from './templates/html/CustomRenderTemplate';\r\nimport CheckBoxTemplate from './templates/html/CheckBoxTemplate';\r\nimport CursorTemplate from './templates/html/CursorTemplate';\r\nimport DotHighlightTemplate from './templates/html/DotHighlightTemplate';\r\nimport GroupTitleTemplate from './templates/html/GroupTitleTemplate';\r\nimport HighlightTemplate from './templates/html/HighlightTemplate';\r\nimport ItemTemplate from './templates/html/ItemTemplate';\r\nimport UserTemplate from './templates/html/UserTemplate';\r\nimport LevelTitleTemplate from './templates/html/LevelTitleTemplate';\r\nimport LevelBackgroundTemplate from './templates/html/LevelBackgroundTemplate';\r\nimport LabelAnnotationTemplate from './templates/html/LabelAnnotationTemplate';\r\n\r\nimport BaseControl from './BaseControl';\r\nimport FamTaskManagerFactory from './FamTaskManagerFactory';\r\nimport FamEventArgsFactory from './FamEventArgsFactory';\r\n/**\r\n* Creates JavaScript Family Diagram Control\r\n * @class Control\r\n * @param {object} element Reference to placeholder `div` element in the DOM. The control renders diagram content\r\n * inside of that div element and adds events listeners.\r\n * @param {FamConfig} options Family Diagram Configuration object\r\n * \r\n * @returns {FamDiagram} Returns reference to family diagram control. Since control adds event listeners bound\r\n * to its contents, call `destroy` method to clean up everything.\r\n */\r\nexport default function FamDiagram(element, options, templates) {\r\n return BaseControl(element, options, FamTaskManagerFactory, FamEventArgsFactory, {\r\n AnnotationLabelTemplate,\r\n ButtonsTemplate,\r\n CustomRenderTemplate,\r\n CheckBoxTemplate,\r\n CursorTemplate,\r\n DotHighlightTemplate,\r\n GroupTitleTemplate,\r\n HighlightTemplate,\r\n ItemTemplate,\r\n UserTemplate,\r\n LevelTitleTemplate,\r\n LevelBackgroundTemplate,\r\n /* FamDiagram specific templates */\r\n LabelAnnotationTemplate,\r\n ...templates\r\n });\r\n};\r\n","/* jshint latedef: true, unused: false */\r\nexport default function AnnotationLabelTemplate() {\r\n function template() {\r\n return {};\r\n }\r\n\r\n function getHashCode() {\r\n return 0;\r\n }\r\n\r\n function render(doc, position, data) {\r\n var annotationConfig = data.context;\r\n\r\n doc.save();\r\n\r\n doc.font('Helvetica', 12)\r\n .text(annotationConfig.label, position.x, position.y, {\r\n width: position.width,\r\n height: position.height,\r\n align: 'center'\r\n });\r\n\r\n doc.restore();\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};","export default function CheckBoxTemplate(selectCheckBoxLabel) {\r\n var _checked = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAF/SURBVDhPpZM7rwFREMf/u4hEY5vVkigoSERiKwq1QqOh28R30QnFRqnSKHwFn0C37Sbi0SCE2KzE41wzd/feG48g91ftmdn5zznzkLLZrNhutzidTvgEv98PRVEgxeNx0e12EYvFcDweXfdjZFmGEIKDx+MxdF0HotGomEwmV/tnUAzFyqT8KrNHLpdDJpPBZrPh81UHLPAO7XYb6/Ua8/kcpmnC5/NBkqT3BJbLJRqNBgKBACqVCgqFAg6HA/veEiiVSlBVFZfLBZ1Ox7V+81KAMtPVV6sV+v2+a/2FBeg9RDqdhqZp/E1Mp1O0Wi32V6tVLuAtLEBvGw6HmM1m2O/3yOfz7CyXy4hEItz3ZrPJtr/8dIEKUiwWYRgGX3e32yGZTOJ8PnMBB4MBB9xy14VarcaZFosFQqEQHMdBvV5HIpFw/3gATZNlWTxdHr1eT4TDYZFKpVzLPRRDsU9HeTQaCdu23dM91wKzwNNlCgaDXINHW0pF95bpn+us4AsY2TIOZFyZ9AAAAABJRU5ErkJggg==',\r\n _unchecked = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAACjSURBVDhPrZNNCsQgDEY/f2q33sCCN+iNPJlXE2/gTtDiVBln1TJo+zZBJS+YELLvewkhIOeMETjnkFKCaK2LtRbbtiGl9H2+hlKKUkpLds7BGAMopYr3/rwfo+bUXFrN/yrfcXrQBDMwxkAImRfEGFucFnTeEdT/zNIEy7K0wyi/KfSGjPJoCp13BDM9EEK0eLtM67riOI7LLa0F+zI9XGeJDyTldfBA9FNyAAAAAElFTkSuQmCC';\r\n\r\n function template() {\r\n return {};\r\n }\r\n\r\n function getHashCode() {\r\n return 0;\r\n }\r\n\r\n function render(doc, position, data) {\r\n var image = data.isSelected ? _checked : _unchecked;\r\n\r\n doc.save();\r\n\r\n /* photo */\r\n doc.image(image, position.x, position.y);\r\n\r\n doc.font('Helvetica', 11)\r\n .text(selectCheckBoxLabel, position.x + 20, position.y + 4, {\r\n ellipsis: true,\r\n width: (position.width - 4),\r\n height: position.height,\r\n align: 'left'\r\n });\r\n\r\n doc.restore();\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};","export default function CustomRenderTemplate(options, onRender) {\r\n function template() {\r\n return {};\r\n }\r\n\r\n function getHashCode() {\r\n return 0;\r\n }\r\n\r\n function render(doc, position, data) {\r\n if (onRender != null) {\r\n onRender(doc, position, data);\r\n }\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};\r\n\r\n","export default function CursorTemplate(options, itemTemplateConfig) {\r\n var _config = itemTemplateConfig;\r\n\r\n function template() {\r\n return {};\r\n }\r\n\r\n function getHashCode() {\r\n return 0;\r\n }\r\n\r\n function render(doc, position, data) {\r\n doc.save();\r\n\r\n /* item border */\r\n doc.roundedRect(position.x, position.y, position.width, position.height, 4)\r\n .lineWidth(_config.cursorBorderWidth)\r\n .stroke('#fbd850');\r\n\r\n doc.restore();\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};","export default function DummyTemplate() {\r\n function template() {\r\n return {};\r\n }\r\n\r\n function getHashCode() {\r\n return 0;\r\n }\r\n\r\n function render() { }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};","import { TextOrientationType, VerticalAlignmentType } from '../../enums';\r\nimport Rect from '../../graphics/structs/Rect';\r\nimport { getTextAlign } from '../../graphics/EnumValues';\r\n\r\nexport function renderRotatedText({doc, textOrientation, label, fontSize, fontColor, position, titleColor, horizontalAlignment, verticalAlignment }) {\r\n doc.save();\r\n\r\n doc.fillColor(titleColor)\r\n .roundedRect(position.x, position.y, position.width - 2, position.height, 4)\r\n .fill();\r\n\r\n var labelPosition = new Rect(position.x + 4, position.y, position.width - 8, position.height);\r\n switch (textOrientation) {\r\n case TextOrientationType.RotateLeft:\r\n doc.translate( 0, position.height)\r\n .rotate(-90, {\r\n origin: [position.x, position.y]\r\n });\r\n labelPosition = new Rect(position.x + 4, position.y, position.height - 8, position.width);\r\n break;\r\n case TextOrientationType.RotateRight:\r\n doc.translate(position.width, 0)\r\n .rotate(90, {\r\n origin: [position.x, position.y]\r\n });\r\n labelPosition = new Rect(position.x + 4, position.y, position.height - 8, position.width);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n doc.font('Helvetica', fontSize);\r\n\r\n var textHeight = doc.currentLineHeight();\r\n\r\n switch(verticalAlignment) {\r\n case VerticalAlignmentType.Top:\r\n labelPosition.y +=2;\r\n break;\r\n case VerticalAlignmentType.Middle:\r\n labelPosition.y += Math.ceil(labelPosition.height / 2 - textHeight / 2);\r\n break;\r\n case VerticalAlignmentType.Bottom:\r\n labelPosition.y += Math.ceil(labelPosition.height - textHeight - 1);\r\n break;\r\n\r\n }\r\n\r\n /* title */\r\n doc.fillColor(fontColor)\r\n .text(label, labelPosition.x, labelPosition.y, {\r\n ellipsis: true,\r\n width: labelPosition.width,\r\n height: labelPosition.height,\r\n align: getTextAlign(horizontalAlignment)\r\n });\r\n doc.restore(); \r\n}","import { highestContrast } from '../../common/colors';\r\nimport { renderRotatedText } from './RotatedText';\r\n\r\nexport default function GroupTitleTemplate(options) {\r\n var {\r\n groupTitleFontSize, \r\n groupTitleFontFamily: fontFamily,\r\n groupTitleFontWeight: fontWeight,\r\n groupTitleFontStyle: fontStyle,\r\n groupTitleOrientation: textOrientation,\r\n groupTitleHorizontalAlignment: horizontalAlignment,\r\n groupTitleVerticalAlignment: verticalAlignment,\r\n groupTitleColor, \r\n itemTitleFirstFontColor, \r\n itemTitleSecondFontColor\r\n } = options;\r\n function template() {\r\n return {};\r\n }\r\n\r\n function getHashCode() {\r\n return 0;\r\n }\r\n\r\n function render(doc, position, data) {\r\n var itemConfig = data.context,\r\n titleColor = itemConfig.groupTitleColor || groupTitleColor,\r\n fontColor = highestContrast(titleColor, itemTitleSecondFontColor, itemTitleFirstFontColor),\r\n label = itemConfig.groupTitle;\r\n\r\n var fontSize = parseInt(groupTitleFontSize, 10);\r\n\r\n renderRotatedText({doc, textOrientation, label, fontSize, fontColor, position, titleColor, horizontalAlignment, verticalAlignment });\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};\r\n\r\n","export default function HighlightTemplate(options, itemTemplateConfig) {\r\n var _config = itemTemplateConfig;\r\n\r\n function template() {\r\n return {};\r\n }\r\n\r\n function getHashCode() {\r\n return 0;\r\n }\r\n\r\n function render(doc, position, _data) {\r\n doc.save();\r\n\r\n /* border */\r\n doc.roundedRect(position.x, position.y, position.width, position.height, 4)\r\n .lineWidth(_config.highlightBorderWidth)\r\n .stroke('#fbcb09');\r\n\r\n doc.restore();\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};","import { highestContrast } from '../../common/colors';\r\nimport { Colors } from '../../enums';\r\nimport Size from '../../graphics/structs/Size';\r\n\r\nexport default function ItemTemplate(options, itemTemplateConfig) {\r\n var _config = itemTemplateConfig;\r\n\r\n function template() {\r\n return {};\r\n }\r\n\r\n function getHashCode() {\r\n return 0;\r\n }\r\n\r\n function render(doc, position, data) {\r\n var itemConfig = data.context,\r\n itemTitleColor = itemConfig.itemTitleColor != null ? itemConfig.itemTitleColor : Colors.RoyalBlue,\r\n color = highestContrast(itemTitleColor, options.itemTitleSecondFontColor, options.itemTitleFirstFontColor),\r\n contentSize = new Size(_config.itemSize);\r\n\r\n contentSize.width -= _config.itemBorderWidth * 2;\r\n contentSize.height -= _config.itemBorderWidth * 2;\r\n\r\n doc.save();\r\n\r\n /* item border */\r\n doc.roundedRect(position.x, position.y, position.width, position.height, 4)\r\n .lineWidth(_config.itemBorderWidth)\r\n .stroke('#dddddd');\r\n\r\n /* title background */\r\n doc.fillColor(itemTitleColor)\r\n .roundedRect(position.x + 2, position.y + 2, (contentSize.width - 4), 18, 2)\r\n .fill();\r\n\r\n /* title */\r\n doc.fillColor(color)\r\n .font('Helvetica', 12)\r\n .text(itemConfig.title, position.x + 4, position.y + 7, {\r\n ellipsis: true,\r\n width: (contentSize.width - 4 - 4 * 2),\r\n height: 16,\r\n align: 'left'\r\n });\r\n\r\n /* photo */\r\n if (itemConfig.image != null) {\r\n doc.image(itemConfig.image, position.x + 3, position.y + 24);\r\n }\r\n /* photo frame */\r\n doc.rect(position.x + 3, position.y + 24, 50, 60)\r\n .stroke('#cccccc');\r\n\r\n /* description */\r\n doc.fillColor('black')\r\n .font('Helvetica', 10)\r\n .text(itemConfig.description, position.x + 56, position.y + 24, {\r\n ellipsis: true,\r\n width: (contentSize.width - 4 - 56),\r\n height: 74,\r\n align: 'left'\r\n });\r\n doc.restore();\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};","import ItemTemplate from './ItemTemplate';\r\n\r\nexport default function UserTemplate(options, itemTemplateConfig, onRender) {\r\n function template() {\r\n return {};\r\n }\r\n\r\n function getHashCode() {\r\n return 0;\r\n }\r\n\r\n function render(doc, position, data) {\r\n if (onRender != null) {\r\n onRender(doc, position, data);\r\n } else {\r\n var itemTemplate = ItemTemplate(options, itemTemplateConfig);\r\n itemTemplate.render(doc, position, data);\r\n }\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};","export default function LabelAnnotationTemplate() {\r\n function template() {\r\n return {};\r\n }\r\n\r\n function getHashCode() {\r\n return 0;\r\n }\r\n\r\n function render(doc, position, data) {\r\n var itemConfig = data.context;\r\n\r\n doc.save();\r\n\r\n doc.font('Helvetica', 12)\r\n .text(itemConfig.title, position.x, position.y, {\r\n width: position.width,\r\n height: position.height,\r\n align: 'center'\r\n });\r\n\r\n doc.restore();\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};","import { TextOrientationType, OrientationType } from '../../enums';\r\nimport { renderRotatedText } from './RotatedText';\r\n\r\nexport default function LevelTitleTemplate(options, orientation) {\r\n var {levelTitleFontSize, \r\n levelTitleFontFamily: fontFamily,\r\n levelTitleFontWeight: fontWeight,\r\n levelTitleFontStyle: fontStyle,\r\n levelTitleFontColor,\r\n levelTitleOrientation: textOrientation,\r\n levelTitleHorizontalAlignment: horizontalAlignment,\r\n levelTitleVerticalAlignment: verticalAlignment,\r\n levelTitleColor \r\n } = options;\r\n\r\n function template() {\r\n return {};\r\n }\r\n\r\n function getHashCode() {\r\n return 0;\r\n }\r\n\r\n function render(doc, position, data) {\r\n var config = data.context,\r\n titleColor = config.titleColor || levelTitleColor,\r\n label = config.title,\r\n fontColor = config.titleFontColor || levelTitleFontColor;\r\n\r\n if(textOrientation == TextOrientationType.Auto) {\r\n switch (orientation) {\r\n case OrientationType.Top:\r\n textOrientation = TextOrientationType.RotateRight;\r\n break;\r\n case OrientationType.Bottom:\r\n textOrientation = TextOrientationType.RotateLeft;\r\n break;\r\n case OrientationType.Left:\r\n case OrientationType.Right:\r\n break;\r\n }\r\n }\r\n\r\n var fontSize = parseInt(levelTitleFontSize, 10);\r\n\r\n renderRotatedText({doc, textOrientation, label, fontSize, fontColor, position, titleColor, horizontalAlignment, verticalAlignment });\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};\r\n\r\n","import { LineType, PlacementType } from '../../enums';\r\n\r\nexport default function LevelBackgroundTemplate(options, levelAnnotationConfig) {\r\n function template() {\r\n return {};\r\n }\r\n\r\n function getHashCode() {\r\n return 0;\r\n }\r\n\r\n function render(doc, position, data) {\r\n var annotationConfig = data.context;\r\n var {\r\n opacity,\r\n borderColor,\r\n fillColor,\r\n lineWidth: borderWidth,\r\n lineType\r\n } = annotationConfig;\r\n\r\n doc.save();\r\n\r\n /* item border */\r\n doc.rect(position.x, position.y, position.width, position.height, 0)\r\n .fillColor(fillColor, opacity)\r\n .fill();\r\n\r\n doc.lineJoin('round');\r\n\r\n position.loopEdges(function(vector, placementType) {\r\n var lineWidth = 0;\r\n switch(placementType) {\r\n case PlacementType.Top:\r\n lineWidth = borderWidth.top;\r\n break;\r\n case PlacementType.Right:\r\n lineWidth = borderWidth.right;\r\n break;\r\n case PlacementType.Bottom:\r\n lineWidth = borderWidth.bottom;\r\n break;\r\n case PlacementType.Left:\r\n lineWidth = borderWidth.left;\r\n break;\r\n }\r\n if(lineWidth > 0) {\r\n if (lineType != null) {\r\n var step = Math.round(lineWidth) || 1;\r\n switch (lineType) {\r\n case LineType.Solid:\r\n break;\r\n case LineType.Dotted:\r\n doc.dash(step, step * 2);\r\n break;\r\n case LineType.Dashed:\r\n doc.dash(step * 5, step * 3);\r\n break;\r\n }\r\n }\r\n doc.moveTo(vector.from.x, vector.from.y)\r\n .lineTo(vector.to.x, vector.to.y)\r\n .lineWidth(lineWidth)\r\n .strokeColor(borderColor)\r\n .stroke();\r\n }\r\n });\r\n\r\n doc.restore();\r\n }\r\n\r\n return {\r\n template: template,\r\n getHashCode: getHashCode,\r\n render: render\r\n };\r\n};","import Placeholder from './Placeholder';\r\nimport { SegmentType, LineType } from '../enums';\r\nimport Rect from './structs/Rect';\r\nimport Size from './structs/Size';\r\nimport RenderEventArgs from '../events/RenderEventArgs';\r\n\r\nexport default function PdfGraphics(doc) {\r\n this._doc = doc,\r\n this._context = this._doc;\r\n this.m_placeholders = {};\r\n this.m_activePlaceholder = null;\r\n this.saveCounter = 0;\r\n};\r\n\r\nPdfGraphics.prototype.clean = function () {\r\n while(this.saveCounter) {\r\n this.saveCounter--;\r\n this._doc.restore();\r\n }\r\n};\r\n\r\nPdfGraphics.prototype.resize = function (name, width, height) {\r\n var placeholder = this.m_placeholders[name];\r\n if(!placeholder) {\r\n placeholder = new Placeholder(name);;\r\n placeholder.size = new Size(0, 0);\r\n placeholder.rect = new Rect(0, 0, 0, 0);\r\n this.m_placeholders[name] = placeholder;\r\n }\r\n placeholder.size = new Size(width, height);\r\n placeholder.rect = new Rect(placeholder.rect.x, placeholder.rect.y, width, height);\r\n};\r\n\r\nPdfGraphics.prototype.position = function (name, left, top, width, height) {\r\n this.resize(name, width, height);\r\n\r\n var placeholder = this.m_placeholders[name];\r\n placeholder.rect.x = left;\r\n placeholder.rect.y = top;\r\n};\r\n\r\nPdfGraphics.prototype.begin = function () {\r\n\r\n};\r\n\r\nPdfGraphics.prototype.end = function () {\r\n\r\n};\r\n\r\nPdfGraphics.prototype.reset = function (arg0, arg1) {\r\n\r\n};\r\n\r\nPdfGraphics.prototype.activate = function (name, layer) {\r\n if(!this.m_placeholders[name]) {\r\n this.resize(name, 0, 0);\r\n }\r\n this.m_activePlaceholder = this.m_placeholders[name];\r\n\r\n var { x, y } = this.m_activePlaceholder.rect;\r\n while(this.saveCounter) {\r\n this.saveCounter--;\r\n this._doc.restore();\r\n }\r\n this._doc.save();\r\n this.saveCounter++;\r\n this._doc.translate(x, y);\r\n\r\n return this.m_activePlaceholder;\r\n};\r\n\r\nPdfGraphics.prototype.text = function (x, y, width, height, label, orientation, horizontalAlignment, verticalAlignment, attr) {\r\n\r\n};\r\n\r\nPdfGraphics.prototype.polylinesBuffer = function (buffer) {\r\n buffer.loop(this, function (polyline) {\r\n if (polyline.length() > 0) {\r\n this.polyline(polyline);\r\n }\r\n });\r\n};\r\n\r\nPdfGraphics.prototype.polyline = function (polylineData) {\r\n var placeholder = this.m_activePlaceholder,\r\n attr = polylineData.paletteItem.toAttr(),\r\n step,\r\n cornerRadius,\r\n doc = this._doc;\r\n\r\n doc.save();\r\n polylineData.loop(this, function (segment) {\r\n switch (segment.segmentType) {\r\n case SegmentType.Move:\r\n doc.moveTo(Math.round(segment.x) + 0.5, Math.round(segment.y) + 0.5);\r\n break;\r\n case SegmentType.Line:\r\n doc.lineTo(Math.round(segment.x) + 0.5, Math.round(segment.y) + 0.5);\r\n break;\r\n case SegmentType.Dot:\r\n if (segment.width == segment.height && segment.width / 2.0 <= segment.cornerRadius) {\r\n // circle dot\r\n doc.roundedRect(Math.round(segment.x) + 0.5, Math.round(segment.y) + 0.5, segment.width, segment.height, Math.min(segment.width, segment.height) / 2.0);\r\n } else if (segment.cornerRadius === 0) {\r\n // square\r\n doc.moveTo(Math.round(segment.x) + 0.5, Math.round(segment.y) + 0.5);\r\n doc.lineTo(Math.round(segment.x + segment.width) + 0.5, Math.round(segment.y) + 0.5);\r\n doc.lineTo(Math.round(segment.x + segment.width) + 0.5, Math.round(segment.y + segment.height) + 0.5);\r\n doc.lineTo(Math.round(segment.x) + 0.5, Math.round(segment.y + segment.height) + 0.5);\r\n doc.lineTo(Math.round(segment.x) + 0.5, Math.round(segment.y) + 0.5);\r\n } else {\r\n // rounded corners rectangle\r\n cornerRadius = Math.min(segment.cornerRadius, Math.min(segment.width / 2.0, segment.height / 2.0));\r\n doc.roundedRect(Math.round(segment.x) + 0.5, Math.round(segment.y) + 0.5, segment.width, segment.height, cornerRadius);\r\n }\r\n break;\r\n case SegmentType.QuadraticArc:\r\n doc.quadraticCurveTo(Math.round(segment.cpX) + 0.5, Math.round(segment.cpY) + 0.5, Math.round(segment.x) + 0.5, Math.round(segment.y) + 0.5);\r\n break;\r\n case SegmentType.CubicArc:\r\n doc.bezierCurveTo(Math.round(segment.cpX1) + 0.5,\r\n Math.round(segment.cpY1) + 0.5,\r\n Math.round(segment.cpX2) + 0.5,\r\n Math.round(segment.cpY2) + 0.5,\r\n Math.round(segment.x) + 0.5,\r\n Math.round(segment.y) + 0.5);\r\n break;\r\n }\r\n });\r\n\r\n doc.lineJoin('round');\r\n\r\n if (attr.lineType != null) {\r\n step = Math.round(attr.lineWidth) || 1;\r\n switch (attr.lineType) {\r\n case LineType.Solid:\r\n break;\r\n case LineType.Dotted:\r\n doc.dash(step, step * 2);\r\n break;\r\n case LineType.Dashed:\r\n doc.dash(step * 5, step * 3);\r\n break;\r\n }\r\n }\r\n\r\n if (attr.lineWidth !== undefined && attr.fillColor !== undefined) {\r\n doc\r\n .lineWidth(attr.lineWidth)\r\n .fillColor(attr.fillColor, attr.opacity)\r\n .strokeColor(attr.borderColor)\r\n .fillAndStroke();\r\n }\r\n else if (attr.lineWidth !== undefined) {\r\n doc\r\n .lineWidth(attr.lineWidth)\r\n .stroke(attr.borderColor);\r\n }\r\n else if (attr.fillColor !== undefined) {\r\n doc.fillColor(attr.fillColor, attr.opacity);\r\n }\r\n doc.restore();\r\n};\r\n\r\n\r\nPdfGraphics.prototype.rightAngleLine = function (fromX, fromY, toX, toY, attr) {\r\n\r\n};\r\n\r\nPdfGraphics.prototype.template = function (x, y, width, height, contentx, contenty, contentWidth, contentHeight, template, hashCode, onRenderTemplate, uiHash, attr) { //ignore jslint\r\n var gap = 0;\r\n\r\n if (attr !== null) {\r\n if (attr.borderWidth !== undefined) {\r\n gap = this.getPxSize(attr.borderWidth);\r\n }\r\n }\r\n\r\n var position = new Rect(x + contentx, y + contenty, contentWidth - gap, contentHeight - gap);\r\n\r\n if (uiHash == null) {\r\n uiHash = new RenderEventArgs();\r\n }\r\n\r\n if (onRenderTemplate !== null) {\r\n onRenderTemplate(this._doc, position, uiHash);\r\n }\r\n};\r\n\r\nPdfGraphics.prototype.getPxSize = function (value, base) {\r\n var result = value;\r\n if (typeof value === \"string\") {\r\n if (value.indexOf(\"pt\") > 0) {\r\n result = parseInt(value, 10) * 96 / 72;\r\n }\r\n else if (value.indexOf(\"%\") > 0) {\r\n result = parseFloat(value) / 100.0 * base;\r\n }\r\n else {\r\n result = parseInt(value, 10);\r\n }\r\n }\r\n return result;\r\n};","import Size from './graphics/structs/Size';\r\nimport PdfGraphics from './graphics/PdfGraphics';\r\nimport { PageFitMode, Enabled } from './enums';\r\n/**\r\n * Creates PDFKit Family Diagram Plugin\r\n * @class BasePdfkitPlugin\r\n * \r\n * @param {object} options Family Diagram Configuration object\r\n * \r\n * @returns {BasePdfkitPlugin} Returns reference to PDFKit Plugin instance.\r\n */\r\nexport default function BasePdfkitPlugin(options, createTaskManager, templates) {\r\n var _data = {\r\n doc: null,\r\n options: options,\r\n tasks: null,\r\n graphics: null,\r\n controlSize: null,\r\n },\r\n _debug = false;\r\n\r\n function getOptions() {\r\n return _data.options;\r\n }\r\n\r\n function getGraphics() {\r\n return _data.graphics;\r\n }\r\n\r\n function setLayout(options) {\r\n var { graphics } = _data,\r\n { frameMousePanelRect, titlesMousePanelRect, scrollPanelRect, controlSize } = options;\r\n\r\n graphics.position(\"frameplaceholder\", frameMousePanelRect.x, frameMousePanelRect.y, frameMousePanelRect.width, frameMousePanelRect.height );\r\n graphics.position(\"titlesplaceholder\", titlesMousePanelRect.x, titlesMousePanelRect.y, titlesMousePanelRect.width, titlesMousePanelRect.height );\r\n graphics.position(\"placeholder\", scrollPanelRect.x, scrollPanelRect.y, scrollPanelRect.width, scrollPanelRect.height);\r\n\r\n _data.controlSize = controlSize;\r\n }\r\n\r\n function _disableNotAvailableFunctionality() {\r\n /* disable functionality not available in PDF */\r\n _data.options.scale = 1;\r\n _data.options.showFrame = false;\r\n _data.options.hasButtons = Enabled.False;\r\n _data.options.pageFitMode = PageFitMode.AutoSize;\r\n _data.options.autoSizeMinimum = new Size(0, 0);\r\n _data.options.autoSizeMaximum = new Size(1000000, 1000000);\r\n }\r\n\r\n /**\r\n * Calculates size of the diagram required to render all nodes without truncation.\r\n * \r\n * @param {object} doc PDFKit document\r\n * @param {number} positionX Diagram placement X coordinate\r\n * @param {number} positionY Diagram placement Y coordinate\r\n * @returns {Size} Returns size of the diagram\r\n */\r\n function draw(doc, positionX, positionY) {\r\n _data.doc = doc;\r\n\r\n _data.tasks = createTaskManager(getOptions, getGraphics, setLayout, templates);\r\n _data.graphics = new PdfGraphics(_data.doc);\r\n _data.graphics.debug = _debug;\r\n\r\n _disableNotAvailableFunctionality();\r\n\r\n _data.doc.save();\r\n\r\n _data.doc.translate(positionX, positionY);\r\n\r\n _data.tasks.process('OptionsTask', null, _debug);\r\n _data.graphics.clean();\r\n\r\n _data.doc.restore();\r\n\r\n return new Size(_data.controlSize);\r\n }\r\n\r\n /**\r\n * Calculates size of the diagram required to render all nodes without truncation.\r\n * \r\n * @returns {Size} Returns size of the diagram\r\n */\r\n function getSize() {\r\n _data.tasks = createTaskManager(getOptions, getGraphics, setLayout, templates);\r\n _data.graphics = new PdfGraphics(_data.doc);\r\n _data.graphics.debug = _debug;\r\n\r\n _disableNotAvailableFunctionality();\r\n\r\n _data.tasks.process('OptionsTask', 'ApplyLayoutChangesTask', _debug);\r\n _data.graphics.clean();\r\n \r\n return new Size(_data.controlSize);\r\n }\r\n\r\n return {\r\n draw: draw,\r\n getSize: getSize\r\n };\r\n};\r\n","export default function DummyCombinedNormalVisibilityItemsTask(optionsTask) {\r\n function process() {\r\n return true;\r\n }\r\n\r\n function isItemSelected(treeItem) {\r\n return false;\r\n }\r\n\r\n return {\r\n process: process,\r\n isItemSelected: isItemSelected\r\n };\r\n};","import Size from '../../graphics/structs/Size';\r\n\r\nexport default function DummyCurrentControlSizeTask(optionsTask) {\r\n function process() {\r\n return true;\r\n }\r\n\r\n function getOptions() {\r\n return {\r\n scrollPanelSize: new Size(800, 600),\r\n optimalPanelSize: new Size(800 - 25, 600 - 25),\r\n hasFrame: true,\r\n hasLevelTitles: true\r\n }\r\n }\r\n\r\n return {\r\n process: process,\r\n getOptions: getOptions\r\n };\r\n};\r\n","import OrgConfig from './configs/OrgConfig';\r\nimport OrgItemConfig from './configs/OrgItemConfig';\r\nimport TemplateConfig from './configs/TemplateConfig';\r\nimport BackgroundAnnotationConfig from './configs/BackgroundAnnotationConfig';\r\nimport ConnectorAnnotationConfig from './configs/ConnectorAnnotationConfig';\r\nimport HighlightPathAnnotationConfig from './configs/HighlightPathAnnotationConfig';\r\nimport ShapeAnnotationConfig from './configs/ShapeAnnotationConfig';\r\nimport LevelAnnotationConfig from './configs/LevelAnnotationConfig';\r\n \r\nimport { ZOrderType, Colors } from './enums';\r\n\r\nimport OptionsTask from './tasks/options/OptionsTask';\r\nimport CalloutOptionTask from './tasks/options/CalloutOptionTask';\r\nimport ConnectorsOptionTask from './tasks/options/ConnectorsOptionTask';\r\nimport OrgItemsOptionTask from './tasks/options/OrgItemsOptionTask';\r\nimport ItemsSizesOptionTask from './tasks/options/ItemsSizesOptionTask';\r\nimport TemplatesOptionTask from './tasks/options/TemplatesOptionTask';\r\nimport OrientationOptionTask from './tasks/options/OrientationOptionTask';\r\nimport OrgVisualTreeOptionTask from './tasks/options/OrgVisualTreeOptionTask';\r\nimport CursorItemOptionTask from './tasks/options/selection/CursorItemOptionTask';\r\nimport HighlightItemOptionTask from './tasks/options/selection/HighlightItemOptionTask';\r\nimport SelectedItemsOptionTask from './tasks/options/selection/SelectedItemsOptionTask';\r\n\r\nimport SplitAnnotationsOptionTask from './tasks/options/annotations/SplitAnnotationsOptionTask';\r\nimport ShapeAnnotationOptionTask from './tasks/options/annotations/ShapeAnnotationOptionTask';\r\nimport HighlightPathAnnotationOptionTask from './tasks/options/annotations/HighlightPathAnnotationOptionTask';\r\nimport ConnectorAnnotationOptionTask from './tasks/options/annotations/ConnectorAnnotationOptionTask';\r\nimport BackgroundAnnotationOptionTask from './tasks/options/annotations/BackgroundAnnotationOptionTask';\r\nimport LevelAnnotationOptionTask from './tasks/options/annotations/LevelAnnotationOptionTask';\r\nimport ScaleOptionTask from './tasks/options/ScaleOptionTask';\r\nimport FrameOptionTask from './tasks/options/FrameOptionTask';\r\nimport LevelTitlePlacementOptionTask from './tasks/options/LevelTitlePlacementOptionTask';\r\nimport LevelTitleTemplateOptionTask from './tasks/options/LevelTitleTemplateOptionTask';\r\n\r\nimport CombinedContextsTask from './tasks/transformations/CombinedContextsTask';\r\nimport OrgTreeTask from './tasks/transformations/OrgTreeTask';\r\n\r\nimport ReadTemplatesTask from './tasks/templates/ReadTemplatesTask';\r\nimport ItemTemplateParamsTask from './tasks/templates/ItemTemplateParamsTask';\r\nimport GroupTitleTemplateTask from './tasks/templates/GroupTitleTemplateTask';\r\nimport CheckBoxTemplateTask from './tasks/templates/CheckBoxTemplateTask';\r\nimport ButtonsTemplateTask from './tasks/templates/ButtonsTemplateTask';\r\nimport AnnotationLabelTemplateTask from './tasks/templates/AnnotationLabelTemplateTask';\r\nimport LevelAnnotationTemplateTask from './tasks/templates/LevelAnnotationTemplateTask';\r\n\r\nimport VisualTreeTask from './tasks/transformations/VisualTreeTask';\r\nimport VisualTreeLevelsTask from './tasks/transformations/VisualTreeLevelsTask';\r\nimport ExtractNestedLayoutsTask from './tasks/transformations/OrgExtractNestedLayoutsTask';\r\nimport CreateLayoutsTreeTask from './tasks/transformations/OrgCreateLayoutsTreeTask';\r\n\r\nimport ConnectionsGraphTask from './tasks/transformations/ConnectionsGraphTask';\r\nimport HighlightItemTask from './tasks/transformations/selection/HighlightItemTask';\r\nimport CursorItemTask from './tasks/transformations/selection/CursorItemTask';\r\nimport SelectedItemsTask from './tasks/transformations/selection/SelectedItemsTask';\r\n\r\nimport DummyCombinedNormalVisibilityItemsTask from './tasks/transformations/selection/DummyCombinedNormalVisibilityItemsTask';\r\n\r\nimport FrameSizeTask from './tasks/layout/FrameSizeTask';\r\nimport LevelTitleSizeTask from './tasks/layout/LevelTitleSizeTask';\r\nimport ApplyLayoutChangesTask from './tasks/layout/ApplyLayoutChangesTask';\r\nimport DummyCurrentControlSizeTask from './tasks/layout/DummyCurrentControlSizeTask';\r\nimport ItemsPositionsTask from './tasks/transformations/ItemsPositionsTask';\r\nimport AlignDiagramTask from './tasks/layout/AlignDiagramTask';\r\nimport CreateTransformTask from './tasks/layout/CreateTransformTask';\r\nimport PaletteManagerTask from './tasks/transformations/PaletteManagerTask';\r\n\r\nimport ViewPortPlacementTask from './tasks/layout/ViewPortPlacementTask';\r\nimport VerticalOffsetTask from './tasks/layout/VerticalOffsetTask';\r\n\r\nimport OrgLogicalLevelsPlacementTask from './tasks/layout/OrgLogicalLevelsPlacementTask';\r\nimport MergeLevelIntervalsTask from './tasks/layout/MergeLevelIntervalsTask';\r\n\r\nimport DrawBackgroundAnnotationTask from './tasks/renders/DrawBackgroundAnnotationTask';\r\nimport DrawHighlightPathAnnotationTask from './tasks/renders/DrawHighlightPathAnnotationTask';\r\nimport DrawConnectorAnnotationTask from './tasks/renders/DrawConnectorAnnotationTask';\r\nimport DrawShapeAnnotationTask from './tasks/renders/DrawShapeAnnotationTask';\r\nimport DrawCursorTask from './tasks/renders/DrawCursorTask';\r\nimport DrawHighlightTask from './tasks/renders/DrawHighlightTask';\r\nimport DrawTreeItemsTask from './tasks/renders/DrawTreeItemsTask';\r\nimport DrawConnectorsTask from './tasks/renders/DrawConnectorsTask';\r\nimport DrawLevelAnnotationTitlesTask from './tasks/renders/DrawLevelAnnotationTitlesTask';\r\nimport DrawLevelAnnotationBackgroundTask from './tasks/renders/DrawLevelAnnotationBackgroundTask';\r\n\r\nimport TaskManager from './managers/TaskManager';\r\n\r\nexport default function OrgPdfkitTaskManagerFactory(getOptions, getGraphics, setLayout, templates) {\r\n var tasks = new TaskManager();\r\n\r\n // Dependencies\r\n tasks.addDependency('options', getOptions);\r\n tasks.addDependency('graphics', getGraphics);\r\n tasks.addDependency('setLayout', setLayout);\r\n tasks.addDependency('templates', templates);\r\n\r\n tasks.addDependency('defaultConfig', new OrgConfig());\r\n tasks.addDependency('defaultItemConfig', new OrgItemConfig());\r\n tasks.addDependency('defaultTemplateConfig', new TemplateConfig());\r\n \r\n tasks.addDependency('defaultBackgroundAnnotationConfig', new BackgroundAnnotationConfig());\r\n tasks.addDependency('defaultConnectorAnnotationConfig', new ConnectorAnnotationConfig());\r\n tasks.addDependency('defaultHighlightPathAnnotationConfig', new HighlightPathAnnotationConfig());\r\n tasks.addDependency('defaultShapeAnnotationConfig', new ShapeAnnotationConfig());\r\n tasks.addDependency('defaultLevelAnnotationConfig', new LevelAnnotationConfig());\r\n\r\n tasks.addDependency('showElbowDots', false);\r\n tasks.addDependency('null', null);\r\n tasks.addDependency('foreground', ZOrderType.Foreground);\r\n tasks.addDependency('background', ZOrderType.Background);\r\n\r\n // Options\r\n tasks.addTask('OptionsTask', ['options'], OptionsTask, Colors.Black);\r\n\r\n tasks.addTask('CalloutOptionTask', ['OptionsTask', 'defaultConfig', 'defaultItemConfig'], CalloutOptionTask, Colors.Navy);\r\n tasks.addTask('ConnectorsOptionTask', ['OptionsTask', 'defaultConfig'], ConnectorsOptionTask, Colors.Navy);\r\n tasks.addTask('ItemsOptionTask', ['OptionsTask', 'defaultItemConfig'], OrgItemsOptionTask, Colors.Navy);\r\n tasks.addTask('ItemsSizesOptionTask', ['OptionsTask', 'defaultConfig', 'defaultItemConfig'], ItemsSizesOptionTask, Colors.Navy);\r\n tasks.addTask('TemplatesOptionTask', ['OptionsTask', 'defaultConfig', 'defaultTemplateConfig'], TemplatesOptionTask, Colors.Navy);\r\n tasks.addTask('OrientationOptionTask', ['OptionsTask', 'defaultConfig'], OrientationOptionTask, Colors.Navy);\r\n tasks.addTask('VisualTreeOptionTask', ['OptionsTask', 'defaultConfig'], OrgVisualTreeOptionTask, Colors.Navy);\r\n\r\n tasks.addTask('CursorItemOptionTask', ['OptionsTask', 'defaultConfig'], CursorItemOptionTask, Colors.Navy);\r\n tasks.addTask('HighlightItemOptionTask', ['OptionsTask', 'defaultConfig'], HighlightItemOptionTask, Colors.Navy);\r\n tasks.addTask('SelectedItemsOptionTask', ['OptionsTask'], SelectedItemsOptionTask, Colors.Navy);\r\n\r\n tasks.addTask('SplitAnnotationsOptionTask', ['OptionsTask'], SplitAnnotationsOptionTask, Colors.Cyan);\r\n\r\n tasks.addTask('ForegroundShapeAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultShapeAnnotationConfig', 'foreground'], ShapeAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('BackgroundShapeAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultShapeAnnotationConfig', 'background'], ShapeAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('ForegroundHighlightPathAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultHighlightPathAnnotationConfig', 'foreground'], HighlightPathAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('BackgroundHighlightPathAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultHighlightPathAnnotationConfig', 'background'], HighlightPathAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('ForegroundConnectorAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultConnectorAnnotationConfig', 'foreground'], ConnectorAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('BackgroundConnectorAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultConnectorAnnotationConfig', 'background'], ConnectorAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('BackgroundAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultBackgroundAnnotationConfig'], BackgroundAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('LevelAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultLevelAnnotationConfig'], LevelAnnotationOptionTask, Colors.Navy)\r\n\r\n tasks.addTask('ScaleOptionTask', ['OptionsTask', 'defaultConfig'], ScaleOptionTask, Colors.Navy);\r\n tasks.addTask('FrameOptionTask', ['OptionsTask', 'defaultConfig'], FrameOptionTask, Colors.Navy);\r\n tasks.addTask('LevelTitlePlacementOptionTask', ['OptionsTask', 'defaultConfig'], LevelTitlePlacementOptionTask, Colors.Navy);\r\n tasks.addTask('LevelTitleTemplateOptionTask', ['OptionsTask', 'defaultConfig'], LevelTitleTemplateOptionTask, Colors.Navy);\r\n\r\n // Transformations\r\n tasks.addTask('CombinedContextsTask', ['ItemsOptionTask'], CombinedContextsTask, Colors.Cyan);\r\n tasks.addTask('OrgTreeTask', ['ItemsOptionTask'], OrgTreeTask, Colors.Red);\r\n\r\n // Transformations / Templates\r\n tasks.addTask('ReadTemplatesTask', ['TemplatesOptionTask', 'templates'], ReadTemplatesTask, Colors.Cyan);\r\n // TODO: Add jsPDF templates\r\n tasks.addTask('ItemTemplateParamsTask', ['ItemsSizesOptionTask', 'CursorItemOptionTask', 'ReadTemplatesTask'], ItemTemplateParamsTask, Colors.Cyan);\r\n tasks.addTask('GroupTitleTemplateTask', ['TemplatesOptionTask', 'templates'], GroupTitleTemplateTask, Colors.Cyan);\r\n tasks.addTask('CheckBoxTemplateTask', ['ItemsSizesOptionTask', 'templates'], CheckBoxTemplateTask, Colors.Cyan);\r\n tasks.addTask('ButtonsTemplateTask', ['ItemsSizesOptionTask', 'templates'], ButtonsTemplateTask, Colors.Cyan);\r\n tasks.addTask('AnnotationLabelTemplateTask', ['ItemsOptionTask', 'templates'], AnnotationLabelTemplateTask, Colors.Cyan);\r\n tasks.addTask('LevelAnnotationTemplateTask', ['OrientationOptionTask', 'LevelTitleTemplateOptionTask', 'templates'], LevelAnnotationTemplateTask, Colors.Cyan);\r\n \r\n tasks.addTask('VisualTreeTask', ['OrgTreeTask', 'null', 'VisualTreeOptionTask'], VisualTreeTask, Colors.Red);\r\n tasks.addTask('VisualTreeLevelsTask', ['VisualTreeTask', 'ItemTemplateParamsTask'], VisualTreeLevelsTask, Colors.Red);\r\n tasks.addTask('ExtractNestedLayoutsTask', ['OptionsTask'], ExtractNestedLayoutsTask, Colors.Red);\r\n tasks.addTask('CreateLayoutsTreeTask', ['VisualTreeTask', 'VisualTreeLevelsTask', 'ExtractNestedLayoutsTask'], CreateLayoutsTreeTask, Colors.Red);\r\n\r\n tasks.addTask('ConnectionsGraphTask', ['graphics', 'CreateTransformTask', 'ConnectorsOptionTask', 'VisualTreeLevelsTask', 'ExtractNestedLayoutsTask', 'AlignDiagramTask'], ConnectionsGraphTask, Colors.Cyan);\r\n\r\n // Transformations/Selections\r\n tasks.addTask('HighlightItemTask', ['HighlightItemOptionTask', 'null'], HighlightItemTask, Colors.Cyan);\r\n\r\n tasks.addTask('CursorItemTask', ['CursorItemOptionTask', 'null'], CursorItemTask, Colors.Cyan);\r\n tasks.addTask('SelectedItemsTask', ['SelectedItemsOptionTask', 'ItemsOptionTask'], SelectedItemsTask, Colors.Cyan);\r\n tasks.addTask('CombinedNormalVisibilityItemsTask', ['OptionsTask'], DummyCombinedNormalVisibilityItemsTask, Colors.Cyan);\r\n\r\n tasks.addTask('FrameSizeTask', ['FrameOptionTask', 'ReadTemplatesTask', 'ScaleOptionTask'], FrameSizeTask, Colors.Navy);\r\n tasks.addTask('LevelTitleSizeTask', ['LevelTitlePlacementOptionTask', 'LevelAnnotationOptionTask', 'OrientationOptionTask', 'ScaleOptionTask'], LevelTitleSizeTask, Colors.Navy);\r\n tasks.addTask('CurrentControlSizeTask', ['OptionsTask'], DummyCurrentControlSizeTask, Colors.Cyan);\r\n tasks.addTask('ItemsPositionsTask', ['CurrentControlSizeTask', 'ScaleOptionTask', 'OrientationOptionTask', 'ItemsSizesOptionTask', 'ConnectorsOptionTask', 'VisualTreeOptionTask',\r\n 'CreateLayoutsTreeTask',\r\n 'ItemTemplateParamsTask',\r\n 'CursorItemTask', 'CombinedNormalVisibilityItemsTask'], ItemsPositionsTask, Colors.Red);\r\n\r\n tasks.addTask('AlignDiagramTask', ['OrientationOptionTask', 'ItemsSizesOptionTask', 'VisualTreeOptionTask', 'ScaleOptionTask', 'CurrentControlSizeTask', 'null', 'ItemsPositionsTask'], AlignDiagramTask, Colors.Red);\r\n tasks.addTask('CreateTransformTask', ['OrientationOptionTask', 'ScaleOptionTask', 'AlignDiagramTask'], CreateTransformTask, Colors.Cyan);\r\n\r\n // Managers\r\n tasks.addTask('PaletteManagerTask', ['ConnectorsOptionTask', 'null'], PaletteManagerTask, Colors.Cyan);\r\n\r\n tasks.addTask('ApplyLayoutChangesTask', ['graphics', 'setLayout', 'ItemsSizesOptionTask', 'CurrentControlSizeTask', 'ScaleOptionTask', 'AlignDiagramTask', 'FrameSizeTask', 'LevelTitleSizeTask'], ApplyLayoutChangesTask, Colors.Green);\r\n tasks.addTask('ViewPortPlacementTask', ['ScaleOptionTask', 'CenterOnCursorTask', 'CreateTransformTask', 'ApplyLayoutChangesTask'], ViewPortPlacementTask, Colors.Green); \r\n tasks.addTask('VerticalOffsetTask', ['ViewPortPlacementTask'], VerticalOffsetTask, Colors.Green); \r\n\r\n tasks.addTask('LogicalLevelsPlacementTask', ['OrgTreeTask', 'VisualTreeTask', 'AlignDiagramTask'], OrgLogicalLevelsPlacementTask, Colors.Green);\r\n tasks.addTask('MergeLevelIntervalsTask', ['LevelAnnotationOptionTask', 'LogicalLevelsPlacementTask'], MergeLevelIntervalsTask, Colors.Green); \r\n\r\n // Renders\r\n tasks.addTask('DrawBackgroundAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'BackgroundAnnotationOptionTask', 'VisualTreeTask', 'AlignDiagramTask'], DrawBackgroundAnnotationTask, Colors.Green);\r\n tasks.addTask('DrawBackgroundShapeAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'OrientationOptionTask', 'BackgroundShapeAnnotationOptionTask', 'AlignDiagramTask', 'AnnotationLabelTemplateTask', 'background', 'DrawBackgroundAnnotationTask' /*dummy dependency enforeces drawing order */], DrawShapeAnnotationTask, Colors.Green);\r\n tasks.addTask('DrawBackgroundConnectorAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'OrientationOptionTask', 'BackgroundConnectorAnnotationOptionTask', 'AlignDiagramTask', 'AnnotationLabelTemplateTask', 'background', 'DrawBackgroundShapeAnnotationTask'], DrawConnectorAnnotationTask, Colors.Green);\r\n\r\n tasks.addTask('DrawTreeItemsTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'null',\r\n 'ItemsSizesOptionTask',\r\n 'CombinedContextsTask',\r\n 'AlignDiagramTask', 'null',\r\n 'ItemTemplateParamsTask',\r\n 'CursorItemTask', 'SelectedItemsTask',\r\n 'GroupTitleTemplateTask', 'CheckBoxTemplateTask', 'ButtonsTemplateTask',\r\n 'DrawBackgroundConnectorAnnotationTask'\r\n ], DrawTreeItemsTask, Colors.Green);\r\n\r\n tasks.addTask('DrawBackgroundHighlightPathAnnotationTask', ['graphics', 'ConnectorsOptionTask', 'ForegroundHighlightPathAnnotationOptionTask', 'ConnectionsGraphTask', 'foreground', 'DrawTreeItemsTask'], DrawHighlightPathAnnotationTask, Colors.Cyan);\r\n tasks.addTask('DrawConnectorsTask', ['graphics', 'ConnectionsGraphTask', 'ConnectorsOptionTask', 'showElbowDots', 'PaletteManagerTask', 'DrawBackgroundHighlightPathAnnotationTask'], DrawConnectorsTask, Colors.Green);\r\n tasks.addTask('DrawForegroundHighlightPathAnnotationTask', ['graphics', 'ConnectorsOptionTask', 'BackgroundHighlightPathAnnotationOptionTask', 'ConnectionsGraphTask', 'background', 'DrawConnectorsTask'], DrawHighlightPathAnnotationTask, Colors.Cyan);\r\n\r\n tasks.addTask('DrawForegroundShapeAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'OrientationOptionTask', 'ForegroundShapeAnnotationOptionTask', 'AlignDiagramTask', 'AnnotationLabelTemplateTask', 'foreground', 'DrawForegroundHighlightPathAnnotationTask'], DrawShapeAnnotationTask, Colors.Green);\r\n tasks.addTask('DrawForegroundConnectorAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'OrientationOptionTask', 'ForegroundConnectorAnnotationOptionTask', 'AlignDiagramTask', 'AnnotationLabelTemplateTask', 'foreground', 'DrawForegroundShapeAnnotationTask'], DrawConnectorAnnotationTask, Colors.Green);\r\n\r\n\r\n tasks.addTask('DrawCursorTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'CombinedContextsTask', 'AlignDiagramTask', 'ItemTemplateParamsTask', 'CursorItemTask', 'SelectedItemsTask', 'DrawForegroundConnectorAnnotationTask'], DrawCursorTask, Colors.Green);\r\n tasks.addTask('DrawHighlightTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'CombinedContextsTask', 'AlignDiagramTask', 'ItemTemplateParamsTask', 'HighlightItemTask', 'CursorItemTask', 'SelectedItemsTask', 'DrawCursorTask'], DrawHighlightTask, Colors.Green);\r\n\r\n tasks.addTask('DrawLevelAnnotationBackgroundTask', ['graphics', 'VerticalOffsetTask', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'LevelAnnotationOptionTask', 'MergeLevelIntervalsTask', 'LevelAnnotationTemplateTask'], DrawLevelAnnotationBackgroundTask, Colors.Green);\r\n tasks.addTask('DrawLevelAnnotationTitlesTask', ['graphics', 'VerticalOffsetTask', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'LevelAnnotationOptionTask', 'MergeLevelIntervalsTask', 'LevelAnnotationTemplateTask', 'LevelTitlePlacementOptionTask'], DrawLevelAnnotationTitlesTask, Colors.Green);\r\n\r\n return tasks;\r\n}\r\n","import AnnotationLabelTemplate from './templates/pdf/AnnotationLabelTemplate';\r\nimport CheckBoxTemplate from './templates/pdf/CheckBoxTemplate';\r\nimport CustomRenderTemplate from './templates/pdf/CustomRenderTemplate';\r\nimport CursorTemplate from './templates/pdf/CursorTemplate';\r\nimport DummyTemplate from './templates/pdf/DummyTemplate';\r\nimport GroupTitleTemplate from './templates/pdf/GroupTitleTemplate';\r\nimport HighlightTemplate from './templates/pdf/HighlightTemplate';\r\nimport ItemTemplate from './templates/pdf/ItemTemplate';\r\nimport UserTemplate from './templates/pdf/UserTemplate';\r\nimport LabelAnnotationTemplate from './templates/pdf/LabelAnnotationTemplate';\r\nimport LevelTitleTemplate from './templates/pdf/LevelTitleTemplate';\r\nimport LevelBackgroundTemplate from './templates/pdf/LevelBackgroundTemplate';\r\n\r\nimport BasePdfkitPlugin from './BasePdfkitPlugin';\r\nimport OrgPdfkitTaskManagerFactory from './OrgPdfkitTaskManagerFactory';\r\n\r\n/**\r\n * Creates PDFKit Organizational Chart Plugin\r\n * @class OrgDiagramPdfkit\r\n * \r\n * @param {OrgConfig} options Organizational Chart Configuration object\r\n * \r\n * @returns {OrgDiagramPdfkit} Returns reference to Organizational Diagram PDFKit renderer instance.\r\n */\r\nexport default function OrgDiagramPdfkit(options, templates) {\r\n return BasePdfkitPlugin(options, OrgPdfkitTaskManagerFactory, {\r\n AnnotationLabelTemplate,\r\n ButtonsTemplate: DummyTemplate,\r\n CheckBoxTemplate,\r\n CursorTemplate,\r\n CustomRenderTemplate,\r\n DotHighlightTemplate: DummyTemplate,\r\n GroupTitleTemplate,\r\n HighlightTemplate,\r\n ItemTemplate,\r\n UserTemplate,\r\n LevelTitleTemplate,\r\n LevelBackgroundTemplate,\r\n /* FamDiagram specific templates */\r\n LabelAnnotationTemplate,\r\n ...templates\r\n });\r\n};\r\n","import FamConfig from './configs/FamConfig';\r\nimport FamItemConfig from './configs/FamItemConfig';\r\nimport TemplateConfig from './configs/TemplateConfig';\r\nimport PaletteItemConfig from './configs/PaletteItemConfig';\r\nimport BackgroundAnnotationConfig from './configs/BackgroundAnnotationConfig';\r\nimport ConnectorAnnotationConfig from './configs/ConnectorAnnotationConfig';\r\nimport HighlightPathAnnotationConfig from './configs/HighlightPathAnnotationConfig';\r\nimport ShapeAnnotationConfig from './configs/ShapeAnnotationConfig';\r\nimport LabelAnnotationConfig from './configs/LabelAnnotationConfig';\r\nimport LevelAnnotationConfig from './configs/LevelAnnotationConfig';\r\n\r\nimport { ZOrderType, Colors } from './enums';\r\n\r\n// reused tasks from org diagram\r\nimport CalloutOptionTask from './tasks/options/CalloutOptionTask';\r\nimport ConnectorsOptionTask from './tasks/options/ConnectorsOptionTask';\r\nimport FamItemsOptionTask from './tasks/options/FamItemsOptionTask';\r\nimport ItemsSizesOptionTask from './tasks/options/ItemsSizesOptionTask';\r\nimport TemplatesOptionTask from './tasks/options/TemplatesOptionTask';\r\nimport OrientationOptionTask from './tasks/options/OrientationOptionTask';\r\nimport CursorItemOptionTask from './tasks/options/selection/CursorItemOptionTask';\r\nimport HighlightItemOptionTask from './tasks/options/selection/HighlightItemOptionTask';\r\nimport SelectedItemsOptionTask from './tasks/options/selection/SelectedItemsOptionTask';\r\nimport SplitAnnotationsOptionTask from './tasks/options/annotations/SplitAnnotationsOptionTask';\r\nimport ShapeAnnotationOptionTask from './tasks/options/annotations/ShapeAnnotationOptionTask';\r\nimport HighlightPathAnnotationOptionTask from './tasks/options/annotations/HighlightPathAnnotationOptionTask';\r\nimport ConnectorAnnotationOptionTask from './tasks/options/annotations/ConnectorAnnotationOptionTask';\r\nimport BackgroundAnnotationOptionTask from './tasks/options/annotations/BackgroundAnnotationOptionTask';\r\nimport LevelAnnotationOptionTask from './tasks/options/annotations/LevelAnnotationOptionTask';\r\nimport ScaleOptionTask from './tasks/options/ScaleOptionTask';\r\nimport FrameOptionTask from './tasks/options/FrameOptionTask';\r\nimport LevelTitlePlacementOptionTask from './tasks/options/LevelTitlePlacementOptionTask';\r\nimport LevelTitleTemplateOptionTask from './tasks/options/LevelTitleTemplateOptionTask';\r\n\r\nimport CombinedContextsTask from './tasks/transformations/CombinedContextsTask';\r\n\r\nimport ReadTemplatesTask from './tasks/templates/ReadTemplatesTask';\r\nimport ItemTemplateParamsTask from './tasks/templates/ItemTemplateParamsTask';\r\nimport GroupTitleTemplateTask from './tasks/templates/GroupTitleTemplateTask';\r\nimport CheckBoxTemplateTask from './tasks/templates/CheckBoxTemplateTask';\r\nimport ButtonsTemplateTask from './tasks/templates/ButtonsTemplateTask';\r\nimport AnnotationLabelTemplateTask from './tasks/templates/AnnotationLabelTemplateTask';\r\nimport LevelAnnotationTemplateTask from './tasks/templates/LevelAnnotationTemplateTask';\r\n\r\nimport ConnectionsGraphTask from './tasks/transformations/ConnectionsGraphTask';\r\nimport HighlightItemTask from './tasks/transformations/selection/HighlightItemTask';\r\nimport CursorItemTask from './tasks/transformations/selection/CursorItemTask';\r\nimport SelectedItemsTask from './tasks/transformations/selection/SelectedItemsTask';\r\n\r\nimport DummyCombinedNormalVisibilityItemsTask from './tasks/transformations/selection/DummyCombinedNormalVisibilityItemsTask';\r\n\r\nimport FrameSizeTask from './tasks/layout/FrameSizeTask';\r\nimport LevelTitleSizeTask from './tasks/layout/LevelTitleSizeTask';\r\nimport ApplyLayoutChangesTask from './tasks/layout/ApplyLayoutChangesTask';\r\nimport DummyCurrentControlSizeTask from './tasks/layout/DummyCurrentControlSizeTask';\r\nimport AlignDiagramTask from './tasks/layout/AlignDiagramTask';\r\nimport CreateTransformTask from './tasks/layout/CreateTransformTask';\r\nimport PaletteManagerTask from './tasks/transformations/PaletteManagerTask';\r\n\r\nimport ViewPortPlacementTask from './tasks/layout/ViewPortPlacementTask';\r\nimport VerticalOffsetTask from './tasks/layout/VerticalOffsetTask';\r\n\r\nimport FamLogicalLevelsPlacementTask from './tasks/layout/FamLogicalLevelsPlacementTask';\r\nimport MergeLevelIntervalsTask from './tasks/layout/MergeLevelIntervalsTask';\r\n\r\nimport DrawHighlightPathAnnotationTask from './tasks/renders/DrawHighlightPathAnnotationTask';\r\nimport DrawBackgroundAnnotationTask from './tasks/renders/DrawBackgroundAnnotationTask';\r\nimport DrawConnectorAnnotationTask from './tasks/renders/DrawConnectorAnnotationTask';\r\nimport DrawShapeAnnotationTask from './tasks/renders/DrawShapeAnnotationTask';\r\nimport DrawCursorTask from './tasks/renders/DrawCursorTask';\r\nimport DrawHighlightTask from './tasks/renders/DrawHighlightTask';\r\nimport DrawTreeItemsTask from './tasks/renders/DrawTreeItemsTask';\r\nimport DrawConnectorsTask from './tasks/renders/DrawConnectorsTask';\r\n\r\nimport DrawLevelAnnotationTitlesTask from './tasks/renders/DrawLevelAnnotationTitlesTask';\r\nimport DrawLevelAnnotationBackgroundTask from './tasks/renders/DrawLevelAnnotationBackgroundTask';\r\n\r\n// family diagram specific tasks\r\nimport OptionsTask from './tasks/options/OptionsTask';\r\nimport VisualTreeOptionTask from './tasks/options/FamVisualTreeOptionTask';\r\nimport HideGrandParentsConnectorsOptionTask from './tasks/options/HideGrandParentsConnectorsOptionTask';\r\nimport ExtractNestedLayoutsOptionTask from './tasks/options/ExtractNestedLayoutsOptionTask';\r\nimport NormalizeOptionTask from './tasks/options/NormalizeOptionTask';\r\nimport OrderFamilyNodesOptionTask from './tasks/options/OrderFamilyNodesOptionTask';\r\nimport LinePaletteOptionTask from './tasks/options/LinePaletteOptionTask';\r\nimport UserDefinedNodesOrderTask from './tasks/transformations/UserDefinedNodesOrderTask';\r\nimport LogicalFamilyTask from './tasks/transformations/LogicalFamilyTask';\r\nimport RemoveLoopsTask from './tasks/transformations/RemoveLoopsTask';\r\nimport LabelAnnotationOptionTask from './tasks/options/annotations/LabelAnnotationOptionTask';\r\nimport LabelAnnotationTemplateOptionTask from './tasks/options/annotations/LabelAnnotationTemplateOptionTask';\r\nimport LabelAnnotationPlacementOptionTask from './tasks/options/annotations/LabelAnnotationPlacementOptionTask';\r\n\r\nimport AddLabelAnnotationsTask from './tasks/transformations/AddLabelAnnotationsTask';\r\nimport HideGrandParentsConnectorsTask from './tasks/transformations/HideGrandParentsConnectorsTask';\r\nimport BindFamilyConnectorsTask from './tasks/transformations/BindFamilyConnectorsTask';\r\nimport ExtractNestedLayoutsTask from './tasks/transformations/ExtractNestedLayoutsTask';\r\nimport NormalizeLogicalFamilyTask from './tasks/transformations/NormalizeLogicalFamilyTask';\r\nimport OrderFamilyNodesTask from './tasks/transformations/OrderFamilyNodesTask';\r\nimport LabelAnnotationTemplateParamsTask from './tasks/templates/LabelAnnotationTemplateParamsTask';\r\nimport CombinedTemplateParamsTask from './tasks/templates/CombinedTemplateParamsTask';\r\nimport FamCreateLayoutsTreeTask from './tasks/transformations/FamCreateLayoutsTreeTask';\r\nimport ItemsPositionsTask from './tasks/transformations/ItemsPositionsTask';\r\n\r\nimport TaskManager from './managers/TaskManager';\r\n\r\nexport default function FamPdfkitTaskManagerFactory(getOptions, getGraphics, setLayout, templates) {\r\n var tasks = new TaskManager();\r\n\r\n // Dependencies\r\n tasks.addDependency('options', getOptions);\r\n tasks.addDependency('graphics', getGraphics);\r\n tasks.addDependency('setLayout', setLayout);\r\n tasks.addDependency('templates', templates);\r\n\r\n tasks.addDependency('defaultConfig', new FamConfig());\r\n tasks.addDependency('defaultItemConfig', new FamItemConfig());\r\n tasks.addDependency('defaultTemplateConfig', new TemplateConfig());\r\n tasks.addDependency('defaultPaletteItemConfig', new PaletteItemConfig());\r\n\r\n tasks.addDependency('defaultBackgroundAnnotationConfig', new BackgroundAnnotationConfig());\r\n tasks.addDependency('defaultConnectorAnnotationConfig', new ConnectorAnnotationConfig());\r\n tasks.addDependency('defaultHighlightPathAnnotationConfig', new HighlightPathAnnotationConfig());\r\n tasks.addDependency('defaultShapeAnnotationConfig', new ShapeAnnotationConfig());\r\n tasks.addDependency('defaultLabelAnnotationConfig', new LabelAnnotationConfig());\r\n tasks.addDependency('defaultLevelAnnotationConfig', new LevelAnnotationConfig());\r\n\r\n tasks.addDependency('showElbowDots', true);/* in regular org chart we don;t have situations when connector lines cross, but we have such situations in \r\n family tree so we need extra visual attribute to distinguish intersections between connectors */\r\n tasks.addDependency('null', null);\r\n tasks.addDependency('foreground', ZOrderType.Foreground);\r\n tasks.addDependency('background', ZOrderType.Background);\r\n\r\n // Options\r\n tasks.addTask('OptionsTask', ['options'], OptionsTask, Colors.Black);\r\n\r\n tasks.addTask('CalloutOptionTask', ['OptionsTask', 'defaultConfig', 'defaultItemConfig'], CalloutOptionTask, Colors.Navy);\r\n tasks.addTask('ConnectorsOptionTask', ['OptionsTask', 'defaultConfig'], ConnectorsOptionTask, Colors.Navy);\r\n tasks.addTask('ItemsOptionTask', ['OptionsTask', 'defaultItemConfig'], FamItemsOptionTask, Colors.Navy);\r\n tasks.addTask('ItemsSizesOptionTask', ['OptionsTask', 'defaultConfig', 'defaultItemConfig'], ItemsSizesOptionTask, Colors.Navy);\r\n tasks.addTask('TemplatesOptionTask', ['OptionsTask', 'defaultConfig', 'defaultTemplateConfig'], TemplatesOptionTask, Colors.Navy);\r\n tasks.addTask('OrientationOptionTask', ['OptionsTask', 'defaultConfig'], OrientationOptionTask, Colors.Navy);\r\n tasks.addTask('VisualTreeOptionTask', ['OptionsTask', 'defaultConfig'], VisualTreeOptionTask, Colors.Navy);\r\n tasks.addTask('HideGrandParentsConnectorsOptionTask', ['OptionsTask', 'defaultConfig'], HideGrandParentsConnectorsOptionTask, Colors.Navy);\r\n tasks.addTask('ExtractNestedLayoutsOptionTask', ['OptionsTask', 'defaultConfig', 'defaultItemConfig'], ExtractNestedLayoutsOptionTask, Colors.Navy)\r\n tasks.addTask('NormalizeOptionTask', ['OptionsTask', 'defaultConfig'], NormalizeOptionTask, Colors.Navy);\r\n tasks.addTask('OrderFamilyNodesOptionTask', ['OptionsTask', 'defaultConfig', 'defaultItemConfig'], OrderFamilyNodesOptionTask, Colors.Navy);\r\n tasks.addTask('LinePaletteOptionTask', ['OptionsTask', 'defaultPaletteItemConfig'], LinePaletteOptionTask, Colors.Navy);\r\n\r\n tasks.addTask('CursorItemOptionTask', ['OptionsTask', 'defaultConfig'], CursorItemOptionTask, Colors.Navy);\r\n tasks.addTask('HighlightItemOptionTask', ['OptionsTask', 'defaultConfig'], HighlightItemOptionTask, Colors.Navy);\r\n tasks.addTask('SelectedItemsOptionTask', ['OptionsTask'], SelectedItemsOptionTask, Colors.Navy);\r\n\r\n tasks.addTask('SplitAnnotationsOptionTask', ['OptionsTask'], SplitAnnotationsOptionTask, Colors.Cyan);\r\n\r\n tasks.addTask('ForegroundShapeAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultShapeAnnotationConfig', 'foreground'], ShapeAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('BackgroundShapeAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultShapeAnnotationConfig', 'background'], ShapeAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('ForegroundHighlightPathAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultHighlightPathAnnotationConfig', 'foreground'], HighlightPathAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('BackgroundHighlightPathAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultHighlightPathAnnotationConfig', 'background'], HighlightPathAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('ForegroundConnectorAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultConnectorAnnotationConfig', 'foreground'], ConnectorAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('BackgroundConnectorAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultConnectorAnnotationConfig', 'background'], ConnectorAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('BackgroundAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultBackgroundAnnotationConfig'], BackgroundAnnotationOptionTask, Colors.Navy);\r\n \r\n tasks.addTask('LevelAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'defaultLevelAnnotationConfig'], LevelAnnotationOptionTask, Colors.Navy)\r\n tasks.addTask('ScaleOptionTask', ['OptionsTask', 'defaultConfig'], ScaleOptionTask, Colors.Navy);\r\n tasks.addTask('FrameOptionTask', ['OptionsTask', 'defaultConfig'], FrameOptionTask, Colors.Navy);\r\n tasks.addTask('LevelTitlePlacementOptionTask', ['OptionsTask', 'defaultConfig'], LevelTitlePlacementOptionTask, Colors.Navy);\r\n tasks.addTask('LevelTitleTemplateOptionTask', ['OptionsTask', 'defaultConfig'], LevelTitleTemplateOptionTask, Colors.Navy);\r\n\r\n // Transformations\r\n tasks.addTask('UserDefinedNodesOrderTask', ['OrderFamilyNodesOptionTask', 'defaultItemConfig'], UserDefinedNodesOrderTask, Colors.Red);\r\n\r\n tasks.addTask('LogicalFamilyTask', ['ItemsOptionTask'], LogicalFamilyTask, Colors.Cyan);\r\n\r\n tasks.addTask('LabelAnnotationOptionTask', ['SplitAnnotationsOptionTask', 'LogicalFamilyTask', 'defaultLabelAnnotationConfig'], LabelAnnotationOptionTask, Colors.Navy);\r\n tasks.addTask('LabelAnnotationTemplateOptionTask', ['LabelAnnotationOptionTask', 'defaultLabelAnnotationConfig'], LabelAnnotationTemplateOptionTask, Colors.Navy);\r\n tasks.addTask('LabelAnnotationPlacementOptionTask', ['LabelAnnotationOptionTask', 'defaultLabelAnnotationConfig'], LabelAnnotationPlacementOptionTask, Colors.Navy);\r\n\r\n tasks.addTask('CombinedContextsTask', ['ItemsOptionTask', 'LabelAnnotationOptionTask'], CombinedContextsTask, Colors.Cyan);\r\n\r\n tasks.addTask('AddLabelAnnotationsTask', ['LabelAnnotationPlacementOptionTask', 'LogicalFamilyTask'], AddLabelAnnotationsTask, Colors.Red);\r\n tasks.addTask('RemoveLoopsTask', ['AddLabelAnnotationsTask'], RemoveLoopsTask, Colors.Red);\r\n tasks.addTask('HideGrandParentsConnectorsTask', ['HideGrandParentsConnectorsOptionTask', 'RemoveLoopsTask'], HideGrandParentsConnectorsTask, Colors.Red);\r\n tasks.addTask('BindFamilyConnectorsTask', ['HideGrandParentsConnectorsTask'], BindFamilyConnectorsTask, Colors.Red); \r\n tasks.addTask('ExtractNestedLayoutsTask', ['ExtractNestedLayoutsOptionTask', 'BindFamilyConnectorsTask'], ExtractNestedLayoutsTask, Colors.Red);\r\n tasks.addTask('NormalizeLogicalFamilyTask', ['NormalizeOptionTask', 'ExtractNestedLayoutsTask'], NormalizeLogicalFamilyTask, Colors.Red);\r\n tasks.addTask('OrderFamilyNodesTask', ['OrderFamilyNodesOptionTask', 'UserDefinedNodesOrderTask', 'NormalizeLogicalFamilyTask'], OrderFamilyNodesTask, Colors.Red);\r\n tasks.addTask('FamCreateLayoutsTreeTask', ['OrderFamilyNodesTask', 'ExtractNestedLayoutsTask'], FamCreateLayoutsTreeTask, Colors.Red);\r\n\r\n // Transformations / Templates\r\n tasks.addTask('ReadTemplatesTask', ['TemplatesOptionTask', 'templates'], ReadTemplatesTask, Colors.Cyan);\r\n tasks.addTask('ItemTemplateParamsTask', ['ItemsSizesOptionTask', 'CursorItemOptionTask', 'ReadTemplatesTask'], ItemTemplateParamsTask, Colors.Cyan);\r\n\r\n tasks.addTask('LabelAnnotationTemplateParamsTask', ['ItemsSizesOptionTask', 'LabelAnnotationTemplateOptionTask', 'ReadTemplatesTask'], LabelAnnotationTemplateParamsTask, Colors.Cyan);\r\n tasks.addTask('CombinedTemplateParamsTask', ['ItemTemplateParamsTask', 'LabelAnnotationTemplateParamsTask'], CombinedTemplateParamsTask, Colors.Cyan);\r\n\r\n tasks.addTask('GroupTitleTemplateTask', ['TemplatesOptionTask', 'templates'], GroupTitleTemplateTask, Colors.Cyan);\r\n tasks.addTask('CheckBoxTemplateTask', ['ItemsSizesOptionTask', 'templates'], CheckBoxTemplateTask, Colors.Cyan);\r\n tasks.addTask('ButtonsTemplateTask', ['ItemsSizesOptionTask', 'templates'], ButtonsTemplateTask, Colors.Cyan);\r\n tasks.addTask('AnnotationLabelTemplateTask', ['ItemsOptionTask', 'templates'], AnnotationLabelTemplateTask, Colors.Cyan);\r\n tasks.addTask('LevelAnnotationTemplateTask', ['OrientationOptionTask', 'LevelTitleTemplateOptionTask', 'templates'], LevelAnnotationTemplateTask, Colors.Cyan);\r\n\r\n tasks.addTask('ConnectionsGraphTask', ['graphics', 'CreateTransformTask', 'ConnectorsOptionTask', 'OrderFamilyNodesTask', 'ExtractNestedLayoutsTask', 'AlignDiagramTask', 'RemoveLoopsTask'], ConnectionsGraphTask, Colors.Cyan);\r\n \r\n // Transformations/Selections\r\n tasks.addTask('HighlightItemTask', ['HighlightItemOptionTask', 'null'], HighlightItemTask, Colors.Cyan);\r\n\r\n tasks.addTask('CursorItemTask', ['CursorItemOptionTask', 'null'], CursorItemTask, Colors.Cyan);\r\n tasks.addTask('SelectedItemsTask', ['SelectedItemsOptionTask', 'ItemsOptionTask'], SelectedItemsTask, Colors.Cyan);\r\n\r\n tasks.addTask('CombinedNormalVisibilityItemsTask', ['OptionsTask'], DummyCombinedNormalVisibilityItemsTask, Colors.Cyan);\r\n\r\n tasks.addTask('FrameSizeTask', ['FrameOptionTask', 'ReadTemplatesTask', 'ScaleOptionTask'], FrameSizeTask, Colors.Navy);\r\n tasks.addTask('LevelTitleSizeTask', ['LevelTitlePlacementOptionTask', 'LevelAnnotationOptionTask', 'OrientationOptionTask', 'ScaleOptionTask'], LevelTitleSizeTask, Colors.Navy);\r\n tasks.addTask('CurrentControlSizeTask', ['OptionsTask'], DummyCurrentControlSizeTask, Colors.Cyan);\r\n\r\n tasks.addTask('ItemsPositionsTask', ['CurrentControlSizeTask', 'ScaleOptionTask', 'OrientationOptionTask', 'ItemsSizesOptionTask', 'ConnectorsOptionTask',\r\n 'OrderFamilyNodesOptionTask', 'FamCreateLayoutsTreeTask',\r\n 'CombinedTemplateParamsTask',\r\n 'CursorItemTask', 'CombinedNormalVisibilityItemsTask'], ItemsPositionsTask, Colors.Red);\r\n\r\n tasks.addTask('AlignDiagramTask', ['OrientationOptionTask', 'ItemsSizesOptionTask', 'VisualTreeOptionTask', 'ScaleOptionTask', 'CurrentControlSizeTask', 'null', 'ItemsPositionsTask'], AlignDiagramTask, Colors.Red);\r\n tasks.addTask('CreateTransformTask', ['OrientationOptionTask', 'ScaleOptionTask', 'AlignDiagramTask'], CreateTransformTask, Colors.Cyan);\r\n\r\n // Managers\r\n tasks.addTask('PaletteManagerTask', ['ConnectorsOptionTask', 'LinePaletteOptionTask'], PaletteManagerTask, Colors.Cyan);\r\n\r\n tasks.addTask('ApplyLayoutChangesTask', ['graphics', 'setLayout', 'ItemsSizesOptionTask', 'CurrentControlSizeTask', 'ScaleOptionTask', 'AlignDiagramTask', 'FrameSizeTask', 'LevelTitleSizeTask'], ApplyLayoutChangesTask, Colors.Green);\r\n tasks.addTask('ViewPortPlacementTask', ['ScaleOptionTask', 'CenterOnCursorTask', 'CreateTransformTask', 'ApplyLayoutChangesTask'], ViewPortPlacementTask, Colors.Green); \r\n tasks.addTask('VerticalOffsetTask', ['ViewPortPlacementTask'], VerticalOffsetTask, Colors.Green); \r\n\r\n tasks.addTask('LogicalLevelsPlacementTask', ['OrderFamilyNodesTask', 'AlignDiagramTask'], FamLogicalLevelsPlacementTask, Colors.Green);\r\n tasks.addTask('MergeLevelIntervalsTask', ['LevelAnnotationOptionTask', 'LogicalLevelsPlacementTask'], MergeLevelIntervalsTask, Colors.Green); \r\n\r\n // Renders\r\n tasks.addTask('DrawBackgroundAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'BackgroundAnnotationOptionTask', 'LogicalFamilyTask', 'AlignDiagramTask'], DrawBackgroundAnnotationTask, Colors.Green);\r\n tasks.addTask('DrawBackgroundShapeAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'OrientationOptionTask', 'BackgroundShapeAnnotationOptionTask', 'AlignDiagramTask', 'AnnotationLabelTemplateTask', 'background', 'DrawBackgroundAnnotationTask'], DrawShapeAnnotationTask, Colors.Green);\r\n tasks.addTask('DrawBackgroundConnectorAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'OrientationOptionTask', 'BackgroundConnectorAnnotationOptionTask', 'AlignDiagramTask', 'AnnotationLabelTemplateTask', 'background', 'DrawBackgroundShapeAnnotationTask'], DrawConnectorAnnotationTask, Colors.Green);\r\n\r\n tasks.addTask('DrawBackgroundHighlightPathAnnotationTask', ['graphics', 'ConnectorsOptionTask', 'ForegroundHighlightPathAnnotationOptionTask', 'ConnectionsGraphTask', 'foreground', 'DrawBackgroundConnectorAnnotationTask'], DrawHighlightPathAnnotationTask, Colors.Cyan);\r\n tasks.addTask('DrawConnectorsTask', ['graphics', 'ConnectionsGraphTask', 'ConnectorsOptionTask', 'showElbowDots', 'PaletteManagerTask', 'DrawBackgroundHighlightPathAnnotationTask'], DrawConnectorsTask, Colors.Green);\r\n tasks.addTask('DrawForegroundHighlightPathAnnotationTask', ['graphics', 'ConnectorsOptionTask', 'BackgroundHighlightPathAnnotationOptionTask', 'ConnectionsGraphTask', 'background', 'DrawConnectorsTask'], DrawHighlightPathAnnotationTask, Colors.Cyan);\r\n\r\n tasks.addTask('DrawTreeItemsTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'null',\r\n 'ItemsSizesOptionTask',\r\n 'CombinedContextsTask',\r\n 'AlignDiagramTask', 'null',\r\n 'CombinedTemplateParamsTask',\r\n 'CursorItemTask', 'SelectedItemsTask',\r\n 'GroupTitleTemplateTask', 'CheckBoxTemplateTask', 'ButtonsTemplateTask',\r\n 'DrawForegroundHighlightPathAnnotationTask'\r\n ], DrawTreeItemsTask, Colors.Green);\r\n\r\n tasks.addTask('DrawCursorTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'CombinedContextsTask', 'AlignDiagramTask', 'CombinedTemplateParamsTask', 'CursorItemTask', 'SelectedItemsTask', 'DrawTreeItemsTask'], DrawCursorTask, Colors.Green);\r\n tasks.addTask('DrawHighlightTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'CombinedContextsTask', 'AlignDiagramTask', 'CombinedTemplateParamsTask', 'HighlightItemTask', 'CursorItemTask', 'SelectedItemsTask', 'DrawCursorTask'], DrawHighlightTask, Colors.Green);\r\n\r\n tasks.addTask('DrawForegroundShapeAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'OrientationOptionTask', 'ForegroundShapeAnnotationOptionTask', 'AlignDiagramTask', 'AnnotationLabelTemplateTask', 'foreground', 'DrawHighlightTask'], DrawShapeAnnotationTask, Colors.Green);\r\n tasks.addTask('DrawForegroundConnectorAnnotationTask', ['graphics', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'OrientationOptionTask', 'ForegroundConnectorAnnotationOptionTask', 'AlignDiagramTask', 'AnnotationLabelTemplateTask', 'foreground', 'DrawForegroundShapeAnnotationTask'], DrawConnectorAnnotationTask, Colors.Green);\r\n\r\n tasks.addTask('DrawLevelAnnotationBackgroundTask', ['graphics', 'VerticalOffsetTask', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'LevelAnnotationOptionTask', 'MergeLevelIntervalsTask', 'LevelAnnotationTemplateTask'], DrawLevelAnnotationBackgroundTask, Colors.Green);\r\n tasks.addTask('DrawLevelAnnotationTitlesTask', ['graphics', 'VerticalOffsetTask', 'CreateTransformTask', 'ApplyLayoutChangesTask', 'LevelAnnotationOptionTask', 'MergeLevelIntervalsTask', 'LevelAnnotationTemplateTask', 'LevelTitlePlacementOptionTask'], DrawLevelAnnotationTitlesTask, Colors.Green);\r\n\r\n return tasks;\r\n}","import AnnotationLabelTemplate from './templates/pdf/AnnotationLabelTemplate';\r\nimport CheckBoxTemplate from './templates/pdf/CheckBoxTemplate';\r\nimport CustomRenderTemplate from './templates/pdf/CustomRenderTemplate';\r\nimport CursorTemplate from './templates/pdf/CursorTemplate';\r\nimport DummyTemplate from './templates/pdf/DummyTemplate';\r\nimport GroupTitleTemplate from './templates/pdf/GroupTitleTemplate';\r\nimport HighlightTemplate from './templates/pdf/HighlightTemplate';\r\nimport ItemTemplate from './templates/pdf/ItemTemplate';\r\nimport UserTemplate from './templates/pdf/UserTemplate';\r\nimport LabelAnnotationTemplate from './templates/pdf/LabelAnnotationTemplate';\r\nimport LevelTitleTemplate from './templates/pdf/LevelTitleTemplate';\r\nimport LevelBackgroundTemplate from './templates/pdf/LevelBackgroundTemplate';\r\n\r\nimport BasePdfkitPlugin from './BasePdfkitPlugin';\r\nimport FamPdfkitTaskManagerFactory from './FamPdfkitTaskManagerFactory';\r\n/**\r\n * Creates PDFKit Family Diagram Plugin\r\n * @class FamDiagramPdfkit\r\n * \r\n * @param {FamConfig} options Organizational Chart Configuration object\r\n * \r\n * @returns {FamDiagramPdfkit} Returns reference to Family Diagram PDFKit renderer instance.\r\n */\r\nexport default function FamDiagramPdfkit(options, templates) {\r\n return BasePdfkitPlugin(options, FamPdfkitTaskManagerFactory, {\r\n AnnotationLabelTemplate,\r\n ButtonsTemplate: DummyTemplate,\r\n CheckBoxTemplate,\r\n CursorTemplate,\r\n CustomRenderTemplate,\r\n DotHighlightTemplate: DummyTemplate,\r\n GroupTitleTemplate,\r\n HighlightTemplate,\r\n ItemTemplate,\r\n UserTemplate,\r\n LevelTitleTemplate,\r\n LevelBackgroundTemplate,\r\n /* FamDiagram specific templates */\r\n LabelAnnotationTemplate,\r\n ...templates\r\n });\r\n};\r\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nvar _Graphics = _interopRequireDefault(require(\"./Graphics\"));\n\nvar _Templates = require(\"./Templates\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar BaseDiagram = /*#__PURE__*/function (_Component) {\n _inherits(BaseDiagram, _Component);\n\n var _super = _createSuper(BaseDiagram);\n\n function BaseDiagram(props, TaskManagerFactory, EventArgs) {\n var _this;\n\n _classCallCheck(this, BaseDiagram);\n\n _this = _super.call(this, props);\n _this.TaskManagerFactory = TaskManagerFactory;\n _this.EventArgs = EventArgs;\n var config = props.config,\n centerOnCursor = props.centerOnCursor;\n var highlightItem = config.highlightItem,\n cursorItem = config.cursorItem,\n selectedItems = config.selectedItems;\n _this.state = {\n config: config,\n viewportSize: {\n width: 0,\n height: 0\n },\n contentPosition: {\n x: 0,\n y: 0\n },\n centerOnCursor: centerOnCursor,\n highlightItem: highlightItem,\n cursorItem: cursorItem,\n selectedItems: (selectedItems || []).slice()\n };\n var viewportSize = _this.state.viewportSize;\n _this.onRefreshViewport = _this.onRefreshViewport.bind(_assertThisInitialized(_this));\n _this.onSizeChanged = _this.onSizeChanged.bind(_assertThisInitialized(_this));\n _this.onScroll = _this.onScroll.bind(_assertThisInitialized(_this));\n _this.onMouseMove = _this.onMouseMove.bind(_assertThisInitialized(_this));\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n _this.onCheckboxChange = _this.onCheckboxChange.bind(_assertThisInitialized(_this));\n _this.onKeyDown = _this.onKeyDown.bind(_assertThisInitialized(_this));\n _this.onFrameClick = _this.onFrameClick.bind(_assertThisInitialized(_this));\n _this.onFrameMouseMove = _this.onFrameMouseMove.bind(_assertThisInitialized(_this));\n _this.getOptions = _this.getOptions.bind(_assertThisInitialized(_this));\n _this.getGraphics = _this.getGraphics.bind(_assertThisInitialized(_this));\n _this.getLayout = _this.getLayout.bind(_assertThisInitialized(_this));\n _this.setLayout = _this.setLayout.bind(_assertThisInitialized(_this));\n _this.getEventArgs = _this.getEventArgs.bind(_assertThisInitialized(_this));\n _this.centerOnCursor = _this.centerOnCursor.bind(_assertThisInitialized(_this));\n _this.onItemRender = _this.onItemRender.bind(_assertThisInitialized(_this));\n _this.onHighlightRender = _this.onHighlightRender.bind(_assertThisInitialized(_this));\n _this.onCursorRender = _this.onCursorRender.bind(_assertThisInitialized(_this));\n _this.controlPanelRef = /*#__PURE__*/_react[\"default\"].createRef();\n _this.frameMousePanelRef = /*#__PURE__*/_react[\"default\"].createRef();\n _this.framePlaceholderRef = /*#__PURE__*/_react[\"default\"].createRef();\n _this.titlesMousePanelRef = /*#__PURE__*/_react[\"default\"].createRef();\n _this.titlesPlaceholderRef = /*#__PURE__*/_react[\"default\"].createRef();\n _this.scrollPanelRef = /*#__PURE__*/_react[\"default\"].createRef();\n _this.mousePanelRef = /*#__PURE__*/_react[\"default\"].createRef();\n _this.placeholderRef = /*#__PURE__*/_react[\"default\"].createRef();\n _this.calloutPlaceholderRef = /*#__PURE__*/_react[\"default\"].createRef();\n _this.layoutOptions = {};\n _this.templatesHash = {};\n _this.graphics = new _Graphics[\"default\"](viewportSize);\n _this.templates = {\n AnnotationLabelTemplate: _Templates.AnnotationLabelTemplate,\n ButtonsTemplate: _Templates.ButtonsTemplate,\n CheckBoxTemplate: _Templates.CheckBoxTemplate,\n CursorTemplate: _Templates.CursorTemplate,\n DotHighlightTemplate: _Templates.DotHighlightTemplate,\n GroupTitleTemplate: _Templates.GroupTitleTemplate,\n HighlightTemplate: _Templates.HighlightTemplate,\n ItemTemplate: _Templates.ItemTemplate,\n UserTemplate: _Templates.UserTemplate,\n CustomRenderTemplate: _Templates.CustomRenderTemplate,\n LabelAnnotationTemplate: _Templates.LabelAnnotationTemplate,\n LevelTitleTemplate: _Templates.LevelTitleTemplate,\n LevelBackgroundTemplate: _Templates.LevelBackgroundTemplate\n };\n _this.tasks = TaskManagerFactory(_this.getOptions, _this.getGraphics, _this.getLayout, _this.setLayout, _this.templates);\n return _this;\n }\n\n _createClass(BaseDiagram, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // The following code is ResizeObserver Polyfill\n // It is added to the rendered page to track size changes of control placeholder\n // npm install resize-observer-polyfill --save-dev\n require('resize-observer-polyfill/dist/ResizeObserver.global');\n\n this.observer = new ResizeObserver(this.onSizeChanged);\n this.observer.observe(this.controlPanelRef.current);\n this.centerOnCursor();\n this.fixPixelAlignment();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n // destroy timer\n clearTimeout(this.timer);\n this.timer = null; // destroy observer\n\n this.observer.disconnect();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.centerOnCursor();\n }\n }, {\n key: \"centerOnCursor\",\n value: function centerOnCursor() {\n var centerOnCursor = this.state.centerOnCursor;\n\n if (centerOnCursor) {\n /* scroll to offset */\n var centerOnCursorTask = this.tasks.getTask(\"CenterOnCursorTask\");\n var placeholderOffset = centerOnCursorTask.getPlaceholderOffset();\n var scrollLeft = placeholderOffset.x,\n scrollTop = placeholderOffset.y;\n this.scrollPanelRef.current.scrollLeft = scrollLeft;\n this.scrollPanelRef.current.scrollTop = scrollTop;\n }\n }\n }, {\n key: \"fixPixelAlignment\",\n value: function fixPixelAlignment() {\n var current = this.controlPanelRef.current;\n var pixelAlignmentFix = (0, _basicprimitives.getFixOfPixelAlignment)(current);\n current.style.marginLeft = pixelAlignmentFix.width + \"px\";\n current.style.marginTop = pixelAlignmentFix.height + \"px\";\n }\n }, {\n key: \"onSizeChanged\",\n value: function onSizeChanged() {\n var _getInnerSize = (0, _basicprimitives.getInnerSize)(this.controlPanelRef.current),\n width = _getInnerSize.width,\n height = _getInnerSize.height;\n\n this.setState({\n viewportSize: {\n width: width,\n height: height\n },\n centerOnCursor: true\n });\n }\n }, {\n key: \"onScroll\",\n value: function onScroll() {\n if (this.timer == null) {\n this.timer = setTimeout(this.onRefreshViewport, 200);\n }\n }\n }, {\n key: \"onRefreshViewport\",\n value: function onRefreshViewport() {\n clearTimeout(this.timer);\n this.timer = null;\n var _this$scrollPanelRef$ = this.scrollPanelRef.current,\n scrollTop = _this$scrollPanelRef$.scrollTop,\n scrollLeft = _this$scrollPanelRef$.scrollLeft;\n this.setState({\n contentPosition: {\n x: Math.floor(scrollLeft),\n y: Math.floor(scrollTop)\n },\n centerOnCursor: false\n });\n }\n }, {\n key: \"onFrameMouseMove\",\n value: function onFrameMouseMove(event) {\n var placeholderOffset = (0, _basicprimitives.getElementOffset)(this.frameMousePanelRef.current),\n x = event.pageX - placeholderOffset.left,\n y = event.pageY - placeholderOffset.top,\n projectItemsToFrameTask = this.tasks.getTask(\"ProjectItemsToFrameTask\"),\n highlightItemOptionTask = this.tasks.getTask(\"HighlightItemOptionTask\");\n\n if (highlightItemOptionTask.hasHighlightEnabled()) {\n var itemId = projectItemsToFrameTask.getTreeItemForMousePosition(x, y, highlightItemOptionTask.getGravityRadius());\n this.setHighlightItem(event, itemId);\n }\n }\n }, {\n key: \"onFrameClick\",\n value: function onFrameClick(event) {\n var placeholderOffset = (0, _basicprimitives.getElementOffset)(this.frameMousePanelRef.current),\n x = event.pageX - placeholderOffset.left,\n y = event.pageY - placeholderOffset.top,\n projectItemsToFrameTask = this.tasks.getTask(\"ProjectItemsToFrameTask\"),\n cursorItemOptionTask = this.tasks.getTask(\"CursorItemOptionTask\"),\n highlightItemOptionTask = this.tasks.getTask(\"HighlightItemOptionTask\"),\n newCursorItemId = projectItemsToFrameTask.getTreeItemForMousePosition(x, y, highlightItemOptionTask.getGravityRadius());\n\n if (newCursorItemId !== null) {\n if (cursorItemOptionTask.hasCursorEnabled()) {\n this.setCursorItem(event, newCursorItemId);\n this.controlPanelRef.current.focus();\n }\n }\n }\n }, {\n key: \"onMouseMove\",\n value: function onMouseMove(event) {\n var placeholderOffset = (0, _basicprimitives.getElementOffset)(this.mousePanelRef.current),\n x = event.pageX - placeholderOffset.left,\n y = event.pageY - placeholderOffset.top,\n createTransformTask = this.tasks.getTask(\"CreateTransformTask\"),\n highlightItemOptionTask = this.tasks.getTask(\"HighlightItemOptionTask\");\n\n if (highlightItemOptionTask.hasHighlightEnabled()) {\n var itemId = createTransformTask.getTreeItemForMousePosition(x, y, highlightItemOptionTask.getGravityRadius());\n this.setHighlightItem(event, itemId);\n }\n }\n }, {\n key: \"getEventArgs\",\n value: function getEventArgs(oldTreeItemId, newTreeItemId, name) {\n var result = new this.EventArgs(),\n combinedContextsTask = this.tasks.getTask(\"CombinedContextsTask\"),\n alignDiagramTask = this.tasks.getTask(\"AlignDiagramTask\"),\n oldItemConfig = combinedContextsTask.getConfig(oldTreeItemId),\n newItemConfig = combinedContextsTask.getConfig(newTreeItemId),\n itemPosition,\n offset,\n panelOffset;\n\n if (oldItemConfig && oldItemConfig.id != null) {\n result.oldContext = oldItemConfig;\n }\n\n if (newItemConfig && newItemConfig.id != null) {\n result.context = newItemConfig;\n\n if (newItemConfig.parent !== null) {\n result.parentItem = combinedContextsTask.getConfig(newItemConfig.parent);\n }\n\n panelOffset = (0, _basicprimitives.getElementOffset)(this.mousePanelRef.current);\n offset = (0, _basicprimitives.getElementOffset)(this.scrollPanelRef.current);\n itemPosition = alignDiagramTask.getItemPosition(newTreeItemId);\n result.position = new _basicprimitives.Rect(itemPosition.actualPosition).translate(panelOffset.left, panelOffset.top).translate(-offset.left, -offset.top);\n }\n\n if (name != null) {\n result.name = name;\n }\n\n return result;\n }\n }, {\n key: \"setHighlightItem\",\n value: function setHighlightItem(event, newHighlightItemId) {\n var eventArgs,\n cancel = false;\n var _this$props = this.props,\n onHighlightChanging = _this$props.onHighlightChanging,\n onHighlightChanged = _this$props.onHighlightChanged;\n var highlightItem = this.state.highlightItem;\n\n if (newHighlightItemId !== highlightItem) {\n eventArgs = this.getEventArgs(highlightItem, newHighlightItemId);\n\n if (onHighlightChanging != null) {\n if (!onHighlightChanging(event, eventArgs)) {\n cancel = true;\n this.setState({\n highlightItem: newHighlightItemId\n });\n }\n } else {\n this.setState({\n highlightItem: newHighlightItemId\n });\n }\n\n ;\n\n if (!cancel) {\n if (onHighlightChanged != null) {\n onHighlightChanged(event, eventArgs);\n }\n }\n }\n }\n }, {\n key: \"setCursorItem\",\n value: function setCursorItem(event, newCursorItemId) {\n var eventArgs,\n cancel = false;\n var _this$props2 = this.props,\n onCursorChanging = _this$props2.onCursorChanging,\n onCursorChanged = _this$props2.onCursorChanged;\n var cursorItem = this.state.cursorItem;\n\n if (newCursorItemId !== cursorItem) {\n eventArgs = this.getEventArgs(cursorItem, newCursorItemId);\n\n if (onCursorChanging != null) {\n if (!onCursorChanging(event, eventArgs)) {\n cancel = true;\n this.setState({\n cursorItem: newCursorItemId,\n centerOnCursor: true\n });\n }\n } else {\n this.setState({\n cursorItem: newCursorItemId,\n centerOnCursor: true\n });\n }\n\n if (!cancel) {\n if (onCursorChanged != null) {\n onCursorChanged(event, eventArgs);\n }\n }\n }\n }\n }, {\n key: \"onClick\",\n value: function onClick(event) {\n var placeholderOffset = (0, _basicprimitives.getElementOffset)(this.mousePanelRef.current),\n x = event.pageX - placeholderOffset.left,\n y = event.pageY - placeholderOffset.top,\n createTransformTask = this.tasks.getTask(\"CreateTransformTask\"),\n cursorItemOptionTask = this.tasks.getTask(\"CursorItemOptionTask\"),\n highlightItemOptionTask = this.tasks.getTask(\"HighlightItemOptionTask\"),\n newCursorItemId = createTransformTask.getTreeItemForMousePosition(x, y, highlightItemOptionTask.getGravityRadius()),\n target;\n target = event.target;\n\n if (newCursorItemId !== null) {\n if (target.getAttribute(\"name\") === \"checkbox\" || target.getAttribute(\"name\") === \"selectiontext\") {//ignore jslint\n } else {\n if (cursorItemOptionTask.hasCursorEnabled()) {\n this.setCursorItem(event, newCursorItemId);\n this.controlPanelRef.current.focus();\n }\n }\n }\n }\n }, {\n key: \"onCheckboxChange\",\n value: function onCheckboxChange(event) {\n var _this$props3 = this.props,\n onSelectionChanging = _this$props3.onSelectionChanging,\n onSelectionChanged = _this$props3.onSelectionChanged;\n var selectedItems = this.state.selectedItems;\n var newSelectedItems = [];\n var target = event.target;\n var itemid = target.getAttribute(\"data-id\");\n var checked = event.target.checked;\n var cancel = false;\n\n if (itemid != null) {\n if (checked) {\n newSelectedItems = [].concat(_toConsumableArray(selectedItems), [itemid]);\n } else {\n // eslint-disable-next-line\n newSelectedItems = selectedItems.filter(function (id) {\n return id != itemid;\n }); // User type may not mach string value in data attribute\n }\n\n if (onSelectionChanging != null) {\n cancel = onSelectionChanging(event, selectedItems, newSelectedItems);\n }\n\n if (!cancel) {\n this.setState({\n selectedItems: newSelectedItems\n });\n\n if (onSelectionChanged != null) {\n onSelectionChanged(event, selectedItems, newSelectedItems);\n }\n }\n }\n }\n }, {\n key: \"onKeyDown\",\n value: function onKeyDown(event) {\n var highlightItemTask = this.tasks.getTask(\"HighlightItemTask\"),\n highlightItemOptionTask = this.tasks.getTask(\"HighlightItemOptionTask\"),\n cursorItemTask = this.tasks.getTask(\"CursorItemTask\"),\n cursorItemOptionTask = this.tasks.getTask(\"CursorItemOptionTask\"),\n alignDiagramTask = this.tasks.getTask('AlignDiagramTask'),\n createTransformTask = this.tasks.getTask('CreateTransformTask'),\n transform = createTransformTask.getTransform(),\n navigationItem = null,\n newNavigationItem,\n direction = null,\n accepted;\n\n if (highlightItemOptionTask.hasHighlightEnabled() && cursorItemOptionTask.hasCursorEnabled()) {\n navigationItem = highlightItemTask.getHighlightTreeItem();\n\n if (navigationItem === null) {\n navigationItem = cursorItemTask.getCursorTreeItem();\n }\n } else if (highlightItemOptionTask.hasHighlightEnabled()) {\n navigationItem = highlightItemTask.getHighlightTreeItem();\n } else if (cursorItemOptionTask.hasCursorEnabled()) {\n navigationItem = cursorItemTask.getCursorTreeItem();\n }\n\n if (navigationItem != null) {\n switch (event.which) {\n case 13:\n /*Enter*/\n if (cursorItemOptionTask.hasCursorEnabled()) {\n this.setCursorItem(event, navigationItem);\n event.preventDefault();\n this.controlPanelRef.current.focus();\n }\n\n break;\n\n case 40:\n /*Down*/\n direction = _basicprimitives.OrientationType.Bottom;\n break;\n\n case 38:\n /*Up*/\n direction = _basicprimitives.OrientationType.Top;\n break;\n\n case 37:\n /*Left*/\n direction = _basicprimitives.OrientationType.Left;\n break;\n\n case 39:\n /*Right*/\n direction = _basicprimitives.OrientationType.Right;\n break;\n\n default:\n break;\n }\n\n if (direction != null) {\n accepted = false;\n\n while (!accepted) {\n accepted = true;\n direction = transform.getOrientation(direction);\n newNavigationItem = alignDiagramTask.getNextItem(navigationItem, direction);\n\n if (newNavigationItem != null) {\n event.preventDefault();\n\n if (highlightItemOptionTask.hasHighlightEnabled()) {\n this.setHighlightItem(event, newNavigationItem);\n } else if (cursorItemOptionTask.hasCursorEnabled()) {\n this.setCursorItem(event, newNavigationItem);\n }\n }\n }\n\n this.controlPanelRef.current.focus();\n }\n }\n }\n }, {\n key: \"onItemRender\",\n value: function onItemRender(data) {\n var templateName = data.templateName;\n var template = this.templatesHash[templateName];\n return template.onItemRender(data);\n }\n }, {\n key: \"onHighlightRender\",\n value: function onHighlightRender(data) {\n var templateName = data.templateName;\n var template = this.templatesHash[templateName];\n return template.onHighlightRender(data);\n }\n }, {\n key: \"onCursorRender\",\n value: function onCursorRender(data) {\n var templateName = data.templateName;\n var template = this.templatesHash[templateName];\n return template.onCursorRender(data);\n }\n }, {\n key: \"getOptions\",\n value: function getOptions() {\n var config = this.props.config;\n var templates = config.templates || [];\n var effectiveTemplates = templates.map(function (template) {\n var onItemRender = template.onItemRender,\n onHighlightRender = template.onHighlightRender,\n onCursorRender = template.onCursorRender;\n return _objectSpread(_objectSpread({}, template), {}, {\n itemTemplate: !onItemRender ? null : \"

This template is not being used in React

\",\n highlightTemplate: !onHighlightRender ? null : \"

This template is not being used in React

\",\n cursorTemplate: !onCursorRender ? null : \"

This template is not being used in React

\"\n });\n });\n this.templatesHash = templates.reduce(function (agg, template) {\n var name = template.name;\n agg[name] = template;\n return agg;\n }, {});\n var _this$state = this.state,\n highlightItem = _this$state.highlightItem,\n cursorItem = _this$state.cursorItem,\n selectedItems = _this$state.selectedItems;\n return _objectSpread(_objectSpread({}, config), {}, {\n templates: effectiveTemplates,\n highlightItem: highlightItem,\n cursorItem: cursorItem,\n selectedItems: selectedItems,\n onItemRender: this.onItemRender,\n onCursorRender: this.onCursorRender,\n onHighlightRender: this.onHighlightRender\n });\n }\n }, {\n key: \"getGraphics\",\n value: function getGraphics() {\n return this.graphics;\n }\n }, {\n key: \"getLayout\",\n value: function getLayout() {\n var _this$state2 = this.state,\n centerOnCursor = _this$state2.centerOnCursor,\n viewportSize = _this$state2.viewportSize,\n contentPosition = _this$state2.contentPosition;\n return {\n forceCenterOnCursor: centerOnCursor,\n scrollPanelSize: new _basicprimitives.Size(viewportSize),\n placeholderOffset: new _basicprimitives.Point(contentPosition)\n };\n }\n }, {\n key: \"setLayout\",\n value: function setLayout(layoutOptions) {\n var autoSize = layoutOptions.autoSize,\n controlSize = layoutOptions.controlSize,\n scale = layoutOptions.scale,\n frameMousePanelRect = layoutOptions.frameMousePanelRect,\n framePlaceholderSize = layoutOptions.framePlaceholderSize,\n titlesMousePanelRect = layoutOptions.titlesMousePanelRect,\n titlesPlaceholderSize = layoutOptions.titlesPlaceholderSize,\n scrollPanelRect = layoutOptions.scrollPanelRect,\n mousePanelSize = layoutOptions.mousePanelSize,\n placeholderSize = layoutOptions.placeholderSize;\n this.layoutOptions = {\n autoSize: autoSize,\n controlSize: new _basicprimitives.Size(controlSize),\n scale: scale,\n frameMousePanelRect: new _basicprimitives.Rect(frameMousePanelRect),\n framePlaceholderSize: new _basicprimitives.Size(framePlaceholderSize),\n titlesMousePanelRect: new _basicprimitives.Rect(titlesMousePanelRect),\n titlesPlaceholderSize: new _basicprimitives.Size(titlesPlaceholderSize),\n scrollPanelRect: new _basicprimitives.Rect(scrollPanelRect),\n mousePanelSize: new _basicprimitives.Size(mousePanelSize),\n placeholderSize: new _basicprimitives.Size(placeholderSize)\n };\n }\n }, {\n key: \"render\",\n value: function render() {\n var graphics = this.graphics;\n this.tasks.process('OptionsTask', null, false);\n var _this$graphics$placeh = this.graphics.placeholders,\n placeholder = _this$graphics$placeh.placeholder,\n calloutplaceholder = _this$graphics$placeh.calloutplaceholder,\n frameplaceholder = _this$graphics$placeh.frameplaceholder,\n titlesplaceholder = _this$graphics$placeh.titlesplaceholder;\n var placeholderRectCSS = placeholder.rect.getCSS();\n var _this$layoutOptions = this.layoutOptions,\n autoSize = _this$layoutOptions.autoSize,\n controlSize = _this$layoutOptions.controlSize,\n scale = _this$layoutOptions.scale,\n frameMousePanelRect = _this$layoutOptions.frameMousePanelRect,\n titlesMousePanelRect = _this$layoutOptions.titlesMousePanelRect,\n scrollPanelRect = _this$layoutOptions.scrollPanelRect,\n mousePanelSize = _this$layoutOptions.mousePanelSize;\n /* set CSS scale of content */\n\n var scaletext = \"scale(\" + scale + \",\" + scale + \")\";\n return /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n /* root control panel */\n ref: this.controlPanelRef,\n onKeyDown: this.onKeyDown,\n style: _objectSpread({\n position: \"relative\",\n overflow: \"hidden\",\n top: \"0px\",\n left: \"0px\",\n width: \"100%\",\n height: \"100%\",\n padding: \"0px\",\n marginBottom: \"0px\",\n marginRight: \"0px\"\n }, autoSize ? controlSize.getCSS() : {}),\n tabIndex: \"0\"\n }, frameplaceholder && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: this.frameMousePanelRef,\n onMouseMove: this.onFrameMouseMove,\n onClick: this.onFrameClick,\n style: _objectSpread({\n position: \"absolute\",\n overflow: \"hidden\"\n }, frameMousePanelRect.getCSS())\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: this.framePlaceholderRef,\n style: _objectSpread(_objectSpread({}, frameplaceholder.rect.getCSS()), {}, {\n position: \"absolute\",\n overflow: \"hidden\",\n \"transformOrigin\": \"0 0\",\n \"transform\": scaletext,\n \"msTransform\": scaletext,\n\n /* IE 9 */\n \"WebkitTransform\": scaletext,\n\n /* Safari and Chrome */\n \"OTransform\": scaletext,\n\n /* Opera */\n \"MozTransform\": scaletext\n /* Firefox */\n\n })\n }, graphics.map(this, \"frameplaceholder\", function (layerKey, elements) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: layerKey,\n style: {\n position: \"absolute\",\n overflow: \"visible\",\n left: \"0px\",\n top: \"0px\"\n }\n }, elements);\n }))), titlesplaceholder && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: this.titlesMousePanelRef,\n onMouseMove: this.onFrameMouseMove,\n onClick: this.onFrameClick,\n style: _objectSpread({\n position: \"absolute\",\n overflow: \"hidden\"\n }, titlesMousePanelRect.getCSS())\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: this.titlesPlaceholderRef,\n style: _objectSpread(_objectSpread({}, titlesplaceholder.rect.getCSS()), {}, {\n position: \"absolute\",\n overflow: \"hidden\",\n \"transformOrigin\": \"0 0\",\n \"transform\": scaletext,\n \"msTransform\": scaletext,\n\n /* IE 9 */\n \"WebkitTransform\": scaletext,\n\n /* Safari and Chrome */\n \"OTransform\": scaletext,\n\n /* Opera */\n \"MozTransform\": scaletext\n /* Firefox */\n\n })\n }, graphics.map(this, \"titlesplaceholder\", function (layerKey, elements) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: layerKey,\n style: {\n position: \"absolute\",\n overflow: \"visible\",\n left: \"0px\",\n top: \"0px\"\n }\n }, elements);\n }))), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: this.scrollPanelRef,\n onScroll: this.onScroll,\n style: _objectSpread(_objectSpread({\n position: \"absolute\",\n overflow: \"auto\",\n WebkitOverflowScrolling: \"touch\"\n }, scrollPanelRect.getCSS()), {}, {\n border: scrollPanelRect.x > 0 ? \"1px dotted #dddddd\" : \"\"\n })\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: this.mousePanelRef,\n onMouseMove: this.onMouseMove,\n onClick: this.onClick,\n onChange: this.onCheckboxChange,\n style: _objectSpread({\n position: \"absolute\",\n overflow: \"hidden\"\n }, mousePanelSize.getCSS())\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: this.placeholderRef,\n style: _objectSpread(_objectSpread({}, placeholderRectCSS), {}, {\n position: \"absolute\",\n overflow: \"hidden\",\n \"transformOrigin\": \"0 0\",\n \"transform\": scaletext,\n \"msTransform\": scaletext,\n\n /* IE 9 */\n \"WebkitTransform\": scaletext,\n\n /* Safari and Chrome */\n \"OTransform\": scaletext,\n\n /* Opera */\n \"MozTransform\": scaletext\n /* Firefox */\n\n })\n }, graphics.map(this, \"placeholder\", function (layerKey, elements) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: layerKey,\n style: {\n position: \"absolute\",\n overflow: \"visible\",\n left: \"0px\",\n top: \"0px\"\n }\n }, elements);\n }), calloutplaceholder && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: \"Callout\",\n ref: this.calloutPlaceholderRef,\n style: {\n position: \"absolute\",\n overflow: \"visible\",\n left: calloutplaceholder.rect.x + \"px\",\n top: calloutplaceholder.rect.y + \"px\"\n }\n }, graphics.map(this, \"calloutplaceholder\", function (layerKey, elements) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: layerKey,\n style: {\n position: \"absolute\",\n overflow: \"visible\"\n }\n }, elements);\n })))))));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, state) {\n var nextConfig = nextProps.config,\n centerOnCursor = nextProps.centerOnCursor;\n var config = state.config;\n\n if (config !== nextConfig) {\n var highlightItem = nextConfig.highlightItem,\n cursorItem = nextConfig.cursorItem,\n selectedItems = nextConfig.selectedItems;\n return {\n config: nextConfig,\n highlightItem: highlightItem,\n cursorItem: cursorItem,\n selectedItems: (selectedItems || []).slice(),\n centerOnCursor: centerOnCursor\n };\n }\n\n return null;\n }\n }]);\n\n return BaseDiagram;\n}(_react.Component);\n\n_defineProperty(BaseDiagram, \"propTypes\", {\n centerOnCursor: _propTypes[\"default\"].bool,\n // eslint-disable-line react/no-unused-prop-types\n onHighlightChanging: _propTypes[\"default\"].func,\n // eslint-disable-line react/no-unused-prop-types\n onHighlightChanged: _propTypes[\"default\"].func,\n // eslint-disable-line react/no-unused-prop-types\n onCursorChanging: _propTypes[\"default\"].func,\n // eslint-disable-line react/no-unused-prop-types\n onCursorChanged: _propTypes[\"default\"].func,\n // eslint-disable-line react/no-unused-prop-types\n onSelectionChanging: _propTypes[\"default\"].func,\n // eslint-disable-line react/no-unused-prop-types\n onSelectionChanged: _propTypes[\"default\"].func // eslint-disable-line react/no-unused-prop-types\n\n});\n\n_defineProperty(BaseDiagram, \"defaultProps\", {\n centerOnCursor: true,\n onHighlightChanging: null,\n onHighlightChanged: null,\n onCursorChanging: null,\n onCursorChanged: null,\n onSelectionChanging: null,\n onSelectionChanged: null\n});\n\nvar _default = BaseDiagram;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nvar _BaseDiagram2 = _interopRequireDefault(require(\"./BaseDiagram\"));\n\nvar _FamConfigShape = _interopRequireDefault(require(\"./Schemas/FamConfigShape\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar FamDiagram = /*#__PURE__*/function (_BaseDiagram) {\n _inherits(FamDiagram, _BaseDiagram);\n\n var _super = _createSuper(FamDiagram);\n\n function FamDiagram(props) {\n _classCallCheck(this, FamDiagram);\n\n return _super.call(this, props, _basicprimitives.FamTaskManagerFactory, _basicprimitives.FamEventArgs);\n }\n\n return FamDiagram;\n}(_BaseDiagram2[\"default\"]);\n\n_defineProperty(FamDiagram, \"propTypes\", {\n config: _FamConfigShape[\"default\"].isRequired // eslint-disable-line react/no-unused-prop-types\n\n});\n\nvar _default = FamDiagram;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nvar _RotatedText = _interopRequireDefault(require(\"./Templates/RotatedText\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Placeholder = function Placeholder(name) {\n _classCallCheck(this, Placeholder);\n\n this.name = name;\n this.layers = {};\n this.activeLayer = null;\n this.size = null;\n this.rect = null;\n this.hasGraphics = true;\n this.isVisible = true;\n};\n\n;\n\nvar Layer = /*#__PURE__*/function () {\n function Layer(name) {\n _classCallCheck(this, Layer);\n\n this.name = name;\n this.items = [];\n this.polylines = [];\n }\n\n _createClass(Layer, [{\n key: \"reset\",\n value: function reset() {\n this.items = [];\n this.polylines = [];\n }\n }]);\n\n return Layer;\n}();\n\n;\n\nvar Graphics = /*#__PURE__*/function () {\n function Graphics(size) {\n _classCallCheck(this, Graphics);\n\n this.placeholders = {};\n this.activePlaceholder = null;\n this.size = size;\n this.hasGraphics = true;\n this.names = Object.keys(_basicprimitives.Layers).reduce(function (agg, key) {\n agg[_basicprimitives.Layers[key]] = key;\n return agg;\n }, []);\n this.orientations = ['Horizontal', 'RotateLeft', 'RotateRight', 'Horizontal'];\n this.horizontalAlignments = ['center', 'left', 'right'];\n this.verticalAlignments = ['top', 'middle', 'bottom'];\n }\n\n _createClass(Graphics, [{\n key: \"clean\",\n value: function clean() {\n this.placeholders = {};\n this.activePlaceholder = null;\n }\n }, {\n key: \"resize\",\n value: function resize(name, width, height) {\n this.activatePlaceholder(name);\n this.resizePlaceholder(this.activePlaceholder, 0, 0, width, height);\n }\n }, {\n key: \"position\",\n value: function position(name, left, top, width, height) {\n this.activatePlaceholder(name);\n this.resizePlaceholder(this.activePlaceholder, left, top, width, height);\n }\n }, {\n key: \"show\",\n value: function show(name) {\n var placeholder = this.placeholders[name];\n\n if (placeholder != null) {\n placeholder.isVisible = true;\n }\n }\n }, {\n key: \"hide\",\n value: function hide(name) {\n var placeholder = this.placeholders[name];\n\n if (placeholder != null) {\n placeholder.isVisible = false;\n }\n }\n }, {\n key: \"resizePlaceholder\",\n value: function resizePlaceholder(placeholder, left, top, width, height) {\n placeholder.size = new _basicprimitives.Size(width, height);\n placeholder.rect = new _basicprimitives.Rect(left, top, width, height);\n }\n }, {\n key: \"reset\",\n value: function reset(placeholderName, layerKey) {\n var layerName = this.names[layerKey];\n var placeholder = this.placeholders[placeholderName];\n\n if (placeholder != null) {\n var layer = placeholder.layers[layerName];\n\n if (layer != null) {\n layer.reset();\n }\n }\n }\n }, {\n key: \"activate\",\n value: function activate(placeholderName, layerKey) {\n this.activatePlaceholder(placeholderName);\n this.activateLayer(layerKey);\n return this.activePlaceholder;\n }\n }, {\n key: \"activatePlaceholder\",\n value: function activatePlaceholder(name) {\n var placeholder = this.placeholders[name];\n\n if (placeholder === undefined) {\n placeholder = new Placeholder(name);\n placeholder.size = this.size;\n placeholder.rect = new _basicprimitives.Rect(0, 0, placeholder.size.width, placeholder.size.height);\n this.placeholders[name] = placeholder;\n }\n\n this.activePlaceholder = placeholder;\n }\n }, {\n key: \"activateLayer\",\n value: function activateLayer(value) {\n var name = this.names[value];\n var layer = this.activePlaceholder.layers[name];\n\n if (layer === undefined) {\n layer = new Layer(name);\n this.activePlaceholder.layers[name] = layer;\n }\n\n this.activePlaceholder.activeLayer = layer;\n }\n }, {\n key: \"map\",\n value: function map(thisArg, placeholderName, onLayer) {\n var result = [];\n\n if (onLayer != null) {\n var placeholder = this.placeholders[placeholderName];\n this.names.forEach(function (layerKey) {\n var layer = placeholder.layers[layerKey];\n\n if (layer != null) {\n result.push(onLayer.call(thisArg, layerKey, /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, layer.polylines.length > 0 ? /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n height: placeholder.size.height,\n width: placeholder.size.width\n }, layer.polylines) : null, layer.items)));\n }\n });\n }\n\n return result;\n }\n }, {\n key: \"text\",\n value: function text(x, y, width, height, label, orientation, horizontalAlignment, verticalAlignment, attr) {\n this.activePlaceholder.activeLayer.items.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: this.activePlaceholder.activeLayer.items.length,\n style: _objectSpread(_objectSpread({\n position: \"absolute\",\n overflow: \"visible\",\n fontFamily: \"Trebuchet MS, Tahoma, Verdana, Arial, sans-serif\",\n WebkitTapHighlightColor: \"rgba(0,0,0,0)\",\n WebkitUserSelect: \"none\",\n WebkitTouchCallout: \"none\",\n KhtmlUserSelect: \"none\",\n MozUserSelect: \"none\",\n msUserSelect: \"none\",\n userSelect: \"none\",\n boxSizing: \"content-box\"\n }, attr), {}, {\n top: y + \"px\",\n left: x + \"px\"\n })\n }, /*#__PURE__*/_react[\"default\"].createElement(_RotatedText[\"default\"], {\n width: width,\n height: height,\n orientation: this.orientations[orientation],\n horizontalAlignment: this.horizontalAlignments[horizontalAlignment],\n verticalAlignment: this.verticalAlignments[verticalAlignment]\n }, label)));\n }\n }, {\n key: \"polylinesBuffer\",\n value: function polylinesBuffer(buffer) {\n buffer.loop(this, function (polyline) {\n if (polyline.length() > 0) {\n this.polyline(polyline);\n }\n });\n }\n }, {\n key: \"polyline\",\n value: function polyline(polylineData) {\n var data,\n attr = polylineData.paletteItem.toAttr(),\n step,\n radius,\n cornerRadius,\n style = {};\n\n if (attr.fillColor !== undefined) {\n style.fill = attr.fillColor;\n style.fillOpacity = attr.opacity;\n } else {\n style.fillOpacity = 0;\n }\n\n if (attr.lineWidth !== undefined && attr.borderColor !== undefined) {\n style.stroke = attr.borderColor;\n style.strokeWidth = attr.lineWidth;\n\n if (attr.opacity !== undefined) {\n style.strokeOpacity = attr.opacity;\n } else {\n style.strokeOpacity = 1;\n }\n } else {\n style.stroke = \"transparent\";\n style.strokeWidth = 0;\n }\n\n if (attr.lineType != null) {\n step = Math.round(attr.lineWidth) || 1;\n\n switch (attr.lineType) {\n case _basicprimitives.LineType.Dotted:\n style.strokeDasharray = step + \",\" + step;\n break;\n\n case _basicprimitives.LineType.Dashed:\n style.strokeDasharray = step * 5 + \",\" + step * 3;\n break;\n\n case _basicprimitives.LineType.Solid:\n default:\n style.strokeDasharray = \"\";\n break;\n }\n }\n\n data = \"\";\n polylineData.loop(this, function (segment) {\n switch (segment.segmentType) {\n case _basicprimitives.SegmentType.Move:\n data += \"M\" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y) + 0.5);\n break;\n\n case _basicprimitives.SegmentType.Line:\n data += \"L\" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y) + 0.5);\n break;\n\n case _basicprimitives.SegmentType.QuadraticArc:\n data += \"Q\" + (Math.round(segment.cpX) + 0.5) + \" \" + (Math.round(segment.cpY) + 0.5) + \" \" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y) + 0.5);\n break;\n\n case _basicprimitives.SegmentType.Dot:\n // A rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y\n if (segment.width === segment.height && segment.width / 2.0 <= segment.cornerRadius) {\n // dot\n radius = segment.width / 2.0;\n data += \"M\" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y) + segment.height / 2.0 + 0.5);\n data += \"A\" + radius + \" \" + radius + \" 0 0 0 \" + (Math.round(segment.x + segment.width) + 0.5) + \" \" + (Math.round(segment.y) + segment.height / 2.0 + 0.5);\n data += \"A\" + radius + \" \" + radius + \" 0 0 0 \" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y) + segment.height / 2.0 + 0.5);\n } else if (segment.cornerRadius === 0) {\n // square\n data += \"M\" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y) + 0.5);\n data += \"L\" + (Math.round(segment.x + segment.width) + 0.5) + \" \" + (Math.round(segment.y) + 0.5);\n data += \"L\" + (Math.round(segment.x + segment.width) + 0.5) + \" \" + (Math.round(segment.y + segment.height) + 0.5);\n data += \"L\" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y + segment.height) + 0.5);\n data += \"L\" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y) + 0.5);\n } else {\n cornerRadius = Math.min(segment.cornerRadius, Math.min(segment.width / 2.0, segment.height / 2.0));\n data += \"M\" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y + cornerRadius) + 0.5);\n data += \"A\" + Math.round(cornerRadius) + \" \" + Math.round(cornerRadius) + \" 0 0 1 \" + (Math.round(segment.x + cornerRadius) + 0.5) + \" \" + (Math.round(segment.y) + 0.5);\n data += \"L\" + (Math.round(segment.x + segment.width - cornerRadius) + 0.5) + \" \" + (Math.round(segment.y) + 0.5);\n data += \"A\" + Math.round(cornerRadius) + \" \" + Math.round(cornerRadius) + \" 0 0 1 \" + (Math.round(segment.x + segment.width) + 0.5) + \" \" + (Math.round(segment.y + cornerRadius) + 0.5);\n data += \"L\" + (Math.round(segment.x + segment.width) + 0.5) + \" \" + (Math.round(segment.y + segment.height - cornerRadius) + 0.5);\n data += \"A\" + Math.round(cornerRadius) + \" \" + Math.round(cornerRadius) + \" 0 0 1 \" + (Math.round(segment.x + segment.width - cornerRadius) + 0.5) + \" \" + (Math.round(segment.y + segment.height) + 0.5);\n data += \"L\" + (Math.round(segment.x + cornerRadius) + 0.5) + \" \" + (Math.round(segment.y + segment.height) + 0.5);\n data += \"A\" + Math.round(cornerRadius) + \" \" + Math.round(cornerRadius) + \" 0 0 1 \" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y + segment.height - cornerRadius) + 0.5);\n data += \"L\" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y + cornerRadius) + 0.5);\n }\n\n break;\n\n case _basicprimitives.SegmentType.CubicArc:\n data += \"C\" + (Math.round(segment.cpX1) + 0.5) + \" \" + (Math.round(segment.cpY1) + 0.5) + \" \" + (Math.round(segment.cpX2) + 0.5) + \" \" + (Math.round(segment.cpY2) + 0.5) + \" \" + (Math.round(segment.x) + 0.5) + \" \" + (Math.round(segment.y) + 0.5);\n break;\n\n default:\n break;\n }\n });\n this.activePlaceholder.activeLayer.polylines.push( /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n key: this.activePlaceholder.activeLayer.polylines.length,\n d: data,\n style: style\n }));\n }\n }, {\n key: \"template\",\n value: function template(x, y, width, height, contentx, contenty, contentWidth, contentHeight, _template, hashCode, onRenderTemplate, uiHash, attr) {\n //ignore jslint\n var style;\n var left = x + contentx,\n top = y + contenty,\n templateWidth = contentWidth,\n templateHeight = contentHeight;\n style = _objectSpread({\n \"width\": templateWidth + \"px\",\n \"height\": templateHeight + \"px\",\n \"top\": top + \"px\",\n \"left\": left + \"px\",\n \"position\": \"absolute\",\n \"padding\": \"0px\",\n \"margin\": \"0px\"\n }, attr);\n\n if (uiHash == null) {\n uiHash = {};\n }\n\n uiHash.x = left;\n uiHash.y = top;\n uiHash.width = templateWidth;\n uiHash.height = templateHeight;\n\n if (onRenderTemplate !== null) {\n this.activePlaceholder.activeLayer.items.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: this.activePlaceholder.activeLayer.items.length,\n style: _objectSpread({\n position: \"absolute\",\n overflow: \"visible\",\n fontFamily: \"Trebuchet MS, Tahoma, Verdana, Arial, sans-serif\",\n WebkitTapHighlightColor: \"rgba(0,0,0,0)\",\n WebkitUserSelect: \"none\",\n WebkitTouchCallout: \"none\",\n KhtmlUserSelect: \"none\",\n MozUserSelect: \"none\",\n msUserSelect: \"none\",\n userSelect: \"none\",\n boxSizing: \"content-box\"\n }, style)\n }, onRenderTemplate(uiHash)));\n }\n\n ;\n }\n }, {\n key: \"getPxSize\",\n value: function getPxSize(value, base) {\n var result = value;\n\n if (typeof value === \"string\") {\n if (value.indexOf(\"pt\") > 0) {\n result = parseInt(value, 10) * 96 / 72;\n } else if (value.indexOf(\"%\") > 0) {\n result = parseFloat(value) / 100.0 * base;\n } else {\n result = parseInt(value, 10);\n }\n }\n\n return result;\n }\n }]);\n\n return Graphics;\n}();\n\n;\nvar _default = Graphics;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nvar _BaseDiagram2 = _interopRequireDefault(require(\"./BaseDiagram\"));\n\nvar _OrgConfigShape = _interopRequireDefault(require(\"./Schemas/OrgConfigShape\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar OrgDiagram = /*#__PURE__*/function (_BaseDiagram) {\n _inherits(OrgDiagram, _BaseDiagram);\n\n var _super = _createSuper(OrgDiagram);\n\n function OrgDiagram(props) {\n _classCallCheck(this, OrgDiagram);\n\n return _super.call(this, props, _basicprimitives.OrgTaskManagerFactory, _basicprimitives.OrgEventArgs);\n }\n\n return OrgDiagram;\n}(_BaseDiagram2[\"default\"]);\n\n_defineProperty(OrgDiagram, \"propTypes\", {\n config: _OrgConfigShape[\"default\"].isRequired // eslint-disable-line react/no-unused-prop-types\n\n});\n\nvar _default = OrgDiagram;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar BackgroundAnnotationConfigShape = _propTypes[\"default\"].shape({\n annotationType: _propTypes[\"default\"].oneOf([_basicprimitives.AnnotationType.Background]),\n items: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string])),\n includeChildren: _propTypes[\"default\"].bool,\n zOrderType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ZOrderType)),\n offset: _propTypes[\"default\"].shape({\n left: _propTypes[\"default\"].number.isRequired,\n top: _propTypes[\"default\"].number.isRequired,\n right: _propTypes[\"default\"].number.isRequired,\n bottom: _propTypes[\"default\"].number.isRequired\n }),\n lineWidth: _propTypes[\"default\"].number,\n opacity: _propTypes[\"default\"].number,\n borderColor: _propTypes[\"default\"].string,\n fillColor: _propTypes[\"default\"].string,\n lineType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.LineType)),\n selectItems: _propTypes[\"default\"].bool\n});\n\nvar _default = BackgroundAnnotationConfigShape;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar ConnectorAnnotationConfigShape = _propTypes[\"default\"].shape({\n annotationType: _propTypes[\"default\"].oneOf([_basicprimitives.AnnotationType.Connector]),\n zOrderType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ZOrderType)),\n fromItem: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string]),\n toItem: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string]),\n connectorShapeType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ConnectorShapeType)),\n connectorPlacementType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ConnectorPlacementType)),\n labelPlacementType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ConnectorLabelPlacementType)),\n offset: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].shape({\n left: _propTypes[\"default\"].number.isRequired,\n top: _propTypes[\"default\"].number.isRequired,\n right: _propTypes[\"default\"].number.isRequired,\n bottom: _propTypes[\"default\"].number.isRequired\n })]),\n lineWidth: _propTypes[\"default\"].number,\n color: _propTypes[\"default\"].string,\n lineType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.LineType)),\n selectItems: _propTypes[\"default\"].bool,\n label: _propTypes[\"default\"].any,\n size: _propTypes[\"default\"].shape({\n width: _propTypes[\"default\"].number.isRequired,\n height: _propTypes[\"default\"].number.isRequired\n })\n});\n\nvar _default = ConnectorAnnotationConfigShape;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nvar _FamItemConfigShape = _interopRequireDefault(require(\"./FamItemConfigShape\"));\n\nvar _TemplateConfigShape = _interopRequireDefault(require(\"./TemplateConfigShape\"));\n\nvar _BackgroundAnnotationConfigShape = _interopRequireDefault(require(\"./BackgroundAnnotationConfigShape\"));\n\nvar _ConnectorAnnotationConfigShape = _interopRequireDefault(require(\"./ConnectorAnnotationConfigShape\"));\n\nvar _HighlightPathAnnotationConfigShape = _interopRequireDefault(require(\"./HighlightPathAnnotationConfigShape\"));\n\nvar _ShapeAnnotationConfigShape = _interopRequireDefault(require(\"./ShapeAnnotationConfigShape\"));\n\nvar _LevelAnnotationConfigShape = _interopRequireDefault(require(\"./LevelAnnotationConfigShape\"));\n\nvar _LabelAnnotationConfigShape = _interopRequireDefault(require(\"./LabelAnnotationConfigShape\"));\n\nvar _PaletteItemConfigShape = _interopRequireDefault(require(\"./PaletteItemConfigShape\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar FamConfigShape = _propTypes[\"default\"].shape({\n navigationMode: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.NavigationMode)),\n pageFitMode: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.PageFitMode)),\n minimalVisibility: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Visibility)),\n minimumVisibleLevels: _propTypes[\"default\"].number,\n orientationType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.OrientationType)),\n verticalAlignment: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.VerticalAlignmentType)),\n arrowsDirection: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.GroupByType)),\n showExtraArrows: _propTypes[\"default\"].bool,\n extraArrowsMinimumSpace: _propTypes[\"default\"].number,\n groupByType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.GroupByType)),\n alignBylevels: _propTypes[\"default\"].bool,\n enableMatrixLayout: _propTypes[\"default\"].bool,\n minimumMatrixSize: _propTypes[\"default\"].number,\n maximumColumnsInMatrix: _propTypes[\"default\"].number,\n hideGrandParentsConnectors: _propTypes[\"default\"].bool,\n bevelSize: _propTypes[\"default\"].number,\n elbowType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ElbowType)),\n elbowDotSize: _propTypes[\"default\"].number,\n emptyDiagramMessage: _propTypes[\"default\"].string,\n items: _propTypes[\"default\"].arrayOf(_FamItemConfigShape[\"default\"]),\n annotations: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].oneOfType([_BackgroundAnnotationConfigShape[\"default\"], _ConnectorAnnotationConfigShape[\"default\"], _HighlightPathAnnotationConfigShape[\"default\"], _ShapeAnnotationConfigShape[\"default\"], _LabelAnnotationConfigShape[\"default\"], _LevelAnnotationConfigShape[\"default\"]])),\n cursorItem: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string]),\n highlightItem: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string]),\n highlightGravityRadius: _propTypes[\"default\"].number,\n selectedItems: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string])),\n hasSelectorCheckbox: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Enabled)),\n selectCheckBoxLabel: _propTypes[\"default\"].string,\n selectionPathMode: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.SelectionPathMode)),\n neighboursSelectionMode: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.NeighboursSelectionMode)),\n templates: _propTypes[\"default\"].arrayOf(_TemplateConfigShape[\"default\"]),\n defaultTemplateName: _propTypes[\"default\"].string,\n defaultLabelAnnotationTemplate: _propTypes[\"default\"].string,\n hasButtons: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Enabled)),\n onButtonsRender: _propTypes[\"default\"].func,\n normalLevelShift: _propTypes[\"default\"].number,\n dotLevelShift: _propTypes[\"default\"].number,\n lineLevelShift: _propTypes[\"default\"].number,\n normalItemsInterval: _propTypes[\"default\"].number,\n dotItemsInterval: _propTypes[\"default\"].number,\n lineItemsInterval: _propTypes[\"default\"].number,\n cousinsIntervalMultiplier: _propTypes[\"default\"].number,\n itemTitleFirstFontColor: _propTypes[\"default\"].string,\n itemTitleSecondFontColor: _propTypes[\"default\"].string,\n minimizedItemShapeType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ShapeType)),\n linesColor: _propTypes[\"default\"].string,\n linesWidth: _propTypes[\"default\"].number,\n linesType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.LineType)),\n showNeigboursConnectorsHighlighted: _propTypes[\"default\"].bool,\n highlightLinesColor: _propTypes[\"default\"].string,\n highlightLinesWidth: _propTypes[\"default\"].number,\n highlightLinesType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.LineType)),\n linesPalette: _propTypes[\"default\"].arrayOf(_PaletteItemConfigShape[\"default\"]),\n calloutMaximumVisibility: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Visibility)),\n showCallout: _propTypes[\"default\"].bool,\n calloutPlacementOffset: _propTypes[\"default\"].number,\n defaultCalloutTemplateName: _propTypes[\"default\"].string,\n calloutfillColor: _propTypes[\"default\"].string,\n calloutBorderColor: _propTypes[\"default\"].string,\n calloutOffset: _propTypes[\"default\"].number,\n calloutCornerRadius: _propTypes[\"default\"].number,\n calloutPointerWidth: _propTypes[\"default\"].string,\n calloutLineWidth: _propTypes[\"default\"].number,\n calloutOpacity: _propTypes[\"default\"].number,\n buttonsPanelSize: _propTypes[\"default\"].number,\n groupTitlePanelSize: _propTypes[\"default\"].number,\n checkBoxPanelSize: _propTypes[\"default\"].number,\n groupTitlePlacementType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.AdviserPlacementType)),\n groupTitleOrientation: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.TextOrientationType)),\n groupTitleVerticalAlignment: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.VerticalAlignmentType)),\n groupTitleHorizontalAlignment: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.HorizontalAlignmentType)),\n groupTitleFontSize: _propTypes[\"default\"].string,\n groupTitleFontFamily: _propTypes[\"default\"].string,\n groupTitleColor: _propTypes[\"default\"].string,\n groupTitleFontWeight: _propTypes[\"default\"].string,\n groupTitleFontStyle: _propTypes[\"default\"].string,\n onGroupTitleRender: _propTypes[\"default\"].func,\n levelTitlePanelSize: _propTypes[\"default\"].number,\n levelTitlePlacementType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.AdviserPlacementType)),\n levelTitlePlaceInside: _propTypes[\"default\"].bool,\n levelTitleOrientation: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.TextOrientationType)),\n levelTitleVerticalAlignment: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.VerticalAlignmentType)),\n levelTitleHorizontalAlignment: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.HorizontalAlignmentType)),\n levelTitleFontSize: _propTypes[\"default\"].string,\n levelTitleFontFamily: _propTypes[\"default\"].string,\n levelTitleFontColor: _propTypes[\"default\"].string,\n levelTitleColor: _propTypes[\"default\"].string,\n levelTitleFontWeight: _propTypes[\"default\"].string,\n levelTitleFontStyle: _propTypes[\"default\"].string,\n onLevelTitleRender: _propTypes[\"default\"].func,\n onLevelBackgroundRender: _propTypes[\"default\"].func,\n distance: _propTypes[\"default\"].number,\n scale: _propTypes[\"default\"].number,\n minimumScale: _propTypes[\"default\"].number,\n maximumScale: _propTypes[\"default\"].number,\n showLabels: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Enabled)),\n labelSize: _propTypes[\"default\"].shape({\n width: _propTypes[\"default\"].number.isRequired,\n height: _propTypes[\"default\"].number.isRequired\n }),\n labelOffset: _propTypes[\"default\"].number,\n labelOrientation: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.TextOrientationType)),\n labelPlacement: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.PlacementType)),\n labelFontSize: _propTypes[\"default\"].string,\n labelFontFamily: _propTypes[\"default\"].string,\n labelColor: _propTypes[\"default\"].string,\n labelFontWeight: _propTypes[\"default\"].string,\n labelFontStyle: _propTypes[\"default\"].string,\n enablePanning: _propTypes[\"default\"].bool,\n autoSizeMinimum: _propTypes[\"default\"].shape({\n width: _propTypes[\"default\"].number.isRequired,\n height: _propTypes[\"default\"].number.isRequired\n }),\n autoSizeMaximum: _propTypes[\"default\"].shape({\n width: _propTypes[\"default\"].number.isRequired,\n height: _propTypes[\"default\"].number.isRequired\n }),\n showFrame: _propTypes[\"default\"].bool,\n frameInnerPadding: _propTypes[\"default\"].shape({\n left: _propTypes[\"default\"].number.isRequired,\n top: _propTypes[\"default\"].number.isRequired,\n right: _propTypes[\"default\"].number.isRequired,\n bottom: _propTypes[\"default\"].number.isRequired\n }),\n frameOuterPadding: _propTypes[\"default\"].shape({\n left: _propTypes[\"default\"].number.isRequired,\n top: _propTypes[\"default\"].number.isRequired,\n right: _propTypes[\"default\"].number.isRequired,\n bottom: _propTypes[\"default\"].number.isRequired\n }),\n padding: _propTypes[\"default\"].shape({\n left: _propTypes[\"default\"].number.isRequired,\n top: _propTypes[\"default\"].number.isRequired,\n right: _propTypes[\"default\"].number.isRequired,\n bottom: _propTypes[\"default\"].number.isRequired\n })\n});\n\nvar _default = FamConfigShape;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar FamItemConfigShape = _propTypes[\"default\"].shape({\n id: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string]).isRequired,\n parents: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string])),\n title: _propTypes[\"default\"].string,\n description: _propTypes[\"default\"].string,\n image: _propTypes[\"default\"].string,\n context: _propTypes[\"default\"].any,\n itemTitleColor: _propTypes[\"default\"].string,\n minimizedItemShapeType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ShapeType)),\n groupTitle: _propTypes[\"default\"].string,\n groupTitleColor: _propTypes[\"default\"].string,\n isActive: _propTypes[\"default\"].bool,\n hasSelectorCheckbox: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Enabled)),\n hasButtons: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Enabled)),\n templateName: _propTypes[\"default\"].string,\n showCallout: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Enabled)),\n calloutTemplateName: _propTypes[\"default\"].string,\n label: _propTypes[\"default\"].string,\n showLabel: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Enabled)),\n labelSize: _propTypes[\"default\"].shape({\n width: _propTypes[\"default\"].number.isRequired,\n height: _propTypes[\"default\"].number.isRequired\n }),\n labelOrientation: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.TextOrientationType)),\n labelPlacement: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.PlacementType)),\n primaryParent: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string]),\n relativeItem: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string]),\n position: _propTypes[\"default\"].number,\n placementType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.AdviserPlacementType)),\n matrixId: _propTypes[\"default\"].string,\n addToMatrix: _propTypes[\"default\"].bool\n});\n\nvar _default = FamItemConfigShape;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar HighlightPathAnnotationConfigShape = _propTypes[\"default\"].shape({\n annotationType: _propTypes[\"default\"].oneOf([_basicprimitives.AnnotationType.HighlightPath]),\n zOrderType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ZOrderType)),\n items: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string])),\n lineWidth: _propTypes[\"default\"].number,\n color: _propTypes[\"default\"].string,\n lineType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.LineType)),\n opacity: _propTypes[\"default\"].number,\n showArrows: _propTypes[\"default\"].bool,\n selectItems: _propTypes[\"default\"].bool\n});\n\nvar _default = HighlightPathAnnotationConfigShape;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar LabelAnnotationConfigShape = _propTypes[\"default\"].shape({\n annotationType: _propTypes[\"default\"].oneOf([_basicprimitives.AnnotationType.Label]),\n fromItem: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string]).isRequired,\n toItems: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string])).isRequired,\n title: _propTypes[\"default\"].any,\n itemTitleColor: _propTypes[\"default\"].string,\n templateName: _propTypes[\"default\"].string\n});\n\nvar _default = LabelAnnotationConfigShape;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar LevelAnnotationConfigShape = _propTypes[\"default\"].shape({\n annotationType: _propTypes[\"default\"].oneOf([_basicprimitives.AnnotationType.Level]),\n levels: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string])),\n title: _propTypes[\"default\"].any,\n titleFontColor: _propTypes[\"default\"].string,\n titleColor: _propTypes[\"default\"].string,\n offset: _propTypes[\"default\"].shape({\n left: _propTypes[\"default\"].number.isRequired,\n top: _propTypes[\"default\"].number.isRequired,\n right: _propTypes[\"default\"].number.isRequired,\n bottom: _propTypes[\"default\"].number.isRequired\n }),\n lineWidth: _propTypes[\"default\"].shape({\n left: _propTypes[\"default\"].number.isRequired,\n top: _propTypes[\"default\"].number.isRequired,\n right: _propTypes[\"default\"].number.isRequired,\n bottom: _propTypes[\"default\"].number.isRequired\n }),\n opacity: _propTypes[\"default\"].number,\n borderColor: _propTypes[\"default\"].string,\n fillColor: _propTypes[\"default\"].string,\n lineType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.LineType))\n});\n\nvar _default = LevelAnnotationConfigShape;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nvar _OrgItemConfigShape = _interopRequireDefault(require(\"./OrgItemConfigShape\"));\n\nvar _TemplateConfigShape = _interopRequireDefault(require(\"./TemplateConfigShape\"));\n\nvar _BackgroundAnnotationConfigShape = _interopRequireDefault(require(\"./BackgroundAnnotationConfigShape\"));\n\nvar _ConnectorAnnotationConfigShape = _interopRequireDefault(require(\"./ConnectorAnnotationConfigShape\"));\n\nvar _HighlightPathAnnotationConfigShape = _interopRequireDefault(require(\"./HighlightPathAnnotationConfigShape\"));\n\nvar _ShapeAnnotationConfigShape = _interopRequireDefault(require(\"./ShapeAnnotationConfigShape\"));\n\nvar _LevelAnnotationConfigShape = _interopRequireDefault(require(\"./LevelAnnotationConfigShape\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar OrgConfigShape = _propTypes[\"default\"].shape({\n navigationMode: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.NavigationMode)),\n pageFitMode: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.PageFitMode)),\n alignBranches: _propTypes[\"default\"].bool,\n minimalVisibility: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Visibility)),\n minimumVisibleLevels: _propTypes[\"default\"].number,\n orientationType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.OrientationType)),\n horizontalAlignment: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.HorizontalAlignmentType)),\n verticalAlignment: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.VerticalAlignmentType)),\n arrowsDirection: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.GroupByType)),\n showExtraArrows: _propTypes[\"default\"].bool,\n extraArrowsMinimumSpace: _propTypes[\"default\"].number,\n showHorizontalArrows: _propTypes[\"default\"].bool,\n connectorType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ConnectorType)),\n bevelSize: _propTypes[\"default\"].number,\n elbowType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ElbowType)),\n elbowDotSize: _propTypes[\"default\"].number,\n emptyDiagramMessage: _propTypes[\"default\"].string,\n items: _propTypes[\"default\"].arrayOf(_OrgItemConfigShape[\"default\"]),\n annotations: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].oneOfType([_BackgroundAnnotationConfigShape[\"default\"], _ConnectorAnnotationConfigShape[\"default\"], _HighlightPathAnnotationConfigShape[\"default\"], _ShapeAnnotationConfigShape[\"default\"], _LevelAnnotationConfigShape[\"default\"]])),\n cursorItem: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string]),\n highlightItem: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string]),\n highlightGravityRadius: _propTypes[\"default\"].number,\n selectedItems: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string])),\n hasSelectorCheckbox: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Enabled)),\n selectCheckBoxLabel: _propTypes[\"default\"].string,\n selectionPathMode: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.SelectionPathMode)),\n templates: _propTypes[\"default\"].arrayOf(_TemplateConfigShape[\"default\"]),\n defaultTemplateName: _propTypes[\"default\"].string,\n hasButtons: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Enabled)),\n onButtonsRender: _propTypes[\"default\"].func,\n normalLevelShift: _propTypes[\"default\"].number,\n dotLevelShift: _propTypes[\"default\"].number,\n lineLevelShift: _propTypes[\"default\"].number,\n normalItemsInterval: _propTypes[\"default\"].number,\n dotItemsInterval: _propTypes[\"default\"].number,\n lineItemsInterval: _propTypes[\"default\"].number,\n cousinsIntervalMultiplier: _propTypes[\"default\"].number,\n itemTitleFirstFontColor: _propTypes[\"default\"].string,\n itemTitleSecondFontColor: _propTypes[\"default\"].string,\n minimizedItemShapeType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ShapeType)),\n linesColor: _propTypes[\"default\"].string,\n linesWidth: _propTypes[\"default\"].number,\n linesType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.LineType)),\n highlightLinesColor: _propTypes[\"default\"].string,\n highlightLinesWidth: _propTypes[\"default\"].number,\n highlightLinesType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.LineType)),\n calloutMaximumVisibility: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Visibility)),\n showCallout: _propTypes[\"default\"].bool,\n calloutPlacementOffset: _propTypes[\"default\"].number,\n defaultCalloutTemplateName: _propTypes[\"default\"].string,\n calloutfillColor: _propTypes[\"default\"].string,\n calloutBorderColor: _propTypes[\"default\"].string,\n calloutOffset: _propTypes[\"default\"].number,\n calloutCornerRadius: _propTypes[\"default\"].number,\n calloutPointerWidth: _propTypes[\"default\"].string,\n calloutLineWidth: _propTypes[\"default\"].number,\n calloutOpacity: _propTypes[\"default\"].number,\n childrenPlacementType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ChildrenPlacementType)),\n leavesPlacementType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ChildrenPlacementType)),\n placeAssistantsAboveChildren: _propTypes[\"default\"].bool,\n placeAdvisersAboveChildren: _propTypes[\"default\"].bool,\n maximumColumnsInMatrix: _propTypes[\"default\"].number,\n buttonsPanelSize: _propTypes[\"default\"].number,\n groupTitlePanelSize: _propTypes[\"default\"].number,\n checkBoxPanelSize: _propTypes[\"default\"].number,\n groupTitlePlacementType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.AdviserPlacementType)),\n groupTitleOrientation: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.TextOrientationType)),\n groupTitleVerticalAlignment: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.VerticalAlignmentType)),\n groupTitleHorizontalAlignment: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.HorizontalAlignmentType)),\n groupTitleFontSize: _propTypes[\"default\"].string,\n groupTitleFontFamily: _propTypes[\"default\"].string,\n groupTitleColor: _propTypes[\"default\"].string,\n groupTitleFontWeight: _propTypes[\"default\"].string,\n groupTitleFontStyle: _propTypes[\"default\"].string,\n onGroupTitleRender: _propTypes[\"default\"].func,\n levelTitlePanelSize: _propTypes[\"default\"].number,\n levelTitlePlacementType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.AdviserPlacementType)),\n levelTitlePlaceInside: _propTypes[\"default\"].bool,\n levelTitleOrientation: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.TextOrientationType)),\n levelTitleVerticalAlignment: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.VerticalAlignmentType)),\n levelTitleHorizontalAlignment: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.HorizontalAlignmentType)),\n levelTitleFontSize: _propTypes[\"default\"].string,\n levelTitleFontFamily: _propTypes[\"default\"].string,\n levelTitleFontColor: _propTypes[\"default\"].string,\n levelTitleColor: _propTypes[\"default\"].string,\n levelTitleFontWeight: _propTypes[\"default\"].string,\n levelTitleFontStyle: _propTypes[\"default\"].string,\n onLevelTitleRender: _propTypes[\"default\"].func,\n onLevelBackgroundRender: _propTypes[\"default\"].func,\n distance: _propTypes[\"default\"].number,\n scale: _propTypes[\"default\"].number,\n minimumScale: _propTypes[\"default\"].number,\n maximumScale: _propTypes[\"default\"].number,\n showLabels: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Enabled)),\n labelSize: _propTypes[\"default\"].shape({\n width: _propTypes[\"default\"].number.isRequired,\n height: _propTypes[\"default\"].number.isRequired\n }),\n labelOffset: _propTypes[\"default\"].number,\n labelOrientation: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.TextOrientationType)),\n labelPlacement: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.PlacementType)),\n labelFontSize: _propTypes[\"default\"].string,\n labelFontFamily: _propTypes[\"default\"].string,\n labelColor: _propTypes[\"default\"].string,\n labelFontWeight: _propTypes[\"default\"].string,\n labelFontStyle: _propTypes[\"default\"].string,\n enablePanning: _propTypes[\"default\"].bool,\n autoSizeMinimum: _propTypes[\"default\"].shape({\n width: _propTypes[\"default\"].number.isRequired,\n height: _propTypes[\"default\"].number.isRequired\n }),\n autoSizeMaximum: _propTypes[\"default\"].shape({\n width: _propTypes[\"default\"].number.isRequired,\n height: _propTypes[\"default\"].number.isRequired\n }),\n showFrame: _propTypes[\"default\"].bool,\n frameInnerPadding: _propTypes[\"default\"].shape({\n left: _propTypes[\"default\"].number.isRequired,\n top: _propTypes[\"default\"].number.isRequired,\n right: _propTypes[\"default\"].number.isRequired,\n bottom: _propTypes[\"default\"].number.isRequired\n }),\n frameOuterPadding: _propTypes[\"default\"].shape({\n left: _propTypes[\"default\"].number.isRequired,\n top: _propTypes[\"default\"].number.isRequired,\n right: _propTypes[\"default\"].number.isRequired,\n bottom: _propTypes[\"default\"].number.isRequired\n }),\n padding: _propTypes[\"default\"].shape({\n left: _propTypes[\"default\"].number.isRequired,\n top: _propTypes[\"default\"].number.isRequired,\n right: _propTypes[\"default\"].number.isRequired,\n bottom: _propTypes[\"default\"].number.isRequired\n })\n});\n\nvar _default = OrgConfigShape;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar OrgItemConfigShape = _propTypes[\"default\"].shape({\n id: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string]).isRequired,\n parent: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string]),\n title: _propTypes[\"default\"].string,\n description: _propTypes[\"default\"].string,\n image: _propTypes[\"default\"].string,\n context: _propTypes[\"default\"].any,\n itemTitleColor: _propTypes[\"default\"].string,\n minimizedItemShapeType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ShapeType)),\n groupTitle: _propTypes[\"default\"].string,\n groupTitleColor: _propTypes[\"default\"].string,\n isVisible: _propTypes[\"default\"].bool,\n isActive: _propTypes[\"default\"].bool,\n hasSelectorCheckbox: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Enabled)),\n hasButtons: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Enabled)),\n itemType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ItemType)),\n adviserPlacementType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.AdviserPlacementType)),\n childrenPlacementType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ChildrenPlacementType)),\n levelOffset: _propTypes[\"default\"].number,\n placeAdvisersAboveChildren: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Enabled)),\n placeAssistantsAboveChildren: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Enabled)),\n templateName: _propTypes[\"default\"].string,\n showCallout: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Enabled)),\n calloutTemplateName: _propTypes[\"default\"].string,\n label: _propTypes[\"default\"].string,\n showLabel: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.Enabled)),\n labelSize: _propTypes[\"default\"].shape({\n width: _propTypes[\"default\"].number.isRequired,\n height: _propTypes[\"default\"].number.isRequired\n }),\n labelOrientation: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.TextOrientationType))\n});\n\nvar _default = OrgItemConfigShape;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar PaletteItemConfigShape = _propTypes[\"default\"].shape({\n lineColor: _propTypes[\"default\"].string,\n lineWidth: _propTypes[\"default\"].number,\n lineType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.LineType))\n});\n\nvar _default = PaletteItemConfigShape;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar ShapeAnnotationConfigShape = _propTypes[\"default\"].shape({\n annotationType: _propTypes[\"default\"].oneOf([_basicprimitives.AnnotationType.Shape]),\n zOrderType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ZOrderType)),\n items: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string])),\n shapeType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ShapeType)),\n offset: _propTypes[\"default\"].shape({\n left: _propTypes[\"default\"].number.isRequired,\n top: _propTypes[\"default\"].number.isRequired,\n right: _propTypes[\"default\"].number.isRequired,\n bottom: _propTypes[\"default\"].number.isRequired\n }),\n lineWidth: _propTypes[\"default\"].number,\n cornerRadius: _propTypes[\"default\"].string,\n opacity: _propTypes[\"default\"].number,\n borderColor: _propTypes[\"default\"].string,\n fillColor: _propTypes[\"default\"].string,\n lineType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.LineType)),\n selectItems: _propTypes[\"default\"].bool,\n label: _propTypes[\"default\"].any,\n labelSize: _propTypes[\"default\"].shape({\n width: _propTypes[\"default\"].number.isRequired,\n height: _propTypes[\"default\"].number.isRequired\n }),\n labelPlacement: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.PlacementType)),\n labelOffset: _propTypes[\"default\"].number\n});\n\nvar _default = ShapeAnnotationConfigShape;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar TemplateConfigShape = _propTypes[\"default\"].shape({\n name: _propTypes[\"default\"].string,\n isActive: _propTypes[\"default\"].bool,\n itemSize: _propTypes[\"default\"].shape({\n width: _propTypes[\"default\"].number.isRequired,\n height: _propTypes[\"default\"].number.isRequired\n }),\n itemBorderWidth: _propTypes[\"default\"].number,\n onItemRender: _propTypes[\"default\"].func,\n minimizedItemShapeType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.ShapeType)),\n minimizedItemSize: _propTypes[\"default\"].shape({\n width: _propTypes[\"default\"].number.isRequired,\n height: _propTypes[\"default\"].number.isRequired\n }),\n minimizedItemCornerRadius: _propTypes[\"default\"].number,\n minimizedItemLineWidth: _propTypes[\"default\"].number,\n minimizedItemBorderColor: _propTypes[\"default\"].string,\n minimizedItemLineType: _propTypes[\"default\"].oneOf(Object.values(_basicprimitives.LineType)),\n minimizedItemFillColor: _propTypes[\"default\"].string,\n minimizedItemOpacity: _propTypes[\"default\"].number,\n highlightPadding: _propTypes[\"default\"].shape({\n left: _propTypes[\"default\"].number.isRequired,\n top: _propTypes[\"default\"].number.isRequired,\n right: _propTypes[\"default\"].number.isRequired,\n bottom: _propTypes[\"default\"].number.isRequired\n }),\n highlightBorderWidth: _propTypes[\"default\"].number,\n onHighlightRender: _propTypes[\"default\"].func,\n cursorPadding: _propTypes[\"default\"].shape({\n left: _propTypes[\"default\"].number.isRequired,\n top: _propTypes[\"default\"].number.isRequired,\n right: _propTypes[\"default\"].number.isRequired,\n bottom: _propTypes[\"default\"].number.isRequired\n }),\n cursorBorderWidth: _propTypes[\"default\"].number,\n onCursorRender: _propTypes[\"default\"].func,\n onButtonsRender: _propTypes[\"default\"].func\n});\n\nvar _default = TemplateConfigShape;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar AbstractTemplate = /*#__PURE__*/function () {\n function AbstractTemplate() {\n _classCallCheck(this, AbstractTemplate);\n }\n\n _createClass(AbstractTemplate, [{\n key: \"template\",\n value: function template() {}\n }, {\n key: \"getHashCode\",\n value: function getHashCode() {}\n }, {\n key: \"render\",\n value: function render(data) {}\n }]);\n\n return AbstractTemplate;\n}();\n\n;\nvar _default = AbstractTemplate;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _AbstractTemplate2 = _interopRequireDefault(require(\"./AbstractTemplate\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar AnnotationLabelTemplate = /*#__PURE__*/function (_AbstractTemplate) {\n _inherits(AnnotationLabelTemplate, _AbstractTemplate);\n\n var _super = _createSuper(AnnotationLabelTemplate);\n\n function AnnotationLabelTemplate() {\n _classCallCheck(this, AnnotationLabelTemplate);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(AnnotationLabelTemplate, [{\n key: \"render\",\n value: function render(data) {\n var label = data.context.label;\n return label;\n }\n }]);\n\n return AnnotationLabelTemplate;\n}(_AbstractTemplate2[\"default\"]);\n\n;\nvar _default = AnnotationLabelTemplate;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _AbstractTemplate2 = _interopRequireDefault(require(\"./AbstractTemplate\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar ButtonsTemplate = /*#__PURE__*/function (_AbstractTemplate) {\n _inherits(ButtonsTemplate, _AbstractTemplate);\n\n var _super = _createSuper(ButtonsTemplate);\n\n function ButtonsTemplate() {\n _classCallCheck(this, ButtonsTemplate);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(ButtonsTemplate, [{\n key: \"render\",\n value: function render(data) {\n var onButtonsRender = data.onButtonsRender;\n return onButtonsRender(data);\n }\n }]);\n\n return ButtonsTemplate;\n}(_AbstractTemplate2[\"default\"]);\n\n;\nvar _default = ButtonsTemplate;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _AbstractTemplate2 = _interopRequireDefault(require(\"./AbstractTemplate\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar CheckBoxTemplate = /*#__PURE__*/function (_AbstractTemplate) {\n _inherits(CheckBoxTemplate, _AbstractTemplate);\n\n var _super = _createSuper(CheckBoxTemplate);\n\n function CheckBoxTemplate(selectCheckBoxLabel) {\n var _this;\n\n _classCallCheck(this, CheckBoxTemplate);\n\n _this = _super.call(this);\n _this.render = _this.render.bind(_assertThisInitialized(_this));\n _this.selectCheckBoxLabel = selectCheckBoxLabel;\n return _this;\n }\n\n _createClass(CheckBoxTemplate, [{\n key: \"render\",\n value: function render(data) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: {\n textAlign: \"left\"\n }\n }, /*#__PURE__*/_react[\"default\"].createElement(\"input\", {\n type: \"checkbox\",\n name: \"checkbox\",\n style: {\n fontSize: \"12px\",\n lineHeight: \"12px\",\n verticalAlign: \"middle\",\n margin: \"0px\",\n padding: \"0px\"\n },\n checked: data.isSelected,\n onChange: function onChange() {\n return null;\n },\n \"data-id\": data.id\n }), /*#__PURE__*/_react[\"default\"].createElement(\"span\", {\n name: \"selectiontext\",\n style: {\n fontSize: \"12px\",\n lineHeight: \"12px\",\n verticalAlign: \"middle\",\n maring: \"0px\",\n paddingLeft: \"2px\",\n paddingTop: \"0px\",\n paddingRight: \"0px\",\n paddingBottom: \"0px\"\n },\n \"data-id\": data.id\n }, this.selectCheckBoxLabel));\n }\n }]);\n\n return CheckBoxTemplate;\n}(_AbstractTemplate2[\"default\"]);\n\n;\nvar _default = CheckBoxTemplate;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _AbstractTemplate2 = _interopRequireDefault(require(\"./AbstractTemplate\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar CursorTemplate = /*#__PURE__*/function (_AbstractTemplate) {\n _inherits(CursorTemplate, _AbstractTemplate);\n\n var _super = _createSuper(CursorTemplate);\n\n function CursorTemplate(options, itemTemplateConfig) {\n var _this;\n\n _classCallCheck(this, CursorTemplate);\n\n _this = _super.call(this);\n _this.options = options;\n _this.itemTemplateConfig = itemTemplateConfig;\n _this.render = _this.render.bind(_assertThisInitialized(_this));\n _this.style = {\n position: \"absolute\",\n fontFamily: \"Trebuchet MS, Tahoma, Verdana, Arial, sans-serif\",\n WebkitTapHighlightColor: \"rgba(0,0,0,0)\",\n WebkitUserSelect: \"none\",\n WebkitTouchCallout: \"none\",\n KhtmlUserSelect: \"none\",\n MozUserSelect: \"none\",\n msUserSelect: \"none\",\n userSelect: \"none\",\n boxSizing: \"content-box\",\n MozBorderRadius: \"4px\",\n WebkitBorderRadius: \"4px\",\n KhtmlBorderRadius: \"4px\",\n BorderRadius: \"4px\",\n border: \"2px solid #fbd850\",\n background: \"#ffffff\",\n color: \"#eb8f00\",\n width: \"100%\",\n height: \"100%\",\n left: \"-2px\",\n top: \"-2px\"\n };\n return _this;\n }\n\n _createClass(CursorTemplate, [{\n key: \"render\",\n value: function render(data) {\n var _this$itemTemplateCon = this.itemTemplateConfig,\n cursorPadding = _this$itemTemplateCon.cursorPadding,\n itemSize = _this$itemTemplateCon.itemSize,\n cursorBorderWidth = _this$itemTemplateCon.cursorBorderWidth;\n\n var style = _objectSpread(_objectSpread({}, this.style), {}, {\n width: itemSize.width + cursorPadding.left + cursorPadding.right + \"px\",\n height: itemSize.height + cursorPadding.top + cursorPadding.bottom + \"px\",\n borderWidth: cursorBorderWidth + \"px\"\n });\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: style\n });\n }\n }]);\n\n return CursorTemplate;\n}(_AbstractTemplate2[\"default\"]);\n\n;\nvar _default = CursorTemplate;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _AbstractTemplate2 = _interopRequireDefault(require(\"./AbstractTemplate\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar CustomRenderTemplate = /*#__PURE__*/function (_AbstractTemplate) {\n _inherits(CustomRenderTemplate, _AbstractTemplate);\n\n var _super = _createSuper(CustomRenderTemplate);\n\n function CustomRenderTemplate(options, onRender) {\n var _this;\n\n _classCallCheck(this, CustomRenderTemplate);\n\n _this = _super.call(this);\n _this.render = onRender;\n return _this;\n }\n\n return CustomRenderTemplate;\n}(_AbstractTemplate2[\"default\"]);\n\n;\nvar _default = CustomRenderTemplate;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _AbstractTemplate2 = _interopRequireDefault(require(\"./AbstractTemplate\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar DotHighlightTemplate = /*#__PURE__*/function (_AbstractTemplate) {\n _inherits(DotHighlightTemplate, _AbstractTemplate);\n\n var _super = _createSuper(DotHighlightTemplate);\n\n function DotHighlightTemplate(options, itemTemplateConfig) {\n var _this;\n\n _classCallCheck(this, DotHighlightTemplate);\n\n _this = _super.call(this);\n _this.render = _this.render.bind(_assertThisInitialized(_this));\n _this.config = itemTemplateConfig;\n _this.style = {\n position: \"absolute\",\n fontFamily: \"Trebuchet MS, Tahoma, Verdana, Arial, sans-serif\",\n WebkitTapHighlightColor: \"rgba(0,0,0,0)\",\n WebkitUserSelect: \"none\",\n WebkitTouchCallout: \"none\",\n KhtmlUserSelect: \"none\",\n MozUserSelect: \"none\",\n msUserSelect: \"none\",\n userSelect: \"none\",\n boxSizing: \"content-box\",\n border: \"1px solid #fbcb09\",\n background: \"#fdf5ce\",\n color: \"#c77405\",\n width: \"100%\",\n height: \"100%\",\n left: \"0px\",\n top: \"0px\"\n };\n return _this;\n }\n\n _createClass(DotHighlightTemplate, [{\n key: \"render\",\n value: function render(data) {\n var _this$config = this.config,\n minimizedItemCornerRadius = _this$config.minimizedItemCornerRadius,\n highlightPadding = _this$config.highlightPadding,\n highlightBorderWidth = _this$config.highlightBorderWidth,\n minimizedItemSize = _this$config.minimizedItemSize;\n var radius = 0;\n\n if (minimizedItemCornerRadius === null) {\n radius = Math.max(minimizedItemSize.width / 2, minimizedItemSize.height / 2) + highlightPadding.left;\n } else {\n radius = minimizedItemCornerRadius + highlightPadding.left;\n }\n\n var style = _objectSpread(_objectSpread({}, this.style), {}, {\n borderWidth: highlightBorderWidth + \"px\",\n left: -highlightBorderWidth + \"px\",\n top: -highlightBorderWidth + \"px\",\n MozBorderRadius: radius + \"px\",\n WebkitBorderRadius: radius + \"px\",\n KhtmlBorderRadius: radius + \"px\",\n borderRadius: radius + \"px\"\n });\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: style\n });\n }\n }]);\n\n return DotHighlightTemplate;\n}(_AbstractTemplate2[\"default\"]);\n\n;\nvar _default = DotHighlightTemplate;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _AbstractTemplate2 = _interopRequireDefault(require(\"./AbstractTemplate\"));\n\nvar _RotatedText = _interopRequireDefault(require(\"./RotatedText\"));\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar GroupTitleTemplate = /*#__PURE__*/function (_AbstractTemplate) {\n _inherits(GroupTitleTemplate, _AbstractTemplate);\n\n var _super = _createSuper(GroupTitleTemplate);\n\n function GroupTitleTemplate(options) {\n var _this;\n\n _classCallCheck(this, GroupTitleTemplate);\n\n _this = _super.call(this);\n _this.render = _this.render.bind(_assertThisInitialized(_this));\n _this.options = options;\n _this.style = {\n position: \"absolute\",\n fontFamily: \"Trebuchet MS, Tahoma, Verdana, Arial, sans-serif\",\n WebkitTapHighlightColor: \"rgba(0,0,0,0)\",\n WebkitUserSelect: \"none\",\n WebkitTouchCallout: \"none\",\n KhtmlUserSelect: \"none\",\n MozUserSelect: \"none\",\n msUserSelect: \"none\",\n userSelect: \"none\",\n boxSizing: \"content-box\",\n MozBorderRadius: \"4px\",\n WebkitBorderRadius: \"4px\",\n KhtmlBorderRadius: \"4px\",\n BorderRadius: \"4px\",\n background: \"royalblue\",\n borderWidth: 0,\n color: \"white\",\n padding: 0,\n width: \"100%\",\n height: \"100%\",\n left: \"-1px\",\n top: \"-1px\"\n };\n return _this;\n }\n\n _createClass(GroupTitleTemplate, [{\n key: \"render\",\n value: function render(data) {\n var _this$options = this.options,\n groupTitleFontSize = _this$options.groupTitleFontSize,\n groupTitleFontFamily = _this$options.groupTitleFontFamily,\n groupTitleFontWeight = _this$options.groupTitleFontWeight,\n groupTitleFontStyle = _this$options.groupTitleFontStyle,\n itemTitleSecondFontColor = _this$options.itemTitleSecondFontColor,\n itemTitleFirstFontColor = _this$options.itemTitleFirstFontColor,\n groupTitleOrientation = _this$options.groupTitleOrientation,\n groupTitleHorizontalAlignment = _this$options.groupTitleHorizontalAlignment,\n groupTitleVerticalAlignment = _this$options.groupTitleVerticalAlignment,\n groupTitleColor = _this$options.groupTitleColor;\n var itemConfig = data.context,\n width = data.width,\n height = data.height;\n var backgroundColor = itemConfig.groupTitleColor || groupTitleColor;\n var label = (itemConfig.groupTitle || \"\").replace(\"\\n\", \"
\");\n var color = (0, _basicprimitives.highestContrast)(backgroundColor, itemTitleSecondFontColor, itemTitleFirstFontColor);\n var orientations = ['Horizontal', 'RotateLeft', 'RotateRight', 'Horizontal'],\n horizontalAlignments = ['center', 'left', 'right'],\n verticalAlignments = ['top', 'middle', 'bottom'];\n\n var style = _objectSpread(_objectSpread({}, this.style), {}, {\n backgroundColor: backgroundColor,\n color: color,\n fontSize: groupTitleFontSize,\n fontFamily: groupTitleFontFamily,\n fontWeight: groupTitleFontWeight,\n fontStyle: groupTitleFontStyle\n });\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: style\n }, /*#__PURE__*/_react[\"default\"].createElement(_RotatedText[\"default\"], {\n width: width,\n height: height,\n orientation: orientations[groupTitleOrientation],\n horizontalAlignment: horizontalAlignments[groupTitleHorizontalAlignment],\n verticalAlignment: verticalAlignments[groupTitleVerticalAlignment]\n }, label));\n }\n }]);\n\n return GroupTitleTemplate;\n}(_AbstractTemplate2[\"default\"]);\n\n;\nvar _default = GroupTitleTemplate;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _AbstractTemplate2 = _interopRequireDefault(require(\"./AbstractTemplate\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar HighlightTemplate = /*#__PURE__*/function (_AbstractTemplate) {\n _inherits(HighlightTemplate, _AbstractTemplate);\n\n var _super = _createSuper(HighlightTemplate);\n\n function HighlightTemplate(options, config) {\n var _this;\n\n _classCallCheck(this, HighlightTemplate);\n\n _this = _super.call(this);\n _this.options = options;\n _this.config = config;\n _this.render = _this.render.bind(_assertThisInitialized(_this));\n _this.style = {\n position: \"absolute\",\n fontFamily: \"Trebuchet MS, Tahoma, Verdana, Arial, sans-serif\",\n WebkitTapHighlightColor: \"rgba(0,0,0,0)\",\n WebkitUserSelect: \"none\",\n WebkitTouchCallout: \"none\",\n KhtmlUserSelect: \"none\",\n MozUserSelect: \"none\",\n msUserSelect: \"none\",\n userSelect: \"none\",\n boxSizing: \"content-box\",\n MozBorderRadius: \"4px\",\n WebkitBorderRadius: \"4px\",\n KhtmlBorderRadius: \"4px\",\n BorderRadius: \"4px\",\n border: \"1px solid #fbcb09\",\n background: \"#fdf5ce\",\n color: \"#c77405\",\n width: \"100%\",\n height: \"100%\",\n left: \"-1px\",\n top: \"-1px\"\n };\n return _this;\n }\n\n _createClass(HighlightTemplate, [{\n key: \"render\",\n value: function render(data) {\n var highlightBorderWidth = this.config.highlightBorderWidth;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: _objectSpread(_objectSpread({}, this.style), {}, {\n borderWidth: highlightBorderWidth + \"px\"\n })\n });\n }\n }]);\n\n return HighlightTemplate;\n}(_AbstractTemplate2[\"default\"]);\n\n;\nvar _default = HighlightTemplate;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nvar _AbstractTemplate2 = _interopRequireDefault(require(\"./AbstractTemplate\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar ItemTemplate = /*#__PURE__*/function (_AbstractTemplate) {\n _inherits(ItemTemplate, _AbstractTemplate);\n\n var _super = _createSuper(ItemTemplate);\n\n function ItemTemplate(options, config) {\n var _this;\n\n _classCallCheck(this, ItemTemplate);\n\n _this = _super.call(this);\n _this.options = options;\n _this.config = config;\n _this.render = _this.render.bind(_assertThisInitialized(_this)); // It is unlikly that anybody would use default template in final product, so\n // having in-line styles is not a problem\n\n var item = {\n position: \"absolute\",\n overflow: \"visible\",\n fontFamily: \"Trebuchet MS, Tahoma, Verdana, Arial, sans-serif\",\n WebkitTapHighlightColor: \"rgba(0,0,0,0)\",\n WebkitUserSelect: \"none\",\n WebkitTouchCallout: \"none\",\n KhtmlUserSelect: \"none\",\n MozUserSelect: \"none\",\n msUserSelect: \"none\",\n userSelect: \"none\",\n boxSizing: \"content-box\"\n };\n var cornerAll = {\n MozBorderRadius: \"4px\",\n WebkitBorderRadius: \"4px\",\n KhtmlBorderRadius: \"4px\",\n BorderRadius: \"4px\"\n };\n var itemFrame = {\n border: \"1px solid #dddddd\",\n background: \"#eeeeee\",\n color: \"#333333\"\n };\n\n var defaultTemplate = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, item), cornerAll), itemFrame), {}, {\n width: \"100%\",\n height: \"100%\",\n left: \"-1px\",\n top: \"-1px\"\n });\n\n var title = _objectSpread(_objectSpread({}, item), {}, {\n textOverflow: \"ellipsis\",\n OTextOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n textAlign: \"left\",\n fontSize: \"14px\",\n lineHeight: \"16px\",\n color: \"white\",\n padding: 0\n });\n\n var background = _objectSpread(_objectSpread(_objectSpread({}, item), cornerAll), itemFrame);\n\n var photoFrame = _objectSpread(_objectSpread({}, item), {}, {\n border: \"1px solid #cccccc\",\n background: \"#f6f6f6\",\n color: \"#1c94c4\"\n });\n\n _this.styles = {\n defaultTemplate: defaultTemplate,\n title: _objectSpread(_objectSpread({}, title), {}, {\n top: \"2px\",\n left: \"2px\",\n right: \"2px\",\n height: \"16px\"\n }),\n background: _objectSpread(_objectSpread({}, background), {}, {\n top: \"2px\",\n left: \"2px\",\n right: \"2px\",\n height: \"20px\"\n }),\n photoFrame: _objectSpread(_objectSpread({}, photoFrame), {}, {\n top: \"26px\",\n left: \"2px\",\n width: \"50px\",\n height: \"60px\"\n }),\n photo: {\n height: \"60px\",\n width: \"50px\"\n },\n description: _objectSpread(_objectSpread({}, item), {}, {\n overflow: \"hidden\",\n textAlign: \"left\",\n top: \"26px\",\n left: \"56px\",\n right: \"2px\",\n bottom: \"2px\",\n fontSize: \"12px\"\n })\n };\n return _this;\n }\n\n _createClass(ItemTemplate, [{\n key: \"render\",\n value: function render(data) {\n var itemConfig = data.context;\n var _this$styles = this.styles,\n defaultTemplate = _this$styles.defaultTemplate,\n title = _this$styles.title,\n background = _this$styles.background,\n photoFrame = _this$styles.photoFrame,\n photo = _this$styles.photo,\n description = _this$styles.description;\n var itemTitleColor = itemConfig.itemTitleColor != null ? itemConfig.itemTitleColor : _basicprimitives.Colors.RoyalBlue,\n color = (0, _basicprimitives.highestContrast)(itemTitleColor, this.options.itemTitleSecondFontColor, this.options.itemTitleFirstFontColor);\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: defaultTemplate\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: _objectSpread(_objectSpread({}, background), {}, {\n backgroundColor: itemTitleColor\n })\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: _objectSpread(_objectSpread({}, title), {}, {\n color: color\n })\n }, itemConfig.title)), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: photoFrame\n }, /*#__PURE__*/_react[\"default\"].createElement(\"img\", {\n style: photo,\n src: itemConfig.image,\n alt: itemConfig.title\n })), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: description\n }, itemConfig.description));\n }\n }]);\n\n return ItemTemplate;\n}(_AbstractTemplate2[\"default\"]);\n\n;\nvar _default = ItemTemplate;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _AbstractTemplate2 = _interopRequireDefault(require(\"./AbstractTemplate\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar LabelAnnotationTemplate = /*#__PURE__*/function (_AbstractTemplate) {\n _inherits(LabelAnnotationTemplate, _AbstractTemplate);\n\n var _super = _createSuper(LabelAnnotationTemplate);\n\n function LabelAnnotationTemplate() {\n _classCallCheck(this, LabelAnnotationTemplate);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(LabelAnnotationTemplate, [{\n key: \"render\",\n value: function render(data) {\n var title = data.context.title;\n return title;\n }\n }]);\n\n return LabelAnnotationTemplate;\n}(_AbstractTemplate2[\"default\"]);\n\n;\nvar _default = LabelAnnotationTemplate;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _AbstractTemplate2 = _interopRequireDefault(require(\"./AbstractTemplate\"));\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction getBorderStyle(lineType) {\n var result = null;\n\n switch (lineType) {\n case _basicprimitives.LineType.Dotted:\n result = \"dotted\";\n break;\n\n case _basicprimitives.LineType.Dashed:\n result = \"dashed\";\n break;\n\n default:\n result = \"solid\";\n break;\n }\n\n return result;\n}\n\nvar LevelBackgroundTemplate = /*#__PURE__*/function (_AbstractTemplate) {\n _inherits(LevelBackgroundTemplate, _AbstractTemplate);\n\n var _super = _createSuper(LevelBackgroundTemplate);\n\n function LevelBackgroundTemplate(options) {\n var _this;\n\n _classCallCheck(this, LevelBackgroundTemplate);\n\n _this = _super.call(this);\n _this.options = options;\n _this.render = _this.render.bind(_assertThisInitialized(_this));\n _this.style = {\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\"\n };\n return _this;\n }\n\n _createClass(LevelBackgroundTemplate, [{\n key: \"render\",\n value: function render(data) {\n var annotationConfig = data.context;\n\n var style = _objectSpread({\n opacity: annotationConfig.opacity,\n borderColor: annotationConfig.borderColor,\n backgroundColor: annotationConfig.fillColor,\n borderWidth: annotationConfig.lineWidth.toString(),\n borderStyle: getBorderStyle(annotationConfig.lineType)\n }, this.style);\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: style\n });\n }\n }]);\n\n return LevelBackgroundTemplate;\n}(_AbstractTemplate2[\"default\"]);\n\n;\nvar _default = LevelBackgroundTemplate;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _AbstractTemplate2 = _interopRequireDefault(require(\"./AbstractTemplate\"));\n\nvar _RotatedText = _interopRequireDefault(require(\"./RotatedText\"));\n\nvar _basicprimitives = require(\"basicprimitives\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar LevelTitleTemplate = /*#__PURE__*/function (_AbstractTemplate) {\n _inherits(LevelTitleTemplate, _AbstractTemplate);\n\n var _super = _createSuper(LevelTitleTemplate);\n\n function LevelTitleTemplate(options, orientation) {\n var _this;\n\n _classCallCheck(this, LevelTitleTemplate);\n\n _this = _super.call(this);\n _this.render = _this.render.bind(_assertThisInitialized(_this));\n _this.options = options;\n _this.orientation = orientation;\n _this.style = {\n position: \"absolute\",\n fontFamily: \"Trebuchet MS, Tahoma, Verdana, Arial, sans-serif\",\n WebkitTapHighlightColor: \"rgba(0,0,0,0)\",\n WebkitUserSelect: \"none\",\n WebkitTouchCallout: \"none\",\n KhtmlUserSelect: \"none\",\n MozUserSelect: \"none\",\n msUserSelect: \"none\",\n userSelect: \"none\",\n boxSizing: \"content-box\",\n MozBorderRadius: \"4px\",\n WebkitBorderRadius: \"4px\",\n KhtmlBorderRadius: \"4px\",\n BorderRadius: \"4px\",\n background: \"royalblue\",\n borderWidth: 0,\n color: \"white\",\n padding: 0,\n width: \"100%\",\n height: \"100%\",\n left: \"-1px\",\n top: \"-1px\"\n };\n return _this;\n }\n\n _createClass(LevelTitleTemplate, [{\n key: \"render\",\n value: function render(data) {\n var _this$options = this.options,\n levelTitleFontSize = _this$options.levelTitleFontSize,\n levelTitleFontFamily = _this$options.levelTitleFontFamily,\n levelTitleFontWeight = _this$options.levelTitleFontWeight,\n levelTitleFontStyle = _this$options.levelTitleFontStyle,\n levelTitleOrientation = _this$options.levelTitleOrientation,\n levelTitleHorizontalAlignment = _this$options.levelTitleHorizontalAlignment,\n levelTitleVerticalAlignment = _this$options.levelTitleVerticalAlignment,\n levelTitleFontColor = _this$options.levelTitleFontColor,\n levelTitleColor = _this$options.levelTitleColor;\n\n if (levelTitleOrientation === _basicprimitives.TextOrientationType.Auto) {\n switch (this.orientation) {\n case _basicprimitives.OrientationType.Top:\n levelTitleOrientation = _basicprimitives.TextOrientationType.RotateRight;\n break;\n\n case _basicprimitives.OrientationType.Bottom:\n levelTitleOrientation = _basicprimitives.TextOrientationType.RotateRight;\n break;\n\n default:\n break;\n }\n }\n\n var annotationConfig = data.context,\n width = data.width,\n height = data.height;\n var backgroundColor = annotationConfig.titleColor || levelTitleColor;\n var label = (annotationConfig.title || \"\").replace(\"\\n\", \"
\");\n var color = annotationConfig.titleFontColor || levelTitleFontColor;\n var orientations = ['Horizontal', 'RotateLeft', 'RotateRight', 'Horizontal'],\n horizontalAlignments = ['center', 'left', 'right'],\n verticalAlignments = ['top', 'middle', 'bottom'];\n\n var style = _objectSpread(_objectSpread({}, this.style), {}, {\n backgroundColor: backgroundColor,\n color: color,\n fontSize: levelTitleFontSize,\n fontFamily: levelTitleFontFamily,\n fontWeight: levelTitleFontWeight,\n fontStyle: levelTitleFontStyle\n });\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: style\n }, /*#__PURE__*/_react[\"default\"].createElement(_RotatedText[\"default\"], {\n width: width,\n height: height,\n orientation: orientations[levelTitleOrientation],\n horizontalAlignment: horizontalAlignments[levelTitleHorizontalAlignment],\n verticalAlignment: verticalAlignments[levelTitleVerticalAlignment]\n }, label));\n }\n }]);\n\n return LevelTitleTemplate;\n}(_AbstractTemplate2[\"default\"]);\n\n;\nvar _default = LevelTitleTemplate;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar RotatedText = /*#__PURE__*/function (_Component) {\n _inherits(RotatedText, _Component);\n\n var _super = _createSuper(RotatedText);\n\n function RotatedText() {\n _classCallCheck(this, RotatedText);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(RotatedText, [{\n key: \"getTransform\",\n value: function getTransform(orientation) {\n var result = \"\";\n\n switch (orientation) {\n case 'RotateLeft':\n result = \"rotate(-90deg)\";\n break;\n\n case 'RotateRight':\n result = \"rotate(90deg)\";\n break;\n\n default:\n break;\n }\n\n return result;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n children = _this$props.children,\n width = _this$props.width,\n height = _this$props.height,\n orientation = _this$props.orientation,\n horizontalAlignment = _this$props.horizontalAlignment,\n verticalAlignment = _this$props.verticalAlignment;\n var transform = this.getTransform(orientation);\n var size = null;\n\n if (orientation === \"Horizontal\") {\n size = {\n width: width + \"px\",\n height: height + \"px\",\n maxWidth: width + \"px\",\n maxHeight: height + \"px\"\n };\n } else {\n size = {\n width: height + \"px\",\n height: width + \"px\",\n maxWidth: height + \"px\",\n maxHeight: width + \"px\",\n left: Math.round(width / 2.0 - height / 2.0) + \"px\",\n top: Math.round(height / 2.0 - width / 2.0) + \"px\"\n };\n }\n\n var style = _objectSpread({\n position: \"absolute\",\n padding: 0,\n margin: 0,\n lineHeight: 1,\n textAlign: horizontalAlignment,\n WebkitTransformOrigin: \"center center\",\n MozTransformOrigin: \"center center\",\n OTransformOrigin: \"center center\",\n msTransformOrigin: \"center center\",\n WebkitTransform: transform,\n MozTransform: transform,\n OTransform: transform,\n msTransform: transform,\n transform: transform,\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n tableLayout: \"fixed\"\n }, size);\n\n return verticalAlignment === 'top' ? /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: style\n }, children) : /*#__PURE__*/_react[\"default\"].createElement(\"table\", {\n style: _objectSpread(_objectSpread({}, style), {}, {\n borderCollapse: \"collapse\"\n })\n }, /*#__PURE__*/_react[\"default\"].createElement(\"tbody\", null, /*#__PURE__*/_react[\"default\"].createElement(\"tr\", null, /*#__PURE__*/_react[\"default\"].createElement(\"td\", {\n style: {\n verticalAlign: verticalAlignment,\n padding: 0,\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\"\n }\n }, children))));\n }\n }]);\n\n return RotatedText;\n}(_react.Component);\n\n_defineProperty(RotatedText, \"propTypes\", {\n width: _propTypes[\"default\"].number.isRequired,\n height: _propTypes[\"default\"].number.isRequired,\n orientation: _propTypes[\"default\"].oneOf(['Horizontal', 'RotateLeft', 'RotateRight']),\n horizontalAlignment: _propTypes[\"default\"].oneOf(['left', 'center', 'right']),\n verticalAlignment: _propTypes[\"default\"].oneOf(['top', 'middle', 'bottom'])\n});\n\n_defineProperty(RotatedText, \"defaultProps\", {\n orientation: 'RotateRight',\n horizontalAlignment: 'center',\n verticalAlignment: 'middle'\n});\n\nvar _default = RotatedText;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _AbstractTemplate2 = _interopRequireDefault(require(\"./AbstractTemplate\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar UserTemplate = /*#__PURE__*/function (_AbstractTemplate) {\n _inherits(UserTemplate, _AbstractTemplate);\n\n var _super = _createSuper(UserTemplate);\n\n function UserTemplate(options, content, onRender) {\n var _this;\n\n _classCallCheck(this, UserTemplate);\n\n _this = _super.call(this);\n _this.render = onRender;\n return _this;\n }\n\n return UserTemplate;\n}(_AbstractTemplate2[\"default\"]);\n\n;\nvar _default = UserTemplate;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"AnnotationLabelTemplate\", {\n enumerable: true,\n get: function get() {\n return _AnnotationLabelTemplate[\"default\"];\n }\n});\nObject.defineProperty(exports, \"ButtonsTemplate\", {\n enumerable: true,\n get: function get() {\n return _ButtonsTemplate[\"default\"];\n }\n});\nObject.defineProperty(exports, \"CheckBoxTemplate\", {\n enumerable: true,\n get: function get() {\n return _CheckBoxTemplate[\"default\"];\n }\n});\nObject.defineProperty(exports, \"CursorTemplate\", {\n enumerable: true,\n get: function get() {\n return _CursorTemplate[\"default\"];\n }\n});\nObject.defineProperty(exports, \"DotHighlightTemplate\", {\n enumerable: true,\n get: function get() {\n return _DotHighlightTemplate[\"default\"];\n }\n});\nObject.defineProperty(exports, \"GroupTitleTemplate\", {\n enumerable: true,\n get: function get() {\n return _GroupTitleTemplate[\"default\"];\n }\n});\nObject.defineProperty(exports, \"HighlightTemplate\", {\n enumerable: true,\n get: function get() {\n return _HighlightTemplate[\"default\"];\n }\n});\nObject.defineProperty(exports, \"ItemTemplate\", {\n enumerable: true,\n get: function get() {\n return _ItemTemplate[\"default\"];\n }\n});\nObject.defineProperty(exports, \"UserTemplate\", {\n enumerable: true,\n get: function get() {\n return _UserTemplate[\"default\"];\n }\n});\nObject.defineProperty(exports, \"CustomRenderTemplate\", {\n enumerable: true,\n get: function get() {\n return _CustomRenderTemplate[\"default\"];\n }\n});\nObject.defineProperty(exports, \"LabelAnnotationTemplate\", {\n enumerable: true,\n get: function get() {\n return _LabelAnnotationTemplate[\"default\"];\n }\n});\nObject.defineProperty(exports, \"LevelTitleTemplate\", {\n enumerable: true,\n get: function get() {\n return _LevelTitleTemplate[\"default\"];\n }\n});\nObject.defineProperty(exports, \"LevelBackgroundTemplate\", {\n enumerable: true,\n get: function get() {\n return _LevelBackgroundTemplate[\"default\"];\n }\n});\n\nvar _AnnotationLabelTemplate = _interopRequireDefault(require(\"./AnnotationLabelTemplate\"));\n\nvar _ButtonsTemplate = _interopRequireDefault(require(\"./ButtonsTemplate\"));\n\nvar _CheckBoxTemplate = _interopRequireDefault(require(\"./CheckBoxTemplate\"));\n\nvar _CursorTemplate = _interopRequireDefault(require(\"./CursorTemplate\"));\n\nvar _DotHighlightTemplate = _interopRequireDefault(require(\"./DotHighlightTemplate\"));\n\nvar _GroupTitleTemplate = _interopRequireDefault(require(\"./GroupTitleTemplate\"));\n\nvar _HighlightTemplate = _interopRequireDefault(require(\"./HighlightTemplate\"));\n\nvar _ItemTemplate = _interopRequireDefault(require(\"./ItemTemplate\"));\n\nvar _UserTemplate = _interopRequireDefault(require(\"./UserTemplate\"));\n\nvar _CustomRenderTemplate = _interopRequireDefault(require(\"./CustomRenderTemplate\"));\n\nvar _LabelAnnotationTemplate = _interopRequireDefault(require(\"./LabelAnnotationTemplate\"));\n\nvar _LevelTitleTemplate = _interopRequireDefault(require(\"./LevelTitleTemplate\"));\n\nvar _LevelBackgroundTemplate = _interopRequireDefault(require(\"./LevelBackgroundTemplate\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"OrgDiagram\", {\n enumerable: true,\n get: function get() {\n return _OrgDiagram[\"default\"];\n }\n});\nObject.defineProperty(exports, \"FamDiagram\", {\n enumerable: true,\n get: function get() {\n return _FamDiagram[\"default\"];\n }\n});\nObject.defineProperty(exports, \"RotatedText\", {\n enumerable: true,\n get: function get() {\n return _RotatedText[\"default\"];\n }\n});\nObject.defineProperty(exports, \"BackgroundAnnotationConfigShape\", {\n enumerable: true,\n get: function get() {\n return _BackgroundAnnotationConfigShape[\"default\"];\n }\n});\nObject.defineProperty(exports, \"ConnectorAnnotationConfigShape\", {\n enumerable: true,\n get: function get() {\n return _ConnectorAnnotationConfigShape[\"default\"];\n }\n});\nObject.defineProperty(exports, \"FamConfigShape\", {\n enumerable: true,\n get: function get() {\n return _FamConfigShape[\"default\"];\n }\n});\nObject.defineProperty(exports, \"FamItemConfigShape\", {\n enumerable: true,\n get: function get() {\n return _FamItemConfigShape[\"default\"];\n }\n});\nObject.defineProperty(exports, \"HighlightPathAnnotationConfigShape\", {\n enumerable: true,\n get: function get() {\n return _HighlightPathAnnotationConfigShape[\"default\"];\n }\n});\nObject.defineProperty(exports, \"LabelAnnotationConfigShape\", {\n enumerable: true,\n get: function get() {\n return _LabelAnnotationConfigShape[\"default\"];\n }\n});\nObject.defineProperty(exports, \"OrgConfigShape\", {\n enumerable: true,\n get: function get() {\n return _OrgConfigShape[\"default\"];\n }\n});\nObject.defineProperty(exports, \"OrgItemConfigShape\", {\n enumerable: true,\n get: function get() {\n return _OrgItemConfigShape[\"default\"];\n }\n});\nObject.defineProperty(exports, \"PaletteItemConfigShape\", {\n enumerable: true,\n get: function get() {\n return _PaletteItemConfigShape[\"default\"];\n }\n});\nObject.defineProperty(exports, \"ShapeAnnotationConfigShape\", {\n enumerable: true,\n get: function get() {\n return _ShapeAnnotationConfigShape[\"default\"];\n }\n});\nObject.defineProperty(exports, \"LevelAnnotationConfigShape\", {\n enumerable: true,\n get: function get() {\n return _LevelAnnotationConfigShape[\"default\"];\n }\n});\nObject.defineProperty(exports, \"TemplateConfigShape\", {\n enumerable: true,\n get: function get() {\n return _TemplateConfigShape[\"default\"];\n }\n});\n\nvar _OrgDiagram = _interopRequireDefault(require(\"./OrgDiagram\"));\n\nvar _FamDiagram = _interopRequireDefault(require(\"./FamDiagram\"));\n\nvar _RotatedText = _interopRequireDefault(require(\"./Templates/RotatedText\"));\n\nvar _BackgroundAnnotationConfigShape = _interopRequireDefault(require(\"./Schemas/BackgroundAnnotationConfigShape\"));\n\nvar _ConnectorAnnotationConfigShape = _interopRequireDefault(require(\"./Schemas/ConnectorAnnotationConfigShape\"));\n\nvar _FamConfigShape = _interopRequireDefault(require(\"./Schemas/FamConfigShape\"));\n\nvar _FamItemConfigShape = _interopRequireDefault(require(\"./Schemas/FamItemConfigShape\"));\n\nvar _HighlightPathAnnotationConfigShape = _interopRequireDefault(require(\"./Schemas/HighlightPathAnnotationConfigShape\"));\n\nvar _LabelAnnotationConfigShape = _interopRequireDefault(require(\"./Schemas/LabelAnnotationConfigShape\"));\n\nvar _OrgConfigShape = _interopRequireDefault(require(\"./Schemas/OrgConfigShape\"));\n\nvar _OrgItemConfigShape = _interopRequireDefault(require(\"./Schemas/OrgItemConfigShape\"));\n\nvar _PaletteItemConfigShape = _interopRequireDefault(require(\"./Schemas/PaletteItemConfigShape\"));\n\nvar _ShapeAnnotationConfigShape = _interopRequireDefault(require(\"./Schemas/ShapeAnnotationConfigShape\"));\n\nvar _LevelAnnotationConfigShape = _interopRequireDefault(require(\"./Schemas/LevelAnnotationConfigShape\"));\n\nvar _TemplateConfigShape = _interopRequireDefault(require(\"./Schemas/TemplateConfigShape\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","var QueryHandler = require('./QueryHandler');\nvar each = require('./Util').each;\n\n/**\n * Represents a single media query, manages it's state and registered handlers for this query\n *\n * @constructor\n * @param {string} query the media query string\n * @param {boolean} [isUnconditional=false] whether the media query should run regardless of whether the conditions are met. Primarily for helping older browsers deal with mobile-first design\n */\nfunction MediaQuery(query, isUnconditional) {\n this.query = query;\n this.isUnconditional = isUnconditional;\n this.handlers = [];\n this.mql = window.matchMedia(query);\n\n var self = this;\n this.listener = function(mql) {\n // Chrome passes an MediaQueryListEvent object, while other browsers pass MediaQueryList directly\n self.mql = mql.currentTarget || mql;\n self.assess();\n };\n this.mql.addListener(this.listener);\n}\n\nMediaQuery.prototype = {\n\n constuctor : MediaQuery,\n\n /**\n * add a handler for this query, triggering if already active\n *\n * @param {object} handler\n * @param {function} handler.match callback for when query is activated\n * @param {function} [handler.unmatch] callback for when query is deactivated\n * @param {function} [handler.setup] callback for immediate execution when a query handler is registered\n * @param {boolean} [handler.deferSetup=false] should the setup callback be deferred until the first time the handler is matched?\n */\n addHandler : function(handler) {\n var qh = new QueryHandler(handler);\n this.handlers.push(qh);\n\n this.matches() && qh.on();\n },\n\n /**\n * removes the given handler from the collection, and calls it's destroy methods\n *\n * @param {object || function} handler the handler to remove\n */\n removeHandler : function(handler) {\n var handlers = this.handlers;\n each(handlers, function(h, i) {\n if(h.equals(handler)) {\n h.destroy();\n return !handlers.splice(i,1); //remove from array and exit each early\n }\n });\n },\n\n /**\n * Determine whether the media query should be considered a match\n *\n * @return {Boolean} true if media query can be considered a match, false otherwise\n */\n matches : function() {\n return this.mql.matches || this.isUnconditional;\n },\n\n /**\n * Clears all handlers and unbinds events\n */\n clear : function() {\n each(this.handlers, function(handler) {\n handler.destroy();\n });\n this.mql.removeListener(this.listener);\n this.handlers.length = 0; //clear array\n },\n\n /*\n * Assesses the query, turning on all handlers if it matches, turning them off if it doesn't match\n */\n assess : function() {\n var action = this.matches() ? 'on' : 'off';\n\n each(this.handlers, function(handler) {\n handler[action]();\n });\n }\n};\n\nmodule.exports = MediaQuery;\n","var MediaQuery = require('./MediaQuery');\nvar Util = require('./Util');\nvar each = Util.each;\nvar isFunction = Util.isFunction;\nvar isArray = Util.isArray;\n\n/**\n * Allows for registration of query handlers.\n * Manages the query handler's state and is responsible for wiring up browser events\n *\n * @constructor\n */\nfunction MediaQueryDispatch () {\n if(!window.matchMedia) {\n throw new Error('matchMedia not present, legacy browsers require a polyfill');\n }\n\n this.queries = {};\n this.browserIsIncapable = !window.matchMedia('only all').matches;\n}\n\nMediaQueryDispatch.prototype = {\n\n constructor : MediaQueryDispatch,\n\n /**\n * Registers a handler for the given media query\n *\n * @param {string} q the media query\n * @param {object || Array || Function} options either a single query handler object, a function, or an array of query handlers\n * @param {function} options.match fired when query matched\n * @param {function} [options.unmatch] fired when a query is no longer matched\n * @param {function} [options.setup] fired when handler first triggered\n * @param {boolean} [options.deferSetup=false] whether setup should be run immediately or deferred until query is first matched\n * @param {boolean} [shouldDegrade=false] whether this particular media query should always run on incapable browsers\n */\n register : function(q, options, shouldDegrade) {\n var queries = this.queries,\n isUnconditional = shouldDegrade && this.browserIsIncapable;\n\n if(!queries[q]) {\n queries[q] = new MediaQuery(q, isUnconditional);\n }\n\n //normalise to object in an array\n if(isFunction(options)) {\n options = { match : options };\n }\n if(!isArray(options)) {\n options = [options];\n }\n each(options, function(handler) {\n if (isFunction(handler)) {\n handler = { match : handler };\n }\n queries[q].addHandler(handler);\n });\n\n return this;\n },\n\n /**\n * unregisters a query and all it's handlers, or a specific handler for a query\n *\n * @param {string} q the media query to target\n * @param {object || function} [handler] specific handler to unregister\n */\n unregister : function(q, handler) {\n var query = this.queries[q];\n\n if(query) {\n if(handler) {\n query.removeHandler(handler);\n }\n else {\n query.clear();\n delete this.queries[q];\n }\n }\n\n return this;\n }\n};\n\nmodule.exports = MediaQueryDispatch;\n","/**\n * Delegate to handle a media query being matched and unmatched.\n *\n * @param {object} options\n * @param {function} options.match callback for when the media query is matched\n * @param {function} [options.unmatch] callback for when the media query is unmatched\n * @param {function} [options.setup] one-time callback triggered the first time a query is matched\n * @param {boolean} [options.deferSetup=false] should the setup callback be run immediately, rather than first time query is matched?\n * @constructor\n */\nfunction QueryHandler(options) {\n this.options = options;\n !options.deferSetup && this.setup();\n}\n\nQueryHandler.prototype = {\n\n constructor : QueryHandler,\n\n /**\n * coordinates setup of the handler\n *\n * @function\n */\n setup : function() {\n if(this.options.setup) {\n this.options.setup();\n }\n this.initialised = true;\n },\n\n /**\n * coordinates setup and triggering of the handler\n *\n * @function\n */\n on : function() {\n !this.initialised && this.setup();\n this.options.match && this.options.match();\n },\n\n /**\n * coordinates the unmatch event for the handler\n *\n * @function\n */\n off : function() {\n this.options.unmatch && this.options.unmatch();\n },\n\n /**\n * called when a handler is to be destroyed.\n * delegates to the destroy or unmatch callbacks, depending on availability.\n *\n * @function\n */\n destroy : function() {\n this.options.destroy ? this.options.destroy() : this.off();\n },\n\n /**\n * determines equality by reference.\n * if object is supplied compare options, if function, compare match callback\n *\n * @function\n * @param {object || function} [target] the target for comparison\n */\n equals : function(target) {\n return this.options === target || this.options.match === target;\n }\n\n};\n\nmodule.exports = QueryHandler;\n","/**\n * Helper function for iterating over a collection\n *\n * @param collection\n * @param fn\n */\nfunction each(collection, fn) {\n var i = 0,\n length = collection.length,\n cont;\n\n for(i; i < length; i++) {\n cont = fn(collection[i], i);\n if(cont === false) {\n break; //allow early exit\n }\n }\n}\n\n/**\n * Helper function for determining whether target object is an array\n *\n * @param target the object under test\n * @return {Boolean} true if array, false otherwise\n */\nfunction isArray(target) {\n return Object.prototype.toString.apply(target) === '[object Array]';\n}\n\n/**\n * Helper function for determining whether target object is a function\n *\n * @param target the object under test\n * @return {Boolean} true if function, false otherwise\n */\nfunction isFunction(target) {\n return typeof target === 'function';\n}\n\nmodule.exports = {\n isFunction : isFunction,\n isArray : isArray,\n each : each\n};\n","var MediaQueryDispatch = require('./MediaQueryDispatch');\nmodule.exports = new MediaQueryDispatch();\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"bigDecimal\"] = factory();\n\telse\n\t\troot[\"bigDecimal\"] = factory();\n})(global, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 165:\n/***/ (function(__unused_webpack_module, exports) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.abs = void 0;\nfunction abs(n) {\n if (typeof n == 'number' || typeof n == 'bigint')\n n = n.toString();\n if (n[0] == '-')\n return n.substring(1);\n return n;\n}\nexports.abs = abs;\n\n\n/***/ }),\n\n/***/ 217:\n/***/ (function(__unused_webpack_module, exports) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.pad = exports.trim = exports.add = void 0;\n//function add {\nfunction add(number1, number2) {\n var _a;\n if (number2 === void 0) { number2 = \"0\"; }\n var neg = 0, ind = -1, neg_len;\n //check for negatives\n if (number1[0] == '-') {\n number1 = number1.substring(1);\n if (!testZero(number1)) {\n neg++;\n ind = 1;\n neg_len = number1.length;\n }\n }\n if (number2[0] == '-') {\n number2 = number2.substring(1);\n if (!testZero(number2)) {\n neg++;\n ind = 2;\n neg_len = number2.length;\n }\n }\n number1 = trim(number1);\n number2 = trim(number2);\n _a = pad(trim(number1), trim(number2)), number1 = _a[0], number2 = _a[1];\n if (neg == 1) {\n if (ind === 1)\n number1 = compliment(number1);\n else if (ind === 2)\n number2 = compliment(number2);\n }\n var res = addCore(number1, number2);\n if (!neg)\n return trim(res);\n else if (neg == 2)\n return ('-' + trim(res));\n else {\n if (number1.length < (res.length))\n return trim(res.substring(1));\n else\n return ('-' + trim(compliment(res)));\n }\n}\nexports.add = add;\nfunction compliment(number) {\n if (testZero(number)) {\n return number;\n }\n var s = '', l = number.length, dec = number.split('.')[1], ld = dec ? dec.length : 0;\n for (var i = 0; i < l; i++) {\n if (number[i] >= '0' && number[i] <= '9')\n s += (9 - parseInt(number[i]));\n else\n s += number[i];\n }\n var one = (ld > 0) ? ('0.' + (new Array(ld)).join('0') + '1') : '1';\n return addCore(s, one);\n}\nfunction trim(number) {\n var parts = number.split('.');\n if (!parts[0])\n parts[0] = '0';\n while (parts[0][0] == '0' && parts[0].length > 1)\n parts[0] = parts[0].substring(1);\n return parts[0] + (parts[1] ? ('.' + parts[1]) : '');\n}\nexports.trim = trim;\nfunction pad(number1, number2) {\n var parts1 = number1.split('.'), parts2 = number2.split('.');\n //pad integral part\n var length1 = parts1[0].length, length2 = parts2[0].length;\n if (length1 > length2) {\n parts2[0] = (new Array(Math.abs(length1 - length2) + 1)).join('0') + (parts2[0] ? parts2[0] : '');\n }\n else {\n parts1[0] = (new Array(Math.abs(length1 - length2) + 1)).join('0') + (parts1[0] ? parts1[0] : '');\n }\n //pad fractional part\n length1 = parts1[1] ? parts1[1].length : 0,\n length2 = parts2[1] ? parts2[1].length : 0;\n if (length1 || length2) {\n if (length1 > length2) {\n parts2[1] = (parts2[1] ? parts2[1] : '') + (new Array(Math.abs(length1 - length2) + 1)).join('0');\n }\n else {\n parts1[1] = (parts1[1] ? parts1[1] : '') + (new Array(Math.abs(length1 - length2) + 1)).join('0');\n }\n }\n number1 = parts1[0] + ((parts1[1]) ? ('.' + parts1[1]) : '');\n number2 = parts2[0] + ((parts2[1]) ? ('.' + parts2[1]) : '');\n return [number1, number2];\n}\nexports.pad = pad;\nfunction addCore(number1, number2) {\n var _a;\n _a = pad(number1, number2), number1 = _a[0], number2 = _a[1];\n var sum = '', carry = 0;\n for (var i = number1.length - 1; i >= 0; i--) {\n if (number1[i] === '.') {\n sum = '.' + sum;\n continue;\n }\n var temp = parseInt(number1[i]) + parseInt(number2[i]) + carry;\n sum = (temp % 10) + sum;\n carry = Math.floor(temp / 10);\n }\n return carry ? (carry.toString() + sum) : sum;\n}\nfunction testZero(number) {\n return (/^0[0]*[.]{0,1}[0]*$/.test(number));\n}\n\n\n/***/ }),\n\n/***/ 423:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\nvar add_1 = __webpack_require__(217);\nvar abs_1 = __webpack_require__(165);\nvar round_1 = __webpack_require__(350);\nvar multiply_1 = __webpack_require__(182);\nvar divide_1 = __webpack_require__(415);\nvar modulus_1 = __webpack_require__(213);\nvar compareTo_1 = __webpack_require__(664);\nvar subtract_1 = __webpack_require__(26);\nvar roundingModes_1 = __webpack_require__(916);\nvar bigDecimal = /** @class */ (function () {\n function bigDecimal(number) {\n if (number === void 0) { number = '0'; }\n this.value = bigDecimal.validate(number);\n }\n bigDecimal.validate = function (number) {\n if (number) {\n number = number.toString();\n if (isNaN(number))\n throw Error(\"Parameter is not a number: \" + number);\n if (number[0] == '+')\n number = number.substring(1);\n }\n else\n number = '0';\n //handle missing leading zero\n if (number.startsWith('.'))\n number = '0' + number;\n else if (number.startsWith('-.'))\n number = '-0' + number.substr(1);\n //handle exponentiation\n if (/e/i.test(number)) {\n var _a = number.split(/[eE]/), mantisa = _a[0], exponent = _a[1];\n mantisa = (0, add_1.trim)(mantisa);\n var sign = '';\n if (mantisa[0] == '-') {\n sign = '-';\n mantisa = mantisa.substring(1);\n }\n if (mantisa.indexOf('.') >= 0) {\n exponent = parseInt(exponent) + mantisa.indexOf('.');\n mantisa = mantisa.replace('.', '');\n }\n else {\n exponent = parseInt(exponent) + mantisa.length;\n }\n if (mantisa.length < exponent) {\n number = sign + mantisa + (new Array(exponent - mantisa.length + 1)).join('0');\n }\n else if (mantisa.length >= exponent && exponent > 0) {\n number = sign + (0, add_1.trim)(mantisa.substring(0, exponent)) +\n ((mantisa.length > exponent) ? ('.' + mantisa.substring(exponent)) : '');\n }\n else {\n number = sign + '0.' + (new Array(-exponent + 1)).join('0') + mantisa;\n }\n }\n return number;\n };\n bigDecimal.prototype.getValue = function () {\n return this.value;\n };\n bigDecimal.prototype.setValue = function (num) {\n this.value = bigDecimal.validate(num);\n };\n bigDecimal.getPrettyValue = function (number, digits, separator) {\n if (!(digits || separator)) {\n digits = 3;\n separator = ',';\n }\n else if (!(digits && separator)) {\n throw Error('Illegal Arguments. Should pass both digits and separator or pass none');\n }\n number = bigDecimal.validate(number);\n var neg = number.charAt(0) == '-';\n if (neg)\n number = number.substring(1);\n var len = number.indexOf('.');\n len = len > 0 ? len : (number.length);\n var temp = '';\n for (var i = len; i > 0;) {\n if (i < digits) {\n digits = i;\n i = 0;\n }\n else\n i -= digits;\n temp = number.substring(i, i + digits) + ((i < (len - digits) && i >= 0) ? separator : '') + temp;\n }\n return (neg ? '-' : '') + temp + number.substring(len);\n };\n bigDecimal.prototype.getPrettyValue = function (digits, separator) {\n return bigDecimal.getPrettyValue(this.value, digits, separator);\n };\n bigDecimal.round = function (number, precision, mode) {\n if (precision === void 0) { precision = 0; }\n if (mode === void 0) { mode = roundingModes_1.RoundingModes.HALF_EVEN; }\n number = bigDecimal.validate(number);\n // console.log(number)\n if (isNaN(precision))\n throw Error(\"Precision is not a number: \" + precision);\n return (0, round_1.roundOff)(number, precision, mode);\n };\n bigDecimal.prototype.round = function (precision, mode) {\n if (precision === void 0) { precision = 0; }\n if (mode === void 0) { mode = roundingModes_1.RoundingModes.HALF_EVEN; }\n if (isNaN(precision))\n throw Error(\"Precision is not a number: \" + precision);\n return new bigDecimal((0, round_1.roundOff)(this.value, precision, mode));\n };\n bigDecimal.abs = function (number) {\n number = bigDecimal.validate(number);\n return (0, abs_1.abs)(number);\n };\n bigDecimal.prototype.abs = function () {\n return new bigDecimal((0, abs_1.abs)(this.value));\n };\n bigDecimal.floor = function (number) {\n number = bigDecimal.validate(number);\n if (number.indexOf('.') === -1)\n return number;\n return bigDecimal.round(number, 0, roundingModes_1.RoundingModes.FLOOR);\n };\n bigDecimal.prototype.floor = function () {\n if (this.value.indexOf('.') === -1)\n return new bigDecimal(this.value);\n return new bigDecimal(this.value).round(0, roundingModes_1.RoundingModes.FLOOR);\n };\n bigDecimal.ceil = function (number) {\n number = bigDecimal.validate(number);\n if (number.indexOf('.') === -1)\n return number;\n return bigDecimal.round(number, 0, roundingModes_1.RoundingModes.CEILING);\n };\n bigDecimal.prototype.ceil = function () {\n if (this.value.indexOf('.') === -1)\n return new bigDecimal(this.value);\n return new bigDecimal(this.value).round(0, roundingModes_1.RoundingModes.CEILING);\n };\n bigDecimal.add = function (number1, number2) {\n number1 = bigDecimal.validate(number1);\n number2 = bigDecimal.validate(number2);\n return (0, add_1.add)(number1, number2);\n };\n bigDecimal.prototype.add = function (number) {\n return new bigDecimal((0, add_1.add)(this.value, number.getValue()));\n };\n bigDecimal.subtract = function (number1, number2) {\n number1 = bigDecimal.validate(number1);\n number2 = bigDecimal.validate(number2);\n return (0, subtract_1.subtract)(number1, number2);\n };\n bigDecimal.prototype.subtract = function (number) {\n return new bigDecimal((0, subtract_1.subtract)(this.value, number.getValue()));\n };\n bigDecimal.multiply = function (number1, number2) {\n number1 = bigDecimal.validate(number1);\n number2 = bigDecimal.validate(number2);\n return (0, multiply_1.multiply)(number1, number2);\n };\n bigDecimal.prototype.multiply = function (number) {\n return new bigDecimal((0, multiply_1.multiply)(this.value, number.getValue()));\n };\n bigDecimal.divide = function (number1, number2, precision) {\n number1 = bigDecimal.validate(number1);\n number2 = bigDecimal.validate(number2);\n return (0, divide_1.divide)(number1, number2, precision);\n };\n bigDecimal.prototype.divide = function (number, precision) {\n return new bigDecimal((0, divide_1.divide)(this.value, number.getValue(), precision));\n };\n bigDecimal.modulus = function (number1, number2) {\n number1 = bigDecimal.validate(number1);\n number2 = bigDecimal.validate(number2);\n return (0, modulus_1.modulus)(number1, number2);\n };\n bigDecimal.prototype.modulus = function (number) {\n return new bigDecimal((0, modulus_1.modulus)(this.value, number.getValue()));\n };\n bigDecimal.compareTo = function (number1, number2) {\n number1 = bigDecimal.validate(number1);\n number2 = bigDecimal.validate(number2);\n return (0, compareTo_1.compareTo)(number1, number2);\n };\n bigDecimal.prototype.compareTo = function (number) {\n return (0, compareTo_1.compareTo)(this.value, number.getValue());\n };\n bigDecimal.negate = function (number) {\n number = bigDecimal.validate(number);\n return (0, subtract_1.negate)(number);\n };\n bigDecimal.prototype.negate = function () {\n return new bigDecimal((0, subtract_1.negate)(this.value));\n };\n bigDecimal.RoundingModes = roundingModes_1.RoundingModes;\n return bigDecimal;\n}());\nmodule.exports = bigDecimal;\n\n\n/***/ }),\n\n/***/ 664:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.compareTo = void 0;\nvar add_1 = __webpack_require__(217);\nfunction compareTo(number1, number2) {\n var _a;\n var negative = false;\n if (number1[0] == '-' && number2[0] != \"-\") {\n return -1;\n }\n else if (number1[0] != '-' && number2[0] == '-') {\n return 1;\n }\n else if (number1[0] == '-' && number2[0] == '-') {\n number1 = number1.substr(1);\n number2 = number2.substr(1);\n negative = true;\n }\n _a = (0, add_1.pad)(number1, number2), number1 = _a[0], number2 = _a[1];\n if (number1.localeCompare(number2) == 0) {\n return 0;\n }\n for (var i = 0; i < number1.length; i++) {\n if (number1[i] == number2[i]) {\n continue;\n }\n else if (number1[i] > number2[i]) {\n if (negative) {\n return -1;\n }\n else {\n return 1;\n }\n }\n else {\n if (negative) {\n return 1;\n }\n else {\n return -1;\n }\n }\n }\n return 0;\n}\nexports.compareTo = compareTo;\n\n\n/***/ }),\n\n/***/ 415:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.divide = void 0;\nvar add_1 = __webpack_require__(217);\nvar round_1 = __webpack_require__(350);\nfunction divide(dividend, divisor, precission) {\n if (precission === void 0) { precission = 8; }\n if (divisor == 0) {\n throw new Error('Cannot divide by 0');\n }\n dividend = dividend.toString();\n divisor = divisor.toString();\n // remove trailing zeros in decimal ISSUE#18\n dividend = dividend.replace(/(\\.\\d*?[1-9])0+$/g, \"$1\").replace(/\\.0+$/, \"\");\n divisor = divisor.replace(/(\\.\\d*?[1-9])0+$/g, \"$1\").replace(/\\.0+$/, \"\");\n if (dividend == 0)\n return '0';\n var neg = 0;\n if (divisor[0] == '-') {\n divisor = divisor.substring(1);\n neg++;\n }\n if (dividend[0] == '-') {\n dividend = dividend.substring(1);\n neg++;\n }\n var pt_dvsr = divisor.indexOf('.') > 0 ? divisor.length - divisor.indexOf('.') - 1 : -1;\n divisor = (0, add_1.trim)(divisor.replace('.', ''));\n if (pt_dvsr >= 0) {\n var pt_dvnd = dividend.indexOf('.') > 0 ? dividend.length - dividend.indexOf('.') - 1 : -1;\n if (pt_dvnd == -1) {\n dividend = (0, add_1.trim)(dividend + (new Array(pt_dvsr + 1)).join('0'));\n }\n else {\n if (pt_dvsr > pt_dvnd) {\n dividend = dividend.replace('.', '');\n dividend = (0, add_1.trim)(dividend + (new Array(pt_dvsr - pt_dvnd + 1)).join('0'));\n }\n else if (pt_dvsr < pt_dvnd) {\n dividend = dividend.replace('.', '');\n var loc = dividend.length - pt_dvnd + pt_dvsr;\n dividend = (0, add_1.trim)(dividend.substring(0, loc) + '.' + dividend.substring(loc));\n }\n else if (pt_dvsr == pt_dvnd) {\n dividend = (0, add_1.trim)(dividend.replace('.', ''));\n }\n }\n }\n var prec = 0, dl = divisor.length, rem = '0', quotent = '';\n var dvnd = (dividend.indexOf('.') > -1 && dividend.indexOf('.') < dl) ? dividend.substring(0, dl + 1) : dividend.substring(0, dl);\n dividend = (dividend.indexOf('.') > -1 && dividend.indexOf('.') < dl) ? dividend.substring(dl + 1) : dividend.substring(dl);\n if (dvnd.indexOf('.') > -1) {\n var shift = dvnd.length - dvnd.indexOf('.') - 1;\n dvnd = dvnd.replace('.', '');\n if (dl > dvnd.length) {\n shift += dl - dvnd.length;\n dvnd = dvnd + (new Array(dl - dvnd.length + 1)).join('0');\n }\n prec = shift;\n quotent = '0.' + (new Array(shift)).join('0');\n }\n precission = precission + 2;\n while (prec <= precission) {\n var qt = 0;\n while (parseInt(dvnd) >= parseInt(divisor)) {\n dvnd = (0, add_1.add)(dvnd, '-' + divisor);\n qt++;\n }\n quotent += qt;\n if (!dividend) {\n if (!prec)\n quotent += '.';\n prec++;\n dvnd = dvnd + '0';\n }\n else {\n if (dividend[0] == '.') {\n quotent += '.';\n prec++;\n dividend = dividend.substring(1);\n }\n dvnd = dvnd + dividend.substring(0, 1);\n dividend = dividend.substring(1);\n }\n }\n return ((neg == 1) ? '-' : '') + (0, add_1.trim)((0, round_1.roundOff)(quotent, precission - 2));\n}\nexports.divide = divide;\n\n\n/***/ }),\n\n/***/ 213:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.modulus = void 0;\nvar divide_1 = __webpack_require__(415);\nvar round_1 = __webpack_require__(350);\nvar multiply_1 = __webpack_require__(182);\nvar subtract_1 = __webpack_require__(26);\nvar roundingModes_1 = __webpack_require__(916);\nfunction modulus(dividend, divisor) {\n if (divisor == 0) {\n throw new Error('Cannot divide by 0');\n }\n dividend = dividend.toString();\n divisor = divisor.toString();\n validate(dividend);\n validate(divisor);\n var sign = '';\n if (dividend[0] == '-') {\n sign = '-';\n dividend = dividend.substr(1);\n }\n if (divisor[0] == '-') {\n divisor = divisor.substr(1);\n }\n var result = (0, subtract_1.subtract)(dividend, (0, multiply_1.multiply)(divisor, (0, round_1.roundOff)((0, divide_1.divide)(dividend, divisor), 0, roundingModes_1.RoundingModes.FLOOR)));\n return sign + result;\n}\nexports.modulus = modulus;\nfunction validate(oparand) {\n if (oparand.indexOf('.') != -1) {\n throw new Error('Modulus of non-integers not supported');\n }\n}\n\n\n/***/ }),\n\n/***/ 182:\n/***/ (function(__unused_webpack_module, exports) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.multiply = void 0;\nfunction multiply(number1, number2) {\n number1 = number1.toString();\n number2 = number2.toString();\n /*Filter numbers*/\n var negative = 0;\n if (number1[0] == '-') {\n negative++;\n number1 = number1.substr(1);\n }\n if (number2[0] == '-') {\n negative++;\n number2 = number2.substr(1);\n }\n number1 = trailZero(number1);\n number2 = trailZero(number2);\n var decimalLength1 = 0;\n var decimalLength2 = 0;\n if (number1.indexOf('.') != -1) {\n decimalLength1 = number1.length - number1.indexOf('.') - 1;\n }\n if (number2.indexOf('.') != -1) {\n decimalLength2 = number2.length - number2.indexOf('.') - 1;\n }\n var decimalLength = decimalLength1 + decimalLength2;\n number1 = trailZero(number1.replace('.', ''));\n number2 = trailZero(number2.replace('.', ''));\n if (number1.length < number2.length) {\n var temp = number1;\n number1 = number2;\n number2 = temp;\n }\n if (number2 == '0') {\n return '0';\n }\n /*\n * Core multiplication\n */\n var length = number2.length;\n var carry = 0;\n var positionVector = [];\n var currentPosition = length - 1;\n var result = \"\";\n for (var i = 0; i < length; i++) {\n positionVector[i] = number1.length - 1;\n }\n for (var i = 0; i < 2 * number1.length; i++) {\n var sum = 0;\n for (var j = number2.length - 1; j >= currentPosition && j >= 0; j--) {\n if (positionVector[j] > -1 && positionVector[j] < number1.length) {\n sum += parseInt(number1[positionVector[j]--]) * parseInt(number2[j]);\n }\n }\n sum += carry;\n carry = Math.floor(sum / 10);\n result = sum % 10 + result;\n currentPosition--;\n }\n /*\n * Formatting result\n */\n result = trailZero(adjustDecimal(result, decimalLength));\n if (negative == 1) {\n result = '-' + result;\n }\n return result;\n}\nexports.multiply = multiply;\n/*\n* Add decimal point\n*/\nfunction adjustDecimal(number, decimal) {\n if (decimal == 0)\n return number;\n else {\n number = (decimal >= number.length) ? ((new Array(decimal - number.length + 1)).join('0') + number) : number;\n return number.substr(0, number.length - decimal) + '.' + number.substr(number.length - decimal, decimal);\n }\n}\n/*\n* Removes zero from front and back*/\nfunction trailZero(number) {\n while (number[0] == '0') {\n number = number.substr(1);\n }\n if (number.indexOf('.') != -1) {\n while (number[number.length - 1] == '0') {\n number = number.substr(0, number.length - 1);\n }\n }\n if (number == \"\" || number == \".\") {\n number = '0';\n }\n else if (number[number.length - 1] == '.') {\n number = number.substr(0, number.length - 1);\n }\n if (number[0] == '.') {\n number = '0' + number;\n }\n return number;\n}\n\n\n/***/ }),\n\n/***/ 350:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.roundOff = void 0;\nvar roundingModes_1 = __webpack_require__(916);\n/**\n *\n * @param input the number to round\n * @param n precision\n * @param mode Rounding Mode\n */\nfunction roundOff(input, n, mode) {\n if (n === void 0) { n = 0; }\n if (mode === void 0) { mode = roundingModes_1.RoundingModes.HALF_EVEN; }\n if (mode === roundingModes_1.RoundingModes.UNNECESSARY) {\n throw new Error(\"UNNECESSARY Rounding Mode has not yet been implemented\");\n }\n if (typeof (input) == 'number' || typeof (input) == 'bigint')\n input = input.toString();\n var neg = false;\n if (input[0] === '-') {\n neg = true;\n input = input.substring(1);\n }\n var parts = input.split('.'), partInt = parts[0], partDec = parts[1];\n //handle case of -ve n: roundOff(12564,-2)=12600\n if (n < 0) {\n n = -n;\n if (partInt.length <= n)\n return '0';\n else {\n var prefix = partInt.substr(0, partInt.length - n);\n input = prefix + '.' + partInt.substr(partInt.length - n) + partDec;\n prefix = roundOff(input, 0, mode);\n return (neg ? '-' : '') + prefix + (new Array(n + 1).join('0'));\n }\n }\n // handle case when integer output is desired\n if (n == 0) {\n var l = partInt.length;\n if (greaterThanFive(parts[1], partInt, neg, mode)) {\n partInt = increment(partInt);\n }\n return (neg && parseInt(partInt) ? '-' : '') + partInt;\n }\n // handle case when n>0\n if (!parts[1]) {\n return (neg ? '-' : '') + partInt + '.' + (new Array(n + 1).join('0'));\n }\n else if (parts[1].length < n) {\n return (neg ? '-' : '') + partInt + '.' + parts[1] + (new Array(n - parts[1].length + 1).join('0'));\n }\n partDec = parts[1].substring(0, n);\n var rem = parts[1].substring(n);\n if (rem && greaterThanFive(rem, partDec, neg, mode)) {\n partDec = increment(partDec);\n if (partDec.length > n) {\n return (neg ? '-' : '') + increment(partInt, parseInt(partDec[0])) + '.' + partDec.substring(1);\n }\n }\n return (neg && (parseInt(partInt) || parseInt(partDec)) ? '-' : '') + partInt + '.' + partDec;\n}\nexports.roundOff = roundOff;\nfunction greaterThanFive(part, pre, neg, mode) {\n if (!part || part === new Array(part.length + 1).join('0'))\n return false;\n // #region UP, DOWN, CEILING, FLOOR \n if (mode === roundingModes_1.RoundingModes.DOWN || (!neg && mode === roundingModes_1.RoundingModes.FLOOR) ||\n (neg && mode === roundingModes_1.RoundingModes.CEILING))\n return false;\n if (mode === roundingModes_1.RoundingModes.UP || (neg && mode === roundingModes_1.RoundingModes.FLOOR) ||\n (!neg && mode === roundingModes_1.RoundingModes.CEILING))\n return true;\n // #endregion\n // case when part !== five\n var five = '5' + (new Array(part.length).join('0'));\n if (part > five)\n return true;\n else if (part < five)\n return false;\n // case when part === five\n switch (mode) {\n case roundingModes_1.RoundingModes.HALF_DOWN: return false;\n case roundingModes_1.RoundingModes.HALF_UP: return true;\n case roundingModes_1.RoundingModes.HALF_EVEN:\n default: return (parseInt(pre[pre.length - 1]) % 2 == 1);\n }\n}\nfunction increment(part, c) {\n if (c === void 0) { c = 0; }\n if (!c)\n c = 1;\n if (typeof (part) == 'number')\n part.toString();\n var l = part.length - 1, s = '';\n for (var i = l; i >= 0; i--) {\n var x = parseInt(part[i]) + c;\n if (x == 10) {\n c = 1;\n x = 0;\n }\n else {\n c = 0;\n }\n s += x;\n }\n if (c)\n s += c;\n return s.split('').reverse().join('');\n}\n\n\n/***/ }),\n\n/***/ 916:\n/***/ (function(__unused_webpack_module, exports) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.RoundingModes = void 0;\nvar RoundingModes;\n(function (RoundingModes) {\n /**\n * Rounding mode to round towards positive infinity.\n */\n RoundingModes[RoundingModes[\"CEILING\"] = 0] = \"CEILING\";\n /**\n * Rounding mode to round towards zero.\n */\n RoundingModes[RoundingModes[\"DOWN\"] = 1] = \"DOWN\";\n /**\n * Rounding mode to round towards negative infinity.\n */\n RoundingModes[RoundingModes[\"FLOOR\"] = 2] = \"FLOOR\";\n /**\n * Rounding mode to round towards \"nearest neighbor\" unless both neighbors are equidistant,\n * in which case round down.\n */\n RoundingModes[RoundingModes[\"HALF_DOWN\"] = 3] = \"HALF_DOWN\";\n /**\n * Rounding mode to round towards the \"nearest neighbor\" unless both neighbors are equidistant,\n * in which case, round towards the even neighbor.\n */\n RoundingModes[RoundingModes[\"HALF_EVEN\"] = 4] = \"HALF_EVEN\";\n /**\n * Rounding mode to round towards \"nearest neighbor\" unless both neighbors are equidistant,\n * in which case round up.\n */\n RoundingModes[RoundingModes[\"HALF_UP\"] = 5] = \"HALF_UP\";\n /**\n * Rounding mode to assert that the requested operation has an exact result, hence no rounding is necessary.\n * UNIMPLEMENTED\n */\n RoundingModes[RoundingModes[\"UNNECESSARY\"] = 6] = \"UNNECESSARY\";\n /**\n * Rounding mode to round away from zero.\n */\n RoundingModes[RoundingModes[\"UP\"] = 7] = \"UP\";\n})(RoundingModes = exports.RoundingModes || (exports.RoundingModes = {}));\n\n\n/***/ }),\n\n/***/ 26:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.negate = exports.subtract = void 0;\nvar add_1 = __webpack_require__(217);\nfunction subtract(number1, number2) {\n number1 = number1.toString();\n number2 = number2.toString();\n number2 = negate(number2);\n return (0, add_1.add)(number1, number2);\n}\nexports.subtract = subtract;\nfunction negate(number) {\n if (number[0] == '-') {\n number = number.substr(1);\n }\n else {\n number = '-' + number;\n }\n return number;\n}\nexports.negate = negate;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(423);\n/******/ \t\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","var camel2hyphen = require('string-convert/camel2hyphen');\n\nvar isDimension = function (feature) {\n var re = /[height|width]$/;\n return re.test(feature);\n};\n\nvar obj2mq = function (obj) {\n var mq = '';\n var features = Object.keys(obj);\n features.forEach(function (feature, index) {\n var value = obj[feature];\n feature = camel2hyphen(feature);\n // Add px to dimension features\n if (isDimension(feature) && typeof value === 'number') {\n value = value + 'px';\n }\n if (value === true) {\n mq += feature;\n } else if (value === false) {\n mq += 'not ' + feature;\n } else {\n mq += '(' + feature + ': ' + value + ')';\n }\n if (index < features.length-1) {\n mq += ' and '\n }\n });\n return mq;\n};\n\nvar json2mq = function (query) {\n var mq = '';\n if (typeof query === 'string') {\n return query;\n }\n // Handling array of media queries\n if (query instanceof Array) {\n query.forEach(function (q, index) {\n mq += obj2mq(q);\n if (index < query.length-1) {\n mq += ', '\n }\n });\n return mq;\n }\n // Handling single media query\n return obj2mq(query);\n};\n\nmodule.exports = json2mq;","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _class, _temp2;\n\nexports.confirmAlert = confirmAlert;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _client = require('react-dom/client');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ReactConfirmAlert = (_temp2 = _class = function (_Component) {\n _inherits(ReactConfirmAlert, _Component);\n\n function ReactConfirmAlert() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, ReactConfirmAlert);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = ReactConfirmAlert.__proto__ || Object.getPrototypeOf(ReactConfirmAlert)).call.apply(_ref, [this].concat(args))), _this), _this.handleClickButton = function (button) {\n if (button.onClick) button.onClick();\n _this.close();\n }, _this.handleClickOverlay = function (e) {\n var _this$props = _this.props,\n closeOnClickOutside = _this$props.closeOnClickOutside,\n onClickOutside = _this$props.onClickOutside;\n\n var isClickOutside = e.target === _this.overlay;\n\n if (closeOnClickOutside && isClickOutside) {\n onClickOutside();\n _this.close();\n }\n\n e.stopPropagation();\n }, _this.close = function () {\n var afterClose = _this.props.afterClose;\n\n removeBodyClass();\n removeElementReconfirm(_this.props);\n removeSVGBlurReconfirm(afterClose);\n }, _this.keyboard = function (event) {\n var _this$props2 = _this.props,\n closeOnEscape = _this$props2.closeOnEscape,\n onKeypressEscape = _this$props2.onKeypressEscape,\n onkeyPress = _this$props2.onkeyPress,\n keyCodeForClose = _this$props2.keyCodeForClose;\n\n var keyCode = event.keyCode;\n var isKeyCodeEscape = keyCode === 27;\n\n if (keyCodeForClose.includes(keyCode)) {\n _this.close();\n }\n\n if (closeOnEscape && isKeyCodeEscape) {\n onKeypressEscape(event);\n _this.close();\n }\n\n if (onkeyPress) {\n onkeyPress();\n }\n }, _this.componentDidMount = function () {\n document.addEventListener('keydown', _this.keyboard, false);\n }, _this.componentWillUnmount = function () {\n document.removeEventListener('keydown', _this.keyboard, false);\n _this.props.willUnmount();\n }, _this.renderCustomUI = function () {\n var _this$props3 = _this.props,\n title = _this$props3.title,\n message = _this$props3.message,\n buttons = _this$props3.buttons,\n customUI = _this$props3.customUI;\n\n var dataCustomUI = {\n title: title,\n message: message,\n buttons: buttons,\n onClose: _this.close\n };\n\n return customUI(dataCustomUI);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(ReactConfirmAlert, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n title = _props.title,\n message = _props.message,\n buttons = _props.buttons,\n childrenElement = _props.childrenElement,\n customUI = _props.customUI,\n overlayClassName = _props.overlayClassName;\n\n\n return _react2.default.createElement(\n 'div',\n {\n className: 'react-confirm-alert-overlay ' + overlayClassName,\n ref: function ref(dom) {\n return _this2.overlay = dom;\n },\n onClick: this.handleClickOverlay\n },\n _react2.default.createElement(\n 'div',\n { className: 'react-confirm-alert' },\n customUI ? this.renderCustomUI() : _react2.default.createElement(\n 'div',\n { className: 'react-confirm-alert-body' },\n title && _react2.default.createElement(\n 'h1',\n null,\n title\n ),\n message,\n childrenElement(),\n _react2.default.createElement(\n 'div',\n { className: 'react-confirm-alert-button-group' },\n buttons.map(function (button, i) {\n return _react2.default.createElement(\n 'button',\n _extends({\n key: i,\n className: button.className\n }, button, {\n onClick: function onClick(e) {\n return _this2.handleClickButton(button);\n }\n }),\n button.label\n );\n })\n )\n )\n )\n );\n }\n }]);\n\n return ReactConfirmAlert;\n}(_react.Component), _class.propTypes = {\n title: _propTypes2.default.string,\n message: _propTypes2.default.string,\n buttons: _propTypes2.default.array.isRequired,\n childrenElement: _propTypes2.default.func,\n customUI: _propTypes2.default.func,\n closeOnClickOutside: _propTypes2.default.bool,\n closeOnEscape: _propTypes2.default.bool,\n keyCodeForClose: _propTypes2.default.arrayOf(_propTypes2.default.number),\n willUnmount: _propTypes2.default.func,\n afterClose: _propTypes2.default.func,\n onClickOutside: _propTypes2.default.func,\n onKeypressEscape: _propTypes2.default.func,\n onkeyPress: _propTypes2.default.func,\n overlayClassName: _propTypes2.default.string\n}, _class.defaultProps = {\n buttons: [{\n label: 'Cancel',\n onClick: function onClick() {\n return null;\n },\n className: null\n }, {\n label: 'Confirm',\n onClick: function onClick() {\n return null;\n },\n className: null\n }],\n childrenElement: function childrenElement() {\n return null;\n },\n closeOnClickOutside: true,\n closeOnEscape: true,\n keyCodeForClose: [],\n willUnmount: function willUnmount() {\n return null;\n },\n afterClose: function afterClose() {\n return null;\n },\n onClickOutside: function onClickOutside() {\n return null;\n },\n onKeypressEscape: function onKeypressEscape() {\n return null;\n }\n}, _temp2);\nexports.default = ReactConfirmAlert;\n\n\nvar root = null;\nvar targetId = 'react-confirm-alert';\n\nfunction createSVGBlurReconfirm() {\n // If has svg ignore to create the svg\n var svg = document.getElementById('react-confirm-alert-firm-svg');\n if (svg) return;\n var svgNS = 'http://www.w3.org/2000/svg';\n var feGaussianBlur = document.createElementNS(svgNS, 'feGaussianBlur');\n feGaussianBlur.setAttribute('stdDeviation', '0.3');\n\n var filter = document.createElementNS(svgNS, 'filter');\n filter.setAttribute('id', 'gaussian-blur');\n filter.appendChild(feGaussianBlur);\n\n var svgElem = document.createElementNS(svgNS, 'svg');\n svgElem.setAttribute('id', 'react-confirm-alert-firm-svg');\n svgElem.setAttribute('class', 'react-confirm-alert-svg');\n svgElem.appendChild(filter);\n\n document.body.appendChild(svgElem);\n}\n\nfunction removeSVGBlurReconfirm(afterClose) {\n var svg = document.getElementById('react-confirm-alert-firm-svg');\n if (svg) {\n svg.parentNode.removeChild(svg);\n }\n document.body.children[0].classList.remove('react-confirm-alert-blur');\n afterClose();\n}\n\nfunction createElementReconfirm(properties) {\n var divTarget = document.getElementById(properties.targetId || targetId);\n\n if (properties.targetId && !divTarget) {\n console.error('React Confirm Alert:', 'Can not get element id (#' + properties.targetId + ')');\n }\n\n if (divTarget) {\n root = (0, _client.createRoot)(divTarget);\n root.render(_react2.default.createElement(ReactConfirmAlert, properties));\n } else {\n document.body.children[0].classList.add('react-confirm-alert-blur');\n divTarget = document.createElement('div');\n divTarget.id = targetId;\n document.body.appendChild(divTarget);\n root = (0, _client.createRoot)(divTarget);\n root.render(_react2.default.createElement(ReactConfirmAlert, properties));\n }\n}\n\nfunction removeElementReconfirm(properties) {\n var target = document.getElementById(properties.targetId || targetId);\n if (target) {\n root.unmount(target);\n }\n}\n\nfunction addBodyClass() {\n document.body.classList.add('react-confirm-alert-body-element');\n}\n\nfunction removeBodyClass() {\n document.body.classList.remove('react-confirm-alert-body-element');\n}\n\nfunction confirmAlert(properties) {\n addBodyClass();\n createSVGBlurReconfirm();\n createElementReconfirm(properties);\n}","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3= leftBound && currentSlide <= rightBound : currentSlide === leftBound\n });\n var dotOptions = {\n message: \"dots\",\n index: i,\n slidesToScroll: slidesToScroll,\n currentSlide: currentSlide\n };\n var onClick = this.clickHandler.bind(this, dotOptions);\n dots = dots.concat( /*#__PURE__*/_react[\"default\"].createElement(\"li\", {\n key: i,\n className: className\n }, /*#__PURE__*/_react[\"default\"].cloneElement(this.props.customPaging(i), {\n onClick: onClick\n })));\n }\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(this.props.appendDots(dots), _objectSpread({\n className: this.props.dotsClass\n }, mouseEvents));\n }\n }]);\n\n return Dots;\n}(_react[\"default\"].PureComponent);\n\nexports.Dots = Dots;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _slider = _interopRequireDefault(require(\"./slider\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _slider[\"default\"];\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar initialState = {\n animating: false,\n autoplaying: null,\n currentDirection: 0,\n currentLeft: null,\n currentSlide: 0,\n direction: 1,\n dragging: false,\n edgeDragged: false,\n initialized: false,\n lazyLoadedList: [],\n listHeight: null,\n listWidth: null,\n scrolling: false,\n slideCount: null,\n slideHeight: null,\n slideWidth: null,\n swipeLeft: null,\n swiped: false,\n // used by swipeEvent. differentites between touch and swipe.\n swiping: false,\n touchObject: {\n startX: 0,\n startY: 0,\n curX: 0,\n curY: 0\n },\n trackStyle: {},\n trackWidth: 0,\n targetSlide: 0\n};\nvar _default = initialState;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InnerSlider = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _initialState = _interopRequireDefault(require(\"./initial-state\"));\n\nvar _lodash = _interopRequireDefault(require(\"lodash.debounce\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nvar _track = require(\"./track\");\n\nvar _dots = require(\"./dots\");\n\nvar _arrows = require(\"./arrows\");\n\nvar _resizeObserverPolyfill = _interopRequireDefault(require(\"resize-observer-polyfill\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar InnerSlider = /*#__PURE__*/function (_React$Component) {\n _inherits(InnerSlider, _React$Component);\n\n var _super = _createSuper(InnerSlider);\n\n function InnerSlider(props) {\n var _this;\n\n _classCallCheck(this, InnerSlider);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"listRefHandler\", function (ref) {\n return _this.list = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"trackRefHandler\", function (ref) {\n return _this.track = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"adaptHeight\", function () {\n if (_this.props.adaptiveHeight && _this.list) {\n var elem = _this.list.querySelector(\"[data-index=\\\"\".concat(_this.state.currentSlide, \"\\\"]\"));\n\n _this.list.style.height = (0, _innerSliderUtils.getHeight)(elem) + \"px\";\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidMount\", function () {\n _this.props.onInit && _this.props.onInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n }\n\n var spec = _objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props);\n\n _this.updateState(spec, true, function () {\n _this.adaptHeight();\n\n _this.props.autoplay && _this.autoPlay(\"update\");\n });\n\n if (_this.props.lazyLoad === \"progressive\") {\n _this.lazyLoadTimer = setInterval(_this.progressiveLazyLoad, 1000);\n }\n\n _this.ro = new _resizeObserverPolyfill[\"default\"](function () {\n if (_this.state.animating) {\n _this.onWindowResized(false); // don't set trackStyle hence don't break animation\n\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.onWindowResized();\n }, _this.props.speed));\n } else {\n _this.onWindowResized();\n }\n });\n\n _this.ro.observe(_this.list);\n\n document.querySelectorAll && Array.prototype.forEach.call(document.querySelectorAll(\".slick-slide\"), function (slide) {\n slide.onfocus = _this.props.pauseOnFocus ? _this.onSlideFocus : null;\n slide.onblur = _this.props.pauseOnFocus ? _this.onSlideBlur : null;\n });\n\n if (window.addEventListener) {\n window.addEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.attachEvent(\"onresize\", _this.onWindowResized);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentWillUnmount\", function () {\n if (_this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n }\n\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n }\n\n if (_this.callbackTimers.length) {\n _this.callbackTimers.forEach(function (timer) {\n return clearTimeout(timer);\n });\n\n _this.callbackTimers = [];\n }\n\n if (window.addEventListener) {\n window.removeEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.detachEvent(\"onresize\", _this.onWindowResized);\n }\n\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n\n _this.ro.disconnect();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidUpdate\", function (prevProps) {\n _this.checkImagesLoad();\n\n _this.props.onReInit && _this.props.onReInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n } // if (this.props.onLazyLoad) {\n // this.props.onLazyLoad([leftMostSlide])\n // }\n\n\n _this.adaptHeight();\n\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n\n var setTrackStyle = _this.didPropsChange(prevProps);\n\n setTrackStyle && _this.updateState(spec, setTrackStyle, function () {\n if (_this.state.currentSlide >= _react[\"default\"].Children.count(_this.props.children)) {\n _this.changeSlide({\n message: \"index\",\n index: _react[\"default\"].Children.count(_this.props.children) - _this.props.slidesToShow,\n currentSlide: _this.state.currentSlide\n });\n }\n\n if (_this.props.autoplay) {\n _this.autoPlay(\"update\");\n } else {\n _this.pause(\"paused\");\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onWindowResized\", function (setTrackStyle) {\n if (_this.debouncedResize) _this.debouncedResize.cancel();\n _this.debouncedResize = (0, _lodash[\"default\"])(function () {\n return _this.resizeWindow(setTrackStyle);\n }, 50);\n\n _this.debouncedResize();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"resizeWindow\", function () {\n var setTrackStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var isTrackMounted = Boolean(_this.track && _this.track.node); // prevent warning: setting state on unmounted component (server side rendering)\n\n if (!isTrackMounted) return;\n\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n\n _this.updateState(spec, setTrackStyle, function () {\n if (_this.props.autoplay) _this.autoPlay(\"update\");else _this.pause(\"paused\");\n }); // animating state should be cleared while resizing, otherwise autoplay stops working\n\n\n _this.setState({\n animating: false\n });\n\n clearTimeout(_this.animationEndCallback);\n delete _this.animationEndCallback;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateState\", function (spec, setTrackStyle, callback) {\n var updatedState = (0, _innerSliderUtils.initializedState)(spec);\n spec = _objectSpread(_objectSpread(_objectSpread({}, spec), updatedState), {}, {\n slideIndex: updatedState.currentSlide\n });\n var targetLeft = (0, _innerSliderUtils.getTrackLeft)(spec);\n spec = _objectSpread(_objectSpread({}, spec), {}, {\n left: targetLeft\n });\n var trackStyle = (0, _innerSliderUtils.getTrackCSS)(spec);\n\n if (setTrackStyle || _react[\"default\"].Children.count(_this.props.children) !== _react[\"default\"].Children.count(spec.children)) {\n updatedState[\"trackStyle\"] = trackStyle;\n }\n\n _this.setState(updatedState, callback);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ssrInit\", function () {\n if (_this.props.variableWidth) {\n var _trackWidth = 0,\n _trackLeft = 0;\n var childrenWidths = [];\n var preClones = (0, _innerSliderUtils.getPreClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n var postClones = (0, _innerSliderUtils.getPostClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n\n _this.props.children.forEach(function (child) {\n childrenWidths.push(child.props.style.width);\n _trackWidth += child.props.style.width;\n });\n\n for (var i = 0; i < preClones; i++) {\n _trackLeft += childrenWidths[childrenWidths.length - 1 - i];\n _trackWidth += childrenWidths[childrenWidths.length - 1 - i];\n }\n\n for (var _i = 0; _i < postClones; _i++) {\n _trackWidth += childrenWidths[_i];\n }\n\n for (var _i2 = 0; _i2 < _this.state.currentSlide; _i2++) {\n _trackLeft += childrenWidths[_i2];\n }\n\n var _trackStyle = {\n width: _trackWidth + \"px\",\n left: -_trackLeft + \"px\"\n };\n\n if (_this.props.centerMode) {\n var currentWidth = \"\".concat(childrenWidths[_this.state.currentSlide], \"px\");\n _trackStyle.left = \"calc(\".concat(_trackStyle.left, \" + (100% - \").concat(currentWidth, \") / 2 ) \");\n }\n\n return {\n trackStyle: _trackStyle\n };\n }\n\n var childrenCount = _react[\"default\"].Children.count(_this.props.children);\n\n var spec = _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: childrenCount\n });\n\n var slideCount = (0, _innerSliderUtils.getPreClones)(spec) + (0, _innerSliderUtils.getPostClones)(spec) + childrenCount;\n var trackWidth = 100 / _this.props.slidesToShow * slideCount;\n var slideWidth = 100 / slideCount;\n var trackLeft = -slideWidth * ((0, _innerSliderUtils.getPreClones)(spec) + _this.state.currentSlide) * trackWidth / 100;\n\n if (_this.props.centerMode) {\n trackLeft += (100 - slideWidth * trackWidth / 100) / 2;\n }\n\n var trackStyle = {\n width: trackWidth + \"%\",\n left: trackLeft + \"%\"\n };\n return {\n slideWidth: slideWidth + \"%\",\n trackStyle: trackStyle\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"checkImagesLoad\", function () {\n var images = _this.list && _this.list.querySelectorAll && _this.list.querySelectorAll(\".slick-slide img\") || [];\n var imagesCount = images.length,\n loadedCount = 0;\n Array.prototype.forEach.call(images, function (image) {\n var handler = function handler() {\n return ++loadedCount && loadedCount >= imagesCount && _this.onWindowResized();\n };\n\n if (!image.onclick) {\n image.onclick = function () {\n return image.parentNode.focus();\n };\n } else {\n var prevClickHandler = image.onclick;\n\n image.onclick = function () {\n prevClickHandler();\n image.parentNode.focus();\n };\n }\n\n if (!image.onload) {\n if (_this.props.lazyLoad) {\n image.onload = function () {\n _this.adaptHeight();\n\n _this.callbackTimers.push(setTimeout(_this.onWindowResized, _this.props.speed));\n };\n } else {\n image.onload = handler;\n\n image.onerror = function () {\n handler();\n _this.props.onLazyLoadError && _this.props.onLazyLoadError();\n };\n }\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"progressiveLazyLoad\", function () {\n var slidesToLoad = [];\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n for (var index = _this.state.currentSlide; index < _this.state.slideCount + (0, _innerSliderUtils.getPostClones)(spec); index++) {\n if (_this.state.lazyLoadedList.indexOf(index) < 0) {\n slidesToLoad.push(index);\n break;\n }\n }\n\n for (var _index = _this.state.currentSlide - 1; _index >= -(0, _innerSliderUtils.getPreClones)(spec); _index--) {\n if (_this.state.lazyLoadedList.indexOf(_index) < 0) {\n slidesToLoad.push(_index);\n break;\n }\n }\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (state) {\n return {\n lazyLoadedList: state.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n } else {\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n delete _this.lazyLoadTimer;\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slideHandler\", function (index) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var _this$props = _this.props,\n asNavFor = _this$props.asNavFor,\n beforeChange = _this$props.beforeChange,\n onLazyLoad = _this$props.onLazyLoad,\n speed = _this$props.speed,\n afterChange = _this$props.afterChange; // capture currentslide before state is updated\n\n var currentSlide = _this.state.currentSlide;\n\n var _slideHandler = (0, _innerSliderUtils.slideHandler)(_objectSpread(_objectSpread(_objectSpread({\n index: index\n }, _this.props), _this.state), {}, {\n trackRef: _this.track,\n useCSS: _this.props.useCSS && !dontAnimate\n })),\n state = _slideHandler.state,\n nextState = _slideHandler.nextState;\n\n if (!state) return;\n beforeChange && beforeChange(currentSlide, state.currentSlide);\n var slidesToLoad = state.lazyLoadedList.filter(function (value) {\n return _this.state.lazyLoadedList.indexOf(value) < 0;\n });\n onLazyLoad && slidesToLoad.length > 0 && onLazyLoad(slidesToLoad);\n\n if (!_this.props.waitForAnimate && _this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n afterChange && afterChange(currentSlide);\n delete _this.animationEndCallback;\n }\n\n _this.setState(state, function () {\n // asNavForIndex check is to avoid recursive calls of slideHandler in waitForAnimate=false mode\n if (asNavFor && _this.asNavForIndex !== index) {\n _this.asNavForIndex = index;\n asNavFor.innerSlider.slideHandler(index);\n }\n\n if (!nextState) return;\n _this.animationEndCallback = setTimeout(function () {\n var animating = nextState.animating,\n firstBatch = _objectWithoutProperties(nextState, [\"animating\"]);\n\n _this.setState(firstBatch, function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.setState({\n animating: animating\n });\n }, 10));\n\n afterChange && afterChange(state.currentSlide);\n delete _this.animationEndCallback;\n });\n }, speed);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"changeSlide\", function (options) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n var targetSlide = (0, _innerSliderUtils.changeSlide)(spec, options);\n if (targetSlide !== 0 && !targetSlide) return;\n\n if (dontAnimate === true) {\n _this.slideHandler(targetSlide, dontAnimate);\n } else {\n _this.slideHandler(targetSlide);\n }\n\n _this.props.autoplay && _this.autoPlay(\"update\");\n\n if (_this.props.focusOnSelect) {\n var nodes = _this.list.querySelectorAll(\".slick-current\");\n\n nodes[0] && nodes[0].focus();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"clickHandler\", function (e) {\n if (_this.clickable === false) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n _this.clickable = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"keyHandler\", function (e) {\n var dir = (0, _innerSliderUtils.keyHandler)(e, _this.props.accessibility, _this.props.rtl);\n dir !== \"\" && _this.changeSlide({\n message: dir\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"selectHandler\", function (options) {\n _this.changeSlide(options);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"disableBodyScroll\", function () {\n var preventDefault = function preventDefault(e) {\n e = e || window.event;\n if (e.preventDefault) e.preventDefault();\n e.returnValue = false;\n };\n\n window.ontouchmove = preventDefault;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"enableBodyScroll\", function () {\n window.ontouchmove = null;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeStart\", function (e) {\n if (_this.props.verticalSwiping) {\n _this.disableBodyScroll();\n }\n\n var state = (0, _innerSliderUtils.swipeStart)(e, _this.props.swipe, _this.props.draggable);\n state !== \"\" && _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeMove\", function (e) {\n var state = (0, _innerSliderUtils.swipeMove)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n\n if (state[\"swiping\"]) {\n _this.clickable = false;\n }\n\n _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeEnd\", function (e) {\n var state = (0, _innerSliderUtils.swipeEnd)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n var triggerSlideHandler = state[\"triggerSlideHandler\"];\n delete state[\"triggerSlideHandler\"];\n\n _this.setState(state);\n\n if (triggerSlideHandler === undefined) return;\n\n _this.slideHandler(triggerSlideHandler);\n\n if (_this.props.verticalSwiping) {\n _this.enableBodyScroll();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"touchEnd\", function (e) {\n _this.swipeEnd(e);\n\n _this.clickable = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n // this and fellow methods are wrapped in setTimeout\n // to make sure initialize setState has happened before\n // any of such methods are called\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"previous\"\n });\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"next\"\n });\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n slide = Number(slide);\n if (isNaN(slide)) return \"\";\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"index\",\n index: slide,\n currentSlide: _this.state.currentSlide\n }, dontAnimate);\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"play\", function () {\n var nextIndex;\n\n if (_this.props.rtl) {\n nextIndex = _this.state.currentSlide - _this.props.slidesToScroll;\n } else {\n if ((0, _innerSliderUtils.canGoNext)(_objectSpread(_objectSpread({}, _this.props), _this.state))) {\n nextIndex = _this.state.currentSlide + _this.props.slidesToScroll;\n } else {\n return false;\n }\n }\n\n _this.slideHandler(nextIndex);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"autoPlay\", function (playType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (playType === \"update\") {\n if (autoplaying === \"hovered\" || autoplaying === \"focused\" || autoplaying === \"paused\") {\n return;\n }\n } else if (playType === \"leave\") {\n if (autoplaying === \"paused\" || autoplaying === \"focused\") {\n return;\n }\n } else if (playType === \"blur\") {\n if (autoplaying === \"paused\" || autoplaying === \"hovered\") {\n return;\n }\n }\n\n _this.autoplayTimer = setInterval(_this.play, _this.props.autoplaySpeed + 50);\n\n _this.setState({\n autoplaying: \"playing\"\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"pause\", function (pauseType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n _this.autoplayTimer = null;\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (pauseType === \"paused\") {\n _this.setState({\n autoplaying: \"paused\"\n });\n } else if (pauseType === \"focused\") {\n if (autoplaying === \"hovered\" || autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"focused\"\n });\n }\n } else {\n // pauseType is 'hovered'\n if (autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"hovered\"\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDotsOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDotsLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTrackOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTrackLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSlideFocus\", function () {\n return _this.props.autoplay && _this.pause(\"focused\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSlideBlur\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"focused\" && _this.autoPlay(\"blur\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"render\", function () {\n var className = (0, _classnames[\"default\"])(\"slick-slider\", _this.props.className, {\n \"slick-vertical\": _this.props.vertical,\n \"slick-initialized\": true\n });\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n var trackProps = (0, _innerSliderUtils.extractObject)(spec, [\"fade\", \"cssEase\", \"speed\", \"infinite\", \"centerMode\", \"focusOnSelect\", \"currentSlide\", \"lazyLoad\", \"lazyLoadedList\", \"rtl\", \"slideWidth\", \"slideHeight\", \"listHeight\", \"vertical\", \"slidesToShow\", \"slidesToScroll\", \"slideCount\", \"trackStyle\", \"variableWidth\", \"unslick\", \"centerPadding\", \"targetSlide\", \"useCSS\"]);\n var pauseOnHover = _this.props.pauseOnHover;\n trackProps = _objectSpread(_objectSpread({}, trackProps), {}, {\n onMouseEnter: pauseOnHover ? _this.onTrackOver : null,\n onMouseLeave: pauseOnHover ? _this.onTrackLeave : null,\n onMouseOver: pauseOnHover ? _this.onTrackOver : null,\n focusOnSelect: _this.props.focusOnSelect && _this.clickable ? _this.selectHandler : null\n });\n var dots;\n\n if (_this.props.dots === true && _this.state.slideCount >= _this.props.slidesToShow) {\n var dotProps = (0, _innerSliderUtils.extractObject)(spec, [\"dotsClass\", \"slideCount\", \"slidesToShow\", \"currentSlide\", \"slidesToScroll\", \"clickHandler\", \"children\", \"customPaging\", \"infinite\", \"appendDots\"]);\n var pauseOnDotsHover = _this.props.pauseOnDotsHover;\n dotProps = _objectSpread(_objectSpread({}, dotProps), {}, {\n clickHandler: _this.changeSlide,\n onMouseEnter: pauseOnDotsHover ? _this.onDotsLeave : null,\n onMouseOver: pauseOnDotsHover ? _this.onDotsOver : null,\n onMouseLeave: pauseOnDotsHover ? _this.onDotsLeave : null\n });\n dots = /*#__PURE__*/_react[\"default\"].createElement(_dots.Dots, dotProps);\n }\n\n var prevArrow, nextArrow;\n var arrowProps = (0, _innerSliderUtils.extractObject)(spec, [\"infinite\", \"centerMode\", \"currentSlide\", \"slideCount\", \"slidesToShow\", \"prevArrow\", \"nextArrow\"]);\n arrowProps.clickHandler = _this.changeSlide;\n\n if (_this.props.arrows) {\n prevArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.PrevArrow, arrowProps);\n nextArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.NextArrow, arrowProps);\n }\n\n var verticalHeightStyle = null;\n\n if (_this.props.vertical) {\n verticalHeightStyle = {\n height: _this.state.listHeight\n };\n }\n\n var centerPaddingStyle = null;\n\n if (_this.props.vertical === false) {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: \"0px \" + _this.props.centerPadding\n };\n }\n } else {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: _this.props.centerPadding + \" 0px\"\n };\n }\n }\n\n var listStyle = _objectSpread(_objectSpread({}, verticalHeightStyle), centerPaddingStyle);\n\n var touchMove = _this.props.touchMove;\n var listProps = {\n className: \"slick-list\",\n style: listStyle,\n onClick: _this.clickHandler,\n onMouseDown: touchMove ? _this.swipeStart : null,\n onMouseMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onMouseUp: touchMove ? _this.swipeEnd : null,\n onMouseLeave: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onTouchStart: touchMove ? _this.swipeStart : null,\n onTouchMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onTouchEnd: touchMove ? _this.touchEnd : null,\n onTouchCancel: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onKeyDown: _this.props.accessibility ? _this.keyHandler : null\n };\n var innerSliderProps = {\n className: className,\n dir: \"ltr\",\n style: _this.props.style\n };\n\n if (_this.props.unslick) {\n listProps = {\n className: \"slick-list\"\n };\n innerSliderProps = {\n className: className\n };\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", innerSliderProps, !_this.props.unslick ? prevArrow : \"\", /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n ref: _this.listRefHandler\n }, listProps), /*#__PURE__*/_react[\"default\"].createElement(_track.Track, _extends({\n ref: _this.trackRefHandler\n }, trackProps), _this.props.children)), !_this.props.unslick ? nextArrow : \"\", !_this.props.unslick ? dots : \"\");\n });\n\n _this.list = null;\n _this.track = null;\n _this.state = _objectSpread(_objectSpread({}, _initialState[\"default\"]), {}, {\n currentSlide: _this.props.initialSlide,\n slideCount: _react[\"default\"].Children.count(_this.props.children)\n });\n _this.callbackTimers = [];\n _this.clickable = true;\n _this.debouncedResize = null;\n\n var ssrState = _this.ssrInit();\n\n _this.state = _objectSpread(_objectSpread({}, _this.state), ssrState);\n return _this;\n }\n\n _createClass(InnerSlider, [{\n key: \"didPropsChange\",\n value: function didPropsChange(prevProps) {\n var setTrackStyle = false;\n\n for (var _i3 = 0, _Object$keys = Object.keys(this.props); _i3 < _Object$keys.length; _i3++) {\n var key = _Object$keys[_i3];\n\n if (!prevProps.hasOwnProperty(key)) {\n setTrackStyle = true;\n break;\n }\n\n if (_typeof(prevProps[key]) === \"object\" || typeof prevProps[key] === \"function\") {\n continue;\n }\n\n if (prevProps[key] !== this.props[key]) {\n setTrackStyle = true;\n break;\n }\n }\n\n return setTrackStyle || _react[\"default\"].Children.count(this.props.children) !== _react[\"default\"].Children.count(prevProps.children);\n }\n }]);\n\n return InnerSlider;\n}(_react[\"default\"].Component);\n\nexports.InnerSlider = InnerSlider;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _innerSlider = require(\"./inner-slider\");\n\nvar _json2mq = _interopRequireDefault(require(\"json2mq\"));\n\nvar _defaultProps = _interopRequireDefault(require(\"./default-props\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar enquire = (0, _innerSliderUtils.canUseDOM)() && require(\"enquire.js\");\n\nvar Slider = /*#__PURE__*/function (_React$Component) {\n _inherits(Slider, _React$Component);\n\n var _super = _createSuper(Slider);\n\n function Slider(props) {\n var _this;\n\n _classCallCheck(this, Slider);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"innerSliderRefHandler\", function (ref) {\n return _this.innerSlider = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n return _this.innerSlider.slickPrev();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n return _this.innerSlider.slickNext();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return _this.innerSlider.slickGoTo(slide, dontAnimate);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPause\", function () {\n return _this.innerSlider.pause(\"paused\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPlay\", function () {\n return _this.innerSlider.autoPlay(\"play\");\n });\n\n _this.state = {\n breakpoint: null\n };\n _this._responsiveMediaHandlers = [];\n return _this;\n }\n\n _createClass(Slider, [{\n key: \"media\",\n value: function media(query, handler) {\n // javascript handler for css media query\n enquire.register(query, handler);\n\n this._responsiveMediaHandlers.push({\n query: query,\n handler: handler\n });\n } // handles responsive breakpoints\n\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n // performance monitoring\n //if (process.env.NODE_ENV !== 'production') {\n //const { whyDidYouUpdate } = require('why-did-you-update')\n //whyDidYouUpdate(React)\n //}\n if (this.props.responsive) {\n var breakpoints = this.props.responsive.map(function (breakpt) {\n return breakpt.breakpoint;\n }); // sort them in increasing order of their numerical value\n\n breakpoints.sort(function (x, y) {\n return x - y;\n });\n breakpoints.forEach(function (breakpoint, index) {\n // media query for each breakpoint\n var bQuery;\n\n if (index === 0) {\n bQuery = (0, _json2mq[\"default\"])({\n minWidth: 0,\n maxWidth: breakpoint\n });\n } else {\n bQuery = (0, _json2mq[\"default\"])({\n minWidth: breakpoints[index - 1] + 1,\n maxWidth: breakpoint\n });\n } // when not using server side rendering\n\n\n (0, _innerSliderUtils.canUseDOM)() && _this2.media(bQuery, function () {\n _this2.setState({\n breakpoint: breakpoint\n });\n });\n }); // Register media query for full screen. Need to support resize from small to large\n // convert javascript object to media query string\n\n var query = (0, _json2mq[\"default\"])({\n minWidth: breakpoints.slice(-1)[0]\n });\n (0, _innerSliderUtils.canUseDOM)() && this.media(query, function () {\n _this2.setState({\n breakpoint: null\n });\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._responsiveMediaHandlers.forEach(function (obj) {\n enquire.unregister(obj.query, obj.handler);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var settings;\n var newProps;\n\n if (this.state.breakpoint) {\n newProps = this.props.responsive.filter(function (resp) {\n return resp.breakpoint === _this3.state.breakpoint;\n });\n settings = newProps[0].settings === \"unslick\" ? \"unslick\" : _objectSpread(_objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props), newProps[0].settings);\n } else {\n settings = _objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props);\n } // force scrolling by one if centerMode is on\n\n\n if (settings.centerMode) {\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 in centerMode, you are using \".concat(settings.slidesToScroll));\n }\n\n settings.slidesToScroll = 1;\n } // force showing one slide and scrolling by one if the fade mode is on\n\n\n if (settings.fade) {\n if (settings.slidesToShow > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToShow should be equal to 1 when fade is true, you're using \".concat(settings.slidesToShow));\n }\n\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 when fade is true, you're using \".concat(settings.slidesToScroll));\n }\n\n settings.slidesToShow = 1;\n settings.slidesToScroll = 1;\n } // makes sure that children is an array, even when there is only 1 child\n\n\n var children = _react[\"default\"].Children.toArray(this.props.children); // Children may contain false or null, so we should filter them\n // children may also contain string filled with spaces (in certain cases where we use jsx strings)\n\n\n children = children.filter(function (child) {\n if (typeof child === \"string\") {\n return !!child.trim();\n }\n\n return !!child;\n }); // rows and slidesPerRow logic is handled here\n\n if (settings.variableWidth && (settings.rows > 1 || settings.slidesPerRow > 1)) {\n console.warn(\"variableWidth is not supported in case of rows > 1 or slidesPerRow > 1\");\n settings.variableWidth = false;\n }\n\n var newChildren = [];\n var currentWidth = null;\n\n for (var i = 0; i < children.length; i += settings.rows * settings.slidesPerRow) {\n var newSlide = [];\n\n for (var j = i; j < i + settings.rows * settings.slidesPerRow; j += settings.slidesPerRow) {\n var row = [];\n\n for (var k = j; k < j + settings.slidesPerRow; k += 1) {\n if (settings.variableWidth && children[k].props.style) {\n currentWidth = children[k].props.style.width;\n }\n\n if (k >= children.length) break;\n row.push( /*#__PURE__*/_react[\"default\"].cloneElement(children[k], {\n key: 100 * i + 10 * j + k,\n tabIndex: -1,\n style: {\n width: \"\".concat(100 / settings.slidesPerRow, \"%\"),\n display: \"inline-block\"\n }\n }));\n }\n\n newSlide.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: 10 * i + j\n }, row));\n }\n\n if (settings.variableWidth) {\n newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: i,\n style: {\n width: currentWidth\n }\n }, newSlide));\n } else {\n newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: i\n }, newSlide));\n }\n }\n\n if (settings === \"unslick\") {\n var className = \"regular slider \" + (this.props.className || \"\");\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: className\n }, children);\n } else if (newChildren.length <= settings.slidesToShow) {\n settings.unslick = true;\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(_innerSlider.InnerSlider, _extends({\n style: this.props.style,\n ref: this.innerSliderRefHandler\n }, settings), newChildren);\n }\n }]);\n\n return Slider;\n}(_react[\"default\"].Component);\n\nexports[\"default\"] = Slider;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Track = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// given specifications/props for a slide, fetch all the classes that need to be applied to the slide\nvar getSlideClasses = function getSlideClasses(spec) {\n var slickActive, slickCenter, slickCloned;\n var centerOffset, index;\n\n if (spec.rtl) {\n index = spec.slideCount - 1 - spec.index;\n } else {\n index = spec.index;\n }\n\n slickCloned = index < 0 || index >= spec.slideCount;\n\n if (spec.centerMode) {\n centerOffset = Math.floor(spec.slidesToShow / 2);\n slickCenter = (index - spec.currentSlide) % spec.slideCount === 0;\n\n if (index > spec.currentSlide - centerOffset - 1 && index <= spec.currentSlide + centerOffset) {\n slickActive = true;\n }\n } else {\n slickActive = spec.currentSlide <= index && index < spec.currentSlide + spec.slidesToShow;\n }\n\n var focusedSlide;\n\n if (spec.targetSlide < 0) {\n focusedSlide = spec.targetSlide + spec.slideCount;\n } else if (spec.targetSlide >= spec.slideCount) {\n focusedSlide = spec.targetSlide - spec.slideCount;\n } else {\n focusedSlide = spec.targetSlide;\n }\n\n var slickCurrent = index === focusedSlide;\n return {\n \"slick-slide\": true,\n \"slick-active\": slickActive,\n \"slick-center\": slickCenter,\n \"slick-cloned\": slickCloned,\n \"slick-current\": slickCurrent // dubious in case of RTL\n\n };\n};\n\nvar getSlideStyle = function getSlideStyle(spec) {\n var style = {};\n\n if (spec.variableWidth === undefined || spec.variableWidth === false) {\n style.width = spec.slideWidth;\n }\n\n if (spec.fade) {\n style.position = \"relative\";\n\n if (spec.vertical) {\n style.top = -spec.index * parseInt(spec.slideHeight);\n } else {\n style.left = -spec.index * parseInt(spec.slideWidth);\n }\n\n style.opacity = spec.currentSlide === spec.index ? 1 : 0;\n\n if (spec.useCSS) {\n style.transition = \"opacity \" + spec.speed + \"ms \" + spec.cssEase + \", \" + \"visibility \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\n\nvar getKey = function getKey(child, fallbackKey) {\n return child.key || fallbackKey;\n};\n\nvar renderSlides = function renderSlides(spec) {\n var key;\n var slides = [];\n var preCloneSlides = [];\n var postCloneSlides = [];\n\n var childrenCount = _react[\"default\"].Children.count(spec.children);\n\n var startIndex = (0, _innerSliderUtils.lazyStartIndex)(spec);\n var endIndex = (0, _innerSliderUtils.lazyEndIndex)(spec);\n\n _react[\"default\"].Children.forEach(spec.children, function (elem, index) {\n var child;\n var childOnClickOptions = {\n message: \"children\",\n index: index,\n slidesToScroll: spec.slidesToScroll,\n currentSlide: spec.currentSlide\n }; // in case of lazyLoad, whether or not we want to fetch the slide\n\n if (!spec.lazyLoad || spec.lazyLoad && spec.lazyLoadedList.indexOf(index) >= 0) {\n child = elem;\n } else {\n child = /*#__PURE__*/_react[\"default\"].createElement(\"div\", null);\n }\n\n var childStyle = getSlideStyle(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n }));\n var slideClass = child.props.className || \"\";\n var slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n })); // push a cloned element of the desired slide\n\n slides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"original\" + getKey(child, index),\n \"data-index\": index,\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n tabIndex: \"-1\",\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({\n outline: \"none\"\n }, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n })); // if slide needs to be precloned or postcloned\n\n if (spec.infinite && spec.fade === false) {\n var preCloneNo = childrenCount - index;\n\n if (preCloneNo <= (0, _innerSliderUtils.getPreClones)(spec) && childrenCount !== spec.slidesToShow) {\n key = -preCloneNo;\n\n if (key >= startIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n preCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"precloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n\n if (childrenCount !== spec.slidesToShow) {\n key = childrenCount + index;\n\n if (key < endIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n postCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"postcloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n }\n });\n\n if (spec.rtl) {\n return preCloneSlides.concat(slides, postCloneSlides).reverse();\n } else {\n return preCloneSlides.concat(slides, postCloneSlides);\n }\n};\n\nvar Track = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Track, _React$PureComponent);\n\n var _super = _createSuper(Track);\n\n function Track() {\n var _this;\n\n _classCallCheck(this, Track);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"node\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"handleRef\", function (ref) {\n _this.node = ref;\n });\n\n return _this;\n }\n\n _createClass(Track, [{\n key: \"render\",\n value: function render() {\n var slides = renderSlides(this.props);\n var _this$props = this.props,\n onMouseEnter = _this$props.onMouseEnter,\n onMouseOver = _this$props.onMouseOver,\n onMouseLeave = _this$props.onMouseLeave;\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n ref: this.handleRef,\n className: \"slick-track\",\n style: this.props.trackStyle\n }, mouseEvents), slides);\n }\n }]);\n\n return Track;\n}(_react[\"default\"].PureComponent);\n\nexports.Track = Track;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.checkSpecKeys = exports.checkNavigable = exports.changeSlide = exports.canUseDOM = exports.canGoNext = void 0;\nexports.clamp = clamp;\nexports.swipeStart = exports.swipeMove = exports.swipeEnd = exports.slidesOnRight = exports.slidesOnLeft = exports.slideHandler = exports.siblingDirection = exports.safePreventDefault = exports.lazyStartIndex = exports.lazySlidesOnRight = exports.lazySlidesOnLeft = exports.lazyEndIndex = exports.keyHandler = exports.initializedState = exports.getWidth = exports.getTrackLeft = exports.getTrackCSS = exports.getTrackAnimateCSS = exports.getTotalSlides = exports.getSwipeDirection = exports.getSlideCount = exports.getRequiredLazySlides = exports.getPreClones = exports.getPostClones = exports.getOnDemandLazySlides = exports.getNavigableIndexes = exports.getHeight = exports.extractObject = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction clamp(number, lowerBound, upperBound) {\n return Math.max(lowerBound, Math.min(number, upperBound));\n}\n\nvar safePreventDefault = function safePreventDefault(event) {\n var passiveEvents = [\"onTouchStart\", \"onTouchMove\", \"onWheel\"];\n\n if (!passiveEvents.includes(event._reactName)) {\n event.preventDefault();\n }\n};\n\nexports.safePreventDefault = safePreventDefault;\n\nvar getOnDemandLazySlides = function getOnDemandLazySlides(spec) {\n var onDemandSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n if (spec.lazyLoadedList.indexOf(slideIndex) < 0) {\n onDemandSlides.push(slideIndex);\n }\n }\n\n return onDemandSlides;\n}; // return list of slides that need to be present\n\n\nexports.getOnDemandLazySlides = getOnDemandLazySlides;\n\nvar getRequiredLazySlides = function getRequiredLazySlides(spec) {\n var requiredSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n requiredSlides.push(slideIndex);\n }\n\n return requiredSlides;\n}; // startIndex that needs to be present\n\n\nexports.getRequiredLazySlides = getRequiredLazySlides;\n\nvar lazyStartIndex = function lazyStartIndex(spec) {\n return spec.currentSlide - lazySlidesOnLeft(spec);\n};\n\nexports.lazyStartIndex = lazyStartIndex;\n\nvar lazyEndIndex = function lazyEndIndex(spec) {\n return spec.currentSlide + lazySlidesOnRight(spec);\n};\n\nexports.lazyEndIndex = lazyEndIndex;\n\nvar lazySlidesOnLeft = function lazySlidesOnLeft(spec) {\n return spec.centerMode ? Math.floor(spec.slidesToShow / 2) + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : 0;\n};\n\nexports.lazySlidesOnLeft = lazySlidesOnLeft;\n\nvar lazySlidesOnRight = function lazySlidesOnRight(spec) {\n return spec.centerMode ? Math.floor((spec.slidesToShow - 1) / 2) + 1 + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : spec.slidesToShow;\n}; // get width of an element\n\n\nexports.lazySlidesOnRight = lazySlidesOnRight;\n\nvar getWidth = function getWidth(elem) {\n return elem && elem.offsetWidth || 0;\n};\n\nexports.getWidth = getWidth;\n\nvar getHeight = function getHeight(elem) {\n return elem && elem.offsetHeight || 0;\n};\n\nexports.getHeight = getHeight;\n\nvar getSwipeDirection = function getSwipeDirection(touchObject) {\n var verticalSwiping = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var xDist, yDist, r, swipeAngle;\n xDist = touchObject.startX - touchObject.curX;\n yDist = touchObject.startY - touchObject.curY;\n r = Math.atan2(yDist, xDist);\n swipeAngle = Math.round(r * 180 / Math.PI);\n\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n\n if (swipeAngle <= 45 && swipeAngle >= 0 || swipeAngle <= 360 && swipeAngle >= 315) {\n return \"left\";\n }\n\n if (swipeAngle >= 135 && swipeAngle <= 225) {\n return \"right\";\n }\n\n if (verticalSwiping === true) {\n if (swipeAngle >= 35 && swipeAngle <= 135) {\n return \"up\";\n } else {\n return \"down\";\n }\n }\n\n return \"vertical\";\n}; // whether or not we can go next\n\n\nexports.getSwipeDirection = getSwipeDirection;\n\nvar canGoNext = function canGoNext(spec) {\n var canGo = true;\n\n if (!spec.infinite) {\n if (spec.centerMode && spec.currentSlide >= spec.slideCount - 1) {\n canGo = false;\n } else if (spec.slideCount <= spec.slidesToShow || spec.currentSlide >= spec.slideCount - spec.slidesToShow) {\n canGo = false;\n }\n }\n\n return canGo;\n}; // given an object and a list of keys, return new object with given keys\n\n\nexports.canGoNext = canGoNext;\n\nvar extractObject = function extractObject(spec, keys) {\n var newObject = {};\n keys.forEach(function (key) {\n return newObject[key] = spec[key];\n });\n return newObject;\n}; // get initialized state\n\n\nexports.extractObject = extractObject;\n\nvar initializedState = function initializedState(spec) {\n // spec also contains listRef, trackRef\n var slideCount = _react[\"default\"].Children.count(spec.children);\n\n var listNode = spec.listRef;\n var listWidth = Math.ceil(getWidth(listNode));\n var trackNode = spec.trackRef && spec.trackRef.node;\n var trackWidth = Math.ceil(getWidth(trackNode));\n var slideWidth;\n\n if (!spec.vertical) {\n var centerPaddingAdj = spec.centerMode && parseInt(spec.centerPadding) * 2;\n\n if (typeof spec.centerPadding === \"string\" && spec.centerPadding.slice(-1) === \"%\") {\n centerPaddingAdj *= listWidth / 100;\n }\n\n slideWidth = Math.ceil((listWidth - centerPaddingAdj) / spec.slidesToShow);\n } else {\n slideWidth = listWidth;\n }\n\n var slideHeight = listNode && getHeight(listNode.querySelector('[data-index=\"0\"]'));\n var listHeight = slideHeight * spec.slidesToShow;\n var currentSlide = spec.currentSlide === undefined ? spec.initialSlide : spec.currentSlide;\n\n if (spec.rtl && spec.currentSlide === undefined) {\n currentSlide = slideCount - 1 - spec.initialSlide;\n }\n\n var lazyLoadedList = spec.lazyLoadedList || [];\n var slidesToLoad = getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: currentSlide,\n lazyLoadedList: lazyLoadedList\n }));\n lazyLoadedList = lazyLoadedList.concat(slidesToLoad);\n var state = {\n slideCount: slideCount,\n slideWidth: slideWidth,\n listWidth: listWidth,\n trackWidth: trackWidth,\n currentSlide: currentSlide,\n slideHeight: slideHeight,\n listHeight: listHeight,\n lazyLoadedList: lazyLoadedList\n };\n\n if (spec.autoplaying === null && spec.autoplay) {\n state[\"autoplaying\"] = \"playing\";\n }\n\n return state;\n};\n\nexports.initializedState = initializedState;\n\nvar slideHandler = function slideHandler(spec) {\n var waitForAnimate = spec.waitForAnimate,\n animating = spec.animating,\n fade = spec.fade,\n infinite = spec.infinite,\n index = spec.index,\n slideCount = spec.slideCount,\n lazyLoad = spec.lazyLoad,\n currentSlide = spec.currentSlide,\n centerMode = spec.centerMode,\n slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n useCSS = spec.useCSS;\n var lazyLoadedList = spec.lazyLoadedList;\n if (waitForAnimate && animating) return {};\n var animationSlide = index,\n finalSlide,\n animationLeft,\n finalLeft;\n var state = {},\n nextState = {};\n var targetSlide = infinite ? index : clamp(index, 0, slideCount - 1);\n\n if (fade) {\n if (!infinite && (index < 0 || index >= slideCount)) return {};\n\n if (index < 0) {\n animationSlide = index + slideCount;\n } else if (index >= slideCount) {\n animationSlide = index - slideCount;\n }\n\n if (lazyLoad && lazyLoadedList.indexOf(animationSlide) < 0) {\n lazyLoadedList = lazyLoadedList.concat(animationSlide);\n }\n\n state = {\n animating: true,\n currentSlide: animationSlide,\n lazyLoadedList: lazyLoadedList,\n targetSlide: animationSlide\n };\n nextState = {\n animating: false,\n targetSlide: animationSlide\n };\n } else {\n finalSlide = animationSlide;\n\n if (animationSlide < 0) {\n finalSlide = animationSlide + slideCount;\n if (!infinite) finalSlide = 0;else if (slideCount % slidesToScroll !== 0) finalSlide = slideCount - slideCount % slidesToScroll;\n } else if (!canGoNext(spec) && animationSlide > currentSlide) {\n animationSlide = finalSlide = currentSlide;\n } else if (centerMode && animationSlide >= slideCount) {\n animationSlide = infinite ? slideCount : slideCount - 1;\n finalSlide = infinite ? 0 : slideCount - 1;\n } else if (animationSlide >= slideCount) {\n finalSlide = animationSlide - slideCount;\n if (!infinite) finalSlide = slideCount - slidesToShow;else if (slideCount % slidesToScroll !== 0) finalSlide = 0;\n }\n\n if (!infinite && animationSlide + slidesToShow >= slideCount) {\n finalSlide = slideCount - slidesToShow;\n }\n\n animationLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: animationSlide\n }));\n finalLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: finalSlide\n }));\n\n if (!infinite) {\n if (animationLeft === finalLeft) animationSlide = finalSlide;\n animationLeft = finalLeft;\n }\n\n if (lazyLoad) {\n lazyLoadedList = lazyLoadedList.concat(getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: animationSlide\n })));\n }\n\n if (!useCSS) {\n state = {\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n } else {\n state = {\n animating: true,\n currentSlide: finalSlide,\n trackStyle: getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: animationLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n nextState = {\n animating: false,\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n swipeLeft: null,\n targetSlide: targetSlide\n };\n }\n }\n\n return {\n state: state,\n nextState: nextState\n };\n};\n\nexports.slideHandler = slideHandler;\n\nvar changeSlide = function changeSlide(spec, options) {\n var indexOffset, previousInt, slideOffset, unevenOffset, targetSlide;\n var slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n slideCount = spec.slideCount,\n currentSlide = spec.currentSlide,\n previousTargetSlide = spec.targetSlide,\n lazyLoad = spec.lazyLoad,\n infinite = spec.infinite;\n unevenOffset = slideCount % slidesToScroll !== 0;\n indexOffset = unevenOffset ? 0 : (slideCount - currentSlide) % slidesToScroll;\n\n if (options.message === \"previous\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : slidesToShow - indexOffset;\n targetSlide = currentSlide - slideOffset;\n\n if (lazyLoad && !infinite) {\n previousInt = currentSlide - slideOffset;\n targetSlide = previousInt === -1 ? slideCount - 1 : previousInt;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide - slidesToScroll;\n }\n } else if (options.message === \"next\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : indexOffset;\n targetSlide = currentSlide + slideOffset;\n\n if (lazyLoad && !infinite) {\n targetSlide = (currentSlide + slidesToScroll) % slideCount + indexOffset;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide + slidesToScroll;\n }\n } else if (options.message === \"dots\") {\n // Click on dots\n targetSlide = options.index * options.slidesToScroll;\n } else if (options.message === \"children\") {\n // Click on the slides\n targetSlide = options.index;\n\n if (infinite) {\n var direction = siblingDirection(_objectSpread(_objectSpread({}, spec), {}, {\n targetSlide: targetSlide\n }));\n\n if (targetSlide > options.currentSlide && direction === \"left\") {\n targetSlide = targetSlide - slideCount;\n } else if (targetSlide < options.currentSlide && direction === \"right\") {\n targetSlide = targetSlide + slideCount;\n }\n }\n } else if (options.message === \"index\") {\n targetSlide = Number(options.index);\n }\n\n return targetSlide;\n};\n\nexports.changeSlide = changeSlide;\n\nvar keyHandler = function keyHandler(e, accessibility, rtl) {\n if (e.target.tagName.match(\"TEXTAREA|INPUT|SELECT\") || !accessibility) return \"\";\n if (e.keyCode === 37) return rtl ? \"next\" : \"previous\";\n if (e.keyCode === 39) return rtl ? \"previous\" : \"next\";\n return \"\";\n};\n\nexports.keyHandler = keyHandler;\n\nvar swipeStart = function swipeStart(e, swipe, draggable) {\n e.target.tagName === \"IMG\" && safePreventDefault(e);\n if (!swipe || !draggable && e.type.indexOf(\"mouse\") !== -1) return \"\";\n return {\n dragging: true,\n touchObject: {\n startX: e.touches ? e.touches[0].pageX : e.clientX,\n startY: e.touches ? e.touches[0].pageY : e.clientY,\n curX: e.touches ? e.touches[0].pageX : e.clientX,\n curY: e.touches ? e.touches[0].pageY : e.clientY\n }\n };\n};\n\nexports.swipeStart = swipeStart;\n\nvar swipeMove = function swipeMove(e, spec) {\n // spec also contains, trackRef and slideIndex\n var scrolling = spec.scrolling,\n animating = spec.animating,\n vertical = spec.vertical,\n swipeToSlide = spec.swipeToSlide,\n verticalSwiping = spec.verticalSwiping,\n rtl = spec.rtl,\n currentSlide = spec.currentSlide,\n edgeFriction = spec.edgeFriction,\n edgeDragged = spec.edgeDragged,\n onEdge = spec.onEdge,\n swiped = spec.swiped,\n swiping = spec.swiping,\n slideCount = spec.slideCount,\n slidesToScroll = spec.slidesToScroll,\n infinite = spec.infinite,\n touchObject = spec.touchObject,\n swipeEvent = spec.swipeEvent,\n listHeight = spec.listHeight,\n listWidth = spec.listWidth;\n if (scrolling) return;\n if (animating) return safePreventDefault(e);\n if (vertical && swipeToSlide && verticalSwiping) safePreventDefault(e);\n var swipeLeft,\n state = {};\n var curLeft = getTrackLeft(spec);\n touchObject.curX = e.touches ? e.touches[0].pageX : e.clientX;\n touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2)));\n var verticalSwipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2)));\n\n if (!verticalSwiping && !swiping && verticalSwipeLength > 10) {\n return {\n scrolling: true\n };\n }\n\n if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength;\n var positionOffset = (!rtl ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1);\n if (verticalSwiping) positionOffset = touchObject.curY > touchObject.startY ? 1 : -1;\n var dotCount = Math.ceil(slideCount / slidesToScroll);\n var swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping);\n var touchSwipeLength = touchObject.swipeLength;\n\n if (!infinite) {\n if (currentSlide === 0 && (swipeDirection === \"right\" || swipeDirection === \"down\") || currentSlide + 1 >= dotCount && (swipeDirection === \"left\" || swipeDirection === \"up\") || !canGoNext(spec) && (swipeDirection === \"left\" || swipeDirection === \"up\")) {\n touchSwipeLength = touchObject.swipeLength * edgeFriction;\n\n if (edgeDragged === false && onEdge) {\n onEdge(swipeDirection);\n state[\"edgeDragged\"] = true;\n }\n }\n }\n\n if (!swiped && swipeEvent) {\n swipeEvent(swipeDirection);\n state[\"swiped\"] = true;\n }\n\n if (!vertical) {\n if (!rtl) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n } else {\n swipeLeft = curLeft - touchSwipeLength * positionOffset;\n }\n } else {\n swipeLeft = curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset;\n }\n\n if (verticalSwiping) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n }\n\n state = _objectSpread(_objectSpread({}, state), {}, {\n touchObject: touchObject,\n swipeLeft: swipeLeft,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: swipeLeft\n }))\n });\n\n if (Math.abs(touchObject.curX - touchObject.startX) < Math.abs(touchObject.curY - touchObject.startY) * 0.8) {\n return state;\n }\n\n if (touchObject.swipeLength > 10) {\n state[\"swiping\"] = true;\n safePreventDefault(e);\n }\n\n return state;\n};\n\nexports.swipeMove = swipeMove;\n\nvar swipeEnd = function swipeEnd(e, spec) {\n var dragging = spec.dragging,\n swipe = spec.swipe,\n touchObject = spec.touchObject,\n listWidth = spec.listWidth,\n touchThreshold = spec.touchThreshold,\n verticalSwiping = spec.verticalSwiping,\n listHeight = spec.listHeight,\n swipeToSlide = spec.swipeToSlide,\n scrolling = spec.scrolling,\n onSwipe = spec.onSwipe,\n targetSlide = spec.targetSlide,\n currentSlide = spec.currentSlide,\n infinite = spec.infinite;\n\n if (!dragging) {\n if (swipe) safePreventDefault(e);\n return {};\n }\n\n var minSwipe = verticalSwiping ? listHeight / touchThreshold : listWidth / touchThreshold;\n var swipeDirection = getSwipeDirection(touchObject, verticalSwiping); // reset the state of touch related state variables.\n\n var state = {\n dragging: false,\n edgeDragged: false,\n scrolling: false,\n swiping: false,\n swiped: false,\n swipeLeft: null,\n touchObject: {}\n };\n\n if (scrolling) {\n return state;\n }\n\n if (!touchObject.swipeLength) {\n return state;\n }\n\n if (touchObject.swipeLength > minSwipe) {\n safePreventDefault(e);\n\n if (onSwipe) {\n onSwipe(swipeDirection);\n }\n\n var slideCount, newSlide;\n var activeSlide = infinite ? currentSlide : targetSlide;\n\n switch (swipeDirection) {\n case \"left\":\n case \"up\":\n newSlide = activeSlide + getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 0;\n break;\n\n case \"right\":\n case \"down\":\n newSlide = activeSlide - getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 1;\n break;\n\n default:\n slideCount = activeSlide;\n }\n\n state[\"triggerSlideHandler\"] = slideCount;\n } else {\n // Adjust the track back to it's original position.\n var currentLeft = getTrackLeft(spec);\n state[\"trackStyle\"] = getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: currentLeft\n }));\n }\n\n return state;\n};\n\nexports.swipeEnd = swipeEnd;\n\nvar getNavigableIndexes = function getNavigableIndexes(spec) {\n var max = spec.infinite ? spec.slideCount * 2 : spec.slideCount;\n var breakpoint = spec.infinite ? spec.slidesToShow * -1 : 0;\n var counter = spec.infinite ? spec.slidesToShow * -1 : 0;\n var indexes = [];\n\n while (breakpoint < max) {\n indexes.push(breakpoint);\n breakpoint = counter + spec.slidesToScroll;\n counter += Math.min(spec.slidesToScroll, spec.slidesToShow);\n }\n\n return indexes;\n};\n\nexports.getNavigableIndexes = getNavigableIndexes;\n\nvar checkNavigable = function checkNavigable(spec, index) {\n var navigables = getNavigableIndexes(spec);\n var prevNavigable = 0;\n\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (var n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n\n prevNavigable = navigables[n];\n }\n }\n\n return index;\n};\n\nexports.checkNavigable = checkNavigable;\n\nvar getSlideCount = function getSlideCount(spec) {\n var centerOffset = spec.centerMode ? spec.slideWidth * Math.floor(spec.slidesToShow / 2) : 0;\n\n if (spec.swipeToSlide) {\n var swipedSlide;\n var slickList = spec.listRef;\n var slides = slickList.querySelectorAll && slickList.querySelectorAll(\".slick-slide\") || [];\n Array.from(slides).every(function (slide) {\n if (!spec.vertical) {\n if (slide.offsetLeft - centerOffset + getWidth(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n } else {\n if (slide.offsetTop + getHeight(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n }\n\n return true;\n });\n\n if (!swipedSlide) {\n return 0;\n }\n\n var currentIndex = spec.rtl === true ? spec.slideCount - spec.currentSlide : spec.currentSlide;\n var slidesTraversed = Math.abs(swipedSlide.dataset.index - currentIndex) || 1;\n return slidesTraversed;\n } else {\n return spec.slidesToScroll;\n }\n};\n\nexports.getSlideCount = getSlideCount;\n\nvar checkSpecKeys = function checkSpecKeys(spec, keysArray) {\n return keysArray.reduce(function (value, key) {\n return value && spec.hasOwnProperty(key);\n }, true) ? null : console.error(\"Keys Missing:\", spec);\n};\n\nexports.checkSpecKeys = checkSpecKeys;\n\nvar getTrackCSS = function getTrackCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\"]);\n var trackWidth, trackHeight;\n var trackChildren = spec.slideCount + 2 * spec.slidesToShow;\n\n if (!spec.vertical) {\n trackWidth = getTotalSlides(spec) * spec.slideWidth;\n } else {\n trackHeight = trackChildren * spec.slideHeight;\n }\n\n var style = {\n opacity: 1,\n transition: \"\",\n WebkitTransition: \"\"\n };\n\n if (spec.useTransform) {\n var WebkitTransform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var transform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var msTransform = !spec.vertical ? \"translateX(\" + spec.left + \"px)\" : \"translateY(\" + spec.left + \"px)\";\n style = _objectSpread(_objectSpread({}, style), {}, {\n WebkitTransform: WebkitTransform,\n transform: transform,\n msTransform: msTransform\n });\n } else {\n if (spec.vertical) {\n style[\"top\"] = spec.left;\n } else {\n style[\"left\"] = spec.left;\n }\n }\n\n if (spec.fade) style = {\n opacity: 1\n };\n if (trackWidth) style.width = trackWidth;\n if (trackHeight) style.height = trackHeight; // Fallback for IE8\n\n if (window && !window.addEventListener && window.attachEvent) {\n if (!spec.vertical) {\n style.marginLeft = spec.left + \"px\";\n } else {\n style.marginTop = spec.left + \"px\";\n }\n }\n\n return style;\n};\n\nexports.getTrackCSS = getTrackCSS;\n\nvar getTrackAnimateCSS = function getTrackAnimateCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\", \"speed\", \"cssEase\"]);\n var style = getTrackCSS(spec); // useCSS is true by default so it can be undefined\n\n if (spec.useTransform) {\n style.WebkitTransition = \"-webkit-transform \" + spec.speed + \"ms \" + spec.cssEase;\n style.transition = \"transform \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n if (spec.vertical) {\n style.transition = \"top \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n style.transition = \"left \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\n\nexports.getTrackAnimateCSS = getTrackAnimateCSS;\n\nvar getTrackLeft = function getTrackLeft(spec) {\n if (spec.unslick) {\n return 0;\n }\n\n checkSpecKeys(spec, [\"slideIndex\", \"trackRef\", \"infinite\", \"centerMode\", \"slideCount\", \"slidesToShow\", \"slidesToScroll\", \"slideWidth\", \"listWidth\", \"variableWidth\", \"slideHeight\"]);\n var slideIndex = spec.slideIndex,\n trackRef = spec.trackRef,\n infinite = spec.infinite,\n centerMode = spec.centerMode,\n slideCount = spec.slideCount,\n slidesToShow = spec.slidesToShow,\n slidesToScroll = spec.slidesToScroll,\n slideWidth = spec.slideWidth,\n listWidth = spec.listWidth,\n variableWidth = spec.variableWidth,\n slideHeight = spec.slideHeight,\n fade = spec.fade,\n vertical = spec.vertical;\n var slideOffset = 0;\n var targetLeft;\n var targetSlide;\n var verticalOffset = 0;\n\n if (fade || spec.slideCount === 1) {\n return 0;\n }\n\n var slidesToOffset = 0;\n\n if (infinite) {\n slidesToOffset = -getPreClones(spec); // bring active slide to the beginning of visual area\n // if next scroll doesn't have enough children, just reach till the end of original slides instead of shifting slidesToScroll children\n\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = -(slideIndex > slideCount ? slidesToShow - (slideIndex - slideCount) : slideCount % slidesToScroll);\n } // shift current slide to center of the frame\n\n\n if (centerMode) {\n slidesToOffset += parseInt(slidesToShow / 2);\n }\n } else {\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = slidesToShow - slideCount % slidesToScroll;\n }\n\n if (centerMode) {\n slidesToOffset = parseInt(slidesToShow / 2);\n }\n }\n\n slideOffset = slidesToOffset * slideWidth;\n verticalOffset = slidesToOffset * slideHeight;\n\n if (!vertical) {\n targetLeft = slideIndex * slideWidth * -1 + slideOffset;\n } else {\n targetLeft = slideIndex * slideHeight * -1 + verticalOffset;\n }\n\n if (variableWidth === true) {\n var targetSlideIndex;\n var trackElem = trackRef && trackRef.node;\n targetSlideIndex = slideIndex + getPreClones(spec);\n targetSlide = trackElem && trackElem.childNodes[targetSlideIndex];\n targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;\n\n if (centerMode === true) {\n targetSlideIndex = infinite ? slideIndex + getPreClones(spec) : slideIndex;\n targetSlide = trackElem && trackElem.children[targetSlideIndex];\n targetLeft = 0;\n\n for (var slide = 0; slide < targetSlideIndex; slide++) {\n targetLeft -= trackElem && trackElem.children[slide] && trackElem.children[slide].offsetWidth;\n }\n\n targetLeft -= parseInt(spec.centerPadding);\n targetLeft += targetSlide && (listWidth - targetSlide.offsetWidth) / 2;\n }\n }\n\n return targetLeft;\n};\n\nexports.getTrackLeft = getTrackLeft;\n\nvar getPreClones = function getPreClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n if (spec.variableWidth) {\n return spec.slideCount;\n }\n\n return spec.slidesToShow + (spec.centerMode ? 1 : 0);\n};\n\nexports.getPreClones = getPreClones;\n\nvar getPostClones = function getPostClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n return spec.slideCount;\n};\n\nexports.getPostClones = getPostClones;\n\nvar getTotalSlides = function getTotalSlides(spec) {\n return spec.slideCount === 1 ? 1 : getPreClones(spec) + spec.slideCount + getPostClones(spec);\n};\n\nexports.getTotalSlides = getTotalSlides;\n\nvar siblingDirection = function siblingDirection(spec) {\n if (spec.targetSlide > spec.currentSlide) {\n if (spec.targetSlide > spec.currentSlide + slidesOnRight(spec)) {\n return \"left\";\n }\n\n return \"right\";\n } else {\n if (spec.targetSlide < spec.currentSlide - slidesOnLeft(spec)) {\n return \"right\";\n }\n\n return \"left\";\n }\n};\n\nexports.siblingDirection = siblingDirection;\n\nvar slidesOnRight = function slidesOnRight(_ref) {\n var slidesToShow = _ref.slidesToShow,\n centerMode = _ref.centerMode,\n rtl = _ref.rtl,\n centerPadding = _ref.centerPadding;\n\n // returns no of slides on the right of active slide\n if (centerMode) {\n var right = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) right += 1;\n if (rtl && slidesToShow % 2 === 0) right += 1;\n return right;\n }\n\n if (rtl) {\n return 0;\n }\n\n return slidesToShow - 1;\n};\n\nexports.slidesOnRight = slidesOnRight;\n\nvar slidesOnLeft = function slidesOnLeft(_ref2) {\n var slidesToShow = _ref2.slidesToShow,\n centerMode = _ref2.centerMode,\n rtl = _ref2.rtl,\n centerPadding = _ref2.centerPadding;\n\n // returns no of slides on the left of active slide\n if (centerMode) {\n var left = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) left += 1;\n if (!rtl && slidesToShow % 2 === 0) left += 1;\n return left;\n }\n\n if (rtl) {\n return slidesToShow - 1;\n }\n\n return 0;\n};\n\nexports.slidesOnLeft = slidesOnLeft;\n\nvar canUseDOM = function canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n};\n\nexports.canUseDOM = canUseDOM;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n return _react2.default.createElement(\n 'svg',\n { width: '14', height: '11', viewBox: '0 0 14 11' },\n _react2.default.createElement('path', { d: 'M11.264 0L5.26 6.004 2.103 2.847 0 4.95l5.26 5.26 8.108-8.107L11.264 0', fill: '#fff', fillRule: 'evenodd' })\n );\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _check = require('./check');\n\nvar _check2 = _interopRequireDefault(_check);\n\nvar _x = require('./x');\n\nvar _x2 = _interopRequireDefault(_x);\n\nvar _util = require('./util');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Toggle = function (_PureComponent) {\n _inherits(Toggle, _PureComponent);\n\n function Toggle(props) {\n _classCallCheck(this, Toggle);\n\n var _this = _possibleConstructorReturn(this, (Toggle.__proto__ || Object.getPrototypeOf(Toggle)).call(this, props));\n\n _this.handleClick = _this.handleClick.bind(_this);\n _this.handleTouchStart = _this.handleTouchStart.bind(_this);\n _this.handleTouchMove = _this.handleTouchMove.bind(_this);\n _this.handleTouchEnd = _this.handleTouchEnd.bind(_this);\n _this.handleFocus = _this.handleFocus.bind(_this);\n _this.handleBlur = _this.handleBlur.bind(_this);\n _this.previouslyChecked = !!(props.checked || props.defaultChecked);\n _this.state = {\n checked: !!(props.checked || props.defaultChecked),\n hasFocus: false\n };\n return _this;\n }\n\n _createClass(Toggle, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (prevProps.checked !== this.props.checked) {\n // Disable linting rule here since this usage of setState inside\n // componentDidUpdate is OK; see\n // https://reactjs.org/docs/react-component.html#componentdidupdate\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ checked: !!this.props.checked });\n }\n }\n }, {\n key: 'handleClick',\n value: function handleClick(event) {\n if (this.props.disabled) {\n return;\n }\n var checkbox = this.input;\n if (event.target !== checkbox && !this.moved) {\n this.previouslyChecked = checkbox.checked;\n event.preventDefault();\n checkbox.focus();\n checkbox.click();\n return;\n }\n\n var checked = this.props.hasOwnProperty('checked') ? this.props.checked : checkbox.checked;\n\n this.setState({ checked: checked });\n }\n }, {\n key: 'handleTouchStart',\n value: function handleTouchStart(event) {\n if (this.props.disabled) {\n return;\n }\n this.startX = (0, _util.pointerCoord)(event).x;\n this.activated = true;\n }\n }, {\n key: 'handleTouchMove',\n value: function handleTouchMove(event) {\n if (!this.activated) return;\n this.moved = true;\n\n if (this.startX) {\n var currentX = (0, _util.pointerCoord)(event).x;\n if (this.state.checked && currentX + 15 < this.startX) {\n this.setState({ checked: false });\n this.startX = currentX;\n this.activated = true;\n } else if (currentX - 15 > this.startX) {\n this.setState({ checked: true });\n this.startX = currentX;\n this.activated = currentX < this.startX + 5;\n }\n }\n }\n }, {\n key: 'handleTouchEnd',\n value: function handleTouchEnd(event) {\n if (!this.moved) return;\n var checkbox = this.input;\n event.preventDefault();\n\n if (this.startX) {\n var endX = (0, _util.pointerCoord)(event).x;\n if (this.previouslyChecked === true && this.startX + 4 > endX) {\n if (this.previouslyChecked !== this.state.checked) {\n this.setState({ checked: false });\n this.previouslyChecked = this.state.checked;\n checkbox.click();\n }\n } else if (this.startX - 4 < endX) {\n if (this.previouslyChecked !== this.state.checked) {\n this.setState({ checked: true });\n this.previouslyChecked = this.state.checked;\n checkbox.click();\n }\n }\n\n this.activated = false;\n this.startX = null;\n this.moved = false;\n }\n }\n }, {\n key: 'handleFocus',\n value: function handleFocus(event) {\n var onFocus = this.props.onFocus;\n\n\n if (onFocus) {\n onFocus(event);\n }\n\n this.setState({ hasFocus: true });\n }\n }, {\n key: 'handleBlur',\n value: function handleBlur(event) {\n var onBlur = this.props.onBlur;\n\n\n if (onBlur) {\n onBlur(event);\n }\n\n this.setState({ hasFocus: false });\n }\n }, {\n key: 'getIcon',\n value: function getIcon(type) {\n var icons = this.props.icons;\n\n if (!icons) {\n return null;\n }\n return icons[type] === undefined ? Toggle.defaultProps.icons[type] : icons[type];\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n className = _props.className,\n _icons = _props.icons,\n inputProps = _objectWithoutProperties(_props, ['className', 'icons']);\n\n var classes = (0, _classnames2.default)('react-toggle', {\n 'react-toggle--checked': this.state.checked,\n 'react-toggle--focus': this.state.hasFocus,\n 'react-toggle--disabled': this.props.disabled\n }, className);\n\n return _react2.default.createElement(\n 'div',\n { className: classes,\n onClick: this.handleClick,\n onTouchStart: this.handleTouchStart,\n onTouchMove: this.handleTouchMove,\n onTouchEnd: this.handleTouchEnd },\n _react2.default.createElement(\n 'div',\n { className: 'react-toggle-track' },\n _react2.default.createElement(\n 'div',\n { className: 'react-toggle-track-check' },\n this.getIcon('checked')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'react-toggle-track-x' },\n this.getIcon('unchecked')\n )\n ),\n _react2.default.createElement('div', { className: 'react-toggle-thumb' }),\n _react2.default.createElement('input', _extends({}, inputProps, {\n ref: function ref(_ref) {\n _this2.input = _ref;\n },\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n className: 'react-toggle-screenreader-only',\n type: 'checkbox' }))\n );\n }\n }]);\n\n return Toggle;\n}(_react.PureComponent);\n\nexports.default = Toggle;\n\n\nToggle.displayName = 'Toggle';\n\nToggle.defaultProps = {\n icons: {\n checked: _react2.default.createElement(_check2.default, null),\n unchecked: _react2.default.createElement(_x2.default, null)\n }\n};\n\nToggle.propTypes = {\n checked: _propTypes2.default.bool,\n disabled: _propTypes2.default.bool,\n defaultChecked: _propTypes2.default.bool,\n onChange: _propTypes2.default.func,\n onFocus: _propTypes2.default.func,\n onBlur: _propTypes2.default.func,\n className: _propTypes2.default.string,\n name: _propTypes2.default.string,\n value: _propTypes2.default.string,\n id: _propTypes2.default.string,\n 'aria-labelledby': _propTypes2.default.string,\n 'aria-label': _propTypes2.default.string,\n icons: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.shape({\n checked: _propTypes2.default.node,\n unchecked: _propTypes2.default.node\n })])\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.pointerCoord = pointerCoord;\n// Copyright 2015-present Drifty Co.\n// http://drifty.com/\n// from: https://github.com/driftyco/ionic/blob/master/src/util/dom.ts\n\nfunction pointerCoord(event) {\n // get coordinates for either a mouse click\n // or a touch depending on the given event\n if (event) {\n var changedTouches = event.changedTouches;\n if (changedTouches && changedTouches.length > 0) {\n var touch = changedTouches[0];\n return { x: touch.clientX, y: touch.clientY };\n }\n var pageX = event.pageX;\n if (pageX !== undefined) {\n return { x: pageX, y: event.pageY };\n }\n }\n return { x: 0, y: 0 };\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n return _react2.default.createElement(\n 'svg',\n { width: '10', height: '10', viewBox: '0 0 10 10' },\n _react2.default.createElement('path', { d: 'M9.9 2.12L7.78 0 4.95 2.828 2.12 0 0 2.12l2.83 2.83L0 7.776 2.123 9.9 4.95 7.07 7.78 9.9 9.9 7.776 7.072 4.95 9.9 2.12', fill: '#fff', fillRule: 'evenodd' })\n );\n};","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","(function (global, factory) {\r\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\n typeof define === 'function' && define.amd ? define(factory) :\r\n (global.ResizeObserver = factory());\r\n}(this, (function () { 'use strict';\r\n\r\n/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n return result;\r\n }\r\n\r\n return (function () {\r\n function anonymous() {\r\n this.__entries__ = [];\r\n }\r\n\r\n var prototypeAccessors = { size: { configurable: true } };\r\n\r\n /**\r\n * @returns {boolean}\r\n */\r\n prototypeAccessors.size.get = function () {\r\n return this.__entries__.length;\r\n };\r\n\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n anonymous.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n\r\n return entry && entry[1];\r\n };\r\n\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n anonymous.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n } else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n anonymous.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n anonymous.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n\r\n /**\r\n * @returns {void}\r\n */\r\n anonymous.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n anonymous.prototype.forEach = function (callback, ctx) {\r\n var this$1 = this;\r\n if ( ctx === void 0 ) ctx = null;\r\n\r\n for (var i = 0, list = this$1.__entries__; i < list.length; i += 1) {\r\n var entry = list[i];\r\n\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n\r\n Object.defineProperties( anonymous.prototype, prototypeAccessors );\r\n\r\n return anonymous;\r\n }());\r\n})();\r\n\r\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\r\n\r\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\r\n\r\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\r\n\r\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nvar throttle = function (callback, delay) {\r\n var leadingCall = false,\r\n trailingCall = false,\r\n lastCallTime = 0;\r\n\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n\r\n callback();\r\n }\r\n\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n } else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n\r\n lastCallTime = timeStamp;\r\n }\r\n\r\n return proxy;\r\n};\r\n\r\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = function() {\r\n this.connected_ = false;\r\n this.mutationEventsAdded_ = false;\r\n this.mutationsObserver_ = null;\r\n this.observers_ = [];\r\n\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n};\r\n\r\n/**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n\r\n\r\n/**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n\r\n\r\n/**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n\r\n/**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\nResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n};\r\n\r\n/**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\nResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n};\r\n\r\n/**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\nResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n};\r\n\r\n/**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\nResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n\r\n return activeObservers.length > 0;\r\n};\r\n\r\n/**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\nResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n\r\n window.addEventListener('resize', this.refresh);\r\n\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n } else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n\r\n this.mutationEventsAdded_ = true;\r\n }\r\n\r\n this.connected_ = true;\r\n};\r\n\r\n/**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\nResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n};\r\n\r\n/**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\nResizeObserverController.prototype.onTransitionEnd_ = function (ref) {\r\n var propertyName = ref.propertyName; if ( propertyName === void 0 ) propertyName = '';\r\n\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n};\r\n\r\n/**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\nResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n\r\n return this.instance_;\r\n};\r\n\r\nResizeObserverController.instance_ = null;\r\n\r\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var i = 0, list = Object.keys(props); i < list.length; i += 1) {\r\n var key = list[i];\r\n\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n\r\n return target;\r\n});\r\n\r\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\r\n\r\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [], len = arguments.length - 1;\r\n while ( len-- > 0 ) positions[ len ] = arguments[ len + 1 ];\r\n\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n\r\n for (var i = 0, list = positions; i < list.length; i += 1) {\r\n var position = list[i];\r\n\r\n var value = styles['padding-' + position];\r\n\r\n paddings[position] = toFloat(value);\r\n }\r\n\r\n return paddings;\r\n}\r\n\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth;\r\n var clientHeight = target.clientHeight;\r\n\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width),\r\n height = toFloat(styles.height);\r\n\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === 'function'; };\r\n})();\r\n\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n\r\n return getHTMLElementContentRect(target);\r\n}\r\n\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(ref) {\r\n var x = ref.x;\r\n var y = ref.y;\r\n var width = ref.width;\r\n var height = ref.height;\r\n\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n\r\n return rect;\r\n}\r\n\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\r\n\r\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = function(target) {\r\n this.broadcastWidth = 0;\r\n this.broadcastHeight = 0;\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n\r\n this.target = target;\r\n};\r\n\r\n/**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n\r\n\r\n/**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n\r\n\r\n/**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\nResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n\r\n this.contentRect_ = rect;\r\n\r\n return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight;\r\n};\r\n\r\n/**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\nResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n\r\n return rect;\r\n};\r\n\r\nvar ResizeObserverEntry = function(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n};\r\n\r\nvar ResizeObserverSPI = function(callback, controller, callbackCtx) {\r\n this.activeObservations_ = [];\r\n this.observations_ = new MapShim();\r\n\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n};\r\n\r\n/**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n\r\n\r\n/**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n\r\n\r\n/**\r\n * Public ResizeObserver instance which will be passed to the callback\r\n * function and used as a value of it's \"this\" binding.\r\n *\r\n * @private {ResizeObserver}\r\n */\r\n\r\n/**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\nResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n\r\n var observations = this.observations_;\r\n\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n\r\n observations.set(target, new ResizeObservation(target));\r\n\r\n this.controller_.addObserver(this);\r\n\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n};\r\n\r\n/**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\nResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n\r\n var observations = this.observations_;\r\n\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n\r\n observations.delete(target);\r\n\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n};\r\n\r\n/**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\nResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n};\r\n\r\n/**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\nResizeObserverSPI.prototype.gatherActive = function () {\r\n var this$1 = this;\r\n\r\n this.clearActive();\r\n\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n this$1.activeObservations_.push(observation);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\nResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n\r\n var ctx = this.callbackCtx_;\r\n\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n};\r\n\r\n/**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\nResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n};\r\n\r\n/**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\nResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n};\r\n\r\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = function(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n\r\n observers.set(this, observer);\r\n};\r\n\r\n// Expose public methods of ResizeObserver.\r\n['observe', 'unobserve', 'disconnect'].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n return (ref = observers.get(this))[method].apply(ref, arguments);\r\n var ref;\r\n };\r\n});\r\n\r\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n\r\n global$1.ResizeObserver = ResizeObserver;\r\n\r\n return ResizeObserver;\r\n})();\r\n\r\nreturn index;\r\n\r\n})));\r\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","var camel2hyphen = function (str) {\n return str\n .replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n })\n .toLowerCase();\n};\n\nmodule.exports = camel2hyphen;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"embed\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true\n};\n","var map = {\n\t\"./brefresh.png\": 6213,\n\t\"./casino.png\": 7987,\n\t\"./close.png\": 6603,\n\t\"./close_20.png\": 1865,\n\t\"./drm.png\": 8190,\n\t\"./icon_01.png\": 1235,\n\t\"./img_S.png\": 2295,\n\t\"./img_sample.png\": 6048,\n\t\"./logo.png\": 867,\n\t\"./main_banner_bg1.jpg\": 2591,\n\t\"./main_banner_bg2.jpg\": 702,\n\t\"./main_icon.png\": 4498,\n\t\"./main_icon2.png\": 5792,\n\t\"./main_icon3.png\": 7146,\n\t\"./mark_blue.png\": 7297,\n\t\"./reload.png\": 2774,\n\t\"./speech_bubble.png\": 1514,\n\t\"./view_off.png\": 4144,\n\t\"./view_on.png\": 5579,\n\t\"./welcole.png\": 6072,\n\t\"./welcome.png\": 26,\n\t\"./wrefresh.png\": 6180\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 3098;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"df93131900cbcc00347b\" + \".1713179789357.chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"kdream-front:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"https://k-dream.net/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkkdream_front\"] = self[\"webpackChunkkdream_front\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nlet batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport const setBatch = newBatch => batch = newBatch; // Supply a getter just to skip dealing with ESM bindings\n\nexport const getBatch = () => batch;","import * as React from 'react';\nconst ContextKey = Symbol.for(`react-redux-context`);\nconst gT = typeof globalThis !== \"undefined\" ? globalThis :\n/* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */\n{};\n\nfunction getContext() {\n var _gT$ContextKey;\n\n if (!React.createContext) return {};\n const contextMap = (_gT$ContextKey = gT[ContextKey]) != null ? _gT$ContextKey : gT[ContextKey] = new Map();\n let realContext = contextMap.get(React.createContext);\n\n if (!realContext) {\n realContext = React.createContext(null);\n\n if (process.env.NODE_ENV !== 'production') {\n realContext.displayName = 'ReactRedux';\n }\n\n contextMap.set(React.createContext, realContext);\n }\n\n return realContext;\n}\n\nexport const ReactReduxContext = /*#__PURE__*/getContext();\nexport default ReactReduxContext;","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n\n/**\n * Hook factory, which creates a `useReduxContext` hook bound to a given context. This is a low-level\n * hook that you should usually not need to call directly.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useReduxContext` hook bound to the specified context.\n */\nexport function createReduxContextHook(context = ReactReduxContext) {\n return function useReduxContext() {\n const contextValue = useContext(context);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a ');\n }\n\n return contextValue;\n };\n}\n/**\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\n * hook that you should usually not need to call directly.\n *\n * @returns {any} the value of the `ReactReduxContext`\n *\n * @example\n *\n * import React from 'react'\n * import { useReduxContext } from 'react-redux'\n *\n * export const CounterComponent = () => {\n * const { store } = useReduxContext()\n * return
{store.getState()}
\n * }\n */\n\nexport const useReduxContext = /*#__PURE__*/createReduxContextHook();","import { useCallback, useDebugValue, useRef } from 'react';\nimport { createReduxContextHook, useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { ReactReduxContext } from '../components/Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStoreWithSelector = notInitialized;\nexport const initializeUseSelector = fn => {\n useSyncExternalStoreWithSelector = fn;\n};\n\nconst refEquality = (a, b) => a === b;\n/**\n * Hook factory, which creates a `useSelector` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useSelector` hook bound to the specified context.\n */\n\n\nexport function createSelectorHook(context = ReactReduxContext) {\n const useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : createReduxContextHook(context);\n return function useSelector(selector, equalityFnOrOptions = {}) {\n const {\n equalityFn = refEquality,\n stabilityCheck = undefined,\n noopCheck = undefined\n } = typeof equalityFnOrOptions === 'function' ? {\n equalityFn: equalityFnOrOptions\n } : equalityFnOrOptions;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(`You must pass a selector to useSelector`);\n }\n\n if (typeof selector !== 'function') {\n throw new Error(`You must pass a function as a selector to useSelector`);\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(`You must pass a function as an equality function to useSelector`);\n }\n }\n\n const {\n store,\n subscription,\n getServerState,\n stabilityCheck: globalStabilityCheck,\n noopCheck: globalNoopCheck\n } = useReduxContext();\n const firstRun = useRef(true);\n const wrappedSelector = useCallback({\n [selector.name](state) {\n const selected = selector(state);\n\n if (process.env.NODE_ENV !== 'production') {\n const finalStabilityCheck = typeof stabilityCheck === 'undefined' ? globalStabilityCheck : stabilityCheck;\n\n if (finalStabilityCheck === 'always' || finalStabilityCheck === 'once' && firstRun.current) {\n const toCompare = selector(state);\n\n if (!equalityFn(selected, toCompare)) {\n console.warn('Selector ' + (selector.name || 'unknown') + ' returned a different result when called with the same parameters. This can lead to unnecessary rerenders.' + '\\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization', {\n state,\n selected,\n selected2: toCompare\n });\n }\n }\n\n const finalNoopCheck = typeof noopCheck === 'undefined' ? globalNoopCheck : noopCheck;\n\n if (finalNoopCheck === 'always' || finalNoopCheck === 'once' && firstRun.current) {\n // @ts-ignore\n if (selected === state) {\n console.warn('Selector ' + (selector.name || 'unknown') + ' returned the root state when called. This can lead to unnecessary rerenders.' + '\\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.');\n }\n }\n\n if (firstRun.current) firstRun.current = false;\n }\n\n return selected;\n }\n\n }[selector.name], [selector, globalStabilityCheck, stabilityCheck]);\n const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, wrappedSelector, equalityFn);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\n * A hook to access the redux store's state. This hook takes a selector function\n * as an argument. The selector is called with the store state.\n *\n * This hook takes an optional equality comparison function as the second parameter\n * that allows you to customize the way the selected state is compared to determine\n * whether the component needs to be re-rendered.\n *\n * @param {Function} selector the selector function\n * @param {Function=} equalityFn the function that will be used to determine equality\n *\n * @returns {any} the selected state\n *\n * @example\n *\n * import React from 'react'\n * import { useSelector } from 'react-redux'\n *\n * export const CounterComponent = () => {\n * const counter = useSelector(state => state.counter)\n * return
{counter}
\n * }\n */\n\nexport const useSelector = /*#__PURE__*/createSelectorHook();","export const notInitialized = () => {\n throw new Error('uSES not initialized!');\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n const batch = getBatch();\n let first = null;\n let last = null;\n return {\n clear() {\n first = null;\n last = null;\n },\n\n notify() {\n batch(() => {\n let listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n\n get() {\n let listeners = [];\n let listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n\n subscribe(callback) {\n let isSubscribed = true;\n let listener = last = {\n callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n\n };\n}\n\nconst nullListeners = {\n notify() {},\n\n get: () => []\n};\nexport function createSubscription(store, parentSub) {\n let unsubscribe;\n let listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n const subscription = {\n addNestedSub,\n notifyNestedSubs,\n handleChangeWrapper,\n isSubscribed,\n trySubscribe,\n tryUnsubscribe,\n getListeners: () => listeners\n };\n return subscription;\n}","import * as React from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n// Matches logic in React's `shared/ExecutionEnvironment` file\n\nexport const canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\nexport const useIsomorphicLayoutEffect = canUseDOM ? React.useLayoutEffect : React.useEffect;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"reactReduxForwardedRef\"];\n\n/* eslint-disable valid-jsdoc, @typescript-eslint/no-unused-vars */\nimport hoistStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport defaultSelectorFactory from '../connect/selectorFactory';\nimport { mapDispatchToPropsFactory } from '../connect/mapDispatchToProps';\nimport { mapStateToPropsFactory } from '../connect/mapStateToProps';\nimport { mergePropsFactory } from '../connect/mergeProps';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport shallowEqual from '../utils/shallowEqual';\nimport warning from '../utils/warning';\nimport { ReactReduxContext } from './Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStore = notInitialized;\nexport const initializeConnect = fn => {\n useSyncExternalStore = fn;\n}; // Define some constant arrays just to avoid re-creating these\n\nconst EMPTY_ARRAY = [null, 0];\nconst NO_SUBSCRIPTION_ARRAY = [null, null]; // Attempts to stringify whatever not-really-a-component value we were given\n// for logging in an error message\n\nconst stringifyComponent = Comp => {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\n// This is \"just\" a `useLayoutEffect`, but with two modifications:\n// - we need to fall back to `useEffect` in SSR to avoid annoying warnings\n// - we extract this to a separate function to avoid closing over values\n// and causing memory leaks\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(() => effectFunc(...effectArgs), dependencies);\n} // Effect callback, extracted: assign the latest props values to refs for later usage\n\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, // actualChildProps: unknown,\nchildPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n} // Effect callback, extracted: subscribe to the Redux store or nearest connected ancestor,\n// check for updates after dispatched actions, and trigger re-renders.\n\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, // forceComponentUpdateDispatch: React.Dispatch,\nadditionalSubscribeListener) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return () => {}; // Capture values for checking if and when this component unmounts\n\n let didUnsubscribe = false;\n let lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n const checkForUpdates = () => {\n if (didUnsubscribe || !isMounted.current) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n } // TODO We're currently calling getState ourselves here, rather than letting `uSES` do it\n\n\n const latestStoreState = store.getState();\n let newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // TODO This is hacky and not how `uSES` is meant to be used\n // Trigger the React `useSyncExternalStore` subscriber\n\n additionalSubscribeListener();\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n const unsubscribeWrapper = () => {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n} // Reducer initial state creation for our update reducer\n\n\nconst initStateUpdates = () => EMPTY_ARRAY;\n\nfunction strictEqual(a, b) {\n return a === b;\n}\n/**\n * Infers the type of props that a connector will inject into a component.\n */\n\n\nlet hasWarnedAboutDeprecatedPureOption = false;\n/**\n * Connects a React component to a Redux store.\n *\n * - Without arguments, just wraps the component, without changing the behavior / props\n *\n * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior\n * is to override ownProps (as stated in the docs), so what remains is everything that's\n * not a state or dispatch prop\n *\n * - When 3rd param is passed, we don't know if ownProps propagate and whether they\n * should be valid component props, because it depends on mergeProps implementation.\n * As such, it is the user's responsibility to extend ownProps interface from state or\n * dispatch props or both when applicable\n *\n * @param mapStateToProps A function that extracts values from state\n * @param mapDispatchToProps Setup for dispatching actions\n * @param mergeProps Optional callback to merge state and dispatch props together\n * @param options Options for configuring the connection\n *\n */\n\nfunction connect(mapStateToProps, mapDispatchToProps, mergeProps, {\n // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence.\n // @ts-ignore\n pure,\n areStatesEqual = strictEqual,\n areOwnPropsEqual = shallowEqual,\n areStatePropsEqual = shallowEqual,\n areMergedPropsEqual = shallowEqual,\n // use React's forwardRef to expose a ref of the wrapped component\n forwardRef = false,\n // the context consumer to use\n context = ReactReduxContext\n} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (pure !== undefined && !hasWarnedAboutDeprecatedPureOption) {\n hasWarnedAboutDeprecatedPureOption = true;\n warning('The `pure` option has been removed. `connect` is now always a \"pure/memoized\" component');\n }\n }\n\n const Context = context;\n const initMapStateToProps = mapStateToPropsFactory(mapStateToProps);\n const initMapDispatchToProps = mapDispatchToPropsFactory(mapDispatchToProps);\n const initMergeProps = mergePropsFactory(mergeProps);\n const shouldHandleStateChanges = Boolean(mapStateToProps);\n\n const wrapWithConnect = WrappedComponent => {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(`You must pass a component to the function returned by connect. Instead received ${stringifyComponent(WrappedComponent)}`);\n }\n\n const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n const displayName = `Connect(${wrappedComponentName})`;\n const selectorFactoryOptions = {\n shouldHandleStateChanges,\n displayName,\n wrappedComponentName,\n WrappedComponent,\n // @ts-ignore\n initMapStateToProps,\n // @ts-ignore\n initMapDispatchToProps,\n initMergeProps,\n areStatesEqual,\n areStatePropsEqual,\n areOwnPropsEqual,\n areMergedPropsEqual\n };\n\n function ConnectFunction(props) {\n const [propsContext, reactReduxForwardedRef, wrapperProps] = React.useMemo(() => {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n const {\n reactReduxForwardedRef\n } = props,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]);\n const ContextToUse = React.useMemo(() => {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && // @ts-ignore\n isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n const contextValue = React.useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n const didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n const didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(`Could not find \"store\" in the context of ` + `\"${displayName}\". Either wrap the root component in a , ` + `or pass a custom React context provider to and the corresponding ` + `React context consumer to ${displayName} in connect options.`);\n } // Based on the previous check, one of these must be true\n\n\n const store = didStoreComeFromProps ? props.store : contextValue.store;\n const getServerState = didStoreComeFromContext ? contextValue.getServerState : store.getState;\n const childPropsSelector = React.useMemo(() => {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return defaultSelectorFactory(store.dispatch, selectorFactoryOptions);\n }, [store]);\n const [subscription, notifyNestedSubs] = React.useMemo(() => {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n const subscription = createSubscription(store, didStoreComeFromProps ? undefined : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n const notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]); // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n const overriddenContextValue = React.useMemo(() => {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // Set up refs to coordinate values between the subscription effect and the render logic\n\n const lastChildProps = React.useRef();\n const lastWrapperProps = React.useRef(wrapperProps);\n const childPropsFromStoreUpdate = React.useRef();\n const renderIsScheduled = React.useRef(false);\n const isProcessingDispatch = React.useRef(false);\n const isMounted = React.useRef(false);\n const latestSubscriptionCallbackError = React.useRef();\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n const actualChildPropsSelector = React.useMemo(() => {\n const selector = () => {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n };\n\n return selector;\n }, [store, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n const subscribeForReact = React.useMemo(() => {\n const subscribe = reactListener => {\n if (!subscription) {\n return () => {};\n }\n\n return subscribeUpdates(shouldHandleStateChanges, store, subscription, // @ts-ignore\n childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, reactListener);\n };\n\n return subscribe;\n }, [subscription]);\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, childPropsFromStoreUpdate, notifyNestedSubs]);\n let actualChildProps;\n\n try {\n actualChildProps = useSyncExternalStore( // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing\n subscribeForReact, // TODO This is incredibly hacky. We've already processed the store update and calculated new child props,\n // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`.\n actualChildPropsSelector, getServerState ? () => childPropsSelector(getServerState(), wrapperProps) : actualChildPropsSelector);\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n ;\n err.message += `\\nThe error may be correlated with this previous error:\\n${latestSubscriptionCallbackError.current.stack}\\n\\n`;\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(() => {\n latestSubscriptionCallbackError.current = undefined;\n childPropsFromStoreUpdate.current = undefined;\n lastChildProps.current = actualChildProps;\n }); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n const renderedWrappedComponent = React.useMemo(() => {\n return (\n /*#__PURE__*/\n // @ts-ignore\n React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }))\n );\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n const renderedChild = React.useMemo(() => {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n }\n\n const _Connect = React.memo(ConnectFunction);\n\n // Add a hacky cast to get the right output type\n const Connect = _Connect;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n const _forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n // @ts-ignore\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n\n const forwarded = _forwarded;\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n\n return wrapWithConnect;\n}\n\nexport default connect;","import * as React from 'react';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider({\n store,\n context,\n children,\n serverState,\n stabilityCheck = 'once',\n noopCheck = 'once'\n}) {\n const contextValue = React.useMemo(() => {\n const subscription = createSubscription(store);\n return {\n store,\n subscription,\n getServerState: serverState ? () => serverState : undefined,\n stabilityCheck,\n noopCheck\n };\n }, [store, serverState, stabilityCheck, noopCheck]);\n const previousState = React.useMemo(() => store.getState(), [store]);\n useIsomorphicLayoutEffect(() => {\n const {\n subscription\n } = contextValue;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return () => {\n subscription.tryUnsubscribe();\n subscription.onStateChange = undefined;\n };\n }, [contextValue, previousState]);\n const Context = context || ReactReduxContext; // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype\n\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nexport default Provider;","import { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext, createReduxContextHook } from './useReduxContext';\n/**\n * Hook factory, which creates a `useStore` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useStore` hook bound to the specified context.\n */\n\nexport function createStoreHook(context = ReactReduxContext) {\n const useReduxContext = // @ts-ignore\n context === ReactReduxContext ? useDefaultReduxContext : // @ts-ignore\n createReduxContextHook(context);\n return function useStore() {\n const {\n store\n } = useReduxContext(); // @ts-ignore\n\n return store;\n };\n}\n/**\n * A hook to access the redux store.\n *\n * @returns {any} the redux store\n *\n * @example\n *\n * import React from 'react'\n * import { useStore } from 'react-redux'\n *\n * export const ExampleComponent = () => {\n * const store = useStore()\n * return
{store.getState()}
\n * }\n */\n\nexport const useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useDispatch` hook bound to the specified context.\n */\n\nexport function createDispatchHook(context = ReactReduxContext) {\n const useStore = // @ts-ignore\n context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n const store = useStore(); // @ts-ignore\n\n return store.dispatch;\n };\n}\n/**\n * A hook to access the redux `dispatch` function.\n *\n * @returns {any|function} redux store's `dispatch` function\n *\n * @example\n *\n * import React, { useCallback } from 'react'\n * import { useDispatch } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n * const dispatch = useDispatch()\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\n * return (\n *
\n * {value}\n * \n *
\n * )\n * }\n */\n\nexport const useDispatch = /*#__PURE__*/createDispatchHook();","// The primary entry point assumes we're working with standard ReactDOM/RN, but\n// older versions that do not include `useSyncExternalStore` (React 16.9 - 17.x).\n// Because of that, the useSyncExternalStore compat shim is needed.\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch';\nimport { initializeUseSelector } from './hooks/useSelector';\nimport { initializeConnect } from './components/connect';\ninitializeUseSelector(useSyncExternalStoreWithSelector);\ninitializeConnect(useSyncExternalStore); // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };\nexport * from './exports';","import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\nimport type { RootState, AppDispatch } from './store';\n\n// Use throughout your app instead of plain `useDispatch` and `useSelector`\nexport const useAppDispatch = () => useDispatch();\nexport const useAppSelector: TypedUseSelectorHook = useSelector;\n","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: any;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. May be either a URL or the pieces of a\n * URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { warning, invariant, parsePath } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n reloadDocument?: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on
,\n * useSubmit(), , etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: any;\n}\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n (args: LoaderFunctionArgs): Promise | DataFunctionValue;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs): Promise | DataFunctionValue;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionResult?: DataResult;\n defaultShouldRevalidate: boolean;\n }): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\ntype PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(\n branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname)\n );\n }\n\n return matches;\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explodes _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:(\\w+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"/([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURI(value: string) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (isPathRelative || toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\nexport class ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n error?: Error;\n internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n DataResult,\n DeferredData,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DeferredResult,\n ErrorResult,\n FormEncType,\n FormMethod,\n DetectErrorBoundaryFunction,\n RedirectResult,\n RouteData,\n AgnosticRouteObject,\n Submission,\n SuccessResult,\n AgnosticRouteMatch,\n ShouldRevalidateFunction,\n RouteManifest,\n ImmutableRouteKey,\n ActionFunction,\n LoaderFunction,\n V7_MutationFormMethod,\n V7_FormMethod,\n HTMLFormMethod,\n MutationFormMethod,\n MapRoutePropertiesFunction,\n} from \"./utils\";\nimport {\n ErrorResponse,\n ResultType,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key?: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key?: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_normalizeFormMethod: boolean;\n v7_prependBasename: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (state: RouterState): void;\n}\n\ninterface UseMatchesMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: unknown;\n handle: unknown;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UseMatchesMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_normalizeFormMethod: false,\n v7_prependBasename: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized =\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n !initialMatches.some((m) => m.route.lazy) &&\n // And we have to either have no loaders or have been provided hydrationData\n (!initialMatches.some((m) => m.route.loader) || init.hydrationData != null);\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location);\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(newState: Partial): void {\n state = {\n ...state,\n ...newState,\n };\n subscribers.forEach((subscriber) => subscriber(state));\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n updateState({\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n });\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponse;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n });\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts: { replace?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionData,\n pendingError\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(location, {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n });\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n if (!isUninterruptedRevalidation) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState({\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(state, redirect.result, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getFetcher(key: string): Fetcher {\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath })\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error);\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, submission);\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(key, routeId, path, match, matches, submission);\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error);\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n let fetcher = getSubmittingFetcher(submission, existingFetcher);\n state.fetchers.set(key, fetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n let doneFetcher = getDoneFetcher(undefined);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n return;\n } else {\n fetchRedirectIds.add(key);\n let loadingFetcher = getLoadingFetcher(submission);\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n return startRedirectNavigation(state, actionResult, {\n submission,\n isFetchActionRedirect: true,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n { [match.route.id]: actionResult.data },\n undefined // No need to send through errors since we short circuit above\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(state, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n let didAbortFetchLoads = abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n ...(didAbortFetchLoads || revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n // Put this fetcher into it's loading state\n let loadingFetcher = getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n let doneFetcher = getDoneFetcher(undefined);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(state, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n state.fetchers.delete(key);\n // TODO: In remix, this would reset to IDLE_NAVIGATION if it was a catch -\n // do we need to behave any differently with our non-redirect errors?\n // What if it was a non-redirect Response?\n updateState({\n fetchers: new Map(state.fetchers),\n errors: {\n [boundaryMatch.route.id]: result.error,\n },\n });\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n replace,\n isFetchActionRedirect,\n }: {\n submission?: Submission;\n replace?: boolean;\n isFetchActionRedirect?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(\n state.location,\n redirect.location,\n // TODO: This can be removed once we get rid of useTransition in Remix v2\n {\n _isRedirect: true,\n ...(isFetchActionRedirect ? { _isFetchActionRedirect: true } : {}),\n }\n );\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.reloadDocument) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(redirect.location)) {\n const url = init.history.createURL(redirect.location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(redirect.location);\n } else {\n routerWindow.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let activeSubmission =\n submission || getSubmissionFromNavigation(state.navigation);\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else if (isFetchActionRedirect) {\n // For a fetch action redirect, we kick off a new loading navigation\n // without the fetcher submission, but we send it along for shouldRevalidate\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation: getLoadingNavigation(redirectLocation),\n fetcherSubmission: activeSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a submission, we will preserve it through the redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n activeSubmission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename\n )\n ),\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n return callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, f.controller.signal),\n f.match,\n f.matches,\n manifest,\n mapRouteProperties,\n basename\n );\n } else {\n let error: ErrorResult = {\n type: ResultType.error,\n error: getInternalRouterError(404, { pathname: f.path }),\n };\n return error;\n }\n }),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function setFetcherError(key: string, routeId: string, error: any) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n });\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n state.fetchers.delete(key);\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => createUseMatchesMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n router = {\n get basename() {\n return basename;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n { isStaticRequest: true, isRouteRequest, requestContext }\n );\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n { isStaticRequest: true, isRouteRequest, requestContext }\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError,\n activeDeferreds\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction isSubmissionNavigation(\n opts: RouterNavigateOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId != null && relative !== \"path\") {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route. When using relative:path,\n // fromRouteId is ignored since that is always relative to the current\n // location path\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getPathContributingMatches(contextualMatches).map((m) => m.pathnameBase),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: RouterNavigateOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponse;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n if (match.route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (match.route.loader == null) {\n return false;\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n defaultShouldRevalidate:\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate if fetcher won't be present in the subsequent render\n if (!matches.some((m) => m.route.id === f.routeId)) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n defaultShouldRevalidate: isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: Parameters[0]\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n basename: string,\n opts: {\n isStaticRequest?: boolean;\n isRouteRequest?: boolean;\n requestContext?: unknown;\n } = {}\n): Promise {\n let resultType;\n let result;\n let onReject: (() => void) | undefined;\n\n let runHandler = (handler: ActionFunction | LoaderFunction) => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([\n handler({\n request,\n params: match.params,\n context: opts.requestContext,\n }),\n abortPromise,\n ]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let values = await Promise.all([\n runHandler(handler),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, data: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n location = normalizeTo(\n new URL(request.url),\n matches.slice(0, matches.indexOf(match) + 1),\n basename,\n true,\n location\n );\n } else if (!opts.isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (opts.isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n reloadDocument: result.headers.get(\"X-Remix-Reload-Document\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (opts.isRouteRequest) {\n let queryRouteResponse: QueryRouteResponse = {\n type:\n resultType === ResultType.error ? ResultType.error : ResultType.data,\n response: result,\n };\n throw queryRouteResponse;\n }\n\n let data: any;\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n data = await result.json();\n } else {\n data = await result.text();\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponse(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponse(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || obj.type === ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\n// Note: This should match the format exported by useMatches, so if you change\n// this please also change that :) Eventually we'll DRY this up\nfunction createUseMatchesMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UseMatchesMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id] as unknown,\n handle: route.handle as unknown,\n };\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n \" _hasFetcherDoneAnything \": true,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n \" _hasFetcherDoneAnything \": true,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n \" _hasFetcherDoneAnything \": true,\n };\n return fetcher;\n}\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticRouteMatch,\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n History,\n Location,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n LazyRouteFunction,\n} from \"@remix-run/router\";\nimport type { Action as NavigationType } from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject extends NavigationContextObject {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n IDLE_BLOCKER,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n DataRouteMatch,\n} from \"./context\";\nimport {\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n AwaitContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error || state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n let error = match.route.id ? errors?.[match.route.id] : null;\n // Only data routers handle errors\n let errorElement: React.ReactNode | null = null;\n if (dataRouterState) {\n errorElement = match.route.errorElement || defaultErrorElement;\n }\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches() {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () =>\n matches.map((match) => {\n let { pathname, params } = match;\n // Note: This structure matches that created by createUseMatchesMatch\n // in the @remix-run/router , so if you change this please also change\n // that :) Eventually we'll DRY this up\n return {\n id: match.route.id,\n pathname,\n params,\n data: loaderData[match.route.id] as unknown,\n handle: match.route.handle as unknown,\n };\n }),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useActionData must be used inside a RouteContext`);\n\n return Object.values(state?.actionData || {})[0];\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import * as React from \"react\";\nimport type {\n TrackedPromise,\n InitialEntry,\n Location,\n MemoryHistory,\n Router as RemixRouter,\n To,\n LazyRouteFunction,\n RelativeRoutingType,\n RouterState,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n AbortedDeferredError,\n createMemoryHistory,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n RouteMatch,\n RouteObject,\n Navigator,\n NonIndexRouteObject,\n} from \"./context\";\nimport {\n LocationContext,\n NavigationContext,\n DataRouterContext,\n DataRouterStateContext,\n AwaitContext,\n RouteContext,\n} from \"./context\";\nimport {\n useAsyncValue,\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n useRoutesImpl,\n useLocation,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n future?: FutureConfig;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n let setState = React.useCallback(\n (newState: RouterState) => {\n v7_startTransition && startTransitionImpl\n ? startTransitionImpl(() => setStateImpl(newState))\n : setStateImpl(newState);\n },\n [setStateImpl, v7_startTransition]\n );\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a