{"version":3,"file":"ComponentUtil.c7770dba.js","sources":["../../app/javascript/app/utils/PageFactory.js","../../app/javascript/app/utils/ComponentUtil.js"],"sourcesContent":["export default class PageFactory {\n\n // TODO: should be able to delete this... we load a better one now from the server\n createPageLayout() {\n let rows = []\n let row = this.createRow()\n let component = this.createHeaderComponent(\"Custom View\")\n let column = this.createColumn('12', component)\n row.columns.push(column)\n // row.columns.push(this.createLabelColumn('12', ' New Page'))\n rows.push(row)\n\n let layout = {\n rows: rows,\n description: '',\n selectedRow: null,\n selectedColumn: null,\n selectedComponent: null\n }\n\n return layout\n }\n\n // used to create a header or footer for a site\n createReusableSiteLayout(layoutType) {\n let rows = []\n let row = this.createRow()\n row.columns.push(this.createLabelColumn('12', ' New ' + layoutType))\n rows.push(row)\n\n let layout = {\n rows: rows,\n description: '',\n selectedRow: null,\n selectedColumn: null,\n selectedComponent: null\n }\n\n return layout\n }\n\n createNavbarLayout(website) {\n let rows = []\n let row = this.createRow()\n let firstNavBlock = this.createLabelColumn('12', website.name)\n firstNavBlock.value.push(this.createNavLink('About'))\n firstNavBlock.value.push(this.createNavLink('Pricing'))\n firstNavBlock.value.push(this.createNavLink('Blog'))\n row.columns.push(firstNavBlock)\n\n let component = this.createButton('Sign in')\n let secondNavBlock = this.createColumn('12', component)\n secondNavBlock.value.push(this.createButton('Sign up'))\n row.columns.push(secondNavBlock)\n\n rows.push(row)\n\n let layout = {\n rows: rows,\n description: 'Nav',\n selectedRow: null,\n selectedColumn: null,\n selectedComponent: null\n }\n\n return layout\n }\n\n createColumn(width, component) {\n let column = {\n width: width,\n height: 40,\n value: [component],\n justify: 'left',\n align: 'top',\n direction: 'column',\n selected: false,\n widthSet: false,\n background: this.defaultBackground(),\n margin: {\n side: 'none',\n value: '0'\n },\n padding: {\n side: 'none',\n value: '0'\n },\n includeCard: false\n }\n\n return column\n }\n\n createLabelColumn(width, value) {\n let component = this.createHtmlComponent('Label', value)\n return this.createColumn(width, component)\n }\n\n createHeaderComponent(value) {\n let headerSpecific = {\n tag: 'h1',\n animate: false,\n animation: this.defaultAnimation(),\n includeBackground: false\n }\n\n let headerComponent = Object.assign(this.createHtmlComponent('Header', value), headerSpecific)\n headerComponent.style.size = 'size-3x'\n return headerComponent\n }\n\n createHtmlComponent(type, value) {\n return {\n type: type,\n value: value,\n selected: false,\n style: {\n color: 'dark',\n fontWeight: 'normal',\n size: 'size-md',\n align: 'text-left',\n font: '',\n maxWidth: '',\n backgroundColor: 'light',\n opacity: 0.8,\n nowrap: false\n },\n margin: {\n side: 'none',\n value: '0'\n },\n padding: {\n side: 'none',\n value: '0'\n },\n border: this.defaultBorder(),\n animate: false,\n animation: this.defaultAnimation()\n }\n }\n\n createIconComponent(value) {\n return {\n type: 'Icon',\n value: value,\n resourceType: '',\n resource: '',\n selected: false,\n style: {\n size: '2x',\n color: 'dark'\n },\n margin: {\n side: 'none',\n value: '0'\n },\n padding: {\n side: 'none',\n value: '0'\n },\n border: this.defaultBorder()\n }\n }\n\n createImageComponent(image) {\n return {\n type: 'Image',\n value: image,\n selected: false,\n border: this.defaultBorder(),\n width: '',\n height: '',\n objectFit: 'none',\n resourceType: '',\n resource: '',\n margin: {\n side: 'none',\n value: '0'\n },\n padding: {\n side: 'none',\n value: '0'\n },\n }\n }\n\n createVideoComponent() {\n return {\n type: 'Video',\n value: {\n url: '',\n embedHtml: ''\n },\n selected: false,\n border: this.defaultBorder(),\n width: '',\n height: '',\n objectFit: 'none',\n margin: {\n side: 'none',\n value: '0'\n },\n padding: {\n side: 'none',\n value: '0'\n }\n }\n }\n\n createButton(label) {\n\n return {\n type: 'Button',\n value: label,\n action: '',\n resourceType: '', // can be \"View\", \"Page\" or \"URL\"\n resource: '', // can be a view ID, a page ID or a URL\n redirectTo: '', // can be a view ID, a page ID or a URL\n selected: false,\n style: {\n color: 'primary',\n backgroundColor: '',\n size: 'size-md',\n buttonSize: 'standard',\n font: '',\n borderRadius: '',\n minWidth: '120'\n },\n margin: {\n side: 'none',\n value: '0'\n },\n padding: {\n side: 'none',\n value: '0'\n }\n }\n }\n\n createLink(label) {\n\n return {\n type: 'Link',\n value: label,\n resourceType: '', // can be \"View\", \"Page\" or \"URL\"\n resource: '', // can be a view ID, a page ID or a URL\n selected: false,\n style: {\n color: 'primary',\n size: 'size-md',\n font: ''\n },\n margin: {\n side: 'none',\n value: '0'\n },\n padding: {\n side: 'none',\n value: '0'\n },\n border: this.defaultBorder()\n }\n }\n\n createNavLink(label) {\n\n return {\n type: 'Link',\n value: label,\n resourceType: '', // can be \"View\", \"Page\" or \"URL\"\n resource: '', // can be a view ID, a page ID or a URL\n selected: false,\n style: {\n color: 'primary',\n size: 'size-md',\n font: ''\n },\n margin: {\n side: 'left/right',\n value: '2'\n },\n padding: {\n side: 'none',\n value: '0'\n },\n border: this.defaultBorder()\n }\n }\n\n createRowContainer() {\n return {\n type: 'RowContainer',\n value: [],\n selected: false,\n margin: {\n side: 'none',\n value: '0'\n },\n padding: {\n side: 'none',\n value: '0'\n },\n border: this.defaultBorder()\n }\n }\n\n createRow() {\n let row = {\n columns: [],\n selected: false,\n background: this.defaultBackground(),\n color: '#222222',\n minHeight: '',\n margin: {\n side: 'none',\n value: '0'\n },\n padding: {\n side: 'none',\n value: '0'\n },\n conditions: [],\n includeContainer: true,\n sticky: false,\n shadow: false,\n banner: false,\n justify: 'left',\n border: this.defaultBorder()\n }\n\n return row\n }\n\n defaultBackground() {\n return {\n type: 'color', // color, image, or pattern\n color: '#FFFFFF',\n secondaryColor: '',\n image: null,\n imageOverlay: false,\n pattern: '',\n patternSize: '',\n gradient: 'solid',\n gradientDirection: '',\n opacity: '',\n field_id: '' // for when we use a field as a BG image\n }\n }\n\n defaultAnimation() {\n return {\n value: '',\n loop: true,\n delay: 1.5,\n children: []\n }\n }\n\n defaultBorder() {\n return {\n type: 'none',\n color: 'dark',\n width: '1',\n cornerRadius: '',\n side: 'all'\n }\n }\n\n resetColumns(columns) {\n let newWidth = 12 / columns.length\n\n for (let i = 0; i < columns.length; i++) {\n let column = columns[i]\n column.width = newWidth.toString().replace('.', '-')\n }\n }\n}","import PageFactory from \"./PageFactory\";\n\nexport default class ComponentUtil {\n\n\n isChildComponent(component, selectedComponent) {\n\n if(component.type !== 'RowContainer') {\n return false\n }\n\n for (let i = 0; i < component.value.length; i++) {\n let childComponent = component.value[i]\n\n if(childComponent === selectedComponent) {\n return true\n }\n }\n\n return false\n }\n\n wrapInContainer(column, component) {\n\n for (let i = 0; i < column.value.length; i++) {\n let columnComponent = column.value[i]\n\n if(columnComponent === component) {\n let factory = new PageFactory()\n let rowContainer = factory.createRowContainer()\n rowContainer.value.push(component)\n column.value.splice(i, 1, rowContainer)\n return\n }\n }\n\n }\n}"],"names":["PageFactory","rows","row","component","column","layoutType","website","firstNavBlock","secondNavBlock","width","value","headerSpecific","headerComponent","type","image","label","columns","newWidth","i","ComponentUtil","selectedComponent","rowContainer"],"mappings":"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"}