1"use strict";(self.webpackChunkapp=self.webpackChunkapp||[]).push([[878],{3328:function(e,s,t){var r=t(6540),a=t(961),i=t(5556),n=t.n(i),l=t(9551),d=t(8450),c=t(6894),o=t.n(c),u=t(2543),p=Rollbar,m=t.n(p),I=t(2209);class g extends r.Component{renderIdeaCollapseToggle(){const{supportingIdeas:e,toggleIdeas:s,collapseIdeas:t}=this.props,a=I18n.t("clusters.index.supporting_idea",{count:e});return e>0?r.createElement("div",{className:"level-right"},t?r.createElement("p",{className:"level-item"},a):"",r.createElement("p",{className:"level-item"},r.createElement("a",{className:"is-primary",onClick:s},r.createElement("i",{className:"fa fa-chevron-"+(t?"down":"up")})))):void 0}render(){const{idea:e,isDragging:s,connectDragSource:t}=this.props,a=s?0:1;return t(r.createElement("div",{className:"level is-mobile idea "+(s?"dragging":""),style:{opacity:a},key:e.id},r.createElement("div",{className:"level-left"},r.createElement("i",{className:"fa fa-bars"}),r.createElement("p",null,e.content)),this.renderIdeaCollapseToggle()))}}g.propTypes={listId:n().number.isRequired,idea:n().object.isRequired};const h={beginDrag(e){return{listId:e.listId,idea:e.idea,key:!0}}};var v=(0,I.I)("IDEA",h,((e,s)=>({connectDragSource:e.dragSource(),isDragging:s.isDragging()})))(g);class k extends r.Component{render(){const{idea:e,isDragging:s,connectDragSource:t}=this.props,a=s?0:1;return t(r.createElement("div",{className:"level is-mobile idea supporting-idea "+(s?"dragging":""),style:{opacity:a},key:e.id},r.createElement("div",{className:"level-left"},r.createElement("i",{className:"fa fa-bars"}),r.createElement("p",null,e.content)),r.createElement("div",{className:"level-right"},r.createElement("div",{className:"buttons"},r.createElement("a",{className:"button is-primary",onClick:this.props.makeNewCluster},I18n.t("clusters.index.new_cluster")),r.createElement("a",{className:"button is-primary",onClick:this.props.makeIdeaKey},I18n.t("clusters.index.make_key"))))))}}k.propTypes={index:n().number.isRequired,idea:n().object.isRequired,listId:n().number.isRequired,removeIdea:n().func.isRequired,makeIdeaKey:n().func.isRequired,makeNewCluster:n().func.isRequired};const E={beginDrag(e){return{listId:e.listId,idea:e.idea}},endDrag(e,s){const t=s.getItem(),r=s.getDropResult();r&&r.listId!==t.listId&&e.removeIdea(t.index)}};var y=(0,I.I)("IDEA",E,((e,s)=>({connectDragSource:e.dragSource(),isDragging:s.isDragging()})))(k),b=t(2895);class N extends r.Component{constructor(e){super(e),this.state={hover:!1,collapseIdeas:!1}}toggleIdeas(){const e=this.state.collapseIdeas;this.setState({collapseIdeas:!e})}renderIdeas(e){return this.state.collapseIdeas?void 0:r.createElement("div",{className:"cluster--ideas"},e.supportingIdeas.map(((s,t)=>r.createElement(y,{key:t,index:t,idea:s,listId:e.id,removeIdea:()=>this.props.removeIdea(t),makeIdeaKey:()=>this.props.makeIdeaKey(t,s),makeNewCluster:()=>this.props.makeNewCluster(t,s)}))))}render(){const{cluster:e,connectDropTarget:s,isOver:t}=this.props,{containsDraggedIdea:a,collapseIdeas:i}=this.state;return s(r.createElement("div",{className:"cluster "+(t?"is-over":"")},r.createElement("div",{className:"cluster--key-idea"},r.createElement(v,{listId:e.id,idea:e.keyIdea,supportingIdeas:e.supportingIdeas.length,toggleIdeas:this.toggleIdeas.bind(this),collapseIdeas:i})),this.renderIdeas(e)))}}N.propTypes={index:n().number.isRequired,cluster:n().object.isRequired,pushIdea:n().func.isRequired,removeIdea:n().func.isRequired,makeIdeaKey:n().func.isRequired,makeNewCluster:n().func.isRequired,mergeClusters:n().func.isRequired};const C={drop(e,s,t){const r=s.getItem();return e.cluster.id!==r.listId&&(r.key?t.props.mergeClusters(r.listId,e.cluster.id):t.props.pushIdea(r.idea)),{listId:e.cluster.id}}};var f=(0,b.T)("IDEA",C,((e,s)=>({connectDropTarget:e.dropTarget(),isOver:s.isOver()})))(N);class q extends r.Component{constructor(e){super(e),this.state={clusters:[],loading:!0,edited:!1}}componentDidMount(){this.loadClusters()}loadClusters(){this.request=$.ajax({type:"GET",url:`/questions/${this.props.questionId}/clusters.json`,success:e=>{this.setState({clusters:e,loading:!1,edited:!1})},failure:()=>{this.setState({loading:!1})}})}
1submitClusters(){let e=this.state.clusters.slice(0).map((e=>{let s=e.supportingIdeas.map((e=>e.id));return s.push(e.keyIdea.id),{id:e.id,key_idea_id:e.keyIdea.id,ideas:s}}));this.request=$.ajax({type:"PUT",contentType:"application/json",url:`/questions/${this.props.questionId}/clusters/update_all`,data:JSON.stringify({clusters:e}),error:(e,s,t)=>{alert(I18n.t("clusters.index.submit_cluster_alert")),m().error("Error updating clusters",{textStatus:s,errorThrown:t})}})}markAsProcessed(){this.request=$.ajax({type:"PUT",url:this.props.processedPath,error:(e,s,t)=>{alert(I18n.t("clusters.index.mark_as_processed_alert")),m().error("Error updating clusters",{textStatus:s,errorThrown:t})}})}pushIdeaToCluster(e,s){this.setState(o()(this.state,{clusters:{[e]:{supportingIdeas:{$push:[s]}}}}))}removeIdeaFromCluster(e,s){this.setState(o()(this.state,{clusters:{[e]:{supportingIdeas:{$splice:[[s,1]]}}}}))}mergeClusters(e,s){let t=(0,u.findIndex)(this.state.clusters,{id:e}),r=this.state.clusters[t],a=o()(this.state,{clusters:{$splice:[[t,1]]}});t=(0,u.findIndex)(a.clusters,{id:s}),this.setState(o()(a,{clusters:{[t]:{supportingIdeas:{$push:r.supportingIdeas.concat([r.keyIdea])}}},edited:{$set:!0}}))}makeIdeaKey(e,s,t){const r=this.state.clusters[e].keyIdea;this.setState(o()(this.state,{clusters:{[e]:{keyIdea:{$set:t},supportingIdeas:{$splice:[[s,1]],$push:[r]}}},edited:{$set:!0}}))}makeNewCluster(e,s,t){const r={id:Date.now(),keyIdea:t,supportingIdeas:[]};this.setState(o()(this.state,{clusters:{[e]:{supportingIdeas:{$splice:[[s,1]]}},$splice:[[e+1,0,r]]},edited:{$set:!0}}))}render(){const{clusters:e,loading:s,edited:t}=this.state;return s?r.createElement("div",{className:"columns is-centered"},r.createElement("div",{className:"column is-narrow"},r.createElement("span",{className:"loader"}))):e.length>0?r.createElement(l.Q,{backend:d.Ay},r.createElement("div",{className:"columns"},r.createElement("div",{className:"column"}),r.createElement("div",{className:"column is-narrow"},r.createElement("div",{className:"field is-grouped has-text-centered"},r.createElement("button",{className:"button control is-primary is-outlined",disabled:!t,onClick:this.loadClusters.bind(this)},I18n.t("clusters.index.reset")),r.createElement("button",{className:"button control is-primary",disabled:!t,onClick:this.submitClusters.bind(this)},I18n.t("clusters.index.save_changes")),r.createElement("button",{className:"button control is-danger",disabled:!!t,onClick:this.markAsProcessed.bind(this)},I18n.t("clusters.index.mark_as_processed"))))),r.createElement("div",{className:"cluster-list"},e.map(((e,s)=>r.createElement("div",{key:s},r.createElement(f,{index:s,cluster:e,pushIdea:this.pushIdeaToCluster.bind(this,s),removeIdea:this.removeIdeaFromCluster.bind(this,s),makeIdeaKey:this.makeIdeaKey.bind(this,s),makeNewCluster:this.makeNewCluster.bind(this,s),mergeClusters:this.mergeClusters.bind(this)})))))):r.createElement("p",null,I18n.t("clusters.index.failed_to_load"))}}q.propTypes={questionId:n().string.isRequired,processedPath:n().string.isRequired};var x=q;document.addEventListener("DOMContentLoaded",(()=>{const e=document.getElementById("js-cluster-list");if(e){let s=e.dataset.questionId,t=e.dataset.processedPath;a.render(r.createElement(x,{questionId:s,processedPath:t}),e)}}))}},function(e){e.O(0,[748],(function(){return s=3328,e(e.s=s);var s}));e.O()}]); 2//# sourceMappingURL=cluster_list-83b4ffa0d5753bf4e89b.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.