@grafana/scenes 6.7.0 → 6.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/dist/esm/components/layout/CSSGrid/SceneCSSGridItem.js +33 -0
- package/dist/esm/dist/esm/behaviors/CursorSync.js +76 -0
- package/dist/esm/dist/esm/behaviors/LiveNowTimer.js +44 -0
- package/dist/esm/dist/esm/behaviors/SceneQueryController.js +14 -0
- package/dist/esm/dist/esm/components/EmbeddedScene.js +59 -0
- package/dist/esm/dist/esm/components/NestedScene.js +95 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneApp.js +27 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneAppPage.js +176 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneAppPageView.js +104 -0
- package/dist/esm/dist/esm/components/SceneApp/utils.js +42 -0
- package/dist/esm/dist/esm/components/SceneByFrameRepeater.js +41 -0
- package/dist/esm/dist/esm/components/SceneByVariableRepeater.js +55 -0
- package/dist/esm/dist/esm/components/SceneCanvasText.js +32 -0
- package/dist/esm/dist/esm/components/SceneControlsSpacer.js +17 -0
- package/dist/esm/dist/esm/components/SceneDebugger/DebugDetails.js +82 -0
- package/dist/esm/dist/esm/components/SceneDebugger/DebugTreeNode.js +72 -0
- package/dist/esm/dist/esm/components/SceneDebugger/SceneDebugger.js +77 -0
- package/dist/esm/dist/esm/components/SceneReactObject.js +34 -0
- package/dist/esm/dist/esm/components/SceneRefreshPicker.js +205 -0
- package/dist/esm/dist/esm/components/SceneTimePicker.js +139 -0
- package/dist/esm/dist/esm/components/SceneTimeRangeCompare.js +240 -0
- package/dist/esm/dist/esm/components/SceneToolbarButton.js +33 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanel.js +406 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelExploreButton.js +44 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelMenu.js +59 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelRenderer.js +285 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +45 -0
- package/dist/esm/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +72 -0
- package/dist/esm/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +11 -0
- package/dist/esm/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
- package/dist/esm/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
- package/dist/esm/dist/esm/components/layout/LazyLoader.js +103 -0
- package/dist/esm/dist/esm/components/layout/SceneFlexLayout.js +135 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridItem.js +30 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridLayout.js +283 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridRow.js +190 -0
- package/dist/esm/dist/esm/components/layout/grid/constants.js +7 -0
- package/dist/esm/dist/esm/components/layout/grid/utils.js +36 -0
- package/dist/esm/dist/esm/components/layout/split/SplitLayout.js +17 -0
- package/dist/esm/dist/esm/components/layout/split/SplitLayoutRenderer.js +29 -0
- package/dist/esm/dist/esm/components/layout/split/Splitter.js +386 -0
- package/dist/esm/dist/esm/core/SceneComponentWrapper.js +57 -0
- package/dist/esm/dist/esm/core/SceneDataNode.js +43 -0
- package/dist/esm/dist/esm/core/SceneObjectBase.js +286 -0
- package/dist/esm/dist/esm/core/SceneObjectRef.js +32 -0
- package/dist/esm/dist/esm/core/SceneTimeRange.js +231 -0
- package/dist/esm/dist/esm/core/events.js +11 -0
- package/dist/esm/dist/esm/core/sceneGraph/getTimeRange.js +10 -0
- package/dist/esm/dist/esm/core/sceneGraph/index.js +25 -0
- package/dist/esm/dist/esm/core/sceneGraph/sceneGraph.js +178 -0
- package/dist/esm/dist/esm/core/sceneGraph/utils.js +64 -0
- package/dist/esm/dist/esm/core/types.js +15 -0
- package/dist/esm/dist/esm/querying/DataLayersMerger.js +46 -0
- package/dist/esm/dist/esm/querying/ExtraQueryProvider.js +6 -0
- package/dist/esm/dist/esm/querying/RuntimeDataSource.js +6 -0
- package/dist/esm/dist/esm/querying/SceneDataLayerSet.js +100 -0
- package/dist/esm/dist/esm/querying/SceneQueryRunner.js +468 -0
- package/dist/esm/dist/esm/querying/extraQueryProcessingOperator.js +46 -0
- package/dist/esm/dist/esm/querying/getEnrichedDataRequest.js +12 -0
- package/dist/esm/dist/esm/querying/layers/SceneDataLayerBase.js +112 -0
- package/dist/esm/dist/esm/querying/layers/SceneDataLayerControls.js +51 -0
- package/dist/esm/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
- package/dist/esm/dist/esm/querying/layers/annotations/filterAnnotations.js +85 -0
- package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +121 -0
- package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
- package/dist/esm/dist/esm/querying/layers/annotations/utils.js +77 -0
- package/dist/esm/dist/esm/querying/registerQueryWithController.js +41 -0
- package/dist/esm/dist/esm/services/SceneObjectUrlSyncConfig.js +30 -0
- package/dist/esm/dist/esm/services/UniqueUrlKeyMapper.js +45 -0
- package/dist/esm/dist/esm/services/UrlSyncManager.js +167 -0
- package/dist/esm/dist/esm/services/useUrlSync.js +29 -0
- package/dist/esm/dist/esm/services/utils.js +71 -0
- package/dist/esm/dist/esm/utils/ControlsLabel.js +107 -0
- package/dist/esm/dist/esm/utils/LoadingIndicator.js +19 -0
- package/dist/esm/dist/esm/utils/SafeSerializableSceneObject.js +39 -0
- package/dist/esm/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
- package/dist/esm/dist/esm/utils/date.js +15 -0
- package/dist/esm/dist/esm/utils/evaluateTimeRange.js +16 -0
- package/dist/esm/dist/esm/utils/explore.js +47 -0
- package/dist/esm/dist/esm/utils/getCompareSeriesRefId.js +4 -0
- package/dist/esm/dist/esm/utils/getDataSource.js +18 -0
- package/dist/esm/dist/esm/utils/getMessageFromError.js +24 -0
- package/dist/esm/dist/esm/utils/metricTree.js +53 -0
- package/dist/esm/dist/esm/utils/parseUrlParam.js +41 -0
- package/dist/esm/dist/esm/utils/utils.js +11 -0
- package/dist/esm/dist/esm/utils/wrapInSafeSerializableSceneObject.js +30 -0
- package/dist/esm/dist/esm/utils/writeSceneLog.js +12 -0
- package/dist/esm/dist/esm/variables/VariableDependencyConfig.js +150 -0
- package/dist/esm/dist/esm/variables/VariableValueRecorder.js +71 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFilterBuilder.js +24 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFilterRenderer.js +303 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariable.js +289 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
- package/dist/esm/dist/esm/variables/adhoc/getAdhocOptionSearcher.js +13 -0
- package/dist/esm/dist/esm/variables/adhoc/patchGetAdhocFilters.js +47 -0
- package/dist/esm/dist/esm/variables/components/VariableValueControl.js +23 -0
- package/dist/esm/dist/esm/variables/components/VariableValueInput.js +33 -0
- package/dist/esm/dist/esm/variables/components/VariableValueSelect.js +228 -0
- package/dist/esm/dist/esm/variables/components/VariableValueSelectors.js +72 -0
- package/dist/esm/dist/esm/variables/components/getOptionSearcher.js +15 -0
- package/dist/esm/dist/esm/variables/constants.js +9 -0
- package/dist/esm/dist/esm/variables/getEnrichedFiltersRequest.js +12 -0
- package/dist/esm/dist/esm/variables/groupby/GroupByVariable.js +259 -0
- package/dist/esm/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
- package/dist/esm/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
- package/dist/esm/dist/esm/variables/interpolation/ScopedVarsVariable.js +40 -0
- package/dist/esm/dist/esm/variables/interpolation/defaults.js +21 -0
- package/dist/esm/dist/esm/variables/interpolation/fieldAccessorCache.js +13 -0
- package/dist/esm/dist/esm/variables/interpolation/formatRegistry.js +296 -0
- package/dist/esm/dist/esm/variables/interpolation/sceneInterpolator.js +87 -0
- package/dist/esm/dist/esm/variables/lookupVariable.js +20 -0
- package/dist/esm/dist/esm/variables/macros/AllVariablesMacro.js +57 -0
- package/dist/esm/dist/esm/variables/macros/contextMacros.js +43 -0
- package/dist/esm/dist/esm/variables/macros/dataMacros.js +134 -0
- package/dist/esm/dist/esm/variables/macros/index.js +26 -0
- package/dist/esm/dist/esm/variables/macros/templateProxies.js +51 -0
- package/dist/esm/dist/esm/variables/macros/timeMacros.js +86 -0
- package/dist/esm/dist/esm/variables/macros/types.js +11 -0
- package/dist/esm/dist/esm/variables/macros/urlMacros.js +56 -0
- package/dist/esm/dist/esm/variables/sets/SceneVariableSet.js +254 -0
- package/dist/esm/dist/esm/variables/types.js +11 -0
- package/dist/esm/dist/esm/variables/utils.js +172 -0
- package/dist/esm/dist/esm/variables/variants/ConstantVariable.js +38 -0
- package/dist/esm/dist/esm/variables/variants/CustomVariable.js +60 -0
- package/dist/esm/dist/esm/variables/variants/DataSourceVariable.js +88 -0
- package/dist/esm/dist/esm/variables/variants/IntervalVariable.js +117 -0
- package/dist/esm/dist/esm/variables/variants/MultiValueVariable.js +295 -0
- package/dist/esm/dist/esm/variables/variants/TestVariable.js +117 -0
- package/dist/esm/dist/esm/variables/variants/TextBoxVariable.js +61 -0
- package/dist/esm/dist/esm/variables/variants/query/QueryVariable.js +139 -0
- package/dist/esm/dist/esm/variables/variants/query/createQueryVariableRunner.js +129 -0
- package/dist/esm/dist/esm/variables/variants/query/guards.js +28 -0
- package/dist/esm/dist/esm/variables/variants/query/toMetricFindValues.js +96 -0
- package/dist/esm/dist/esm/variables/variants/query/utils.js +124 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/querying/DataProviderSharer.js +39 -0
- package/dist/esm/src/behaviors/ActWhenVariableChanged.js +27 -0
- package/dist/esm/src/behaviors/CursorSync.js +76 -0
- package/dist/esm/src/behaviors/LiveNowTimer.js +44 -0
- package/dist/esm/src/behaviors/SceneQueryController.js +60 -0
- package/dist/esm/src/behaviors/index.js +5 -0
- package/dist/esm/src/components/EmbeddedScene.js +59 -0
- package/dist/esm/src/components/NestedScene.js +95 -0
- package/dist/esm/src/components/SceneApp/SceneApp.js +37 -0
- package/dist/esm/src/components/SceneApp/SceneAppPage.js +176 -0
- package/dist/esm/src/components/SceneApp/SceneAppPageView.js +104 -0
- package/dist/esm/src/components/SceneApp/utils.js +42 -0
- package/dist/esm/src/components/SceneByFrameRepeater.js +41 -0
- package/dist/esm/src/components/SceneByVariableRepeater.js +55 -0
- package/dist/esm/src/components/SceneCanvasText.js +32 -0
- package/dist/esm/src/components/SceneControlsSpacer.js +17 -0
- package/dist/esm/src/components/SceneDebugger/DebugDetails.js +82 -0
- package/dist/esm/src/components/SceneDebugger/DebugTreeNode.js +72 -0
- package/dist/esm/src/components/SceneDebugger/SceneDebugger.js +77 -0
- package/dist/esm/src/components/SceneReactObject.js +34 -0
- package/dist/esm/src/components/SceneRefreshPicker.js +205 -0
- package/dist/esm/src/components/SceneTimePicker.js +139 -0
- package/dist/esm/src/components/SceneTimeRangeCompare.js +240 -0
- package/dist/esm/src/components/SceneToolbarButton.js +33 -0
- package/dist/esm/src/components/VizPanel/VizPanel.js +406 -0
- package/dist/esm/src/components/VizPanel/VizPanelExploreButton.js +44 -0
- package/dist/esm/src/components/VizPanel/VizPanelMenu.js +59 -0
- package/dist/esm/src/components/VizPanel/VizPanelRenderer.js +285 -0
- package/dist/esm/src/components/VizPanel/VizPanelSeriesLimit.js +45 -0
- package/dist/esm/src/components/VizPanel/colorSeriesConfigFactory.js +72 -0
- package/dist/esm/src/components/VizPanel/registerRuntimePanelPlugin.js +56 -0
- package/dist/esm/src/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
- package/dist/esm/src/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
- package/dist/esm/src/components/layout/LazyLoader.js +103 -0
- package/dist/esm/src/components/layout/SceneFlexLayout.js +135 -0
- package/dist/esm/src/components/layout/grid/SceneGridItem.js +30 -0
- package/dist/esm/src/components/layout/grid/SceneGridLayout.js +283 -0
- package/dist/esm/src/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
- package/dist/esm/src/components/layout/grid/SceneGridRow.js +190 -0
- package/dist/esm/src/components/layout/grid/constants.js +7 -0
- package/dist/esm/src/components/layout/grid/utils.js +36 -0
- package/dist/esm/src/components/layout/split/SplitLayout.js +17 -0
- package/dist/esm/src/components/layout/split/SplitLayoutRenderer.js +29 -0
- package/dist/esm/src/components/layout/split/Splitter.js +386 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigBuilder.js +100 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigBuilders.js +75 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigOverridesBuilder.js +75 -0
- package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilder.js +22 -0
- package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilders.js +85 -0
- package/dist/esm/src/core/PanelBuilders/StandardFieldConfigBuilders.js +52 -0
- package/dist/esm/src/core/PanelBuilders/VizConfigBuilder.js +78 -0
- package/dist/esm/src/core/PanelBuilders/VizConfigBuilders.js +114 -0
- package/dist/esm/src/core/PanelBuilders/VizPanelBuilder.js +162 -0
- package/dist/esm/src/core/PanelBuilders/index.js +116 -0
- package/dist/esm/src/core/SceneComponentWrapper.js +57 -0
- package/dist/esm/src/core/SceneDataNode.js +43 -0
- package/dist/esm/src/core/SceneObjectBase.js +286 -0
- package/dist/esm/src/core/SceneObjectRef.js +32 -0
- package/dist/esm/src/core/SceneTimeRange.js +231 -0
- package/dist/esm/src/core/SceneTimeRangeTransformerBase.js +35 -0
- package/dist/esm/src/core/SceneTimeZoneOverride.js +63 -0
- package/dist/esm/src/core/events.js +11 -0
- package/dist/esm/src/core/sceneGraph/getTimeRange.js +10 -0
- package/dist/esm/src/core/sceneGraph/index.js +25 -0
- package/dist/esm/src/core/sceneGraph/sceneGraph.js +178 -0
- package/dist/esm/src/core/sceneGraph/utils.js +64 -0
- package/dist/esm/src/core/types.js +15 -0
- package/dist/esm/src/index.js +108 -0
- package/dist/esm/src/querying/DataLayersMerger.js +46 -0
- package/dist/esm/src/querying/DataProviderProxy.js +37 -0
- package/dist/esm/src/querying/DataProviderSharer.js +108 -0
- package/dist/esm/src/querying/ExtraQueryProvider.js +6 -0
- package/dist/esm/src/querying/RuntimeDataSource.js +49 -0
- package/dist/esm/src/querying/SceneDataLayerSet.js +100 -0
- package/dist/esm/src/querying/SceneDataTransformer.js +178 -0
- package/dist/esm/src/querying/SceneQueryRunner.js +468 -0
- package/dist/esm/src/querying/extraQueryProcessingOperator.js +46 -0
- package/dist/esm/src/querying/getEnrichedDataRequest.js +12 -0
- package/dist/esm/src/querying/layers/SceneDataLayerBase.js +112 -0
- package/dist/esm/src/querying/layers/SceneDataLayerControls.js +51 -0
- package/dist/esm/src/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
- package/dist/esm/src/querying/layers/annotations/filterAnnotations.js +85 -0
- package/dist/esm/src/querying/layers/annotations/standardAnnotationQuery.js +121 -0
- package/dist/esm/src/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
- package/dist/esm/src/querying/layers/annotations/utils.js +77 -0
- package/dist/esm/src/querying/layers/index.js +2 -0
- package/dist/esm/src/querying/registerQueryWithController.js +41 -0
- package/dist/esm/src/services/SceneObjectUrlSyncConfig.js +30 -0
- package/dist/esm/src/services/UniqueUrlKeyMapper.js +45 -0
- package/dist/esm/src/services/UrlSyncContextProvider.js +17 -0
- package/dist/esm/src/services/UrlSyncManager.js +167 -0
- package/dist/esm/src/services/useUrlSync.js +29 -0
- package/dist/esm/src/services/utils.js +75 -0
- package/dist/esm/src/utils/ControlsLabel.js +107 -0
- package/dist/esm/src/utils/LoadingIndicator.js +19 -0
- package/dist/esm/src/utils/SafeSerializableSceneObject.js +39 -0
- package/dist/esm/src/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
- package/dist/esm/src/utils/date.js +15 -0
- package/dist/esm/src/utils/evaluateTimeRange.js +16 -0
- package/dist/esm/src/utils/explore.js +47 -0
- package/dist/esm/src/utils/getCompareSeriesRefId.js +4 -0
- package/dist/esm/src/utils/getDataSource.js +18 -0
- package/dist/esm/src/utils/getMessageFromError.js +24 -0
- package/dist/esm/src/utils/metricTree.js +53 -0
- package/dist/esm/src/utils/parseUrlParam.js +41 -0
- package/dist/esm/src/utils/utils.js +11 -0
- package/dist/esm/src/utils/wrapInSafeSerializableSceneObject.js +30 -0
- package/dist/esm/src/utils/writeSceneLog.js +12 -0
- package/dist/esm/src/variables/VariableDependencyConfig.js +150 -0
- package/dist/esm/src/variables/VariableValueRecorder.js +71 -0
- package/dist/esm/src/variables/adhoc/AdHocFilterBuilder.js +24 -0
- package/dist/esm/src/variables/adhoc/AdHocFilterRenderer.js +303 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersVariable.js +289 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
- package/dist/esm/src/variables/adhoc/getAdhocOptionSearcher.js +13 -0
- package/dist/esm/src/variables/adhoc/patchGetAdhocFilters.js +47 -0
- package/dist/esm/src/variables/components/VariableValueControl.js +23 -0
- package/dist/esm/src/variables/components/VariableValueInput.js +33 -0
- package/dist/esm/src/variables/components/VariableValueSelect.js +228 -0
- package/dist/esm/src/variables/components/VariableValueSelectors.js +72 -0
- package/dist/esm/src/variables/components/getOptionSearcher.js +15 -0
- package/dist/esm/src/variables/constants.js +9 -0
- package/dist/esm/src/variables/getEnrichedFiltersRequest.js +12 -0
- package/dist/esm/src/variables/groupby/GroupByVariable.js +259 -0
- package/dist/esm/src/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
- package/dist/esm/src/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
- package/dist/esm/src/variables/interpolation/ScopedVarsVariable.js +40 -0
- package/dist/esm/src/variables/interpolation/defaults.js +21 -0
- package/dist/esm/src/variables/interpolation/fieldAccessorCache.js +13 -0
- package/dist/esm/src/variables/interpolation/formatRegistry.js +296 -0
- package/dist/esm/src/variables/interpolation/sceneInterpolator.js +87 -0
- package/dist/esm/src/variables/lookupVariable.js +20 -0
- package/dist/esm/src/variables/macros/AllVariablesMacro.js +57 -0
- package/dist/esm/src/variables/macros/contextMacros.js +43 -0
- package/dist/esm/src/variables/macros/dataMacros.js +134 -0
- package/dist/esm/src/variables/macros/index.js +35 -0
- package/dist/esm/src/variables/macros/templateProxies.js +51 -0
- package/dist/esm/src/variables/macros/timeMacros.js +86 -0
- package/dist/esm/src/variables/macros/types.js +11 -0
- package/dist/esm/src/variables/macros/urlMacros.js +56 -0
- package/dist/esm/src/variables/sets/SceneVariableSet.js +254 -0
- package/dist/esm/src/variables/types.js +11 -0
- package/dist/esm/src/variables/utils.js +172 -0
- package/dist/esm/src/variables/variants/ConstantVariable.js +38 -0
- package/dist/esm/src/variables/variants/CustomVariable.js +60 -0
- package/dist/esm/src/variables/variants/DataSourceVariable.js +88 -0
- package/dist/esm/src/variables/variants/IntervalVariable.js +117 -0
- package/dist/esm/src/variables/variants/JsonVariable.js +193 -0
- package/dist/esm/src/variables/variants/LocalValueVariable.js +56 -0
- package/dist/esm/src/variables/variants/MultiValueVariable.js +295 -0
- package/dist/esm/src/variables/variants/TestVariable.js +117 -0
- package/dist/esm/src/variables/variants/TextBoxVariable.js +61 -0
- package/dist/esm/src/variables/variants/guards.js +27 -0
- package/dist/esm/src/variables/variants/query/QueryVariable.js +139 -0
- package/dist/esm/src/variables/variants/query/createQueryVariableRunner.js +129 -0
- package/dist/esm/src/variables/variants/query/guards.js +28 -0
- package/dist/esm/src/variables/variants/query/toMetricFindValues.js +96 -0
- package/dist/esm/src/variables/variants/query/utils.js +124 -0
- package/dist/esm/variables/components/VariableValueSelect.js +13 -9
- package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
- package/dist/esm/variables/variants/ConstantVariable.js +22 -0
- package/dist/esm/variables/variants/ConstantVariable.js.map +1 -1
- package/dist/esm/variables/variants/CustomVariable.js +3 -2
- package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
- package/dist/esm/variables/variants/DataSourceVariable.js +3 -2
- package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
- package/dist/esm/variables/variants/JsonVariable.js +96 -0
- package/dist/esm/variables/variants/TestVariable.js +3 -2
- package/dist/esm/variables/variants/TestVariable.js.map +1 -1
- package/dist/esm/variables/variants/json/JsonVariable.js +95 -0
- package/dist/esm/variables/variants/json/JsonVariableOptionProviders.js +70 -0
- package/dist/esm/variables/variants/query/QueryVariable.js +3 -2
- package/dist/esm/variables/variants/query/QueryVariable.js.map +1 -1
- package/dist/index.d.ts +14 -6
- package/dist/index.js +35 -13
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import React, { useState, useRef, useImperativeHandle } from 'react';
|
|
2
|
+
import { useEffectOnce } from 'react-use';
|
|
3
|
+
import { uniqueId } from 'lodash';
|
|
4
|
+
import { css } from '@emotion/css';
|
|
5
|
+
import { useStyles2 } from '@grafana/ui';
|
|
6
|
+
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
9
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
11
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
12
|
+
var __spreadValues = (a, b) => {
|
|
13
|
+
for (var prop in b || (b = {}))
|
|
14
|
+
if (__hasOwnProp.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
if (__getOwnPropSymbols)
|
|
17
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
18
|
+
if (__propIsEnum.call(b, prop))
|
|
19
|
+
__defNormalProp(a, prop, b[prop]);
|
|
20
|
+
}
|
|
21
|
+
return a;
|
|
22
|
+
};
|
|
23
|
+
var __objRest = (source, exclude) => {
|
|
24
|
+
var target = {};
|
|
25
|
+
for (var prop in source)
|
|
26
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
27
|
+
target[prop] = source[prop];
|
|
28
|
+
if (source != null && __getOwnPropSymbols)
|
|
29
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
30
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
31
|
+
target[prop] = source[prop];
|
|
32
|
+
}
|
|
33
|
+
return target;
|
|
34
|
+
};
|
|
35
|
+
function useUniqueId() {
|
|
36
|
+
var _a;
|
|
37
|
+
const idRefLazy = useRef(void 0);
|
|
38
|
+
(_a = idRefLazy.current) != null ? _a : idRefLazy.current = uniqueId();
|
|
39
|
+
return idRefLazy.current;
|
|
40
|
+
}
|
|
41
|
+
const LazyLoader = React.forwardRef(
|
|
42
|
+
(_a, ref) => {
|
|
43
|
+
var _b = _a, { children, onLoad, onChange, className } = _b, rest = __objRest(_b, ["children", "onLoad", "onChange", "className"]);
|
|
44
|
+
const id = useUniqueId();
|
|
45
|
+
const { hideEmpty } = useStyles2(getStyles);
|
|
46
|
+
const [loaded, setLoaded] = useState(false);
|
|
47
|
+
const [isInView, setIsInView] = useState(false);
|
|
48
|
+
const innerRef = useRef(null);
|
|
49
|
+
useImperativeHandle(ref, () => innerRef.current);
|
|
50
|
+
useEffectOnce(() => {
|
|
51
|
+
LazyLoader.addCallback(id, (entry) => {
|
|
52
|
+
if (!loaded && entry.isIntersecting) {
|
|
53
|
+
setLoaded(true);
|
|
54
|
+
onLoad == null ? void 0 : onLoad();
|
|
55
|
+
}
|
|
56
|
+
setIsInView(entry.isIntersecting);
|
|
57
|
+
onChange == null ? void 0 : onChange(entry.isIntersecting);
|
|
58
|
+
});
|
|
59
|
+
const wrapperEl = innerRef.current;
|
|
60
|
+
if (wrapperEl) {
|
|
61
|
+
LazyLoader.observer.observe(wrapperEl);
|
|
62
|
+
}
|
|
63
|
+
return () => {
|
|
64
|
+
wrapperEl && LazyLoader.observer.unobserve(wrapperEl);
|
|
65
|
+
delete LazyLoader.callbacks[id];
|
|
66
|
+
if (Object.keys(LazyLoader.callbacks).length === 0) {
|
|
67
|
+
LazyLoader.observer.disconnect();
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
const classes = `${loaded ? hideEmpty : ""} ${className}`;
|
|
72
|
+
return /* @__PURE__ */ React.createElement("div", __spreadValues({
|
|
73
|
+
id,
|
|
74
|
+
ref: innerRef,
|
|
75
|
+
className: classes
|
|
76
|
+
}, rest), loaded && (typeof children === "function" ? children({ isInView }) : children));
|
|
77
|
+
}
|
|
78
|
+
);
|
|
79
|
+
function getStyles() {
|
|
80
|
+
return {
|
|
81
|
+
hideEmpty: css({
|
|
82
|
+
"&:empty": {
|
|
83
|
+
display: "none"
|
|
84
|
+
}
|
|
85
|
+
})
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
LazyLoader.displayName = "LazyLoader";
|
|
89
|
+
LazyLoader.callbacks = {};
|
|
90
|
+
LazyLoader.addCallback = (id, c) => LazyLoader.callbacks[id] = c;
|
|
91
|
+
LazyLoader.observer = new IntersectionObserver(
|
|
92
|
+
(entries) => {
|
|
93
|
+
for (const entry of entries) {
|
|
94
|
+
if (typeof LazyLoader.callbacks[entry.target.id] === "function") {
|
|
95
|
+
LazyLoader.callbacks[entry.target.id](entry);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
{ rootMargin: "100px" }
|
|
100
|
+
);
|
|
101
|
+
|
|
102
|
+
export { LazyLoader, useUniqueId };
|
|
103
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF6eUxvYWRlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tcG9uZW50cy9sYXlvdXQvTGF6eUxvYWRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlSW1wZXJhdGl2ZUhhbmRsZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUVmZmVjdE9uY2UgfSBmcm9tICdyZWFjdC11c2UnO1xuaW1wb3J0IHsgdW5pcXVlSWQgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vY3NzJztcbmltcG9ydCB7IHVzZVN0eWxlczIgfSBmcm9tICdAZ3JhZmFuYS91aSc7XG5cbnZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0gPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3Aob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX29ialJlc3QgPSAoc291cmNlLCBleGNsdWRlKSA9PiB7XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgZm9yICh2YXIgcHJvcCBpbiBzb3VyY2UpXG4gICAgaWYgKF9faGFzT3duUHJvcC5jYWxsKHNvdXJjZSwgcHJvcCkgJiYgZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMClcbiAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgaWYgKHNvdXJjZSAhPSBudWxsICYmIF9fZ2V0T3duUHJvcFN5bWJvbHMpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzKHNvdXJjZSkpIHtcbiAgICAgIGlmIChleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwICYmIF9fcHJvcElzRW51bS5jYWxsKHNvdXJjZSwgcHJvcCkpXG4gICAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgICB9XG4gIHJldHVybiB0YXJnZXQ7XG59O1xuZnVuY3Rpb24gdXNlVW5pcXVlSWQoKSB7XG4gIHZhciBfYTtcbiAgY29uc3QgaWRSZWZMYXp5ID0gdXNlUmVmKHZvaWQgMCk7XG4gIChfYSA9IGlkUmVmTGF6eS5jdXJyZW50KSAhPSBudWxsID8gX2EgOiBpZFJlZkxhenkuY3VycmVudCA9IHVuaXF1ZUlkKCk7XG4gIHJldHVybiBpZFJlZkxhenkuY3VycmVudDtcbn1cbmNvbnN0IExhenlMb2FkZXIgPSBSZWFjdC5mb3J3YXJkUmVmKFxuICAoX2EsIHJlZikgPT4ge1xuICAgIHZhciBfYiA9IF9hLCB7IGNoaWxkcmVuLCBvbkxvYWQsIG9uQ2hhbmdlLCBjbGFzc05hbWUgfSA9IF9iLCByZXN0ID0gX19vYmpSZXN0KF9iLCBbXCJjaGlsZHJlblwiLCBcIm9uTG9hZFwiLCBcIm9uQ2hhbmdlXCIsIFwiY2xhc3NOYW1lXCJdKTtcbiAgICBjb25zdCBpZCA9IHVzZVVuaXF1ZUlkKCk7XG4gICAgY29uc3QgeyBoaWRlRW1wdHkgfSA9IHVzZVN0eWxlczIoZ2V0U3R5bGVzKTtcbiAgICBjb25zdCBbbG9hZGVkLCBzZXRMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc0luVmlldywgc2V0SXNJblZpZXddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGlubmVyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiBpbm5lclJlZi5jdXJyZW50KTtcbiAgICB1c2VFZmZlY3RPbmNlKCgpID0+IHtcbiAgICAgIExhenlMb2FkZXIuYWRkQ2FsbGJhY2soaWQsIChlbnRyeSkgPT4ge1xuICAgICAgICBpZiAoIWxvYWRlZCAmJiBlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICAgIHNldExvYWRlZCh0cnVlKTtcbiAgICAgICAgICBvbkxvYWQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uTG9hZCgpO1xuICAgICAgICB9XG4gICAgICAgIHNldElzSW5WaWV3KGVudHJ5LmlzSW50ZXJzZWN0aW5nKTtcbiAgICAgICAgb25DaGFuZ2UgPT0gbnVsbCA/IHZvaWQgMCA6IG9uQ2hhbmdlKGVudHJ5LmlzSW50ZXJzZWN0aW5nKTtcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgd3JhcHBlckVsID0gaW5uZXJSZWYuY3VycmVudDtcbiAgICAgIGlmICh3cmFwcGVyRWwpIHtcbiAgICAgICAgTGF6eUxvYWRlci5vYnNlcnZlci5vYnNlcnZlKHdyYXBwZXJFbCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB3cmFwcGVyRWwgJiYgTGF6eUxvYWRlci5vYnNlcnZlci51bm9ic2VydmUod3JhcHBlckVsKTtcbiAgICAgICAgZGVsZXRlIExhenlMb2FkZXIuY2FsbGJhY2tzW2lkXTtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKExhenlMb2FkZXIuY2FsbGJhY2tzKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBMYXp5TG9hZGVyLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KTtcbiAgICBjb25zdCBjbGFzc2VzID0gYCR7bG9hZGVkID8gaGlkZUVtcHR5IDogXCJcIn0gJHtjbGFzc05hbWV9YDtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX19zcHJlYWRWYWx1ZXMoe1xuICAgICAgaWQsXG4gICAgICByZWY6IGlubmVyUmVmLFxuICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzXG4gICAgfSwgcmVzdCksIGxvYWRlZCAmJiAodHlwZW9mIGNoaWxkcmVuID09PSBcImZ1bmN0aW9uXCIgPyBjaGlsZHJlbih7IGlzSW5WaWV3IH0pIDogY2hpbGRyZW4pKTtcbiAgfVxuKTtcbmZ1bmN0aW9uIGdldFN0eWxlcygpIHtcbiAgcmV0dXJuIHtcbiAgICBoaWRlRW1wdHk6IGNzcyh7XG4gICAgICBcIiY6ZW1wdHlcIjoge1xuICAgICAgICBkaXNwbGF5OiBcIm5vbmVcIlxuICAgICAgfVxuICAgIH0pXG4gIH07XG59XG5MYXp5TG9hZGVyLmRpc3BsYXlOYW1lID0gXCJMYXp5TG9hZGVyXCI7XG5MYXp5TG9hZGVyLmNhbGxiYWNrcyA9IHt9O1xuTGF6eUxvYWRlci5hZGRDYWxsYmFjayA9IChpZCwgYykgPT4gTGF6eUxvYWRlci5jYWxsYmFja3NbaWRdID0gYztcbkxhenlMb2FkZXIub2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gIChlbnRyaWVzKSA9PiB7XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICBpZiAodHlwZW9mIExhenlMb2FkZXIuY2FsbGJhY2tzW2VudHJ5LnRhcmdldC5pZF0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBMYXp5TG9hZGVyLmNhbGxiYWNrc1tlbnRyeS50YXJnZXQuaWRdKGVudHJ5KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHsgcm9vdE1hcmdpbjogXCIxMDBweFwiIH1cbik7XG5cbmV4cG9ydCB7IExhenlMb2FkZXIsIHVzZVVuaXF1ZUlkIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVRHRjZlVXh2WVdSbGNpNXFjeUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2TGk0dkxpNHZjM0pqTDJOdmJYQnZibVZ1ZEhNdmJHRjViM1YwTDB4aGVubE1iMkZrWlhJdWRITjRJbDBzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0JTWldGamRDd2dleUJHYjNKM1lYSmtVbVZtUlhodmRHbGpRMjl0Y0c5dVpXNTBMQ0IxYzJWSmJYQmxjbUYwYVhabFNHRnVaR3hsTENCMWMyVlNaV1lzSUhWelpWTjBZWFJsSUgwZ1puSnZiU0FuY21WaFkzUW5PMXh1YVcxd2IzSjBJSHNnZFhObFJXWm1aV04wVDI1alpTQjlJR1p5YjIwZ0ozSmxZV04wTFhWelpTYzdYRzVjYm1sdGNHOXlkQ0I3SUhWdWFYRjFaVWxrSUgwZ1puSnZiU0FuYkc5a1lYTm9KenRjYm1sdGNHOXlkQ0I3SUdOemN5QjlJR1p5YjIwZ0owQmxiVzkwYVc5dUwyTnpjeWM3WEc1cGJYQnZjblFnZXlCMWMyVlRkSGxzWlhNeUlIMGdabkp2YlNBblFHZHlZV1poYm1FdmRXa25PMXh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnZFhObFZXNXBjWFZsU1dRb0tUb2djM1J5YVc1bklIdGNiaUFnWTI5dWMzUWdhV1JTWldaTVlYcDVJRDBnZFhObFVtVm1QSE4wY21sdVp5QjhJSFZ1WkdWbWFXNWxaRDRvZFc1a1pXWnBibVZrS1R0Y2JpQWdhV1JTWldaTVlYcDVMbU4xY25KbGJuUWdQejg5SUhWdWFYRjFaVWxrS0NrN1hHNGdJSEpsZEhWeWJpQnBaRkpsWmt4aGVua3VZM1Z5Y21WdWREdGNibjFjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCUWNtOXdjeUJsZUhSbGJtUnpJRTl0YVhROFVtVmhZM1F1U0ZSTlRGQnliM0J6UEVoVVRVeEVhWFpGYkdWdFpXNTBQaXdnSjI5dVEyaGhibWRsSnlCOElDZGphR2xzWkhKbGJpYytJSHRjYmlBZ1kyaHBiR1J5Wlc0NklGSmxZV04wTGxKbFlXTjBUbTlrWlNCOElDZ29leUJwYzBsdVZtbGxkeUI5T2lCN0lHbHpTVzVXYVdWM09pQmliMjlzWldGdUlIMHBJRDArSUZKbFlXTjBMbEpsWVdOMFRtOWtaU2s3WEc0Z0lHdGxlVG9nYzNSeWFXNW5PMXh1SUNCdmJreHZZV1EvT2lBb0tTQTlQaUIyYjJsa08xeHVJQ0J2YmtOb1lXNW5aVDg2SUNocGMwbHVWbWxsZHpvZ1ltOXZiR1ZoYmlrZ1BUNGdkbTlwWkR0Y2JuMWNibHh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JNWVhwNVRHOWhaR1Z5Vkhsd1pTQmxlSFJsYm1SeklFWnZjbmRoY21SU1pXWkZlRzkwYVdORGIyMXdiMjVsYm5ROFVISnZjSE0rSUh0Y2JpQWdZV1JrUTJGc2JHSmhZMnM2SUNocFpEb2djM1J5YVc1bkxDQmpPaUFvWlRvZ1NXNTBaWEp6WldOMGFXOXVUMkp6WlhKMlpYSkZiblJ5ZVNrZ1BUNGdkbTlwWkNrZ1BUNGdkbTlwWkR0Y2JpQWdZMkZzYkdKaFkydHpPaUJTWldOdmNtUThjM1J5YVc1bkxDQW9aVG9nU1c1MFpYSnpaV04wYVc5dVQySnpaWEoyWlhKRmJuUnllU2tnUFQ0Z2RtOXBaRDQ3WEc0Z0lHOWljMlZ5ZG1WeU9pQkpiblJsY25ObFkzUnBiMjVQWW5ObGNuWmxjanRjYm4xY2JseHVaWGh3YjNKMElHTnZibk4wSUV4aGVubE1iMkZrWlhJNklFeGhlbmxNYjJGa1pYSlVlWEJsSUQwZ1VtVmhZM1F1Wm05eWQyRnlaRkpsWmp4SVZFMU1SR2wyUld4bGJXVnVkQ3dnVUhKdmNITStLRnh1SUNBb2V5QmphR2xzWkhKbGJpd2diMjVNYjJGa0xDQnZia05vWVc1blpTd2dZMnhoYzNOT1lXMWxMQ0F1TGk1eVpYTjBJSDBzSUhKbFppa2dQVDRnZTF4dUlDQWdJR052Ym5OMElHbGtJRDBnZFhObFZXNXBjWFZsU1dRb0tUdGNiaUFnSUNCamIyNXpkQ0I3SUdocFpHVkZiWEIwZVNCOUlEMGdkWE5sVTNSNWJHVnpNaWhuWlhSVGRIbHNaWE1wTzF4dUlDQWdJR052Ym5OMElGdHNiMkZrWldRc0lITmxkRXh2WVdSbFpGMGdQU0IxYzJWVGRHRjBaU2htWVd4elpTazdYRzRnSUNBZ1kyOXVjM1FnVzJselNXNVdhV1YzTENCelpYUkpjMGx1Vm1sbGQxMGdQU0IxYzJWVGRHRjBaU2htWVd4elpTazdYRzRnSUNBZ1kyOXVjM1FnYVc1dVpYSlNaV1lnUFNCMWMyVlNaV1k4U0ZSTlRFUnBka1ZzWlcxbGJuUStLRzUxYkd3cE8xeHVYRzRnSUNBZ2RYTmxTVzF3WlhKaGRHbDJaVWhoYm1Sc1pTaHlaV1lzSUNncElEMCtJR2x1Ym1WeVVtVm1MbU4xY25KbGJuUWhLVHRjYmx4dUlDQWdJSFZ6WlVWbVptVmpkRTl1WTJVb0tDa2dQVDRnZTF4dUlDQWdJQ0FnVEdGNmVVeHZZV1JsY2k1aFpHUkRZV3hzWW1GamF5aHBaQ3dnS0dWdWRISjVLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2doYkc5aFpHVmtJQ1ltSUdWdWRISjVMbWx6U1c1MFpYSnpaV04wYVc1bktTQjdYRzRnSUNBZ0lDQWdJQ0FnYzJWMFRHOWhaR1ZrS0hSeWRXVXBPMXh1SUNBZ0lDQWdJQ0FnSUc5dVRHOWhaRDh1S0NrN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0J6WlhSSmMwbHVWbWxsZHlobGJuUnllUzVwYzBsdWRHVnljMlZqZEdsdVp5azdYRzRnSUNBZ0lDQWdJRzl1UTJoaGJtZGxQeTRvWlc1MGNua3VhWE5KYm5SbGNuTmxZM1JwYm1jcE8xeHVJQ0FnSUNBZ2ZTazdYRzVjYmlBZ0lDQWdJR052Ym5OMElIZHlZWEJ3WlhKRmJDQTlJR2x1Ym1WeVVtVm1MbU4xY25KbGJuUTdYRzVjYmlBZ0lDQWdJR2xtSUNoM2NtRndjR1Z5Uld3cElIdGNiaUFnSUNBZ0lDQWdUR0Y2ZVV4dllXUmxjaTV2WW5ObGNuWmxjaTV2WW5ObGNuWmxLSGR5WVhCd1pYSkZiQ2s3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUhKbGRIVnliaUFvS1NBOVBpQjdYRzRnSUNBZ0lDQWdJSGR5WVhCd1pYSkZiQ0FtSmlCTVlYcDVURzloWkdWeUxtOWljMlZ5ZG1WeUxuVnViMkp6WlhKMlpTaDNjbUZ3Y0dWeVJXd3BPMXh1SUNBZ0lDQWdJQ0JrWld4bGRHVWdUR0Y2ZVV4dllXUmxjaTVqWVd4c1ltRmphM05iYVdSZE8xeHVJQ0FnSUNBZ0lDQnBaaUFvVDJKcVpXTjBMbXRsZVhNb1RHRjZlVXh2WVdSbGNpNWpZV3hzWW1GamEzTXBMbXhsYm1kMGFDQTlQVDBnTUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJRXhoZW5sTWIyRmtaWEl1YjJKelpYSjJaWEl1WkdselkyOXVibVZqZENncE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlPMXh1SUNBZ0lIMHBPMXh1WEc0Z0lDQWdMeThnU1dZZ2RHaGxJR1ZzWlcxbGJuUWdkMkZ6SUd4dllXUmxaQ3dnZDJVZ1lXUmtJSFJvWlNCZ2FHbGtaVVZ0Y0hSNVlDQmpiR0Z6Y3lCMGJ5QndiM1JsYm5ScFlXeHNlVnh1SUNBZ0lDOHZJR2hwWkdVZ2RHaGxJRXhoZW5sTWIyRmtaWElnYVdZZ2FYUWdaRzlsY3lCdWIzUWdhR0YyWlNCaGJua2dZMmhwYkdSeVpXNHVJRlJvYVhNZ2FYTWdkR2hsSUdOaGMyVmNiaUFnSUNBdkx5QjNhR1Z1SUdOb2FXeGtjbVZ1SUdoaGRtVWdkR2hsSUdCcGMwaHBaR1JsYm1BZ2NISnZjR1Z5ZEhrZ2MyVjBMbHh1SUNBZ0lDOHZJRmRsSUdGc2QyRjVjeUJwYm1Oc2RXUmxJSFJvWlNCZ1kyeGhjM05PWVcxbFlDQmpiR0Z6Y3l3Z1lYTWdkR2hwY3lCcGN5QmpiMjFwYm1jZ1puSnZiU0IwYUdWY2JpQWdJQ0F2THlCallXeHNaWElnYjJZZ2RHaGxJR0JNWVhwNVRHOWhaR1Z5WUNCamIyMXdiMjVsYm5RdVhHNGdJQ0FnWTI5dWMzUWdZMnhoYzNObGN5QTlJR0FrZTJ4dllXUmxaQ0EvSUdocFpHVkZiWEIwZVNBNklDY25mU0FrZTJOc1lYTnpUbUZ0WlgxZ08xeHVJQ0FnSUhKbGRIVnliaUFvWEc0Z0lDQWdJQ0E4WkdsMklHbGtQWHRwWkgwZ2NtVm1QWHRwYm01bGNsSmxabjBnWTJ4aGMzTk9ZVzFsUFh0amJHRnpjMlZ6ZlNCN0xpNHVjbVZ6ZEgwK1hHNGdJQ0FnSUNBZ0lIdHNiMkZrWldRZ0ppWWdLSFI1Y0dWdlppQmphR2xzWkhKbGJpQTlQVDBnSjJaMWJtTjBhVzl1SnlBL0lHTm9hV3hrY21WdUtIc2dhWE5KYmxacFpYY2dmU2tnT2lCamFHbHNaSEpsYmlsOVhHNGdJQ0FnSUNBOEwyUnBkajVjYmlBZ0lDQXBPMXh1SUNCOVhHNHBJR0Z6SUV4aGVubE1iMkZrWlhKVWVYQmxPMXh1WEc1bWRXNWpkR2x2YmlCblpYUlRkSGxzWlhNb0tTQjdYRzRnSUhKbGRIVnliaUI3WEc0Z0lDQWdhR2xrWlVWdGNIUjVPaUJqYzNNb2UxeHVJQ0FnSUNBZ0p5WTZaVzF3ZEhrbk9pQjdYRzRnSUNBZ0lDQWdJR1JwYzNCc1lYazZJQ2R1YjI1bEp5eGNiaUFnSUNBZ0lIMHNYRzRnSUNBZ2ZTa3NYRzRnSUgwN1hHNTlYRzVjYmt4aGVubE1iMkZrWlhJdVpHbHpjR3hoZVU1aGJXVWdQU0FuVEdGNmVVeHZZV1JsY2ljN1hHNU1ZWHA1VEc5aFpHVnlMbU5oYkd4aVlXTnJjeUE5SUh0OUlHRnpJRkpsWTI5eVpEeHpkSEpwYm1jc0lDaGxPaUJKYm5SbGNuTmxZM1JwYjI1UFluTmxjblpsY2tWdWRISjVLU0E5UGlCMmIybGtQanRjYmt4aGVubE1iMkZrWlhJdVlXUmtRMkZzYkdKaFkyc2dQU0FvYVdRNklITjBjbWx1Wnl3Z1l6b2dLR1U2SUVsdWRHVnljMlZqZEdsdmJrOWljMlZ5ZG1WeVJXNTBjbmtwSUQwK0lIWnZhV1FwSUQwK0lDaE1ZWHA1VEc5aFpHVnlMbU5oYkd4aVlXTnJjMXRwWkYwZ1BTQmpLVHRjYmt4aGVubE1iMkZrWlhJdWIySnpaWEoyWlhJZ1BTQnVaWGNnU1c1MFpYSnpaV04wYVc5dVQySnpaWEoyWlhJb1hHNGdJQ2hsYm5SeWFXVnpLU0E5UGlCN1hHNGdJQ0FnWm05eUlDaGpiMjV6ZENCbGJuUnllU0J2WmlCbGJuUnlhV1Z6S1NCN1hHNGdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlFeGhlbmxNYjJGa1pYSXVZMkZzYkdKaFkydHpXMlZ1ZEhKNUxuUmhjbWRsZEM1cFpGMGdQVDA5SUNkbWRXNWpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdUR0Y2ZVV4dllXUmxjaTVqWVd4c1ltRmphM05iWlc1MGNua3VkR0Z5WjJWMExtbGtYU2hsYm5SeWVTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQjdJSEp2YjNSTllYSm5hVzQ2SUNjeE1EQndlQ2NnZlZ4dUtUdGNiaUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN08wRkJUMDhzVTBGQlV5eFhRVUZ6UWl4SFFVRkJPMEZCVUhSRExFVkJRVUVzU1VGQlFTeEZRVUZCTEVOQlFVRTdRVUZSUlN4RlFVRk5MRTFCUVVFc1UwRkJRU3hIUVVGWkxFOUJRVEpDTEV0QlFWTXNRMEZCUVN4RFFVRkJMRU5CUVVFN1FVRkRkRVFzUlVGQlZTeERRVUZCTEVWQlFVRXNSMEZCUVN4VFFVRkJMRU5CUVVFc1QwRkJRU3hMUVVGV0xFbEJRVlVzUjBGQlFTeEZRVUZCTEVkQlFVRXNVMEZCUVN4RFFVRkJMRTlCUVVFc1IwRkJXU3hSUVVGVExFVkJRVUVzUTBGQlFUdEJRVU12UWl4RlFVRkJMRTlCUVU4c1UwRkJWU3hEUVVGQkxFOUJRVUVzUTBGQlFUdEJRVU51UWl4RFFVRkJPMEZCWlU4c1RVRkJUU3hoUVVFMlFpeExRVUZOTEVOQlFVRXNWVUZCUVR0QlFVRkJMRVZCUXpsRExFTkJRVU1zU1VGQmIwUXNSMEZCVVN4TFFVRkJPMEZCUVRWRUxFbEJRVVVzU1VGQlFTeEZRVUZCTEVkQlFVRXNSVUZCUVN4RlFVRkJMRVZCUVVFc1VVRkJRU3hGUVVGVkxFMUJRVkVzUlVGQlFTeFJRVUZCTEVWQlFWVXNVMEV6UW1wRExFVkJRVUVzUjBFeVFrY3NSVUZCTkVNc1JVRkJRU3hKUVVGQkxFZEJRVUVzVTBGQlFTeERRVUUxUXl4RlFVRTBReXhGUVVGQkxFTkJRVEZETEZWQlFWVXNSVUZCUVN4UlFVRkJMRVZCUVZFc1ZVRkJWU3hGUVVGQkxGZEJRVUVzUTBGQlFTeERRVUZCTEVOQlFVRTdRVUZETjBJc1NVRkJRU3hOUVVGTkxFdEJRVXNzVjBGQldTeEZRVUZCTEVOQlFVRTdRVUZEZGtJc1NVRkJRU3hOUVVGTkxFVkJRVVVzVTBGQlFTeEZRVUZqTEVkQlFVRXNWVUZCUVN4RFFVRlhMRk5CUVZNc1EwRkJRU3hEUVVGQk8wRkJRekZETEVsQlFVRXNUVUZCVFN4RFFVRkRMRTFCUVVFc1JVRkJVU3hUUVVGVExFTkJRVUVzUjBGQlNTeFRRVUZUTEV0QlFVc3NRMEZCUVN4RFFVRkJPMEZCUXpGRExFbEJRVUVzVFVGQlRTeERRVUZETEZGQlFVRXNSVUZCVlN4WFFVRlhMRU5CUVVFc1IwRkJTU3hUUVVGVExFdEJRVXNzUTBGQlFTeERRVUZCTzBGQlF6bERMRWxCUVUwc1RVRkJRU3hSUVVGQkxFZEJRVmNzVDBGQmRVSXNTVUZCU1N4RFFVRkJMRU5CUVVFN1FVRkZOVU1zU1VGQmIwSXNiVUpCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVXNzVFVGQlRTeFJRVUZCTEVOQlFWTXNUMEZCVVN4RFFVRkJMRU5CUVVFN1FVRkZhRVFzU1VGQlFTeGhRVUZCTEVOQlFXTXNUVUZCVFR0QlFVTnNRaXhOUVVGWExGVkJRVUVzUTBGQlFTeFhRVUZCTEVOQlFWa3NSVUZCU1N4RlFVRkJMRU5CUVVNc1MwRkJWU3hMUVVGQk8wRkJRM0JETEZGQlFVa3NTVUZCUVN4RFFVRkRMRTFCUVZVc1NVRkJRU3hMUVVGQkxFTkJRVTBzWTBGQlowSXNSVUZCUVR0QlFVTnVReXhWUVVGQkxGTkJRVUVzUTBGQlZTeEpRVUZKTEVOQlFVRXNRMEZCUVR0QlFVTmtMRlZCUVVFc1RVRkJRU3hKUVVGQkxFbEJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4TlFVRkJMRVZCUVVFc1EwRkJRVHRCUVVGQkxGTkJRMFk3UVVGRlFTeFJRVUZCTEZkQlFVRXNRMEZCV1N4TlFVRk5MR05CUVdNc1EwRkJRU3hEUVVGQk8wRkJRMmhETEZGQlFVRXNVVUZCUVN4SlFVRkJMRWxCUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeFJRVUZCTEVOQlFWY3NTMEZCVFN4RFFVRkJMR05CUVVFc1EwRkJRU3hEUVVGQk8wRkJRVUVzVDBGRGJFSXNRMEZCUVN4RFFVRkJPMEZCUlVRc1RVRkJRU3hOUVVGTkxGbEJRVmtzVVVGQlV5eERRVUZCTEU5QlFVRXNRMEZCUVR0QlFVVXpRaXhOUVVGQkxFbEJRVWtzVTBGQlZ5eEZRVUZCTzBGQlEySXNVVUZCVnl4VlFVRkJMRU5CUVVFc1VVRkJRU3hEUVVGVExGRkJRVkVzVTBGQlV5eERRVUZCTEVOQlFVRTdRVUZCUVN4UFFVTjJRenRCUVVWQkxFMUJRVUVzVDBGQlR5eE5RVUZOTzBGQlExZ3NVVUZCWVN4VFFVRkJMRWxCUVVFc1ZVRkJRU3hEUVVGWExGRkJRVk1zUTBGQlFTeFRRVUZCTEVOQlFWVXNVMEZCVXl4RFFVRkJMRU5CUVVFN1FVRkRjRVFzVVVGQlFTeFBRVUZQTEZkQlFWY3NVMEZCVlN4RFFVRkJMRVZCUVVFc1EwRkJRU3hEUVVGQk8wRkJRelZDTEZGQlFVRXNTVUZCU1N4UFFVRlBMRWxCUVVzc1EwRkJRU3hWUVVGQkxFTkJRVmNzVTBGQlV5eERRVUZCTEVOQlFVVXNWMEZCVnl4RFFVRkhMRVZCUVVFN1FVRkRiRVFzVlVGQlFTeFZRVUZCTEVOQlFWY3NVMEZCVXl4VlFVRlhMRVZCUVVFc1EwRkJRVHRCUVVGQkxGTkJRMnBETzBGQlFVRXNUMEZEUml4RFFVRkJPMEZCUVVFc1MwRkRSQ3hEUVVGQkxFTkJRVUU3UVVGUFJDeEpRVUZCTEUxQlFVMHNUMEZCVlN4SFFVRkJMRU5CUVVFc1JVRkJSeXhOUVVGVExFZEJRVUVzVTBGQlFTeEhRVUZaTEVWQlFVMHNRMEZCUVN4RFFVRkJMRVZCUVVFc1UwRkJRU3hEUVVGQkxFTkJRVUVzUTBGQlFUdEJRVU01UXl4SlFVRkJMSFZDUVVOSExFdEJRVUVzUTBGQlFTeGhRVUZCTEVOQlFVRXNTMEZCUVN4RlFVRkJMR05CUVVFc1EwRkJRVHRCUVVGQkxFMUJRVWtzUlVGQlFUdEJRVUZCTEUxQlFWRXNSMEZCU3l4RlFVRkJMRkZCUVVFN1FVRkJRU3hOUVVGVkxGTkJRVmNzUlVGQlFTeFBRVUZCTzBGQlFVRXNTMEZCWVN4RlFVRkJMRWxCUVVFc1EwRkJRU3hGUVVOcVJDeE5RVUZYTEV0QlFVRXNUMEZCVHl4UlFVRmhMRXRCUVVFc1ZVRkJRU3hIUVVGaExGTkJRVk1zUlVGQlJTeFJRVUZCTEVWQlFWVXNRMEZCUVN4SFFVRkpMRkZCUTNoRkxFTkJRVUVzUTBGQlFTeERRVUZCTzBGQlFVRXNSMEZGU2p0QlFVTkdMRVZCUVVFN1FVRkZRU3hUUVVGVExGTkJRVmtzUjBGQlFUdEJRVU51UWl4RlFVRlBMRTlCUVVFN1FVRkJRU3hKUVVOTUxGZEJRVmNzUjBGQlNTeERRVUZCTzBGQlFVRXNUVUZEWWl4VFFVRlhMRVZCUVVFN1FVRkJRU3hSUVVOVUxFOUJRVk1zUlVGQlFTeE5RVUZCTzBGQlFVRXNUMEZEV0R0QlFVRkJMRXRCUTBRc1EwRkJRVHRCUVVGQkxFZEJRMGdzUTBGQlFUdEJRVU5HTEVOQlFVRTdRVUZGUVN4VlFVRkJMRU5CUVZjc1YwRkJZeXhIUVVGQkxGbEJRVUVzUTBGQlFUdEJRVU42UWl4VlFVRkJMRU5CUVZjc1dVRkJXU3hGUVVGRExFTkJRVUU3UVVGRGVFSXNWVUZCUVN4RFFVRlhMR05CUVdNc1EwRkJReXhGUVVGQkxFVkJRVmtzUTBGQkswTXNTMEZCUVN4VlFVRkJMRU5CUVZjc1ZVRkJWU3hGUVVGTkxFTkJRVUVzUjBGQlFTeERRVUZCTEVOQlFVRTdRVUZEYUVnc1ZVRkJRU3hEUVVGWExGZEJRVmNzU1VGQlNTeHZRa0ZCUVR0QlFVRkJMRVZCUTNoQ0xFTkJRVU1zVDBGQldTeExRVUZCTzBGQlExZ3NTVUZCUVN4TFFVRkJMRTFCUVZjc1UwRkJVeXhQUVVGVExFVkJRVUU3UVVGRE0wSXNUVUZCUVN4SlFVRkpMRTlCUVU4c1ZVRkJWeXhEUVVGQkxGTkJRVUVzUTBGQlZTeExRVUZOTEVOQlFVRXNUVUZCUVN4RFFVRlBMRkZCUVZFc1ZVRkJXU3hGUVVGQk8wRkJReTlFTEZGQlFVRXNWVUZCUVN4RFFVRlhMRk5CUVZVc1EwRkJRU3hMUVVGQkxFTkJRVTBzVFVGQlR5eERRVUZCTEVWQlFVRXNRMEZCUVN4RFFVRkpMRXRCUVVzc1EwRkJRU3hEUVVGQk8wRkJRVUVzVDBGRE4wTTdRVUZCUVN4TFFVTkdPMEZCUVVFc1IwRkRSanRCUVVGQkxFVkJRMEVzUlVGQlJTeFpRVUZaTEU5QlFWRXNSVUZCUVR0QlFVTjRRaXhEUVVGQk96czdPeUo5XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9PLFNBQVMsV0FBc0IsR0FBQTtBQVB0QyxFQUFBLElBQUEsRUFBQSxDQUFBO0FBUVEsRUFBQSxNQUFBLFNBQUEsR0FBWSxPQUEyQixLQUFTLENBQUEsQ0FBQSxDQUFBO0FBQzVDLEVBQUEsQ0FBQSxLQUFBLFNBQUEsQ0FBQSxPQUFBLEtBQVYsT0FBVSxFQUFBLEdBQUEsU0FBQSxDQUFBLFVBQVksUUFBUyxFQUFBLENBQUE7QUFDL0IsRUFBQSxPQUFPLFNBQVUsQ0FBQSxPQUFBLENBQUE7QUFDbkIsQ0FBQTtBQWVPLE1BQU0sYUFBNkIsS0FBTSxDQUFBLFVBQUE7QUFDOUMsRUFBQSxDQUFDLElBQW9ELEdBQVEsS0FBQTtBQUExRCxJQUFBLElBQUEsS0FBQSxFQUFBLEVBQUEsRUFBQSxRQUFVLEVBQUEsTUFBQSxFQUFRLFVBQVUsU0EzQmpDLEVBQUEsR0EyQkcsRUFBNEMsRUFBQSxJQUFBLEdBQUEsVUFBNUMsRUFBNEMsRUFBQSxDQUExQyxZQUFVLFFBQVEsRUFBQSxVQUFBLEVBQVUsV0FBQSxDQUFB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
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { css } from '@emotion/css';
|
|
2
|
+
import { config } from '@grafana/runtime';
|
|
3
|
+
import React, { useMemo } from 'react';
|
|
4
|
+
import { SceneObjectBase } from '../../core/SceneObjectBase.js';
|
|
5
|
+
|
|
6
|
+
class SceneFlexLayout extends SceneObjectBase {
|
|
7
|
+
toggleDirection() {
|
|
8
|
+
this.setState({
|
|
9
|
+
direction: this.state.direction === "row" ? "column" : "row"
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
isDraggable() {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
SceneFlexLayout.Component = SceneFlexLayoutRenderer;
|
|
17
|
+
function SceneFlexLayoutRenderer({ model, parentState }) {
|
|
18
|
+
const { children, isHidden } = model.useState();
|
|
19
|
+
const style = useLayoutStyle(model.state, parentState);
|
|
20
|
+
if (isHidden) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
24
|
+
className: style
|
|
25
|
+
}, children.map((item) => {
|
|
26
|
+
const Component = item.Component;
|
|
27
|
+
return /* @__PURE__ */ React.createElement(Component, {
|
|
28
|
+
key: item.state.key,
|
|
29
|
+
model: item,
|
|
30
|
+
parentState: model.state
|
|
31
|
+
});
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
class SceneFlexItem extends SceneObjectBase {
|
|
35
|
+
}
|
|
36
|
+
SceneFlexItem.Component = SceneFlexItemRenderer;
|
|
37
|
+
function SceneFlexItemRenderer({ model, parentState }) {
|
|
38
|
+
if (!parentState) {
|
|
39
|
+
throw new Error("SceneFlexItem must be a child of SceneFlexLayout");
|
|
40
|
+
}
|
|
41
|
+
const { body, isHidden } = model.useState();
|
|
42
|
+
const style = useLayoutItemStyle(model.state, parentState);
|
|
43
|
+
if (!body || isHidden) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
47
|
+
className: style
|
|
48
|
+
}, /* @__PURE__ */ React.createElement(body.Component, {
|
|
49
|
+
model: body
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
function applyItemStyles(style, state, parentState) {
|
|
53
|
+
var _a, _b, _c;
|
|
54
|
+
const parentDirection = (_a = parentState.direction) != null ? _a : "row";
|
|
55
|
+
const { xSizing = "fill", ySizing = "fill" } = state;
|
|
56
|
+
style.display = "flex";
|
|
57
|
+
style.position = "relative";
|
|
58
|
+
style.flexDirection = parentDirection;
|
|
59
|
+
if (parentDirection === "column") {
|
|
60
|
+
if (state.height) {
|
|
61
|
+
style.height = state.height;
|
|
62
|
+
} else {
|
|
63
|
+
style.flexGrow = ySizing === "fill" ? 1 : 0;
|
|
64
|
+
}
|
|
65
|
+
if (state.width) {
|
|
66
|
+
style.width = state.width;
|
|
67
|
+
} else {
|
|
68
|
+
style.alignSelf = xSizing === "fill" ? "stretch" : "flex-start";
|
|
69
|
+
}
|
|
70
|
+
} else {
|
|
71
|
+
if (state.height) {
|
|
72
|
+
style.height = state.height;
|
|
73
|
+
} else {
|
|
74
|
+
style.alignSelf = ySizing === "fill" ? "stretch" : "flex-start";
|
|
75
|
+
}
|
|
76
|
+
if (state.width) {
|
|
77
|
+
style.width = state.width;
|
|
78
|
+
} else {
|
|
79
|
+
style.flexGrow = xSizing === "fill" ? 1 : 0;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
style.minWidth = state.minWidth;
|
|
83
|
+
style.maxWidth = state.maxWidth;
|
|
84
|
+
style.maxHeight = state.maxHeight;
|
|
85
|
+
style.minHeight = (_b = state.minHeight) != null ? _b : parentState.minHeight;
|
|
86
|
+
style.height = (_c = state.height) != null ? _c : parentState.height;
|
|
87
|
+
return style;
|
|
88
|
+
}
|
|
89
|
+
function useLayoutItemStyle(state, parentState) {
|
|
90
|
+
return useMemo(() => {
|
|
91
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
92
|
+
const theme = config.theme2;
|
|
93
|
+
const style = applyItemStyles({}, state, parentState);
|
|
94
|
+
style[theme.breakpoints.down("md")] = {
|
|
95
|
+
maxWidth: (_b = (_a = state.md) == null ? void 0 : _a.maxWidth) != null ? _b : "unset",
|
|
96
|
+
maxHeight: (_d = (_c = state.md) == null ? void 0 : _c.maxHeight) != null ? _d : "unset",
|
|
97
|
+
height: (_g = (_e = state.md) == null ? void 0 : _e.height) != null ? _g : (_f = parentState.md) == null ? void 0 : _f.height,
|
|
98
|
+
width: (_j = (_h = state.md) == null ? void 0 : _h.width) != null ? _j : (_i = parentState.md) == null ? void 0 : _i.width
|
|
99
|
+
};
|
|
100
|
+
return css(style);
|
|
101
|
+
}, [state, parentState]);
|
|
102
|
+
}
|
|
103
|
+
function useLayoutStyle(state, parentState) {
|
|
104
|
+
return useMemo(() => {
|
|
105
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
106
|
+
const { direction = "row", wrap } = state;
|
|
107
|
+
const theme = config.theme2;
|
|
108
|
+
const style = {};
|
|
109
|
+
if (parentState) {
|
|
110
|
+
applyItemStyles(style, state, parentState);
|
|
111
|
+
} else {
|
|
112
|
+
style.display = "flex";
|
|
113
|
+
style.flexGrow = 1;
|
|
114
|
+
style.minWidth = state.minWidth;
|
|
115
|
+
style.minHeight = state.minHeight;
|
|
116
|
+
}
|
|
117
|
+
style.flexDirection = direction;
|
|
118
|
+
style.gap = "8px";
|
|
119
|
+
style.flexWrap = wrap || "nowrap";
|
|
120
|
+
style.alignContent = "baseline";
|
|
121
|
+
style.minWidth = style.minWidth || 0;
|
|
122
|
+
style.minHeight = style.minHeight || 0;
|
|
123
|
+
style[theme.breakpoints.down("md")] = {
|
|
124
|
+
flexDirection: (_b = (_a = state.md) == null ? void 0 : _a.direction) != null ? _b : "column",
|
|
125
|
+
maxWidth: (_d = (_c = state.md) == null ? void 0 : _c.maxWidth) != null ? _d : "unset",
|
|
126
|
+
maxHeight: (_f = (_e = state.md) == null ? void 0 : _e.maxHeight) != null ? _f : "unset",
|
|
127
|
+
height: (_h = (_g = state.md) == null ? void 0 : _g.height) != null ? _h : "unset",
|
|
128
|
+
width: (_j = (_i = state.md) == null ? void 0 : _i.width) != null ? _j : "unset"
|
|
129
|
+
};
|
|
130
|
+
return css(style);
|
|
131
|
+
}, [parentState, state]);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export { SceneFlexItem, SceneFlexLayout };
|
|
135
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVGbGV4TGF5b3V0LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2xheW91dC9TY2VuZUZsZXhMYXlvdXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vY3NzJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJ0BncmFmYW5hL3J1bnRpbWUnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTY2VuZU9iamVjdEJhc2UgfSBmcm9tICcuLi8uLi9jb3JlL1NjZW5lT2JqZWN0QmFzZS5qcyc7XG5cbmNsYXNzIFNjZW5lRmxleExheW91dCBleHRlbmRzIFNjZW5lT2JqZWN0QmFzZSB7XG4gIHRvZ2dsZURpcmVjdGlvbigpIHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGRpcmVjdGlvbjogdGhpcy5zdGF0ZS5kaXJlY3Rpb24gPT09IFwicm93XCIgPyBcImNvbHVtblwiIDogXCJyb3dcIlxuICAgIH0pO1xuICB9XG4gIGlzRHJhZ2dhYmxlKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuU2NlbmVGbGV4TGF5b3V0LkNvbXBvbmVudCA9IFNjZW5lRmxleExheW91dFJlbmRlcmVyO1xuZnVuY3Rpb24gU2NlbmVGbGV4TGF5b3V0UmVuZGVyZXIoeyBtb2RlbCwgcGFyZW50U3RhdGUgfSkge1xuICBjb25zdCB7IGNoaWxkcmVuLCBpc0hpZGRlbiB9ID0gbW9kZWwudXNlU3RhdGUoKTtcbiAgY29uc3Qgc3R5bGUgPSB1c2VMYXlvdXRTdHlsZShtb2RlbC5zdGF0ZSwgcGFyZW50U3RhdGUpO1xuICBpZiAoaXNIaWRkZW4pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIGNsYXNzTmFtZTogc3R5bGVcbiAgfSwgY2hpbGRyZW4ubWFwKChpdGVtKSA9PiB7XG4gICAgY29uc3QgQ29tcG9uZW50ID0gaXRlbS5Db21wb25lbnQ7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KENvbXBvbmVudCwge1xuICAgICAga2V5OiBpdGVtLnN0YXRlLmtleSxcbiAgICAgIG1vZGVsOiBpdGVtLFxuICAgICAgcGFyZW50U3RhdGU6IG1vZGVsLnN0YXRlXG4gICAgfSk7XG4gIH0pKTtcbn1cbmNsYXNzIFNjZW5lRmxleEl0ZW0gZXh0ZW5kcyBTY2VuZU9iamVjdEJhc2Uge1xufVxuU2NlbmVGbGV4SXRlbS5Db21wb25lbnQgPSBTY2VuZUZsZXhJdGVtUmVuZGVyZXI7XG5mdW5jdGlvbiBTY2VuZUZsZXhJdGVtUmVuZGVyZXIoeyBtb2RlbCwgcGFyZW50U3RhdGUgfSkge1xuICBpZiAoIXBhcmVudFN0YXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU2NlbmVGbGV4SXRlbSBtdXN0IGJlIGEgY2hpbGQgb2YgU2NlbmVGbGV4TGF5b3V0XCIpO1xuICB9XG4gIGNvbnN0IHsgYm9keSwgaXNIaWRkZW4gfSA9IG1vZGVsLnVzZVN0YXRlKCk7XG4gIGNvbnN0IHN0eWxlID0gdXNlTGF5b3V0SXRlbVN0eWxlKG1vZGVsLnN0YXRlLCBwYXJlbnRTdGF0ZSk7XG4gIGlmICghYm9keSB8fCBpc0hpZGRlbikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgY2xhc3NOYW1lOiBzdHlsZVxuICB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChib2R5LkNvbXBvbmVudCwge1xuICAgIG1vZGVsOiBib2R5XG4gIH0pKTtcbn1cbmZ1bmN0aW9uIGFwcGx5SXRlbVN0eWxlcyhzdHlsZSwgc3RhdGUsIHBhcmVudFN0YXRlKSB7XG4gIHZhciBfYSwgX2IsIF9jO1xuICBjb25zdCBwYXJlbnREaXJlY3Rpb24gPSAoX2EgPSBwYXJlbnRTdGF0ZS5kaXJlY3Rpb24pICE9IG51bGwgPyBfYSA6IFwicm93XCI7XG4gIGNvbnN0IHsgeFNpemluZyA9IFwiZmlsbFwiLCB5U2l6aW5nID0gXCJmaWxsXCIgfSA9IHN0YXRlO1xuICBzdHlsZS5kaXNwbGF5ID0gXCJmbGV4XCI7XG4gIHN0eWxlLnBvc2l0aW9uID0gXCJyZWxhdGl2ZVwiO1xuICBzdHlsZS5mbGV4RGlyZWN0aW9uID0gcGFyZW50RGlyZWN0aW9uO1xuICBpZiAocGFyZW50RGlyZWN0aW9uID09PSBcImNvbHVtblwiKSB7XG4gICAgaWYgKHN0YXRlLmhlaWdodCkge1xuICAgICAgc3R5bGUuaGVpZ2h0ID0gc3RhdGUuaGVpZ2h0O1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZS5mbGV4R3JvdyA9IHlTaXppbmcgPT09IFwiZmlsbFwiID8gMSA6IDA7XG4gICAgfVxuICAgIGlmIChzdGF0ZS53aWR0aCkge1xuICAgICAgc3R5bGUud2lkdGggPSBzdGF0ZS53aWR0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGUuYWxpZ25TZWxmID0geFNpemluZyA9PT0gXCJmaWxsXCIgPyBcInN0cmV0Y2hcIiA6IFwiZmxleC1zdGFydFwiO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoc3RhdGUuaGVpZ2h0KSB7XG4gICAgICBzdHlsZS5oZWlnaHQgPSBzdGF0ZS5oZWlnaHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlLmFsaWduU2VsZiA9IHlTaXppbmcgPT09IFwiZmlsbFwiID8gXCJzdHJldGNoXCIgOiBcImZsZXgtc3RhcnRcIjtcbiAgICB9XG4gICAgaWYgKHN0YXRlLndpZHRoKSB7XG4gICAgICBzdHlsZS53aWR0aCA9IHN0YXRlLndpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZS5mbGV4R3JvdyA9IHhTaXppbmcgPT09IFwiZmlsbFwiID8gMSA6IDA7XG4gICAgfVxuICB9XG4gIHN0eWxlLm1pbldpZHRoID0gc3RhdGUubWluV2lkdGg7XG4gIHN0eWxlLm1heFdpZHRoID0gc3RhdGUubWF4V2lkdGg7XG4gIHN0eWxlLm1heEhlaWdodCA9IHN0YXRlLm1heEhlaWdodDtcbiAgc3R5bGUubWluSGVpZ2h0ID0gKF9iID0gc3RhdGUubWluSGVpZ2h0KSAhPSBudWxsID8gX2IgOiBwYXJlbnRTdGF0ZS5taW5IZWlnaHQ7XG4gIHN0eWxlLmhlaWdodCA9IChfYyA9IHN0YXRlLmhlaWdodCkgIT0gbnVsbCA/IF9jIDogcGFyZW50U3RhdGUuaGVpZ2h0O1xuICByZXR1cm4gc3R5bGU7XG59XG5mdW5jdGlvbiB1c2VMYXlvdXRJdGVtU3R5bGUoc3RhdGUsIHBhcmVudFN0YXRlKSB7XG4gIHJldHVybiB1c2VNZW1vKCgpID0+IHtcbiAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaSwgX2o7XG4gICAgY29uc3QgdGhlbWUgPSBjb25maWcudGhlbWUyO1xuICAgIGNvbnN0IHN0eWxlID0gYXBwbHlJdGVtU3R5bGVzKHt9LCBzdGF0ZSwgcGFyZW50U3RhdGUpO1xuICAgIHN0eWxlW3RoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJtZFwiKV0gPSB7XG4gICAgICBtYXhXaWR0aDogKF9iID0gKF9hID0gc3RhdGUubWQpID09IG51bGwgPyB2b2lkIDAgOiBfYS5tYXhXaWR0aCkgIT0gbnVsbCA/IF9iIDogXCJ1bnNldFwiLFxuICAgICAgbWF4SGVpZ2h0OiAoX2QgPSAoX2MgPSBzdGF0ZS5tZCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jLm1heEhlaWdodCkgIT0gbnVsbCA/IF9kIDogXCJ1bnNldFwiLFxuICAgICAgaGVpZ2h0OiAoX2cgPSAoX2UgPSBzdGF0ZS5tZCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lLmhlaWdodCkgIT0gbnVsbCA/IF9nIDogKF9mID0gcGFyZW50U3RhdGUubWQpID09IG51bGwgPyB2b2lkIDAgOiBfZi5oZWlnaHQsXG4gICAgICB3aWR0aDogKF9qID0gKF9oID0gc3RhdGUubWQpID09IG51bGwgPyB2b2lkIDAgOiBfaC53aWR0aCkgIT0gbnVsbCA/IF9qIDogKF9pID0gcGFyZW50U3RhdGUubWQpID09IG51bGwgPyB2b2lkIDAgOiBfaS53aWR0aFxuICAgIH07XG4gICAgcmV0dXJuIGNzcyhzdHlsZSk7XG4gIH0sIFtzdGF0ZSwgcGFyZW50U3RhdGVdKTtcbn1cbmZ1bmN0aW9uIHVzZUxheW91dFN0eWxlKHN0YXRlLCBwYXJlbnRTdGF0ZSkge1xuICByZXR1cm4gdXNlTWVtbygoKSA9PiB7XG4gICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2ksIF9qO1xuICAgIGNvbnN0IHsgZGlyZWN0aW9uID0gXCJyb3dcIiwgd3JhcCB9ID0gc3RhdGU7XG4gICAgY29uc3QgdGhlbWUgPSBjb25maWcudGhlbWUyO1xuICAgIGNvbnN0IHN0eWxlID0ge307XG4gICAgaWYgKHBhcmVudFN0YXRlKSB7XG4gICAgICBhcHBseUl0ZW1TdHlsZXMoc3R5bGUsIHN0YXRlLCBwYXJlbnRTdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlLmRpc3BsYXkgPSBcImZsZXhcIjtcbiAgICAgIHN0eWxlLmZsZXhHcm93ID0gMTtcbiAgICAgIHN0eWxlLm1pbldpZHRoID0gc3RhdGUubWluV2lkdGg7XG4gICAgICBzdHlsZS5taW5IZWlnaHQgPSBzdGF0ZS5taW5IZWlnaHQ7XG4gICAgfVxuICAgIHN0eWxlLmZsZXhEaXJlY3Rpb24gPSBkaXJlY3Rpb247XG4gICAgc3R5bGUuZ2FwID0gXCI4cHhcIjtcbiAgICBzdHlsZS5mbGV4V3JhcCA9IHdyYXAgfHwgXCJub3dyYXBcIjtcbiAgICBzdHlsZS5hbGlnbkNvbnRlbnQgPSBcImJhc2VsaW5lXCI7XG4gICAgc3R5bGUubWluV2lkdGggPSBzdHlsZS5taW5XaWR0aCB8fCAwO1xuICAgIHN0eWxlLm1pbkhlaWdodCA9IHN0eWxlLm1pbkhlaWdodCB8fCAwO1xuICAgIHN0eWxlW3RoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJtZFwiKV0gPSB7XG4gICAgICBmbGV4RGlyZWN0aW9uOiAoX2IgPSAoX2EgPSBzdGF0ZS5tZCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmRpcmVjdGlvbikgIT0gbnVsbCA/IF9iIDogXCJjb2x1bW5cIixcbiAgICAgIG1heFdpZHRoOiAoX2QgPSAoX2MgPSBzdGF0ZS5tZCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jLm1heFdpZHRoKSAhPSBudWxsID8gX2QgOiBcInVuc2V0XCIsXG4gICAgICBtYXhIZWlnaHQ6IChfZiA9IChfZSA9IHN0YXRlLm1kKSA9PSBudWxsID8gdm9pZCAwIDogX2UubWF4SGVpZ2h0KSAhPSBudWxsID8gX2YgOiBcInVuc2V0XCIsXG4gICAgICBoZWlnaHQ6IChfaCA9IChfZyA9IHN0YXRlLm1kKSA9PSBudWxsID8gdm9pZCAwIDogX2cuaGVpZ2h0KSAhPSBudWxsID8gX2ggOiBcInVuc2V0XCIsXG4gICAgICB3aWR0aDogKF9qID0gKF9pID0gc3RhdGUubWQpID09IG51bGwgPyB2b2lkIDAgOiBfaS53aWR0aCkgIT0gbnVsbCA/IF9qIDogXCJ1bnNldFwiXG4gICAgfTtcbiAgICByZXR1cm4gY3NzKHN0eWxlKTtcbiAgfSwgW3BhcmVudFN0YXRlLCBzdGF0ZV0pO1xufVxuXG5leHBvcnQgeyBTY2VuZUZsZXhJdGVtLCBTY2VuZUZsZXhMYXlvdXQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pVTJObGJtVkdiR1Y0VEdGNWIzVjBMbXB6SWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOHVMaTl6Y21NdlkyOXRjRzl1Wlc1MGN5OXNZWGx2ZFhRdlUyTmxibVZHYkdWNFRHRjViM1YwTG5SemVDSmRMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdleUJqYzNNc0lFTlRVMDlpYW1WamRDQjlJR1p5YjIwZ0owQmxiVzkwYVc5dUwyTnpjeWM3WEc1cGJYQnZjblFnZXlCamIyNW1hV2NnZlNCbWNtOXRJQ2RBWjNKaFptRnVZUzl5ZFc1MGFXMWxKenRjYm1sdGNHOXlkQ0JTWldGamRDd2dleUJEYjIxd2IyNWxiblJVZVhCbExDQkRVMU5RY205d1pYSjBhV1Z6TENCMWMyVk5aVzF2SUgwZ1puSnZiU0FuY21WaFkzUW5PMXh1WEc1cGJYQnZjblFnZXlCVFkyVnVaVTlpYW1WamRFSmhjMlVnZlNCbWNtOXRJQ2N1TGk4dUxpOWpiM0psTDFOalpXNWxUMkpxWldOMFFtRnpaU2M3WEc1cGJYQnZjblFnZXlCVFkyVnVaVU52YlhCdmJtVnVkRkJ5YjNCekxDQlRZMlZ1WlV4aGVXOTFkQ3dnVTJObGJtVlBZbXBsWTNSVGRHRjBaU3dnVTJObGJtVlBZbXBsWTNRZ2ZTQm1jbTl0SUNjdUxpOHVMaTlqYjNKbEwzUjVjR1Z6Snp0Y2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQlRZMlZ1WlVac1pYaEpkR1Z0VTNSaGRHVk1hV3RsSUdWNGRHVnVaSE1nVTJObGJtVkdiR1Y0U1hSbGJWQnNZV05sYldWdWRDd2dVMk5sYm1WUFltcGxZM1JUZEdGMFpTQjdmVnh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUZOalpXNWxSbXhsZUVsMFpXMU1hV3RsSUdWNGRHVnVaSE1nVTJObGJtVlBZbXBsWTNROFUyTmxibVZHYkdWNFNYUmxiVk4wWVhSbFRHbHJaVDRnZTMxY2JseHVhVzUwWlhKbVlXTmxJRk5qWlc1bFJteGxlRXhoZVc5MWRGTjBZWFJsSUdWNGRHVnVaSE1nVTJObGJtVlBZbXBsWTNSVGRHRjBaU3dnVTJObGJtVkdiR1Y0U1hSbGJWQnNZV05sYldWdWRDQjdYRzRnSUdOb2FXeGtjbVZ1T2lCVFkyVnVaVVpzWlhoSmRHVnRUR2xyWlZ0ZE8xeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdVMk5sYm1WR2JHVjRUR0Y1YjNWMElHVjRkR1Z1WkhNZ1UyTmxibVZQWW1wbFkzUkNZWE5sUEZOalpXNWxSbXhsZUV4aGVXOTFkRk4wWVhSbFBpQnBiWEJzWlcxbGJuUnpJRk5qWlc1bFRHRjViM1YwSUh0Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCRGIyMXdiMjVsYm5RZ1BTQlRZMlZ1WlVac1pYaE1ZWGx2ZFhSU1pXNWtaWEpsY2p0Y2JseHVJQ0J3ZFdKc2FXTWdkRzluWjJ4bFJHbHlaV04wYVc5dUtDa2dlMXh1SUNBZ0lIUm9hWE11YzJWMFUzUmhkR1VvZTF4dUlDQWdJQ0FnWkdseVpXTjBhVzl1T2lCMGFHbHpMbk4wWVhSbExtUnBjbVZqZEdsdmJpQTlQVDBnSjNKdmR5Y2dQeUFuWTI5c2RXMXVKeUE2SUNkeWIzY25MRnh1SUNBZ0lIMHBPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR2x6UkhKaFoyZGhZbXhsS0NrNklHSnZiMnhsWVc0Z2UxeHVJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnZlZ4dWZWeHVYRzVtZFc1amRHbHZiaUJUWTJWdVpVWnNaWGhNWVhsdmRYUlNaVzVrWlhKbGNpaDdJRzF2WkdWc0xDQndZWEpsYm5SVGRHRjBaU0I5T2lCVFkyVnVaVVpzWlhoSmRHVnRVbVZ1WkdWeVVISnZjSE04VTJObGJtVkdiR1Y0VEdGNWIzVjBQaWtnZTF4dUlDQmpiMjV6ZENCN0lHTm9hV3hrY21WdUxDQnBjMGhwWkdSbGJpQjlJRDBnYlc5a1pXd3VkWE5sVTNSaGRHVW9LVHRjYmlBZ1kyOXVjM1FnYzNSNWJHVWdQU0IxYzJWTVlYbHZkWFJUZEhsc1pTaHRiMlJsYkM1emRHRjBaU3dnY0dGeVpXNTBVM1JoZEdVcE8xeHVYRzRnSUdsbUlDaHBjMGhwWkdSbGJpa2dlMXh1SUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNCOVhHNWNiaUFnY21WMGRYSnVJQ2hjYmlBZ0lDQThaR2wySUdOc1lYTnpUbUZ0WlQxN2MzUjViR1Y5UGx4dUlDQWdJQ0FnZTJOb2FXeGtjbVZ1TG0xaGNDZ29hWFJsYlNrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQkRiMjF3YjI1bGJuUWdQU0JwZEdWdExrTnZiWEJ2Ym1WdWRDQmhjeUJEYjIxd2IyNWxiblJVZVhCbFBGTmpaVzVsUm14bGVFbDBaVzFTWlc1a1pYSlFjbTl3Y3p4VFkyVnVaVTlpYW1WamRENCtPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdQRU52YlhCdmJtVnVkQ0JyWlhrOWUybDBaVzB1YzNSaGRHVXVhMlY1ZlNCdGIyUmxiRDE3YVhSbGJYMGdjR0Z5Wlc1MFUzUmhkR1U5ZTIxdlpHVnNMbk4wWVhSbGZTQXZQanRjYmlBZ0lDQWdJSDBwZlZ4dUlDQWdJRHd2WkdsMlBseHVJQ0FwTzF4dWZWeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRk5qWlc1bFJteGxlRWwwWlcxUWJHRmpaVzFsYm5RZ2UxeHVJQ0IzY21Gd1B6b2dRMU5UVUhKdmNHVnlkR2xsYzFzblpteGxlRmR5WVhBblhUdGNiaUFnWkdseVpXTjBhVzl1UHpvZ1ExTlRVSEp2Y0dWeWRHbGxjMXNuWm14bGVFUnBjbVZqZEdsdmJpZGRPMXh1SUNCM2FXUjBhRDg2SUVOVFUxQnliM0JsY25ScFpYTmJKM2RwWkhSb0oxMDdYRzRnSUdobGFXZG9kRDg2SUVOVFUxQnliM0JsY25ScFpYTmJKMmhsYVdkb2RDZGRPMXh1SUNCdGFXNVhhV1IwYUQ4NklFTlRVMUJ5YjNCbGNuUnBaWE5iSjIxcGJsZHBaSFJvSjEwN1hHNGdJRzFwYmtobGFXZG9kRDg2SUVOVFUxQnliM0JsY25ScFpYTmJKMjFwYmtobGFXZG9kQ2RkTzF4dUlDQnRZWGhYYVdSMGFEODZJRU5UVTFCeWIzQmxjblJwWlhOYkoyMWhlRmRwWkhSb0oxMDdYRzRnSUcxaGVFaGxhV2RvZEQ4NklFTlRVMUJ5YjNCbGNuUnBaWE5iSjIxaGVFaGxhV2RvZENkZE8xeHVJQ0I0VTJsNmFXNW5Qem9nSjJacGJHd25JSHdnSjJOdmJuUmxiblFuTzF4dUlDQjVVMmw2YVc1blB6b2dKMlpwYkd3bklId2dKMk52Ym5SbGJuUW5PMXh1SUNBdktpcGNiaUFnSUNvZ1ZISjFaU0IzYUdWdUlIUm9aU0JwZEdWdElITm9iM1ZzWkNCeVpXNWtaWEpsWkNCaWRYUWdibTkwSUhacGMybGliR1V1WEc0Z0lDQXFJRlZ6WldaMWJDQm1iM0lnWTI5dVpHbDBhVzl1WVd3Z1pHbHpjR3hoZVNCdlppQnNZWGx2ZFhRZ2FYUmxiWE5jYmlBZ0lDb3ZYRzRnSUdselNHbGtaR1Z1UHpvZ1ltOXZiR1ZoYmp0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nVTJWMElHUnBjbVZqZEdsdmJpQm1iM0lnYzIxaGJHeGxjaUJ6WTNKbFpXNXpMaUJVYUdseklHUmxabUYxYkhSeklIUnZJR052YkhWdGJpNWNiaUFnSUNvZ1ZHaHBjeUJsY1hWaGJITWdiV1ZrYVdFZ2NYVmxjbmtnZEdobGJXVXVZbkpsWVd0d2IybHVkSE11Wkc5M2JpZ25iV1FuS1Z4dUlDQWdLaTljYmlBZ2JXUS9PaUJUWTJWdVpVWnNaWGhKZEdWdFVHeGhZMlZ0Wlc1ME8xeHVmVnh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUZOalpXNWxSbXhsZUVsMFpXMVRkR0YwWlNCbGVIUmxibVJ6SUZOalpXNWxSbXhsZUVsMFpXMVFiR0ZqWlcxbGJuUXNJRk5qWlc1bFQySnFaV04wVTNSaGRHVWdlMXh1SUNCaWIyUjVPaUJUWTJWdVpVOWlhbVZqZENCOElIVnVaR1ZtYVc1bFpEdGNibjFjYmx4dWFXNTBaWEptWVdObElGTmpaVzVsUm14bGVFbDBaVzFTWlc1a1pYSlFjbTl3Y3p4VVBpQmxlSFJsYm1SeklGTmpaVzVsUTI5dGNHOXVaVzUwVUhKdmNITThWRDRnZTF4dUlDQndZWEpsYm5SVGRHRjBaVDg2SUZOalpXNWxSbXhsZUVsMFpXMVFiR0ZqWlcxbGJuUTdYRzU5WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJUWTJWdVpVWnNaWGhKZEdWdElHVjRkR1Z1WkhNZ1UyTmxibVZQWW1wbFkzUkNZWE5sUEZOalpXNWxSbXhsZUVsMFpXMVRkR0YwWlQ0Z2UxeHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklFTnZiWEJ2Ym1WdWRDQTlJRk5qWlc1bFJteGxlRWwwWlcxU1pXNWtaWEpsY2p0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnVTJObGJtVkdiR1Y0U1hSbGJWSmxibVJsY21WeUtIc2diVzlrWld3c0lIQmhjbVZ1ZEZOMFlYUmxJSDA2SUZOalpXNWxSbXhsZUVsMFpXMVNaVzVrWlhKUWNtOXdjenhUWTJWdVpVWnNaWGhKZEdWdFBpa2dlMXh1SUNCcFppQW9JWEJoY21WdWRGTjBZWFJsS1NCN1hHNGdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLQ2RUWTJWdVpVWnNaWGhKZEdWdElHMTFjM1FnWW1VZ1lTQmphR2xzWkNCdlppQlRZMlZ1WlVac1pYaE1ZWGx2ZFhRbktUdGNiaUFnZlZ4dVhHNGdJR052Ym5OMElIc2dZbTlrZVN3Z2FYTklhV1JrWlc0Z2ZTQTlJRzF2WkdWc0xuVnpaVk4wWVhSbEtDazdYRzRnSUdOdmJuTjBJSE4wZVd4bElEMGdkWE5sVEdGNWIzVjBTWFJsYlZOMGVXeGxLRzF2WkdWc0xuTjBZWFJsTENCd1lYSmxiblJUZEdGMFpTazdYRzVjYmlBZ2FXWWdLQ0ZpYjJSNUlIeDhJR2x6U0dsa1pHVnVLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lIMWNibHh1SUNCeVpYUjFjbTRnS0Z4dUlDQWdJRHhrYVhZZ1kyeGhjM05PWVcxbFBYdHpkSGxzWlgwK1hHNGdJQ0FnSUNBOFltOWtlUzVEYjIxd2IyNWxiblFnYlc5a1pXdzllMkp2WkhsOUlDOCtYRzRnSUNBZ1BDOWthWFkrWEc0Z0lDazdYRzU5WEc1bWRXNWpkR2x2YmlCaGNIQnNlVWwwWlcxVGRIbHNaWE1vYzNSNWJHVTZJRU5UVTA5aWFtVmpkQ3dnYzNSaGRHVTZJRk5qWlc1bFJteGxlRWwwWlcxUWJHRmpaVzFsYm5Rc0lIQmhjbVZ1ZEZOMFlYUmxPaUJUWTJWdVpVWnNaWGhKZEdWdFVHeGhZMlZ0Wlc1MEtTQjdYRzRnSUdOdmJuTjBJSEJoY21WdWRFUnBjbVZqZEdsdmJpQTlJSEJoY21WdWRGTjBZWFJsTG1ScGNtVmpkR2x2YmlBL1B5QW5jbTkzSnp0Y2JpQWdZMjl1YzNRZ2V5QjRVMmw2YVc1bklEMGdKMlpwYkd3bkxDQjVVMmw2YVc1bklEMGdKMlpwYkd3bklIMGdQU0J6ZEdGMFpUdGNibHh1SUNCemRIbHNaUzVrYVhOd2JHRjVJRDBnSjJac1pYZ25PMXh1SUNCemRIbHNaUzV3YjNOcGRHbHZiaUE5SUNkeVpXeGhkR2wyWlNjN1hHNGdJSE4wZVd4bExtWnNaWGhFYVhKbFkzUnBiMjRnUFNCd1lYSmxiblJFYVhKbFkzUnBiMjQ3WEc1Y2JpQWdhV1lnS0hCaGNtVnVkRVJwY21WamRHbHZiaUE5UFQwZ0oyTnZiSFZ0YmljcElIdGNiaUFnSUNCcFppQW9jM1JoZEdVdWFHVnBaMmgwS1NCN1hHNGdJQ0FnSUNCemRIbHNaUzVvWldsbmFIUWdQU0J6ZEdGMFpTNW9aV2xuYUhRN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSE4wZVd4bExtWnNaWGhIY205M0lEMGdlVk5wZW1sdVp5QTlQVDBnSjJacGJHd25JRDhnTVNBNklEQTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLSE4wWVhSbExuZHBaSFJvS1NCN1hHNGdJQ0FnSUNCemRIbHNaUzUzYVdSMGFDQTlJSE4wWVhSbExuZHBaSFJvTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnpkSGxzWlM1aGJHbG5ibE5sYkdZZ1BTQjRVMmw2YVc1bklEMDlQU0FuWm1sc2JDY2dQeUFuYzNSeVpYUmphQ2NnT2lBblpteGxlQzF6ZEdGeWRDYzdYRzRnSUNBZ2ZWeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lHbG1JQ2h6ZEdGMFpTNW9aV2xuYUhRcElIdGNiaUFnSUNBZ0lITjBlV3hsTG1obGFXZG9kQ0E5SUhOMFlYUmxMbWhsYVdkb2REdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnYzNSNWJHVXVZV3hwWjI1VFpXeG1JRDBnZVZOcGVtbHVaeUE5UFQwZ0oyWnBiR3duSUQ4Z0ozTjBjbVYwWTJnbklEb2dKMlpzWlhndGMzUmhjblFuTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoemRHRjBaUzUzYVdSMGFDa2dlMXh1SUNBZ0lDQWdjM1I1YkdVdWQybGtkR2dnUFNCemRHRjBaUzUzYVdSMGFEdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnYzNSNWJHVXVabXhsZUVkeWIzY2dQU0I0VTJsNmFXNW5JRDA5UFNBblptbHNiQ2NnUHlBeElEb2dNRHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0J6ZEhsc1pTNXRhVzVYYVdSMGFDQTlJSE4wWVhSbExtMXBibGRwWkhSb08xeHVJQ0J6ZEhsc1pTNXRZWGhYYVdSMGFDQTlJSE4wWVhSbExtMWhlRmRwWkhSb08xeHVJQ0J6ZEhsc1pTNXRZWGhJWldsbmFIUWdQU0J6ZEdGMFpTNXRZWGhJWldsbmFIUTdYRzVjYmlBZ0x5OGdSbTl5SUhKbGMzQnZibk5wZG1VZ2JHRjViM1YwY3lCMGJ5QjNiM0pySUhkbElHUmxabUYxYkhRZ2RYTmxJSFJvWlNCdGFXNUlaV2xuYUhRZ2IzSWdhR1ZwWjJoMElHOW1JSFJvWlNCd1lYSmxiblJjYmlBZ2MzUjViR1V1YldsdVNHVnBaMmgwSUQwZ2MzUmhkR1V1YldsdVNHVnBaMmgwSUQ4L0lIQmhjbVZ1ZEZOMFlYUmxMbTFwYmtobGFXZG9kRHRjYmlBZ2MzUjViR1V1YUdWcFoyaDBJRDBnYzNSaGRHVXVhR1ZwWjJoMElEOC9JSEJoY21WdWRGTjBZWFJsTG1obGFXZG9kRHRjYmx4dUlDQnlaWFIxY200Z2MzUjViR1U3WEc1OVhHNWNibVoxYm1OMGFXOXVJSFZ6WlV4aGVXOTFkRWwwWlcxVGRIbHNaU2h6ZEdGMFpUb2dVMk5sYm1WR2JHVjRTWFJsYlZOMFlYUmxMQ0J3WVhKbGJuUlRkR0YwWlRvZ1UyTmxibVZHYkdWNFNYUmxiVkJzWVdObGJXVnVkQ2tnZTF4dUlDQnlaWFIxY200Z2RYTmxUV1Z0Ynlnb0tTQTlQaUI3WEc0Z0lDQWdZMjl1YzNRZ2RHaGxiV1VnUFNCamIyNW1hV2N1ZEdobGJXVXlPMXh1SUNBZ0lHTnZibk4wSUhOMGVXeGxJRDBnWVhCd2JIbEpkR1Z0VTNSNWJHVnpLSHQ5TENCemRHRjBaU3dnY0dGeVpXNTBVM1JoZEdVcE8xeHVYRzRnSUNBZ0x5OGdWVzV6WlhRZ2JXRjRWMmxrZEdnZ1ptOXlJSE50WVd4c0lITmpjbVZsYm5NZ1lua2daR1ZtWVhWc2RGeHVJQ0FnSUhOMGVXeGxXM1JvWlcxbExtSnlaV0ZyY0c5cGJuUnpMbVJ2ZDI0b0oyMWtKeWxkSUQwZ2UxeHVJQ0FnSUNBZ2JXRjRWMmxrZEdnNklITjBZWFJsTG0xa1B5NXRZWGhYYVdSMGFDQS9QeUFuZFc1elpYUW5MRnh1SUNBZ0lDQWdiV0Y0U0dWcFoyaDBPaUJ6ZEdGMFpTNXRaRDh1YldGNFNHVnBaMmgwSUQ4L0lDZDFibk5sZENjc1hHNGdJQ0FnSUNCb1pXbG5hSFE2SUhOMFlYUmxMbTFrUHk1b1pXbG5hSFFnUHo4Z2NHRnlaVzUwVTNSaGRHVXViV1EvTG1obGFXZG9kQ3hjYmlBZ0lDQWdJSGRwWkhSb09pQnpkR0YwWlM1dFpEOHVkMmxrZEdnZ1B6OGdjR0Z5Wlc1MFUzUmhkR1V1YldRL0xuZHBaSFJvTEZ4dUlDQWdJSDA3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdZM056S0hOMGVXeGxLVHRjYmlBZ2ZTd2dXM04wWVhSbExDQndZWEpsYm5SVGRHRjBaVjBwTzF4dWZWeHVYRzVtZFc1amRHbHZiaUIxYzJWTVlYbHZkWFJUZEhsc1pTaHpkR0YwWlRvZ1UyTmxibVZHYkdWNFRHRjViM1YwVTNSaGRHVXNJSEJoY21WdWRGTjBZWFJsUHpvZ1UyTmxibVZHYkdWNFNYUmxiVkJzWVdObGJXVnVkQ2tnZTF4dUlDQnlaWFIxY200Z2RYTmxUV1Z0Ynlnb0tTQTlQaUI3WEc0Z0lDQWdZMjl1YzNRZ2V5QmthWEpsWTNScGIyNGdQU0FuY205M0p5d2dkM0poY0NCOUlEMGdjM1JoZEdVN1hHNGdJQ0FnTHk4Z2IyNXNlU0J1WldWa0lHSnlaV0ZyY0c5cGJuUnpJSE52SUdGalkyVnpjMmx1WnlCMGFHVnRaU0JtY205dElHTnZibVpwWnlCcGJuTjBaV0ZrSUc5bUlHTnZiblJsZUhRZ2FYTWdiMnRjYmlBZ0lDQmpiMjV6ZENCMGFHVnRaU0E5SUdOdmJtWnBaeTUwYUdWdFpUSTdYRzVjYmlBZ0lDQmpiMjV6ZENCemRIbHNaVG9nUTFOVFQySnFaV04wSUQwZ2UzMDdYRzVjYmlBZ0lDQnBaaUFvY0dGeVpXNTBVM1JoZEdVcElIdGNiaUFnSUNBZ0lHRndjR3g1U1hSbGJWTjBlV3hsY3loemRIbHNaU3dnYzNSaGRHVXNJSEJoY21WdWRGTjBZWFJsS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdjM1I1YkdVdVpHbHpjR3hoZVNBOUlDZG1iR1Y0Snp0Y2JpQWdJQ0FnSUhOMGVXeGxMbVpzWlhoSGNtOTNJRDBnTVR0Y2JpQWdJQ0FnSUhOMGVXeGxMbTFwYmxkcFpIUm9JRDBnYzNSaGRHVXViV2x1VjJsa2RHZzdYRzRnSUNBZ0lDQnpkSGxzWlM1dGFXNUlaV2xuYUhRZ1BTQnpkR0YwWlM1dGFXNUlaV2xuYUhRN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYzNSNWJHVXVabXhsZUVScGNtVmpkR2x2YmlBOUlHUnBjbVZqZEdsdmJqdGNiaUFnSUNCemRIbHNaUzVuWVhBZ1BTQW5PSEI0Snp0Y2JpQWdJQ0J6ZEhsc1pTNW1iR1Y0VjNKaGNDQTlJSGR5WVhBZ2ZId2dKMjV2ZDNKaGNDYzdYRzRnSUNBZ2MzUjViR1V1WVd4cFoyNURiMjUwWlc1MElEMGdKMkpoYzJWc2FXNWxKenRjYmlBZ0lDQnpkSGxzWlM1dGFXNVhhV1IwYUNBOUlITjBlV3hsTG0xcGJsZHBaSFJvSUh4OElEQTdYRzRnSUNBZ2MzUjViR1V1YldsdVNHVnBaMmgwSUQwZ2MzUjViR1V1YldsdVNHVnBaMmgwSUh4OElEQTdYRzVjYmlBZ0lDQnpkSGxzWlZ0MGFHVnRaUzVpY21WaGEzQnZhVzUwY3k1a2IzZHVLQ2R0WkNjcFhTQTlJSHRjYmlBZ0lDQWdJR1pzWlhoRWFYSmxZM1JwYjI0NklITjBZWFJsTG0xa1B5NWthWEpsWTNScGIyNGdQejhnSjJOdmJIVnRiaWNzWEc0Z0lDQWdJQ0J0WVhoWGFXUjBhRG9nYzNSaGRHVXViV1EvTG0xaGVGZHBaSFJvSUQ4L0lDZDFibk5sZENjc1hHNGdJQ0FnSUNCdFlYaElaV2xuYUhRNklITjBZWFJsTG0xa1B5NXRZWGhJWldsbmFIUWdQejhnSjNWdWMyVjBKeXhjYmlBZ0lDQWdJR2hsYVdkb2REb2djM1JoZEdVdWJXUS9MbWhsYVdkb2RDQS9QeUFuZFc1elpYUW5MRnh1SUNBZ0lDQWdkMmxrZEdnNklITjBZWFJsTG0xa1B5NTNhV1IwYUNBL1B5QW5kVzV6WlhRbkxGeHVJQ0FnSUgwN1hHNWNiaUFnSUNCeVpYUjFjbTRnWTNOektITjBlV3hsS1R0Y2JpQWdmU3dnVzNCaGNtVnVkRk4wWVhSbExDQnpkR0YwWlYwcE8xeHVmVnh1SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN08wRkJaVThzVFVGQlRTeDNRa0ZCZDBJc1pVRkJOa1FzUTBGQlFUdEJRVUZCTEVWQlIzcEdMR1ZCUVd0Q0xFZEJRVUU3UVVGRGRrSXNTVUZCUVN4SlFVRkJMRU5CUVVzc1VVRkJVeXhEUVVGQk8wRkJRVUVzVFVGRFdpeFRRVUZYTEVWQlFVRXNTVUZCUVN4RFFVRkxMRXRCUVUwc1EwRkJRU3hUUVVGQkxFdEJRV01zVVVGQlVTeFJRVUZYTEVkQlFVRXNTMEZCUVR0QlFVRkJMRXRCUTNoRUxFTkJRVUVzUTBGQlFUdEJRVUZCTEVkQlEwZzdRVUZCUVN4RlFVVlBMRmRCUVhWQ0xFZEJRVUU3UVVGRE5VSXNTVUZCVHl4UFFVRkJMRXRCUVVFc1EwRkJRVHRCUVVGQkxFZEJRMVE3UVVGRFJpeERRVUZCTzBGQldtRXNaVUZCUVN4RFFVTkhMRk5CUVZrc1IwRkJRU3gxUWtGQlFTeERRVUZCTzBGQllUVkNMRk5CUVZNc2RVSkJRWGRDTEVOQlFVRXNSVUZCUlN4TFFVRlBMRVZCUVVFc1YwRkJRU3hGUVVFd1JDeEZRVUZCTzBGQlEyeEhMRVZCUVVFc1RVRkJUU3hGUVVGRkxGRkJRVUVzUlVGQlZTeFJRVUZUTEVWQlFVRXNSMEZCU1N4TlFVRk5MRkZCUVZNc1JVRkJRU3hEUVVGQk8wRkJRemxETEVWQlFVRXNUVUZCVFN4TFFVRlJMRWRCUVVFc1kwRkJRU3hEUVVGbExFdEJRVTBzUTBGQlFTeExRVUZCTEVWQlFVOHNWMEZCVnl4RFFVRkJMRU5CUVVFN1FVRkZja1FzUlVGQlFTeEpRVUZKTEZGQlFWVXNSVUZCUVR0QlFVTmFMRWxCUVU4c1QwRkJRU3hKUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU5VTzBGQlJVRXNSVUZCUVN4MVFrRkRSeXhMUVVGQkxFTkJRVUVzWVVGQlFTeERRVUZCTEV0QlFVRXNSVUZCUVR0QlFVRkJMRWxCUVVrc1UwRkJWeXhGUVVGQkxFdEJRVUU3UVVGQlFTeEhRVU5pTEVWQlFVRXNVVUZCUVN4RFFVRlRMRWRCUVVrc1EwRkJRU3hEUVVGRExFbEJRVk1zUzBGQlFUdEJRVU4wUWl4SlFVRkJMRTFCUVUwc1dVRkJXU3hKUVVGTExFTkJRVUVzVTBGQlFTeERRVUZCTzBGQlEzWkNMRWxCUVVFc2RVSkJRVkVzUzBGQlFTeERRVUZCTEdGQlFVRXNRMEZCUVN4VFFVRkJMRVZCUVVFN1FVRkJRU3hOUVVGVkxFZEJRVUVzUlVGQlN5eExRVUZMTEV0QlFVMHNRMEZCUVN4SFFVRkJPMEZCUVVFc1RVRkJTeXhMUVVGUExFVkJRVUVzU1VGQlFUdEJRVUZCTEUxQlFVMHNZVUZCWVN4TFFVRk5MRU5CUVVFc1MwRkJRVHRCUVVGQkxFdEJRVThzUTBGQlFTeERRVUZCTzBGQlFVRXNSMEZETDBVc1EwRkRTQ3hEUVVGQkxFTkJRVUU3UVVGRlNpeERRVUZCTzBGQmEwTlBMRTFCUVUwc2MwSkJRWE5DTEdWQlFXOURMRU5CUVVFN1FVRkZka1VzUTBGQlFUdEJRVVpoTEdGQlFVRXNRMEZEUnl4VFFVRlpMRWRCUVVFc2NVSkJRVUVzUTBGQlFUdEJRVWMxUWl4VFFVRlRMSEZDUVVGelFpeERRVUZCTEVWQlFVVXNTMEZCVHl4RlFVRkJMRmRCUVVFc1JVRkJkMFFzUlVGQlFUdEJRVU01Uml4RlFVRkJMRWxCUVVrc1EwRkJReXhYUVVGaExFVkJRVUU3UVVGRGFFSXNTVUZCVFN4TlFVRkJMRWxCUVVrc1RVRkJUU3hyUkVGQmEwUXNRMEZCUVN4RFFVRkJPMEZCUVVFc1IwRkRjRVU3UVVGRlFTeEZRVUZCTEUxQlFVMHNSVUZCUlN4SlFVRkJMRVZCUVUwc1VVRkJVeXhGUVVGQkxFZEJRVWtzVFVGQlRTeFJRVUZUTEVWQlFVRXNRMEZCUVR0QlFVTXhReXhGUVVGQkxFMUJRVTBzUzBGQlVTeEhRVUZCTEd0Q1FVRkJMRU5CUVcxQ0xFdEJRVTBzUTBGQlFTeExRVUZCTEVWQlFVOHNWMEZCVnl4RFFVRkJMRU5CUVVFN1FVRkZla1FzUlVGQlNTeEpRVUZCTEVOQlFVTXNVVUZCVVN4UlFVRlZMRVZCUVVFN1FVRkRja0lzU1VGQlR5eFBRVUZCTEVsQlFVRXNRMEZCUVR0QlFVRkJMRWRCUTFRN1FVRkZRU3hGUVVGQkxIVkNRVU5ITEV0QlFVRXNRMEZCUVN4aFFVRkJMRU5CUVVFc1MwRkJRU3hGUVVGQk8wRkJRVUVzU1VGQlNTeFRRVUZYTEVWQlFVRXNTMEZCUVR0QlFVRkJMRWRCUTJRc2EwSkJRVUVzUzBGQlFTeERRVUZCTEdGQlFVRXNRMEZCUXl4TFFVRkxMRk5CUVV3c1JVRkJRVHRCUVVGQkxFbEJRV1VzUzBGQlR5eEZRVUZCTEVsQlFVRTdRVUZCUVN4SFFVRk5MRU5CUXk5Q0xFTkJRVUVzUTBGQlFUdEJRVVZLTEVOQlFVRTdRVUZEUVN4VFFVRlRMR1ZCUVVFc1EwRkJaMElzUzBGQmEwSXNSVUZCUVN4TFFVRkJMRVZCUVN0Q0xGZEJRWEZETEVWQlFVRTdRVUZ5Unk5SExFVkJRVUVzU1VGQlFTeEZRVUZCTEVWQlFVRXNSVUZCUVN4RlFVRkJMRVZCUVVFc1EwRkJRVHRCUVhOSFJTeEZRVUZOTEUxQlFVRXNaVUZCUVN4SFFVRkJMRU5CUVd0Q0xFVkJRVmtzUjBGQlFTeFhRVUZCTEVOQlFVRXNVMEZCUVN4TFFVRmFMRWxCUVhsQ0xFZEJRVUVzUlVGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVR0QlFVTnFSQ3hGUVVGQkxFMUJRVTBzUlVGQlJTeFBRVUZCTEVkQlFWVXNUVUZCVVN4RlFVRkJMRTlCUVVFc1IwRkJWU3hSUVVGWExFZEJRVUVzUzBGQlFTeERRVUZCTzBGQlJTOURMRVZCUVVFc1MwRkJRU3hEUVVGTkxFOUJRVlVzUjBGQlFTeE5RVUZCTEVOQlFVRTdRVUZEYUVJc1JVRkJRU3hMUVVGQkxFTkJRVTBzVVVGQlZ5eEhRVUZCTEZWQlFVRXNRMEZCUVR0QlFVTnFRaXhGUVVGQkxFdEJRVUVzUTBGQlRTeGhRVUZuUWl4SFFVRkJMR1ZCUVVFc1EwRkJRVHRCUVVWMFFpeEZRVUZCTEVsQlFVa3NiMEpCUVc5Q0xGRkJRVlVzUlVGQlFUdEJRVU5vUXl4SlFVRkJMRWxCUVVrc1RVRkJUU3hOUVVGUkxFVkJRVUU3UVVGRGFFSXNUVUZCUVN4TFFVRkJMRU5CUVUwc1UwRkJVeXhMUVVGTkxFTkJRVUVzVFVGQlFTeERRVUZCTzBGQlFVRXNTMEZEYUVJc1RVRkJRVHRCUVVOTUxFMUJRVTBzUzBGQlFTeERRVUZCTEZGQlFVRXNSMEZCVnl4UFFVRlpMRXRCUVVFc1RVRkJRU3hIUVVGVExFTkJRVWtzUjBGQlFTeERRVUZCTEVOQlFVRTdRVUZCUVN4TFFVTTFRenRCUVVWQkxFbEJRVUVzU1VGQlNTeE5RVUZOTEV0QlFVOHNSVUZCUVR0QlFVTm1MRTFCUVVFc1MwRkJRU3hEUVVGTkxGRkJRVkVzUzBGQlRTeERRVUZCTEV0QlFVRXNRMEZCUVR0QlFVRkJMRXRCUTJZc1RVRkJRVHRCUVVOTUxFMUJRVTBzUzBGQlFTeERRVUZCTEZOQlFVRXNSMEZCV1N4UFFVRlpMRXRCUVVFc1RVRkJRU3hIUVVGVExGTkJRVmtzUjBGQlFTeFpRVUZCTEVOQlFVRTdRVUZCUVN4TFFVTnlSRHRCUVVGQkxFZEJRMHNzVFVGQlFUdEJRVU5NTEVsQlFVRXNTVUZCU1N4TlFVRk5MRTFCUVZFc1JVRkJRVHRCUVVOb1FpeE5RVUZCTEV0QlFVRXNRMEZCVFN4VFFVRlRMRXRCUVUwc1EwRkJRU3hOUVVGQkxFTkJRVUU3UVVGQlFTeExRVU5vUWl4TlFVRkJPMEZCUTB3c1RVRkJUU3hMUVVGQkxFTkJRVUVzVTBGQlFTeEhRVUZaTEU5QlFWa3NTMEZCUVN4TlFVRkJMRWRCUVZNc1UwRkJXU3hIUVVGQkxGbEJRVUVzUTBGQlFUdEJRVUZCTEV0QlEzSkVPMEZCUlVFc1NVRkJRU3hKUVVGSkxFMUJRVTBzUzBGQlR5eEZRVUZCTzBGQlEyWXNUVUZCUVN4TFFVRkJMRU5CUVUwc1VVRkJVU3hMUVVGTkxFTkJRVUVzUzBGQlFTeERRVUZCTzBGQlFVRXNTMEZEWml4TlFVRkJPMEZCUTB3c1RVRkJUU3hMUVVGQkxFTkJRVUVzVVVGQlFTeEhRVUZYTEU5QlFWa3NTMEZCUVN4TlFVRkJMRWRCUVZNc1EwRkJTU3hIUVVGQkxFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlF6VkRPMEZCUVVFc1IwRkRSanRCUVVWQkxFVkJRVUVzUzBGQlFTeERRVUZOTEZkQlFWY3NTMEZCVFN4RFFVRkJMRkZCUVVFc1EwRkJRVHRCUVVOMlFpeEZRVUZCTEV0QlFVRXNRMEZCVFN4WFFVRlhMRXRCUVUwc1EwRkJRU3hSUVVGQkxFTkJRVUU3UVVGRGRrSXNSVUZCUVN4TFFVRkJMRU5CUVUwc1dVRkJXU3hMUVVGTkxFTkJRVUVzVTBGQlFTeERRVUZCTzBGQlIzaENMRVZCUVVFc1MwRkJRU3hEUVVGTkxGTkJRVmtzUjBGQlFTeERRVUZCTEVWQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVUwc1UwRkJUaXhMUVVGQkxFbEJRVUVzUjBGQlFTeEZRVUZCTEVkQlFXMUNMRmRCUVZrc1EwRkJRU3hUUVVGQkxFTkJRVUU3UVVGRGFrUXNSVUZCUVN4TFFVRkJMRU5CUVUwc1RVRkJVeXhIUVVGQkxFTkJRVUVzUlVGQlFTeEhRVUZCTEV0QlFVRXNRMEZCVFN4TlFVRk9MRXRCUVVFc1NVRkJRU3hIUVVGQkxFVkJRVUVzUjBGQlowSXNWMEZCV1N4RFFVRkJMRTFCUVVFc1EwRkJRVHRCUVVVelF5eEZRVUZQTEU5QlFVRXNTMEZCUVN4RFFVRkJPMEZCUTFRc1EwRkJRVHRCUVVWQkxGTkJRVk1zYTBKQlFVRXNRMEZCYlVJc1QwRkJNa0lzVjBGQmNVTXNSVUZCUVR0QlFVTXhSaXhGUVVGQkxFOUJRVThzVVVGQlVTeE5RVUZOTzBGQmJrcDJRaXhKUVVGQkxFbEJRVUVzUlVGQlFTeEZRVUZCTEVWQlFVRXNSVUZCUVN4RlFVRkJMRVZCUVVFc1JVRkJRU3hGUVVGQkxFVkJRVUVzUlVGQlFTeEZRVUZCTEVWQlFVRXNSVUZCUVN4RlFVRkJMRVZCUVVFc1JVRkJRU3hGUVVGQkxFVkJRVUVzUlVGQlFTeERRVUZCTzBGQmIwcEpMRWxCUVVFc1RVRkJUU3hSUVVGUkxFMUJRVThzUTBGQlFTeE5RVUZCTEVOQlFVRTdRVUZEY2tJc1NVRkJRU3hOUVVGTkxFdEJRVkVzUjBGQlFTeGxRVUZCTEVOQlFXZENMRVZCUVVNc1JVRkJSeXhQUVVGUExGZEJRVmNzUTBGQlFTeERRVUZCTzBGQlIzQkVMRWxCUVVFc1MwRkJRU3hEUVVGTkxFdEJRVTBzUTBGQlFTeFhRVUZCTEVOQlFWa3NTVUZCU3l4RFFVRkJMRWxCUVVrc1EwRkJTeXhEUVVGQkxFZEJRVUU3UVVGQlFTeE5RVU53UXl4UlFVRlZMRVZCUVVFc1EwRkJRU3hGUVVGQkxFZEJRVUVzUTBGQlFTeEZRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRk5MRVZCUVU0c1MwRkJRU3hKUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRlZMR0ZCUVZZc1NVRkJjMElzUjBGQlFTeEZRVUZCTEVkQlFVRXNUMEZCUVR0QlFVRkJMRTFCUTJoRExGTkJRVmNzUlVGQlFTeERRVUZCTEVWQlFVRXNSMEZCUVN4RFFVRkJMRVZCUVVFc1IwRkJRU3hMUVVGQkxFTkJRVTBzUlVGQlRpeExRVUZCTEVsQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVlVzWTBGQlZpeEpRVUYxUWl4SFFVRkJMRVZCUVVFc1IwRkJRU3hQUVVGQk8wRkJRVUVzVFVGRGJFTXNUVUZCUVN4RlFVRkJMRU5CUVZFc2FVSkJRVTBzUlVGQlRpeExRVUZCTEVsQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVlVzVjBGQlZpeEpRVUZ2UWl4SFFVRkJMRVZCUVVFc1IwRkJRU3hEUVVGQkxFVkJRVUVzUjBGQlFTeFhRVUZCTEVOQlFWa3NUMEZCV2l4SlFVRm5RaXhIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCUVN4TlFVRkJPMEZCUVVFc1RVRkROVU1zUzBGQlFTeEZRVUZCTEVOQlFVOHNhVUpCUVUwc1JVRkJUaXhMUVVGQkxFbEJRVUVzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVZVc1ZVRkJWaXhKUVVGdFFpeEhRVUZCTEVWQlFVRXNSMEZCUVN4RFFVRkJMRVZCUVVFc1IwRkJRU3hYUVVGQkxFTkJRVmtzVDBGQldpeEpRVUZuUWl4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlFTeExRVUZCTzBGQlFVRXNTMEZETlVNc1EwRkJRVHRCUVVWQkxFbEJRVUVzVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUVN4RFFVRkJPMEZCUVVFc1IwRkRaaXhGUVVGQkxFTkJRVU1zUzBGQlR5eEZRVUZCTEZkQlFWY3NRMEZCUXl4RFFVRkJMRU5CUVVFN1FVRkRla0lzUTBGQlFUdEJRVVZCTEZOQlFWTXNZMEZCUVN4RFFVRmxMRTlCUVRaQ0xGZEJRWE5ETEVWQlFVRTdRVUZEZWtZc1JVRkJRU3hQUVVGUExGRkJRVkVzVFVGQlRUdEJRWEJMZGtJc1NVRkJRU3hKUVVGQkxFVkJRVUVzUlVGQlFTeEZRVUZCTEVWQlFVRXNSVUZCUVN4RlFVRkJMRVZCUVVFc1JVRkJRU3hGUVVGQkxFVkJRVUVzUlVGQlFTeEZRVUZCTEVWQlFVRXNSVUZCUVN4RlFVRkJMRVZCUVVFc1JVRkJRU3hGUVVGQkxFVkJRVUVzUTBGQlFUdEJRWEZMU1N4SlFVRkJMRTFCUVUwc1JVRkJSU3hUUVVGQkxFZEJRVmtzUzBGQlR5eEZRVUZCTEVsQlFVRXNSVUZCVXl4SFFVRkJMRXRCUVVFc1EwRkJRVHRCUVVWd1F5eEpRVUZCTEUxQlFVMHNVVUZCVVN4TlFVRlBMRU5CUVVFc1RVRkJRU3hEUVVGQk8wRkJSWEpDTEVsQlFVRXNUVUZCVFN4UlFVRnRRaXhGUVVGRExFTkJRVUU3UVVGRk1VSXNTVUZCUVN4SlFVRkpMRmRCUVdFc1JVRkJRVHRCUVVObUxFMUJRV2RDTEdWQlFVRXNRMEZCUVN4TFFVRkJMRVZCUVU4c1QwRkJUeXhYUVVGWExFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlEzQkRMRTFCUVVFN1FVRkRUQ3hOUVVGQkxFdEJRVUVzUTBGQlRTeFBRVUZWTEVkQlFVRXNUVUZCUVN4RFFVRkJPMEZCUTJoQ0xFMUJRVUVzUzBGQlFTeERRVUZOTEZGQlFWY3NSMEZCUVN4RFFVRkJMRU5CUVVFN1FVRkRha0lzVFVGQlFTeExRVUZCTEVOQlFVMHNWMEZCVnl4TFFVRk5MRU5CUVVFc1VVRkJRU3hEUVVGQk8wRkJRM1pDTEUxQlFVRXNTMEZCUVN4RFFVRk5MRmxCUVZrc1MwRkJUU3hEUVVGQkxGTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlF6RkNPMEZCUlVFc1NVRkJRU3hMUVVGQkxFTkJRVTBzWVVGQlowSXNSMEZCUVN4VFFVRkJMRU5CUVVFN1FVRkRkRUlzU1VGQlFTeExRVUZCTEVOQlFVMHNSMEZCVFN4SFFVRkJMRXRCUVVFc1EwRkJRVHRCUVVOYUxFbEJRVUVzUzBGQlFTeERRVUZOTEZkQlFWY3NTVUZCVVN4SlFVRkJMRkZCUVVFc1EwRkJRVHRCUVVONlFpeEpRVUZCTEV0QlFVRXNRMEZCVFN4WlFVRmxMRWRCUVVFc1ZVRkJRU3hEUVVGQk8wRkJRM0pDTEVsQlFVMHNTMEZCUVN4RFFVRkJMRkZCUVVFc1IwRkJWeXhOUVVGTkxGRkJRVmtzU1VGQlFTeERRVUZCTEVOQlFVRTdRVUZEYmtNc1NVRkJUU3hMUVVGQkxFTkJRVUVzVTBGQlFTeEhRVUZaTEUxQlFVMHNVMEZCWVN4SlFVRkJMRU5CUVVFc1EwRkJRVHRCUVVWeVF5eEpRVUZCTEV0QlFVRXNRMEZCVFN4TFFVRk5MRU5CUVVFc1YwRkJRU3hEUVVGWkxFbEJRVXNzUTBGQlFTeEpRVUZKTEVOQlFVc3NRMEZCUVN4SFFVRkJPMEZCUVVFc1RVRkRjRU1zWVVGQlpTeEZRVUZCTEVOQlFVRXNSVUZCUVN4SFFVRkJMRU5CUVVFc1JVRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlRTeEZRVUZPTEV0QlFVRXNTVUZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxFVkJRVUVzUTBGQlZTeGpRVUZXTEVsQlFYVkNMRWRCUVVFc1JVRkJRU3hIUVVGQkxGRkJRVUU3UVVGQlFTeE5RVU4wUXl4UlFVRlZMRVZCUVVFc1EwRkJRU3hGUVVGQkxFZEJRVUVzUTBGQlFTeEZRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRk5MRVZCUVU0c1MwRkJRU3hKUVVGQkxFZEJRVUVzUzBGQlFTeERRVUZCTEVkQlFVRXNSVUZCUVN4RFFVRlZMR0ZCUVZZc1NVRkJjMElzUjBGQlFTeEZRVUZCTEVkQlFVRXNUMEZCUVR0QlFVRkJMRTFCUTJoRExGTkJRVmNzUlVGQlFTeERRVUZCTEVWQlFVRXNSMEZCUVN4RFFVRkJMRVZCUVVFc1IwRkJRU3hMUVVGQkxFTkJRVTBzUlVGQlRpeExRVUZCTEVsQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hGUVVGQkxFTkJRVlVzWTBGQlZpeEpRVUYxUWl4SFFVRkJMRVZCUVVFc1IwRkJRU3hQUVVGQk8wRkJRVUVzVFVGRGJFTXNUVUZCVVN4RlFVRkJMRU5CUVVFc1JVRkJRU3hIUVVGQkxFTkJRVUVzUlVGQlFTeEhRVUZCTEV0QlFVRXNRMEZCVFN4RlFVRk9MRXRCUVVFc1NVRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFTeEhRVUZCTEVWQlFVRXNRMEZCVlN4WFFVRldMRWxCUVc5Q0xFZEJRVUVzUlVGQlFTeEhRVUZCTEU5QlFVRTdRVUZCUVN4TlFVTTFRaXhMUVVGUExFVkJRVUVzUTBGQlFTeEZRVUZCTEVkQlFVRXNRMEZCUVN4RlFVRkJMRWRCUVVFc1MwRkJRU3hEUVVGTkxFVkJRVTRzUzBGQlFTeEpRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVFc1JVRkJRU3hEUVVGVkxGVkJRVllzU1VGQmJVSXNSMEZCUVN4RlFVRkJMRWRCUVVFc1QwRkJRVHRCUVVGQkxFdEJRelZDTEVOQlFVRTdRVUZGUVN4SlFVRkJMRTlCUVU4c1NVRkJTU3hMUVVGTExFTkJRVUVzUTBGQlFUdEJRVUZCTEVkQlEyWXNSVUZCUVN4RFFVRkRMRmRCUVdFc1JVRkJRU3hMUVVGTExFTkJRVU1zUTBGQlFTeERRVUZCTzBGQlEzcENPenM3T3lKOVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBZU8sTUFBTSx3QkFBd0IsZUFBNkQsQ0FBQTtFQUd6RixlQUFrQixHQUFBO0FBQ3ZCLElBQUEsSUFBQSxDQUFLLFFBQVMsQ0FBQTtBQUNaLE1BQUEsU0FBQSxFQUFXLElBQUssQ0FBQSxLQUFB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
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SceneObjectBase } from '../../../core/SceneObjectBase.js';
|
|
3
|
+
import { SceneGridLayout } from './SceneGridLayout.js';
|
|
4
|
+
import { SceneGridRow } from './SceneGridRow.js';
|
|
5
|
+
|
|
6
|
+
class SceneGridItem extends SceneObjectBase {
|
|
7
|
+
}
|
|
8
|
+
SceneGridItem.Component = SceneGridItemRenderer;
|
|
9
|
+
function SceneGridItemRenderer({ model }) {
|
|
10
|
+
const { body } = model.useState();
|
|
11
|
+
const parent = model.parent;
|
|
12
|
+
if (parent && !isSceneGridLayout(parent) && !isSceneGridRow(parent)) {
|
|
13
|
+
throw new Error("SceneGridItem must be a child of SceneGridLayout or SceneGridRow");
|
|
14
|
+
}
|
|
15
|
+
if (!body) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
return /* @__PURE__ */ React.createElement(body.Component, {
|
|
19
|
+
model: body
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function isSceneGridRow(child) {
|
|
23
|
+
return child instanceof SceneGridRow;
|
|
24
|
+
}
|
|
25
|
+
function isSceneGridLayout(child) {
|
|
26
|
+
return child instanceof SceneGridLayout;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export { SceneGridItem, isSceneGridRow };
|
|
30
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVHcmlkSXRlbS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50cy9sYXlvdXQvZ3JpZC9TY2VuZUdyaWRJdGVtLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTY2VuZU9iamVjdEJhc2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL1NjZW5lT2JqZWN0QmFzZS5qcyc7XG5pbXBvcnQgeyBTY2VuZUdyaWRMYXlvdXQgfSBmcm9tICcuL1NjZW5lR3JpZExheW91dC5qcyc7XG5pbXBvcnQgeyBTY2VuZUdyaWRSb3cgfSBmcm9tICcuL1NjZW5lR3JpZFJvdy5qcyc7XG5cbmNsYXNzIFNjZW5lR3JpZEl0ZW0gZXh0ZW5kcyBTY2VuZU9iamVjdEJhc2Uge1xufVxuU2NlbmVHcmlkSXRlbS5Db21wb25lbnQgPSBTY2VuZUdyaWRJdGVtUmVuZGVyZXI7XG5mdW5jdGlvbiBTY2VuZUdyaWRJdGVtUmVuZGVyZXIoeyBtb2RlbCB9KSB7XG4gIGNvbnN0IHsgYm9keSB9ID0gbW9kZWwudXNlU3RhdGUoKTtcbiAgY29uc3QgcGFyZW50ID0gbW9kZWwucGFyZW50O1xuICBpZiAocGFyZW50ICYmICFpc1NjZW5lR3JpZExheW91dChwYXJlbnQpICYmICFpc1NjZW5lR3JpZFJvdyhwYXJlbnQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU2NlbmVHcmlkSXRlbSBtdXN0IGJlIGEgY2hpbGQgb2YgU2NlbmVHcmlkTGF5b3V0IG9yIFNjZW5lR3JpZFJvd1wiKTtcbiAgfVxuICBpZiAoIWJvZHkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoYm9keS5Db21wb25lbnQsIHtcbiAgICBtb2RlbDogYm9keVxuICB9KTtcbn1cbmZ1bmN0aW9uIGlzU2NlbmVHcmlkUm93KGNoaWxkKSB7XG4gIHJldHVybiBjaGlsZCBpbnN0YW5jZW9mIFNjZW5lR3JpZFJvdztcbn1cbmZ1bmN0aW9uIGlzU2NlbmVHcmlkTGF5b3V0KGNoaWxkKSB7XG4gIHJldHVybiBjaGlsZCBpbnN0YW5jZW9mIFNjZW5lR3JpZExheW91dDtcbn1cblxuZXhwb3J0IHsgU2NlbmVHcmlkSXRlbSwgaXNTY2VuZUdyaWRSb3cgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pVTJObGJtVkhjbWxrU1hSbGJTNXFjeUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2TGk0dkxpNHZMaTR2YzNKakwyTnZiWEJ2Ym1WdWRITXZiR0Y1YjNWMEwyZHlhV1F2VTJObGJtVkhjbWxrU1hSbGJTNTBjM2dpWFN3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUZKbFlXTjBJR1p5YjIwZ0ozSmxZV04wSnp0Y2JtbHRjRzl5ZENCN0lGTmpaVzVsVDJKcVpXTjBRbUZ6WlNCOUlHWnliMjBnSnk0dUx5NHVMeTR1TDJOdmNtVXZVMk5sYm1WUFltcGxZM1JDWVhObEp6dGNibWx0Y0c5eWRDQjdJRk5qWlc1bFQySnFaV04wTENCVFkyVnVaVU52YlhCdmJtVnVkRkJ5YjNCeklIMGdabkp2YlNBbkxpNHZMaTR2TGk0dlkyOXlaUzkwZVhCbGN5YzdYRzVwYlhCdmNuUWdleUJUWTJWdVpVZHlhV1JNWVhsdmRYUWdmU0JtY205dElDY3VMMU5qWlc1bFIzSnBaRXhoZVc5MWRDYzdYRzVwYlhCdmNuUWdleUJUWTJWdVpVZHlhV1JTYjNjZ2ZTQm1jbTl0SUNjdUwxTmpaVzVsUjNKcFpGSnZkeWM3WEc1cGJYQnZjblFnZXlCVFkyVnVaVWR5YVdSSmRHVnRVM1JoZEdWTWFXdGxMQ0JUWTJWdVpVZHlhV1JKZEdWdFRHbHJaU0I5SUdaeWIyMGdKeTR2ZEhsd1pYTW5PMXh1WEc1cGJuUmxjbVpoWTJVZ1UyTmxibVZIY21sa1NYUmxiVk4wWVhSbElHVjRkR1Z1WkhNZ1UyTmxibVZIY21sa1NYUmxiVk4wWVhSbFRHbHJaU0I3WEc0Z0lHSnZaSGs2SUZOalpXNWxUMkpxWldOMElId2dkVzVrWldacGJtVmtPMXh1ZlZ4dVpYaHdiM0owSUdOc1lYTnpJRk5qWlc1bFIzSnBaRWwwWlcwZ1pYaDBaVzVrY3lCVFkyVnVaVTlpYW1WamRFSmhjMlU4VTJObGJtVkhjbWxrU1hSbGJWTjBZWFJsUGlCcGJYQnNaVzFsYm5SeklGTmpaVzVsUjNKcFpFbDBaVzFNYVd0bElIdGNiaUFnYzNSaGRHbGpJRU52YlhCdmJtVnVkQ0E5SUZOalpXNWxSM0pwWkVsMFpXMVNaVzVrWlhKbGNqdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1UyTmxibVZIY21sa1NYUmxiVkpsYm1SbGNtVnlLSHNnYlc5a1pXd2dmVG9nVTJObGJtVkRiMjF3YjI1bGJuUlFjbTl3Y3p4VFkyVnVaVWR5YVdSSmRHVnRQaWtnZTF4dUlDQmpiMjV6ZENCN0lHSnZaSGtnZlNBOUlHMXZaR1ZzTG5WelpWTjBZWFJsS0NrN1hHNGdJR052Ym5OMElIQmhjbVZ1ZENBOUlHMXZaR1ZzTG5CaGNtVnVkRHRjYmx4dUlDQnBaaUFvY0dGeVpXNTBJQ1ltSUNGcGMxTmpaVzVsUjNKcFpFeGhlVzkxZENod1lYSmxiblFwSUNZbUlDRnBjMU5qWlc1bFIzSnBaRkp2ZHlod1lYSmxiblFwS1NCN1hHNGdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLQ2RUWTJWdVpVZHlhV1JKZEdWdElHMTFjM1FnWW1VZ1lTQmphR2xzWkNCdlppQlRZMlZ1WlVkeWFXUk1ZWGx2ZFhRZ2IzSWdVMk5sYm1WSGNtbGtVbTkzSnlrN1hHNGdJSDFjYmx4dUlDQnBaaUFvSVdKdlpIa3BJSHRjYmlBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUE4WW05a2VTNURiMjF3YjI1bGJuUWdiVzlrWld3OWUySnZaSGw5SUM4K08xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYVhOVFkyVnVaVWR5YVdSU2IzY29ZMmhwYkdRNklGTmpaVzVsVDJKcVpXTjBLVG9nWTJocGJHUWdhWE1nVTJObGJtVkhjbWxrVW05M0lIdGNiaUFnY21WMGRYSnVJR05vYVd4a0lHbHVjM1JoYm1ObGIyWWdVMk5sYm1WSGNtbGtVbTkzTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJwYzFOalpXNWxSM0pwWkV4aGVXOTFkQ2hqYUdsc1pEb2dVMk5sYm1WUFltcGxZM1FwT2lCamFHbHNaQ0JwY3lCVFkyVnVaVWR5YVdSTVlYbHZkWFFnZTF4dUlDQnlaWFIxY200Z1kyaHBiR1FnYVc1emRHRnVZMlZ2WmlCVFkyVnVaVWR5YVdSTVlYbHZkWFE3WEc1OVhHNGlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3UVVGVlR5eE5RVUZOTEhOQ1FVRnpRaXhsUVVGcFJTeERRVUZCTzBGQlJYQkhMRU5CUVVFN1FVRkdZU3hoUVVGQkxFTkJRMG9zVTBGQldTeEhRVUZCTEhGQ1FVRkJMRU5CUVVFN1FVRkhja0lzVTBGQlV5eHhRa0ZCUVN4RFFVRnpRaXhGUVVGRkxFdEJRVUVzUlVGQk5rTXNSVUZCUVR0QlFVTTFSU3hGUVVGQkxFMUJRVTBzUlVGQlJTeEpRVUZCTEVWQlFWTXNSMEZCUVN4TFFVRkJMRU5CUVUwc1VVRkJVeXhGUVVGQkxFTkJRVUU3UVVGRGFFTXNSVUZCUVN4TlFVRk5MRk5CUVZNc1MwRkJUU3hEUVVGQkxFMUJRVUVzUTBGQlFUdEJRVVZ5UWl4RlFVRkpMRWxCUVVFc1RVRkJRU3hKUVVGVkxFTkJRVU1zYVVKQlFXdENMRU5CUVVFc1RVRkJUU3hMUVVGTExFTkJRVU1zWTBGQlFTeERRVUZsTEUxQlFVMHNRMEZCUnl4RlFVRkJPMEZCUTI1RkxFbEJRVTBzVFVGQlFTeEpRVUZKTEUxQlFVMHNhMFZCUVd0RkxFTkJRVUVzUTBGQlFUdEJRVUZCTEVkQlEzQkdPMEZCUlVFc1JVRkJRU3hKUVVGSkxFTkJRVU1zU1VGQlRTeEZRVUZCTzBGQlExUXNTVUZCVHl4UFFVRkJMRWxCUVVFc1EwRkJRVHRCUVVGQkxFZEJRMVE3UVVGRlFTeEZRVUZQTEhWQ1FVRkJMRXRCUVVFc1EwRkJRU3hoUVVGQkxFTkJRVU1zUzBGQlN5eFRRVUZNTEVWQlFVRTdRVUZCUVN4SlFVRmxMRXRCUVU4c1JVRkJRU3hKUVVGQk8wRkJRVUVzUjBGQlRTeERRVUZCTEVOQlFVRTdRVUZEZEVNc1EwRkJRVHRCUVVWUExGTkJRVk1zWlVGQlpTeExRVUV5UXl4RlFVRkJPMEZCUTNoRkxFVkJRVUVzVDBGQlR5eExRVUZwUWl4WlFVRkJMRmxCUVVFc1EwRkJRVHRCUVVNeFFpeERRVUZCTzBGQlJVRXNVMEZCVXl4clFrRkJhMElzUzBGQk9FTXNSVUZCUVR0QlFVTjJSU3hGUVVGQkxFOUJRVThzUzBGQmFVSXNXVUZCUVN4bFFVRkJMRU5CUVVFN1FVRkRNVUk3T3pzN0luMD1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVVPLE1BQU0sc0JBQXNCLGVBQWlFLENBQUE7QUFFcEcsQ0FBQTtBQUZhLGFBQUEsQ0FDSixTQUFZLEdBQUEscUJBQUEsQ0FBQTtBQUdyQixTQUFTLHFCQUFBLENBQXNCLEVBQUUsS0FBQSxFQUE2QyxFQUFBO0FBQzVFLEVBQUEsTUFBTSxFQUFFLElBQUEsRUFBUyxHQUFBLEtBQUEsQ0FBTSxRQUFTLEVBQUEsQ0FBQTtBQUNoQyxFQUFBLE1BQU0sU0FBUyxLQUFNLENBQUEsTUFBQSxDQUFBO0FBRWpCLEVBQUEsSUFBQSxNQUFBLElBQVUsQ0FBQyxpQkFBa0IsQ0FBQSxNQUFNLEtBQUssQ0FBQyxjQUFBLENBQWUsTUFBTSxDQUFHLEVBQUE7QUFDN0QsSUFBQSxNQUFBLElBQUksTUFBTSxrRUFBa0UsQ0FBQSxDQUFBO0FBQUEsR0FBQTtBQUdwRixFQUFBLElBQUksQ0FBQyxJQUFNLEVBQUE7QUFDRixJQUFBLE9BQUEsSUFBQSxDQUFBO0FBQUEsR0FBQTtBQUdGLEVBQUEsdUJBQUEsS0FBQSxDQUFBLGFBQUMsQ0FBQSxJQUFBLENBQUssU0FBTCxFQUFBO0lBQWUsS0FBTyxFQUFBLElBQUE7R0FBTSxDQUFBLENBQUE7QUFDdEMsQ0FBQTtBQUVPLFNBQVMsZUFBZSxLQUEyQyxFQUFBO0FBQ3hFLEVBQUEsT0FBTyxLQUFpQixZQUFBLFlBQUEsQ0FBQTtBQUMxQixDQUFBO0FBRUEsU0FBUyxrQkFBa0IsS0FBOEMsRUFBQTtBQUN2RSxFQUFBLE9BQU8sS0FBaUIsWUFBQSxlQUFBLENBQUE7QUFDMUI7Ozs7In0=
|