
Neos:
  Neos:

    modules:
      content:
        position: 'start'
        label: 'Neos.Neos:Main:content'
        controller: 'Neos\Neos\Ui\Controller\BackendController'
        description: 'Neos.Neos:Modules:management.description'
        icon: fas fa-file
        mainStylesheet: 'Lite'

    userInterface:
# New support for width and height of the preview mode:
#      editPreviewModes:
#        rawContent:
#          width: 300px
#          height: 600px
      inspector:
        dataTypes:
          Neos\Media\Domain\Model\ImageInterface:
            typeConverter: Neos\Neos\Ui\TypeConverter\UiDependentImageSerializer
      translation:
        autoInclude:
          'Neos.Neos.Ui':
            - Main
    fusion:
      autoInclude:
        Neos.Neos.Ui: true

    Ui:

      splashScreen:
        partial: 'SplashScreen'

      # API: "start 100" and smaller numbers; "no numbers", ...
      resources:

        javascript:
          'Neos.Neos.UI:Host':
           resource: '${"resource://" + Neos.Ui.StaticResources.compiledResourcePackage() + "/Public/Build/Host.js"}'
           position: 'start 900'

        stylesheets:
          'Neos.Neos.UI:Host':
            resource: '${"resource://" + Neos.Ui.StaticResources.compiledResourcePackage() + "/Public/Build/Host.css"}'
            position: 'start 1000'
          'Neos.Neos.UI:HostOnlyStyles':
           resource: '${"resource://" + Neos.Ui.StaticResources.compiledResourcePackage() + "/Public/Build/HostOnlyStyles.css"}'
           position: 'start 900'

      contentCanvas:
        backgroundColor: '#ffffff'

      frontendConfiguration:
        editPreviewModes: '${Neos.Ui.PositionalArraySorter.sort(Configuration.setting(''Neos.Neos.userInterface.editPreviewModes''))}'
        # You may use this place to deliver some configuration to your custom UI components, e.g.:
        # 'Your.Own:Package':
        #   someKey: someValue

        hotkeys:

          'UI.RightSideBar.toggle': 't i'

          'UI.FullScreen.toggle': 't f'
          'UI.LeftSideBar.toggle': 't l'
          'UI.LeftSideBar.toggleContentTree': 't c'
          'UI.LeftSideBar.toggleSearchBar': 't s'

          'UI.AddNodeModal.close': 'c m'

          'UI.Drawer.toggle': 't d'

          'UI.InsertionModeModal.cancel': 'c i'
          'UI.InsertionModeModal.apply': 'a i'

          'UI.ContentCanvas.reload': 'r c'

          'UI.Inspector.discard': 'd i'
          'UI.Inspector.escape': 'e i'
          'UI.Inspector.resume': 'r i'

          'UI.NodeCreationDialog.back': 'b n'
          'UI.NodeCreationDialog.cancel': 'c n'
          'UI.NodeCreationDialog.apply': 'a n'

          'UI.NodeVariantCreationDialog.cancel': 'c v'
          'UI.NodeVariantCreationDialog.createEmpty': 'c e v'
          'UI.NodeVariantCreationDialog.createAndCopy': 'c c v'

          'CR.Nodes.unfocus': 'u n'

      #################################
      # INTERNAL CONFIG (no API)
      #################################
      frontendDevelopmentMode: false
      nodeTypeRoles:
        # The ignored types will never have metadata in the UI, they are invisible to the content module.
        ignored: 'unstructured'
        document: 'Neos.Neos:Document'
        content: 'Neos.Neos:Content'
        contentCollection: 'Neos.Neos:ContentCollection'
      configurationDefaultEelContext:
        Neos.Ui.Api: Neos\Neos\Ui\Fusion\Helper\ApiHelper
        Neos.Ui.Workspace: Neos\Neos\Ui\Fusion\Helper\WorkspaceHelper
        Neos.Ui.NodeInfo: Neos\Neos\Ui\Fusion\Helper\NodeInfoHelper
        Neos.Ui.ContentDimensions: Neos\Neos\Ui\Fusion\Helper\ContentDimensionsHelper
        Neos.Ui.StaticResources: Neos\Neos\Ui\Fusion\Helper\StaticResourcesHelper
        Neos.Ui.PositionalArraySorter: Neos\Neos\Ui\Fusion\Helper\PositionalArraySorterHelper
      documentNodeInformation:
        metaData:
          documentNode: '${q(documentNode).property("_contextPath")}'
          siteNode: '${q(site).property(''_contextPath'')}'
          previewUrl: '${Neos.Ui.NodeInfo.createRedirectToNode(controllerContext, documentNode)}'
          contentDimensions:
            active: '${documentNode.context.dimensions}'
            allowedPresets: '${Neos.Ui.Api.emptyArrayToObject(Neos.Ui.ContentDimensions.allowedPresetsByName(documentNode.context.dimensions))}'
          documentNodeSerialization: '${Neos.Ui.NodeInfo.renderNodeWithPropertiesAndChildrenInformation(documentNode, controllerContext)}'
      initialState:
        changes:
          pending: {  }
          processing: {  }
          failed: {  }
        cr:
          nodes:
            byContextPath: '${Neos.Ui.NodeInfo.defaultNodesForBackend(site, documentNode, controllerContext)}'
            siteNode: '${q(site).property(''_contextPath'')}'
            documentNode: '${q(documentNode).property(''_contextPath'')}'
            clipboard: '${clipboardNodes || []}'
            clipboardMode: '${clipboardMode || null}'
          contentDimensions:
            byName: '${Neos.Ui.ContentDimensions.contentDimensionsByName()}'
            active: '${documentNode.context.dimensions}'
            allowedPresets: '${Neos.Ui.Api.emptyArrayToObject(Neos.Ui.ContentDimensions.allowedPresetsByName(documentNode.context.dimensions))}'
          workspaces:
            personalWorkspace: '${Neos.Ui.Workspace.getPersonalWorkspace()}'
        ui:
          contentCanvas:
            src: '${Neos.Ui.NodeInfo.uri(documentNode, controllerContext)}'
            backgroundColor: '${Configuration.setting(''Neos.Neos.Ui.contentCanvas.backgroundColor'')}'
          debugMode: false
          editPreviewMode: '${q(user).property("preferences.preferences")["contentEditing.editPreviewMode"] || Configuration.setting(''Neos.Neos.userInterface.defaultEditPreviewMode'')}'
          fullScreen:
            isFullScreen: false
          leftSideBar:
            isHidden: false
            contentTree:
              isHidden: true
            searchBar:
              isVisible: false
          rightSideBar:
            isHidden: false
          addNodeModal:
            referenceNode: ''
            mode: insert
          drawer:
            isHidden: true
          pageTree:
            isLoading: false
            hasError: false
            focused: '${[q(documentNode).property(''_contextPath'')]}'
            active: '${q(documentNode).property(''_contextPath'')}'
          remote:
            isSaving: false
            isPublishing: false
            isDiscarding: false
        user:
          name:
            title: '${q(user).property(''name.title'')}'
            firstName: '${q(user).property(''name.firstName'')}'
            middleName: '${q(user).property(''name.middleName'')}'
            lastName: '${q(user).property(''name.lastName'')}'
            otherName: '${q(user).property(''name.otherName'')}'
            fullName: '${q(user).property(''name.fullName'')}'
          preferences:
            interfaceLanguage: '${q(user).property(''preferences.interfaceLanguage'') || Configuration.setting(''Neos.Neos.userInterface.defaultLanguage'')}'
          settings:
            isAutoPublishingEnabled: false
            targetWorkspace: 'live'
      changes:
        types:
          'Neos.Neos.Ui:Property': Neos\Neos\Ui\Domain\Model\Changes\Property
          'Neos.Neos.Ui:CreateInto': Neos\Neos\Ui\Domain\Model\Changes\Create
          'Neos.Neos.Ui:CreateBefore': Neos\Neos\Ui\Domain\Model\Changes\CreateBefore
          'Neos.Neos.Ui:CreateAfter': Neos\Neos\Ui\Domain\Model\Changes\CreateAfter
          'Neos.Neos.Ui:RemoveNode': Neos\Neos\Ui\Domain\Model\Changes\Remove
          'Neos.Neos.Ui:CopyBefore': Neos\Neos\Ui\Domain\Model\Changes\CopyBefore
          'Neos.Neos.Ui:CopyAfter': Neos\Neos\Ui\Domain\Model\Changes\CopyAfter
          'Neos.Neos.Ui:CopyInto': Neos\Neos\Ui\Domain\Model\Changes\CopyInto
          'Neos.Neos.Ui:MoveBefore': Neos\Neos\Ui\Domain\Model\Changes\MoveBefore
          'Neos.Neos.Ui:MoveAfter': Neos\Neos\Ui\Domain\Model\Changes\MoveAfter
          'Neos.Neos.Ui:MoveInto': Neos\Neos\Ui\Domain\Model\Changes\MoveInto
  Flow:
    security:
      authentication:
        providers:
          'Neos.Neos:Backend':
            requestPatterns:
              'Neos.Neos.Ui:BackendControllers':
                pattern: ControllerObjectName
                patternOptions:
                  controllerObjectNamePattern: 'Neos\Neos\Ui\Controller\.*'
    mvc:
      routes:
        'Neos.Neos.Ui':
          position: 'before Neos.Neos'
  Fusion:
    defaultContext:
      Neos.Ui.Workspace: Neos\Neos\Ui\Fusion\Helper\WorkspaceHelper
      Neos.Ui.StaticResources: Neos\Neos\Ui\Fusion\Helper\StaticResourcesHelper
      Neos.Ui.PositionalArraySorter: Neos\Neos\Ui\Fusion\Helper\PositionalArraySorterHelper
