123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- /*
- * <<
- * Davinci
- * ==
- * Copyright (C) 2016 - 2017 EDP
- * ==
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * >>
- */
- import { createSelector, createSelectorCreator } from 'reselect'
- import { IDisplayState } from './types'
- import { initialState } from './reducer'
- import { LayerContextValue } from './components/types'
- const selectDisplay = (state: { display: IDisplayState }) =>
- state.display || initialState
- const selectPropsSlideId = (_, slideId: number) => slideId
- const selectPropsLayerId = (_, layerId: number) => layerId
- const selectCurrentSlideId = (state: { display: IDisplayState }) =>
- state.display ? state.display.currentSlideId : initialState.currentSlideId
- const selectSlideLayers = (state: { display: IDisplayState }) =>
- state.display ? state.display.slideLayers : initialState.slideLayers
- const selectSlideLayersInfo = (state: { display: IDisplayState }) =>
- state.display ? state.display.slideLayersInfo : initialState.slideLayersInfo
- const selectSlideLayersOperationInfo = (state: { display: IDisplayState }) =>
- state.display
- ? state.display.slideLayersOperationInfo
- : initialState.slideLayersOperationInfo
- const selectCurrentLayers = (state: { display: IDisplayState }) =>
- state.display
- ? state.display.slideLayers[state.display.currentSlideId] || {}
- : {}
- const makeSelectCurrentLayersOperationInfo = () => (state: {
- display: IDisplayState
- }) =>
- state.display
- ? state.display.slideLayersOperationInfo[state.display.currentSlideId] || {}
- : {}
- const makeSelectLayersBySlide = () =>
- createSelector(
- selectSlideLayers,
- selectPropsSlideId,
- (slideLayers, slideId) => slideLayers[slideId]
- )
- const makeSelectLayerIdsBySlide = () =>
- createSelector(makeSelectLayersBySlide(), (layers) =>
- !layers ? [] : Object.keys(layers).map((id) => +id)
- )
- const makeSelectCurrentLayerList = () =>
- createSelector(selectCurrentLayers, (currentLayers) =>
- Object.values(currentLayers).sort((l1, l2) => l2.index - l1.index)
- )
- const makeSelectCurrentLayerIds = () =>
- createSelector(selectCurrentLayers, (currentLayers) =>
- Object.keys(currentLayers).map((id) => +id)
- )
- const makeSelectSlideLayerContextValue = () =>
- createSelector(
- selectSlideLayers,
- selectSlideLayersOperationInfo,
- selectSlideLayersInfo,
- (_, slideId: number) => slideId,
- (_1, _2, layerId: number) => layerId,
- (_1, _2, _3, editing: boolean = true) => editing,
- (
- slideLayers,
- slideLayersOperationInfo,
- slideLayersInfo,
- slideId,
- layerId,
- editing
- ) => {
- const layerContextValue: LayerContextValue = {
- layer: slideLayers[slideId][layerId],
- layerInfo: slideLayersInfo[slideId][layerId]
- }
- if (editing) {
- layerContextValue.operationInfo =
- slideLayersOperationInfo[slideId][layerId]
- }
- return layerContextValue
- }
- )
- const makeSelectCurrentLayersMaxIndex = () =>
- createSelector(makeSelectCurrentLayerList(), (currentLayerList) =>
- currentLayerList.length
- ? currentLayerList[currentLayerList.length - 1].index
- : 0
- )
- const makeSelectCurrentSelectedLayerList = () =>
- createSelector(
- makeSelectCurrentLayerList(),
- makeSelectCurrentLayersOperationInfo(),
- (currentLayerList, currentLayersOperationInfo) =>
- currentLayerList.filter(
- ({ id }) => currentLayersOperationInfo[id].selected
- )
- )
- const makeSelectCurrentEditLayerOperationInfo = () =>
- createSelector(
- makeSelectCurrentLayersOperationInfo(),
- (currentEditOperationInfo) =>
- Object.values(currentEditOperationInfo).filter(
- (layerInfo) => layerInfo.editing
- )
- )
- const makeSelectCurrentSelectedLayerIds = () =>
- createSelector(
- makeSelectCurrentLayersOperationInfo(),
- (currentLayersOperationInfo) =>
- Object.keys(currentLayersOperationInfo)
- .filter((id) => currentLayersOperationInfo[+id].selected)
- .map((id) => +id)
- )
- const makeSelectCurrentOperatingLayerList = () =>
- createSelector(
- selectPropsLayerId,
- selectCurrentLayers,
- makeSelectCurrentLayersOperationInfo(),
- makeSelectCurrentSelectedLayerList(),
- (layerId, currentLayers, currentLayersOperationInfo, selectedLayerList) => {
- if (layerId && !currentLayersOperationInfo[layerId].selected) {
- return [currentLayers[layerId]]
- } else {
- return selectedLayerList
- }
- }
- )
- const makeSelectCurrentOtherLayerList = () =>
- createSelector(
- selectPropsLayerId,
- makeSelectCurrentLayersOperationInfo(),
- makeSelectCurrentSelectedLayerIds(),
- selectCurrentLayers,
- (layerId, currentLayersOperationInfo, selectedLayerIds, currentLayers) => {
- if (layerId && !currentLayersOperationInfo[layerId].selected) {
- return [currentLayers[layerId]]
- } else {
- return Object.entries(currentLayers)
- .filter(([id]) => !selectedLayerIds.includes(+id))
- .map(([_, layer]) => layer)
- }
- }
- )
- const makeSelectCurrentOperateItemParams = () => (state: {
- display: IDisplayState
- }) => (state.display ? state.display.operateItemParams : [])
- const makeSelectCurrentDisplayWidgets = () =>
- createSelector(
- selectDisplay,
- (displayState) => displayState.currentDisplayWidgets
- )
- const makeSelectClipboardLayers = () =>
- createSelector(selectDisplay, (displayState) => displayState.clipboardLayers)
- const makeSelectCurrentDisplayShareToken = () =>
- createSelector(
- selectDisplay,
- (displayState) => displayState.currentDisplayShareToken
- )
- const makeSelectCurrentDisplayPasswordShareToken = () =>
- createSelector(
- selectDisplay,
- (dashboardState) => dashboardState.currentDisplayPasswordShareToken
- )
- const makeSelectCurrentDisplayPasswordSharePassword = () =>
- createSelector(
- selectDisplay,
- (dashboardState) => dashboardState.currentDisplayPasswordPassword
- )
- const makeSelectCurrentDisplayAuthorizedShareToken = () =>
- createSelector(
- selectDisplay,
- (displayState) => displayState.currentDisplayAuthorizedShareToken
- )
- const makeSelectSharePanel = () =>
- createSelector(selectDisplay, (displayState) => displayState.sharePanel)
- const makeSelectDisplayLoading = () =>
- createSelector(selectDisplay, (displayState) => displayState.loading)
- const makeSelectEditorBaselines = () =>
- createSelector(selectDisplay, (displayState) => displayState.editorBaselines)
- export {
- selectDisplay,
- //
- makeSelectLayersBySlide,
- makeSelectLayerIdsBySlide,
- //
- makeSelectCurrentLayerList,
- makeSelectCurrentLayerIds,
- makeSelectSlideLayerContextValue,
- makeSelectCurrentLayersMaxIndex,
- makeSelectCurrentLayersOperationInfo,
- makeSelectCurrentSelectedLayerList,
- makeSelectCurrentEditLayerOperationInfo,
- makeSelectCurrentSelectedLayerIds,
- //
- makeSelectCurrentOperatingLayerList,
- makeSelectCurrentOtherLayerList,
- makeSelectCurrentOperateItemParams,
- //
- makeSelectCurrentDisplayWidgets,
- makeSelectClipboardLayers,
- makeSelectCurrentDisplayShareToken,
- makeSelectCurrentDisplayAuthorizedShareToken,
- makeSelectSharePanel,
- makeSelectDisplayLoading,
- makeSelectEditorBaselines,
- makeSelectCurrentDisplayPasswordShareToken,
- makeSelectCurrentDisplayPasswordSharePassword,
- selectCurrentLayers
- }
|