diff --git a/Configuration/Settings.yaml b/Configuration/Settings.yaml index 10ff336..1c5ec0c 100644 --- a/Configuration/Settings.yaml +++ b/Configuration/Settings.yaml @@ -44,7 +44,19 @@ Neos: javascript: "Neos.Form.Builder:PlaceholderInsert": resource: '${"resource://Neos.Form.Builder/Public/JavaScript/PlaceholderInsert/Plugin.js"}' - + frontendConfiguration: + 'Neos.Form.Builder:PlaceholderInsert': + # ignore node types in dropdown + ignoreNodeTypeInDropdown: + 'Neos.Form.Builder:Section': true + 'Neos.Form.Builder:StaticText': true + 'Neos.Form.Builder:ElementCollection': true + 'Neos.Form.Builder:SelectOptionCollection': true + 'Neos.Form.Builder:ValidatorCollection': true + # ignore all child nodes of node type in dropdown + ignoreAllChildNodesOfNodeTypeInDropdown: + 'Neos.Form.Builder:SelectOptionCollection': true + 'Neos.Form.Builder:ValidatorCollection': true ContentRepositoryRegistry: presets: 'default': diff --git a/README.md b/README.md index 4981aef..81604c9 100644 --- a/README.md +++ b/README.md @@ -384,7 +384,33 @@ selectable: } ``` +### Example: Allow specific NodeTypes in the Placeholder-Insert + +By default, all Form-Element NodeTypes are visible in the Placeholder-Insert (except StaticText and Section). + +If you want to hide specific Form-Elements from the Placeholder-Insert, add the NodeType with the value `true` to the `ignoreNodeTypeInDropdown` setting. + +To exclude all child NodeTypes of a NodeType, add the NodeType with the value `true` to the `ignoreChildNodeTypesInDropdown` setting. +```yaml +# Settings.yaml + +Neos: + Neos: + Ui: + frontendConfiguration: + 'Neos.Form.Builder:PlaceholderInsert': + # ignore node types in dropdown + ignoreNodeTypeInDropdown: + 'Some.Package:HoneypotField': true + 'Some.Package:Image': true + 'Some.Package:Gallery': true + # ignore all child nodes of a node type in dropdown + ignoreAllChildNodesOfNodeTypeInDropdown: + 'Some.Package:GalleryCollection': true +``` + ## Upgrade to version 3 + ### Neos.Form.Builder:SelectOptionCollection The `Neos.Form.Builder:SelectOptionCollection` prototype has been changed and uses now `items` instead of `collection`. diff --git a/Resources/Private/PlaceholderInsert/src/PlaceholderInsertDropdown.js b/Resources/Private/PlaceholderInsert/src/PlaceholderInsertDropdown.js index 48697ae..adb6ee2 100644 --- a/Resources/Private/PlaceholderInsert/src/PlaceholderInsertDropdown.js +++ b/Resources/Private/PlaceholderInsert/src/PlaceholderInsertDropdown.js @@ -29,31 +29,48 @@ export const parentNodeContextPath = contextPath => { i18nRegistry: globalRegistry.get("i18n"), nodeTypeRegistry: globalRegistry.get( "@neos-project/neos-ui-contentrepository" - ) + ), + frontendConfiguration: globalRegistry.get('frontendConfiguration') })) + export default class PlaceholderInsertDropdown extends PureComponent { handleOnSelect = value => { this.props.executeCommand("placeholderInsert", value); }; render() { + let options = []; + const [formPath, workspace] = parentNodeContextPath( parentNodeContextPath(this.props.focusedNode.contextPath) ).split("@"); + // get options of first page const elementsPath = `${formPath}/elements@${workspace}`; const elementsNode = this.props.nodesByContextPath[elementsPath]; if (!elementsNode) { return null; } - const options = elementsNode.children - .map(node => this.props.nodesByContextPath[node.contextPath]) - .map(node => ({ - value: node.properties.identifier || node.identifier, - label: - node.properties.label || node.properties.identifier || node.identifier - })); + const firstPageOptions = this.getOptionsRecursively(elementsNode.children); + if (firstPageOptions && firstPageOptions.length > 0) { + options = options.concat(firstPageOptions); + } + + // get options of further pages + const furtherPagesPath = `${formPath}/furtherpages@${workspace}`; + const furtherPagesNode = this.props.nodesByContextPath[furtherPagesPath]; + if (furtherPagesNode && furtherPagesNode.children && furtherPagesNode.children.length > 0) { + furtherPagesNode.children.forEach(furtherPageChildren => { + if (furtherPageChildren) { + const pageOptions = this.getOptionsOfPage(furtherPageChildren); + + if (pageOptions && pageOptions.length > 0) { + options = options.concat(pageOptions); + } + } + }); + } if (options.length === 0) { return null; @@ -73,4 +90,49 @@ export default class PlaceholderInsertDropdown extends PureComponent { /> ); } + + getOptionsOfPage(page) { + const [path, workspace] = page.contextPath.split("@"); + const elementsPath = `${path}/elements@${workspace}`; + const elementsNode = this.props.nodesByContextPath[elementsPath]; + if (!elementsNode) { + return null; + } + + return this.getOptionsRecursively(elementsNode.children); + } + + getOptionsRecursively(elements) { + const {frontendConfiguration} = this.props; + const ignoreNodeTypeInDropdown = frontendConfiguration.get('Neos.Form.Builder:PlaceholderInsert').ignoreNodeTypeInDropdown; + const ignoreAllChildNodesOfNodeTypeInDropdown = frontendConfiguration.get('Neos.Form.Builder:PlaceholderInsert').ignoreAllChildNodesOfNodeTypeInDropdown; + const returnValues = []; + + elements.forEach((element) => { + const node = this.props.nodesByContextPath[element.contextPath]; + if (!node) { + return null; + } + + if (!(ignoreNodeTypeInDropdown.hasOwnProperty(node.nodeType) && ignoreNodeTypeInDropdown[node.nodeType] === true)) { + returnValues.push({ + value: node.properties.identifier || node.identifier, + label: node.properties.label || node.properties.identifier || node.identifier + }); + } + + if (!(ignoreAllChildNodesOfNodeTypeInDropdown.hasOwnProperty(node.nodeType) && ignoreAllChildNodesOfNodeTypeInDropdown[node.nodeType] === true)) { + const childNodes = this.props.nodesByContextPath[element.contextPath].children; + const childOptions = this.getOptionsRecursively(childNodes); + + if (Array.isArray(childOptions)) { + childOptions.forEach(childOption => { + returnValues.push(childOption); + }); + } + } + }); + + return returnValues; + } } diff --git a/Resources/Public/JavaScript/PlaceholderInsert/Plugin.js b/Resources/Public/JavaScript/PlaceholderInsert/Plugin.js index 8b2c08e..625cc94 100644 --- a/Resources/Public/JavaScript/PlaceholderInsert/Plugin.js +++ b/Resources/Public/JavaScript/PlaceholderInsert/Plugin.js @@ -1,2 +1,2 @@ -(()=>{var Z=Object.create;var g=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var ee=Object.getOwnPropertyNames;var te=Object.getPrototypeOf,re=Object.prototype.hasOwnProperty;var i=(e,t)=>()=>(e&&(t=e(e=0)),t);var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var N=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of ee(t))!re.call(e,s)&&s!==r&&g(e,s,{get:()=>t[s],enumerable:!(o=A(t,s))||o.enumerable});return e};var d=(e,t,r)=>(r=e!=null?Z(te(e)):{},N(t||!e||!e.__esModule?g(r,"default",{value:e,enumerable:!0}):r,e)),oe=e=>N(g({},"__esModule",{value:!0}),e),w=(e,t,r,o)=>{for(var s=o>1?void 0:o?A(t,r):t,a=e.length-1,p;a>=0;a--)(p=e[a])&&(s=(o?p(t,r,s):p(s))||s);return o&&s&&g(t,r,s),s};var C=i(()=>{});var O=i(()=>{C()});function n(e){return(...t)=>{if(window["@Neos:HostPluginAPI"]&&window["@Neos:HostPluginAPI"][`@${e}`])return window["@Neos:HostPluginAPI"][`@${e}`](...t);throw new Error("You are trying to read from a consumer api that hasn't been initialized yet!")}}var c=i(()=>{});var S=i(()=>{});var I=i(()=>{});var x=i(()=>{S();I()});var R=i(()=>{x()});var W=i(()=>{x();R()});var j,F=i(()=>{O();c();W();j=n("manifest")});var K=u((je,E)=>{c();E.exports=n("vendor")().reactRedux});var B=u((Ee,v)=>{c();v.exports=n("NeosProjectPackages")().ReactUiComponents});var T=u((ve,M)=>{c();M.exports=n("vendor")().React});var $=u((Me,V)=>{c();V.exports=n("NeosProjectPackages")().NeosUiDecorators});var k=u((Ve,U)=>{c();U.exports=n("NeosProjectPackages")().NeosUiReduxStore});var L,Y,y,q,b,H,f,z=i(()=>{L=d(K()),Y=d(B()),y=d(T()),q=d($()),b=d(k()),H=e=>{if(typeof e!="string")return console.error("`contextPath` must be a string!"),null;let[t,r]=e.split("@");return t.length===0?null:`${t.substr(0,t.lastIndexOf("/"))}@${r}`},f=class extends y.PureComponent{constructor(){super(...arguments);this.handleOnSelect=r=>{this.props.executeCommand("placeholderInsert",r)}}render(){let[r,o]=H(H(this.props.focusedNode.contextPath)).split("@"),s=`${r}/elements@${o}`,a=this.props.nodesByContextPath[s];if(!a)return null;let p=a.children.map(l=>this.props.nodesByContextPath[l.contextPath]).map(l=>({value:l.properties.identifier||l.identifier,label:l.properties.label||l.properties.identifier||l.identifier}));if(p.length===0)return null;let X=this.props.i18nRegistry.translate("Neos.Form.Builder:Main:placeholder","Insert placeholder");return y.default.createElement(Y.SelectBox,{placeholder:X,options:p,onValueChange:this.handleOnSelect,value:null})}};f=w([(0,L.connect)(e=>({nodesByContextPath:b.selectors.CR.Nodes.nodesByContextPathSelector(e),focusedNode:b.selectors.CR.Nodes.focusedSelector(e)})),(0,q.neos)(e=>({i18nRegistry:e.get("i18n"),nodeTypeRegistry:e.get("@neos-project/neos-ui-contentrepository")}))],f)});var G=u((He,D)=>{c();D.exports=n("vendor")().CkEditor5});var m,P,h,J=i(()=>{m=d(G()),P=class extends m.Command{execute(t){let r=this.editor.model,s=r.document.selection,a=new m.ModelText("{"+t+"}");r.insertContent(a,s)}},h=class extends m.Plugin{static get pluginName(){return"PlaceholderInsert"}init(){this.editor.commands.add("placeholderInsert",new P(this.editor))}}});var ie={};var ne,Q=i(()=>{F();z();J();ne=(e,t)=>(r,o)=>!t||t(o.editorOptions,o)?(r.plugins=r.plugins||[],{...r,plugins:[...r.plugins??[],e]}):r;j("Neos.Form.Builder:PlaceholderInsert",{},e=>{e.get("ckEditor5").get("richtextToolbar").set("placeholderInsertt",{component:f,isVisible:o=>o?.formatting?.placeholderInsert}),e.get("ckEditor5").get("config").set("placeholderInsert",ne(h,o=>o?.formatting?.placeholderInsert))})});Q();})(); +(()=>{var oe=Object.create;var b=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var se=Object.getOwnPropertyNames;var ne=Object.getPrototypeOf,ie=Object.prototype.hasOwnProperty;var l=(e,t)=>()=>(e&&(t=e(e=0)),t);var h=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var S=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of se(t))!ie.call(e,s)&&s!==r&&b(e,s,{get:()=>t[s],enumerable:!(o=I(t,s))||o.enumerable});return e};var m=(e,t,r)=>(r=e!=null?oe(ne(e)):{},S(t||!e||!e.__esModule?b(r,"default",{value:e,enumerable:!0}):r,e)),ce=e=>S(b({},"__esModule",{value:!0}),e),R=(e,t,r,o)=>{for(var s=o>1?void 0:o?I(t,r):t,c=e.length-1,i;c>=0;c--)(i=e[c])&&(s=(o?i(t,r,s):i(s))||s);return o&&s&&b(t,r,s),s};var _=l(()=>{});var E=l(()=>{_()});function n(e){return(...t)=>{if(window["@Neos:HostPluginAPI"]&&window["@Neos:HostPluginAPI"][`@${e}`])return window["@Neos:HostPluginAPI"][`@${e}`](...t);throw new Error("You are trying to read from a consumer api that hasn't been initialized yet!")}}var p=l(()=>{});var F=l(()=>{});var T=l(()=>{});var w=l(()=>{F();T()});var W=l(()=>{w()});var j=l(()=>{w();W()});var B,K=l(()=>{E();p();j();B=n("manifest")});var M=h((je,$)=>{p();$.exports=n("vendor")().reactRedux});var k=h((Ke,V)=>{p();V.exports=n("NeosProjectPackages")().ReactUiComponents});var U=h((Me,D)=>{p();D.exports=n("vendor")().React});var L=h((ke,H)=>{p();H.exports=n("NeosProjectPackages")().NeosUiDecorators});var q=h((Ue,Y)=>{p();Y.exports=n("NeosProjectPackages")().NeosUiReduxStore});var G,J,N,Q,C,z,f,X=l(()=>{G=m(M()),J=m(k()),N=m(U()),Q=m(L()),C=m(q()),z=e=>{if(typeof e!="string")return console.error("`contextPath` must be a string!"),null;let[t,r]=e.split("@");return t.length===0?null:`${t.substr(0,t.lastIndexOf("/"))}@${r}`},f=class extends N.PureComponent{constructor(){super(...arguments);this.handleOnSelect=r=>{this.props.executeCommand("placeholderInsert",r)}}render(){let r=[],[o,s]=z(z(this.props.focusedNode.contextPath)).split("@"),c=`${o}/elements@${s}`,i=this.props.nodesByContextPath[c];if(!i)return null;let d=this.getOptionsRecursively(i.children);d&&d.length>0&&(r=r.concat(d));let a=`${o}/furtherpages@${s}`,u=this.props.nodesByContextPath[a];if(u&&u.children&&u.children.length>0&&u.children.forEach(P=>{if(P){let O=this.getOptionsOfPage(P);O&&O.length>0&&(r=r.concat(O))}}),r.length===0)return null;let x=this.props.i18nRegistry.translate("Neos.Form.Builder:Main:placeholder","Insert placeholder");return N.default.createElement(J.SelectBox,{placeholder:x,options:r,onValueChange:this.handleOnSelect,value:null})}getOptionsOfPage(r){let[o,s]=r.contextPath.split("@"),c=`${o}/elements@${s}`,i=this.props.nodesByContextPath[c];return i?this.getOptionsRecursively(i.children):null}getOptionsRecursively(r){let{frontendConfiguration:o}=this.props,s=o.get("Neos.Form.Builder:PlaceholderInsert").ignoreNodeTypeInDropdown,c=o.get("Neos.Form.Builder:PlaceholderInsert").ignoreAllChildNodesOfNodeTypeInDropdown,i=[];return r.forEach(d=>{let a=this.props.nodesByContextPath[d.contextPath];if(!a)return null;if(s.hasOwnProperty(a.nodeType)&&s[a.nodeType]===!0||i.push({value:a.properties.identifier||a.identifier,label:a.properties.label||a.properties.identifier||a.identifier}),!(c.hasOwnProperty(a.nodeType)&&c[a.nodeType]===!0)){let u=this.props.nodesByContextPath[d.contextPath].children,x=this.getOptionsRecursively(u);Array.isArray(x)&&x.forEach(P=>{i.push(P)})}}),i}};f=R([(0,G.connect)(e=>({nodesByContextPath:C.selectors.CR.Nodes.nodesByContextPathSelector(e),focusedNode:C.selectors.CR.Nodes.focusedSelector(e)})),(0,Q.neos)(e=>({i18nRegistry:e.get("i18n"),nodeTypeRegistry:e.get("@neos-project/neos-ui-contentrepository"),frontendConfiguration:e.get("frontendConfiguration")}))],f)});var ee=h((qe,Z)=>{p();Z.exports=n("vendor")().CkEditor5});var g,A,y,te=l(()=>{g=m(ee()),A=class extends g.Command{execute(t){let r=this.editor.model,s=r.document.selection,c=new g.ModelText("{"+t+"}");r.insertContent(c,s)}},y=class extends g.Plugin{static get pluginName(){return"PlaceholderInsert"}init(){this.editor.commands.add("placeholderInsert",new A(this.editor))}}});var pe={};var le,re=l(()=>{K();X();te();le=(e,t)=>(r,o)=>!t||t(o.editorOptions,o)?(r.plugins=r.plugins||[],{...r,plugins:[...r.plugins??[],e]}):r;B("Neos.Form.Builder:PlaceholderInsert",{},e=>{e.get("ckEditor5").get("richtextToolbar").set("placeholderInsertt",{component:f,isVisible:o=>o?.formatting?.placeholderInsert}),e.get("ckEditor5").get("config").set("placeholderInsert",le(y,o=>o?.formatting?.placeholderInsert))})});re();})(); //# sourceMappingURL=Plugin.js.map diff --git a/Resources/Public/JavaScript/PlaceholderInsert/Plugin.js.map b/Resources/Public/JavaScript/PlaceholderInsert/Plugin.js.map index ea993a8..6182b4b 100644 --- a/Resources/Public/JavaScript/PlaceholderInsert/Plugin.js.map +++ b/Resources/Public/JavaScript/PlaceholderInsert/Plugin.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../../Private/PlaceholderInsert/node_modules/@neos-project/neos-ui-extensibility/src/manifest.ts", "../../../Private/PlaceholderInsert/node_modules/@neos-project/neos-ui-extensibility/src/createConsumerApi.ts", "../../../Private/PlaceholderInsert/node_modules/@neos-project/neos-ui-extensibility/src/readFromConsumerApi.ts", "../../../Private/PlaceholderInsert/node_modules/@neos-project/neos-ui-extensibility/src/registry/AbstractRegistry.ts", "../../../Private/PlaceholderInsert/node_modules/@neos-project/positional-array-sorter/src/positionalArraySorter.ts", "../../../Private/PlaceholderInsert/node_modules/@neos-project/neos-ui-extensibility/src/registry/SynchronousRegistry.ts", "../../../Private/PlaceholderInsert/node_modules/@neos-project/neos-ui-extensibility/src/registry/SynchronousMetaRegistry.ts", "../../../Private/PlaceholderInsert/node_modules/@neos-project/neos-ui-extensibility/src/registry/index.ts", "../../../Private/PlaceholderInsert/node_modules/@neos-project/neos-ui-extensibility/src/index.ts", "../../../Private/PlaceholderInsert/node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/react-redux/index.js", "../../../Private/PlaceholderInsert/node_modules/@neos-project/neos-ui-extensibility/src/shims/neosProjectPackages/react-ui-components/index.js", "../../../Private/PlaceholderInsert/node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/react/index.js", "../../../Private/PlaceholderInsert/node_modules/@neos-project/neos-ui-extensibility/src/shims/neosProjectPackages/neos-ui-decorators/index.js", "../../../Private/PlaceholderInsert/node_modules/@neos-project/neos-ui-extensibility/src/shims/neosProjectPackages/neos-ui-redux-store/index.js", "../../../Private/PlaceholderInsert/src/PlaceholderInsertDropdown.js", "../../../Private/PlaceholderInsert/node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/ckeditor5-exports/index.js", "../../../Private/PlaceholderInsert/src/placeholderInsertPlugin.js", "../../../Private/PlaceholderInsert/src/manifest.js", "../../../Private/PlaceholderInsert/src/index.js"], - "sourcesContent": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, "import { connect } from \"react-redux\";\nimport { SelectBox } from \"@neos-project/react-ui-components\";\nimport React, { PureComponent } from \"react\";\nimport { neos } from \"@neos-project/neos-ui-decorators\";\nimport { selectors } from \"@neos-project/neos-ui-redux-store\";\n\nexport const parentNodeContextPath = contextPath => {\n if (typeof contextPath !== \"string\") {\n console.error(\"`contextPath` must be a string!\"); // tslint:disable-line\n return null;\n }\n const [path, context] = contextPath.split(\"@\");\n\n if (path.length === 0) {\n // We are at top level; so there is no parent anymore!\n return null;\n }\n\n return `${path.substr(0, path.lastIndexOf(\"/\"))}@${context}`;\n};\n\n@connect(\n state => ({\n nodesByContextPath: selectors.CR.Nodes.nodesByContextPathSelector(state),\n focusedNode: selectors.CR.Nodes.focusedSelector(state)\n })\n)\n@neos(globalRegistry => ({\n i18nRegistry: globalRegistry.get(\"i18n\"),\n nodeTypeRegistry: globalRegistry.get(\n \"@neos-project/neos-ui-contentrepository\"\n )\n}))\nexport default class PlaceholderInsertDropdown extends PureComponent {\n handleOnSelect = value => {\n this.props.executeCommand(\"placeholderInsert\", value);\n };\n\n render() {\n const [formPath, workspace] = parentNodeContextPath(\n parentNodeContextPath(this.props.focusedNode.contextPath)\n ).split(\"@\");\n\n const elementsPath = `${formPath}/elements@${workspace}`;\n\n const elementsNode = this.props.nodesByContextPath[elementsPath];\n if (!elementsNode) {\n return null;\n }\n const options = elementsNode.children\n .map(node => this.props.nodesByContextPath[node.contextPath])\n .map(node => ({\n value: node.properties.identifier || node.identifier,\n label:\n node.properties.label || node.properties.identifier || node.identifier\n }));\n\n if (options.length === 0) {\n return null;\n }\n\n const placeholderLabel = this.props.i18nRegistry.translate(\n \"Neos.Form.Builder:Main:placeholder\",\n \"Insert placeholder\"\n );\n\n return (\n \n );\n }\n}\n", null, "import { ModelText, Command, Plugin } from \"ckeditor5-exports\";\n\nclass PlaceholderInsertCommand extends Command {\n execute(value) {\n const model = this.editor.model;\n const doc = model.document;\n const selection = doc.selection;\n const placeholder = new ModelText(\"{\" + value + \"}\");\n model.insertContent(placeholder, selection);\n }\n}\n\nexport default class PlaceholderInsertPlugin extends Plugin {\n static get pluginName() {\n return \"PlaceholderInsert\";\n }\n init() {\n const editor = this.editor;\n\n editor.commands.add(\n \"placeholderInsert\",\n new PlaceholderInsertCommand(this.editor)\n );\n }\n}\n", "import manifest from \"@neos-project/neos-ui-extensibility\";\nimport PlaceholderInsertDropdown from \"./PlaceholderInsertDropdown\";\nimport placeholderInsertPlugin from \"./placeholderInsertPlugin\";\n\nconst addPlugin = (Plugin, isEnabled) => (ckEditorConfiguration, options) => {\n if (!isEnabled || isEnabled(options.editorOptions, options)) {\n ckEditorConfiguration.plugins = ckEditorConfiguration.plugins || [];\n return {\n ...ckEditorConfiguration,\n plugins: [\n ...(ckEditorConfiguration.plugins ?? []),\n Plugin\n ]\n };\n }\n return ckEditorConfiguration;\n};\n\nmanifest(\"Neos.Form.Builder:PlaceholderInsert\", {}, globalRegistry => {\n const richtextToolbar = globalRegistry\n .get(\"ckEditor5\")\n .get(\"richtextToolbar\");\n richtextToolbar.set(\"placeholderInsertt\", {\n component: PlaceholderInsertDropdown,\n isVisible: editorOptions => editorOptions?.formatting?.placeholderInsert\n });\n\n const config = globalRegistry.get(\"ckEditor5\").get(\"config\");\n config.set(\n \"placeholderInsert\",\n addPlugin(placeholderInsertPlugin, editorOptions => editorOptions?.formatting?.placeholderInsert)\n );\n});\n", "require(\"./manifest\");\n"], - "mappings": "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", - "names": ["init_manifest", "__esmMin", "init_createConsumerApi", "__esmMin", "init_manifest", "readFromConsumerApi", "key", "args", "init_readFromConsumerApi", "__esmMin", "init_AbstractRegistry", "__esmMin", "init_positionalArraySorter", "__esmMin", "init_SynchronousRegistry", "__esmMin", "init_AbstractRegistry", "init_positionalArraySorter", "init_SynchronousMetaRegistry", "__esmMin", "init_SynchronousRegistry", "init_registry", "__esmMin", "init_SynchronousRegistry", "init_SynchronousMetaRegistry", "dist_default", "init_dist", "__esmMin", "init_createConsumerApi", "init_readFromConsumerApi", "init_registry", "readFromConsumerApi", "require_react_redux", "__commonJSMin", "exports", "module", "init_readFromConsumerApi", "readFromConsumerApi", "require_react_ui_components", "__commonJSMin", "exports", "module", "init_readFromConsumerApi", "readFromConsumerApi", "require_react", "__commonJSMin", "exports", "module", "init_readFromConsumerApi", "readFromConsumerApi", "require_neos_ui_decorators", "__commonJSMin", "exports", "module", "init_readFromConsumerApi", "readFromConsumerApi", "require_neos_ui_redux_store", "__commonJSMin", "exports", "module", "init_readFromConsumerApi", "readFromConsumerApi", "import_react_redux", "import_react_ui_components", "import_react", "import_neos_ui_decorators", "import_neos_ui_redux_store", "parentNodeContextPath", "PlaceholderInsertDropdown", "init_PlaceholderInsertDropdown", "__esmMin", "contextPath", "path", "context", "value", "formPath", "workspace", "elementsPath", "elementsNode", "options", "node", "placeholderLabel", "React", "__decorateClass", "state", "globalRegistry", "require_ckeditor5_exports", "__commonJSMin", "exports", "module", "init_readFromConsumerApi", "readFromConsumerApi", "import_ckeditor5_exports", "PlaceholderInsertCommand", "PlaceholderInsertPlugin", "init_placeholderInsertPlugin", "__esmMin", "value", "model", "selection", "placeholder", "manifest_exports", "addPlugin", "init_manifest", "__esmMin", "init_dist", "init_PlaceholderInsertDropdown", "init_placeholderInsertPlugin", "Plugin", "isEnabled", "ckEditorConfiguration", "options", "dist_default", "globalRegistry", "PlaceholderInsertDropdown", "editorOptions", "PlaceholderInsertPlugin"] + "sourcesContent": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, "import { connect } from \"react-redux\";\nimport { SelectBox } from \"@neos-project/react-ui-components\";\nimport React, { PureComponent } from \"react\";\nimport { neos } from \"@neos-project/neos-ui-decorators\";\nimport { selectors } from \"@neos-project/neos-ui-redux-store\";\n\nexport const parentNodeContextPath = contextPath => {\n if (typeof contextPath !== \"string\") {\n console.error(\"`contextPath` must be a string!\"); // tslint:disable-line\n return null;\n }\n const [path, context] = contextPath.split(\"@\");\n\n if (path.length === 0) {\n // We are at top level; so there is no parent anymore!\n return null;\n }\n\n return `${path.substr(0, path.lastIndexOf(\"/\"))}@${context}`;\n};\n\n@connect(\n state => ({\n nodesByContextPath: selectors.CR.Nodes.nodesByContextPathSelector(state),\n focusedNode: selectors.CR.Nodes.focusedSelector(state)\n })\n)\n@neos(globalRegistry => ({\n i18nRegistry: globalRegistry.get(\"i18n\"),\n nodeTypeRegistry: globalRegistry.get(\n \"@neos-project/neos-ui-contentrepository\"\n ),\n frontendConfiguration: globalRegistry.get('frontendConfiguration')\n}))\n\nexport default class PlaceholderInsertDropdown extends PureComponent {\n handleOnSelect = value => {\n this.props.executeCommand(\"placeholderInsert\", value);\n };\n\n render() {\n let options = [];\n\n const [formPath, workspace] = parentNodeContextPath(\n parentNodeContextPath(this.props.focusedNode.contextPath)\n ).split(\"@\");\n\n // get options of first page\n const elementsPath = `${formPath}/elements@${workspace}`;\n\n const elementsNode = this.props.nodesByContextPath[elementsPath];\n if (!elementsNode) {\n return null;\n }\n const firstPageOptions = this.getOptionsRecursively(elementsNode.children);\n if (firstPageOptions && firstPageOptions.length > 0) {\n options = options.concat(firstPageOptions);\n }\n\n // get options of further pages\n const furtherPagesPath = `${formPath}/furtherpages@${workspace}`;\n const furtherPagesNode = this.props.nodesByContextPath[furtherPagesPath];\n if (furtherPagesNode && furtherPagesNode.children && furtherPagesNode.children.length > 0) {\n furtherPagesNode.children.forEach(furtherPageChildren => {\n if (furtherPageChildren) {\n const pageOptions = this.getOptionsOfPage(furtherPageChildren);\n\n if (pageOptions && pageOptions.length > 0) {\n options = options.concat(pageOptions);\n }\n }\n });\n }\n\n if (options.length === 0) {\n return null;\n }\n\n const placeholderLabel = this.props.i18nRegistry.translate(\n \"Neos.Form.Builder:Main:placeholder\",\n \"Insert placeholder\"\n );\n\n return (\n \n );\n }\n\n getOptionsOfPage(page) {\n const [path, workspace] = page.contextPath.split(\"@\");\n const elementsPath = `${path}/elements@${workspace}`;\n const elementsNode = this.props.nodesByContextPath[elementsPath];\n if (!elementsNode) {\n return null;\n }\n\n return this.getOptionsRecursively(elementsNode.children);\n }\n\n getOptionsRecursively(elements) {\n const {frontendConfiguration} = this.props;\n const ignoreNodeTypeInDropdown = frontendConfiguration.get('Neos.Form.Builder:PlaceholderInsert').ignoreNodeTypeInDropdown;\n const ignoreAllChildNodesOfNodeTypeInDropdown = frontendConfiguration.get('Neos.Form.Builder:PlaceholderInsert').ignoreAllChildNodesOfNodeTypeInDropdown;\n const returnValues = [];\n\n elements.forEach((element) => {\n const node = this.props.nodesByContextPath[element.contextPath];\n if (!node) {\n return null;\n }\n\n if (!(ignoreNodeTypeInDropdown.hasOwnProperty(node.nodeType) && ignoreNodeTypeInDropdown[node.nodeType] === true)) {\n returnValues.push({\n value: node.properties.identifier || node.identifier,\n label: node.properties.label || node.properties.identifier || node.identifier\n });\n }\n\n if (!(ignoreAllChildNodesOfNodeTypeInDropdown.hasOwnProperty(node.nodeType) && ignoreAllChildNodesOfNodeTypeInDropdown[node.nodeType] === true)) {\n const childNodes = this.props.nodesByContextPath[element.contextPath].children;\n const childOptions = this.getOptionsRecursively(childNodes);\n\n if (Array.isArray(childOptions)) {\n childOptions.forEach(childOption => {\n returnValues.push(childOption);\n });\n }\n }\n });\n\n return returnValues;\n }\n}\n", null, "import { ModelText, Command, Plugin } from \"ckeditor5-exports\";\n\nclass PlaceholderInsertCommand extends Command {\n execute(value) {\n const model = this.editor.model;\n const doc = model.document;\n const selection = doc.selection;\n const placeholder = new ModelText(\"{\" + value + \"}\");\n model.insertContent(placeholder, selection);\n }\n}\n\nexport default class PlaceholderInsertPlugin extends Plugin {\n static get pluginName() {\n return \"PlaceholderInsert\";\n }\n init() {\n const editor = this.editor;\n\n editor.commands.add(\n \"placeholderInsert\",\n new PlaceholderInsertCommand(this.editor)\n );\n }\n}\n", "import manifest from \"@neos-project/neos-ui-extensibility\";\nimport PlaceholderInsertDropdown from \"./PlaceholderInsertDropdown\";\nimport placeholderInsertPlugin from \"./placeholderInsertPlugin\";\n\nconst addPlugin = (Plugin, isEnabled) => (ckEditorConfiguration, options) => {\n if (!isEnabled || isEnabled(options.editorOptions, options)) {\n ckEditorConfiguration.plugins = ckEditorConfiguration.plugins || [];\n return {\n ...ckEditorConfiguration,\n plugins: [\n ...(ckEditorConfiguration.plugins ?? []),\n Plugin\n ]\n };\n }\n return ckEditorConfiguration;\n};\n\nmanifest(\"Neos.Form.Builder:PlaceholderInsert\", {}, globalRegistry => {\n const richtextToolbar = globalRegistry\n .get(\"ckEditor5\")\n .get(\"richtextToolbar\");\n richtextToolbar.set(\"placeholderInsertt\", {\n component: PlaceholderInsertDropdown,\n isVisible: editorOptions => editorOptions?.formatting?.placeholderInsert\n });\n\n const config = globalRegistry.get(\"ckEditor5\").get(\"config\");\n config.set(\n \"placeholderInsert\",\n addPlugin(placeholderInsertPlugin, editorOptions => editorOptions?.formatting?.placeholderInsert)\n );\n});\n", "require(\"./manifest\");\n"], + "mappings": "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", + "names": ["init_manifest", "__esmMin", "init_createConsumerApi", "__esmMin", "init_manifest", "readFromConsumerApi", "key", "args", "init_readFromConsumerApi", "__esmMin", "init_AbstractRegistry", "__esmMin", "init_positionalArraySorter", "__esmMin", "init_SynchronousRegistry", "__esmMin", "init_AbstractRegistry", "init_positionalArraySorter", "init_SynchronousMetaRegistry", "__esmMin", "init_SynchronousRegistry", "init_registry", "__esmMin", "init_SynchronousRegistry", "init_SynchronousMetaRegistry", "dist_default", "init_dist", "__esmMin", "init_createConsumerApi", "init_readFromConsumerApi", "init_registry", "readFromConsumerApi", "require_react_redux", "__commonJSMin", "exports", "module", "init_readFromConsumerApi", "readFromConsumerApi", "require_react_ui_components", "__commonJSMin", "exports", "module", "init_readFromConsumerApi", "readFromConsumerApi", "require_react", "__commonJSMin", "exports", "module", "init_readFromConsumerApi", "readFromConsumerApi", "require_neos_ui_decorators", "__commonJSMin", "exports", "module", "init_readFromConsumerApi", "readFromConsumerApi", "require_neos_ui_redux_store", "__commonJSMin", "exports", "module", "init_readFromConsumerApi", "readFromConsumerApi", "import_react_redux", "import_react_ui_components", "import_react", "import_neos_ui_decorators", "import_neos_ui_redux_store", "parentNodeContextPath", "PlaceholderInsertDropdown", "init_PlaceholderInsertDropdown", "__esmMin", "contextPath", "path", "context", "value", "options", "formPath", "workspace", "elementsPath", "elementsNode", "firstPageOptions", "furtherPagesPath", "furtherPagesNode", "furtherPageChildren", "pageOptions", "placeholderLabel", "React", "page", "elements", "frontendConfiguration", "ignoreNodeTypeInDropdown", "ignoreAllChildNodesOfNodeTypeInDropdown", "returnValues", "element", "node", "childNodes", "childOptions", "childOption", "__decorateClass", "state", "globalRegistry", "require_ckeditor5_exports", "__commonJSMin", "exports", "module", "init_readFromConsumerApi", "readFromConsumerApi", "import_ckeditor5_exports", "PlaceholderInsertCommand", "PlaceholderInsertPlugin", "init_placeholderInsertPlugin", "__esmMin", "value", "model", "selection", "placeholder", "manifest_exports", "addPlugin", "init_manifest", "__esmMin", "init_dist", "init_PlaceholderInsertDropdown", "init_placeholderInsertPlugin", "Plugin", "isEnabled", "ckEditorConfiguration", "options", "dist_default", "globalRegistry", "PlaceholderInsertDropdown", "editorOptions", "PlaceholderInsertPlugin"] }