/* * This file is part of ORY Editor. * * ORY Editor is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * ORY Editor is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with ORY Editor. If not, see . * * @license LGPL-3.0 * @copyright 2016-2018 Aeneas Rekkas * @author Aeneas Rekkas * */ import * as React from 'react'; import { ImageLoaded, ImageUploaded } from 'ory-editor-ui/lib/ImageUpload'; import { ImageProps } from '../types/component'; import { ImageState } from './../types/state'; type StateType = { imagePreview?: ImageLoaded; }; class Form extends React.Component { constructor(props: ImageProps) { super(props); this.state = {}; this.imageMap = new Map(); this.saveServerDataToState(props.state); this.editImage = this.editImage.bind(this); } saveServerDataToState = (state) => { if(state.carouselData) { state.carouselData.map((item) => { let tempObj = { src : item.src, id : item.id, href : item.href } this.imageMap.set(tempObj.id,tempObj); }) // this.props.onChange({'carouselData':this.getMapToArray(this.imageMap)}); } } handleChange = ( e: React.ChangeEvent, prevState = null ) => { const target = e.target; if (target instanceof HTMLInputElement) { let change: Partial = {}; let key = target.id; change = {...this.imageMap.get(key)} change[target.name] = target.value; change.id = target.id; this.imageMap.set(key,change); console.log("[Carousel :: href Component handlechange]", this.imageMap); this.props.onChange({'carouselData':this.getMapToArray(this.imageMap)}); return; } } deleteImage = key => { this.imageMap.delete(String(key)); console.log("[Carousel :: Component image deleted]", this.imageMap); let arrdata = this.getMapToArray(this.imageMap) this.props.onChange({'carouselData':arrdata}); } editImage = key => { console.log("[Carousel :: Edit image in component key and imagemapdata",key , this.imageMap); let change: Partial = {}; change = {...this.imageMap.get(String(key))} change.src = ''; change.id = key; this.imageMap.set(String(key),change); let arrdata = this.getMapToArray(this.imageMap); // this.props.onChange({'carouselData':arrdata.filter(item=>item.src !== '')}); this.props.onChange({'carouselData':arrdata}); } getMapToArray = mapData => { let data = Array.from(mapData.values()); return data; } handleImageLoaded = (image: ImageLoaded) =>{ this.setState({ imagePreview: image }) } handleImageUploaded = (resp: ImageUploaded,id) => { this.setState({ imagePreview: undefined }); // this.props.onChange({ src: resp.url }); let change: Partial = {}; let key = id; change = {...this.imageMap.get(String(key))} change.src = resp.url; change.id = key; this.imageMap.set(String(key),change); console.log("[Carousel :: Component handlechange]", this.imageMap); this.props.onChange({'carouselData':this.getMapToArray(this.imageMap)}); } render() { const { Controls } = this.props; return ( ); } } export default Form;