j"1ChDHzdd1H4wSjgGMHyndZm6qxEDGjqpJLM;unction"!=typeof t?_assertThisInitialized(e):t}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var List=function(){function a(e){var t;return _classCallCheck(this,a),(t=_possibleConstructorReturn(this,_getPrototypeOf(a).call(this,e))).state={sort:"hot",limit:10,category_limit:6,cursor:0,action:null,isExpanded:!1},t._isMounted=!1,t}return _inherits(a,React.Component),_createClass(a,[{key:"componentDidMount",value:function(){this._isMounted=!0,window.addEventListener("hashchange",this.clearForm.bind(this),!1)}},{key:"componentWillUnmount",value:function(){this._isMounted=!1,window.removeEventListener("hashchange",this.clearForm.bind(this))}},{key:"clearForm",value:function(){this._isMounted&&this.setState({action:null,isExpanded:!1,cursor:0})}},{key:"findCategoryByTXID",value:function(t){return this.props.items.filter(function(e){return"category"==e.type&&e.txid==t}).shift()}},{key:"handleChangeSortOrder",value:function(e){"time"==e?this.setState({sort:"time"}):"votes"==e?this.setState({sort:"votes"}):"money"==e?this.setState({sort:"money"}):this.setState({sort:"hot"})}},{key:"handlePageChange",value:function(e){var t=(e-1)*this.state.limit;this.setState({cursor:t})}},{key:"handleSuccessfulTip",value:function(){this.setState({action:null}),this.props.onSuccessHandler("Successfully upvoted "+this.props.category.type+", it will appear automaticallyâplease refresh the page if it doesn't")}},{key:"handleShowAllCategories",value:function(){this.setState({category_limit:-1})}},{key:"handleSuccessfulDelete",value:function(){this.setState({action:null}),this.props.onSuccessHandler("Successfully deleted "+this.props.category.type+", it will appear automaticallyâplease refresh the page if it doesn't")}},{key:"handleUpvote",value:function(e){this.setState({action:"tipping"})}},{key:"handleToggleExpand",value:function(e){this.setState({isExpanded:!this.state.isExpanded,action:null})}},{key:"handleEdit",value:function(e){this.setState({action:"editing"})}},{key:"handleDelete",value:function(e){this.setState({action:"deleting"})}},{key:"render",value:function(){var e,r=this,t=this.getCategories();e=-1==this.state.category_limit?t:t.slice(0,this.state.category_limit);var a,s,n,i,o=this.getEntries(),c=satoshisToDollars(this.props.category.satoshis,BSV_PRICE,!0),l=o.slice(this.state.cursor,this.state.cursor+this.state.limit),h=Math.ceil(o.length/this.state.limit),u=_toConsumableArray(Array(h).keys()).map(function(e){var t=e+1;return React.createElement("a",{key:"page-"+t,className:r.state.cursor==e*r.state.limit?"active":null,onClick:function(){r.handlePageChange(t)}},t)}),p=React.createElement("span",{className:"actions"},React.createElement("a",{onClick:this.handleToggleExpand.bind(this),className:"arrow",title:"txid "+this.props.category.txid},this.state.isExpanded?React.createElement("i",{class:"fas fa-caret-right"}):React.createElement("i",{className:"fas fa-caret-down"})),this.state.isExpanded&&React.createElement("a",{className:"action",onClick:this.handleEdit.bind(this)},"edit"),this.state.isExpanded&&React.createElement("a",{className:"action",onClick:this.handleDelete.bind(this)},"delete"));if(this.props.category&&this.props.category.category&&(a=this.findCategoryByTXID(this.props.category.category)),this.props.category){if(a){var m=get_root_category_txid();if(null==m||this.props.category.txid!==m){var d="/#"+a.txid;a.txid==m&&(d="/#"),s=React.createElement("div",{className:"back"},React.createElement("a",{href:d},React.createElement("i",{className:"fas fa-long-arrow-alt-left"})," ",a.name),React.createElement("hr",null))}}this.props.category.name&&(n=React.createElement("div",{className:"category-meta",id:this.props.category.txid},s,React.createElement("div",{className:"upvoteContainer"},React.createElement("div",{className:"upvote"},React.createElement("a",{onClick:this.handleUpvote.bind(this)},React.createElement("i",{className:"fas fa-chevron-up"}))," ",React.createElement("span",{className:"number",title:this.props.category.satoshis+" sats"},c),React.createElement("br",null),React.createElement("span",{className:"number"},this.props.category.votes)),React.createElement("div",null,React.createElement("h1",null,this.props.category.name,p),this.state.action&&React.createElement("div",{className:"category-container"},"editing"==this.state.action&&React.createElement("div",{className:"column"},React.createElement(EditCategoryForm,{category:this.props.category,onSuccessHandler:this.props.onSuccessHandler,onErrorHandler:this.props.onErrorHandler,onSubmit:this.clearForm.bind(this)})),"tipping"==this.state.action&&React.createElement(TipchainItem,{item:this.props.category,items:this.props.items,onSuccessHandler:this.handleSuccessfulTip.bind(this),onErrorHandler:this.props.onErrorHandler}),"deleting"==this.state.action&&React.createElement(DeleteItem,{item:this.props.category,onSuccessHandler:this.handleSuccessfulDelete.bind(this),onErrorHandler:this.props.onErrorHandler})),React.createElement("div",{className:"markdown"},React.createElement(ReactMarkdown,{source:this.props.category.description}))),React.createElement("div",{className:"clearfix"}))))}this.props.category.address&&0<l.length?i=React.createElement("div",null,React.createElement("div",{className:"sort"},React.createElement("span",{className:"label"},"sort by"),React.createElement("ul",null,React.createElement("li",null,React.createElement("a",{onClick:function(){r.handleChangeSortOrder("hot")},className:"hot"==this.state.sort?"active":""},"hot")),React.createElement("li",null,React.createElement("a",{onClick:function(){r.handleChangeSortOrder("money")},className:"money"==this.state.sort?"active":""},"money")),React.createElement("li",null,React.createElement("a",{onClick:function(){r.handleChangeSortOrder("votes")},className:"votes"==this.state.sort?"active":""},"votes")),React.createElement("li",null,React.createElement("a",{onClick:function(){r.handleChangeSortOrder("time")},className:"time"==this.state.sort?"active":""},"new"))),React.createElement("div",{className:"clearfix"})),React.createElement("ul",{className:"entry list"},l.map(function(e){return React.createElement(EntryItem,{key:"entry-"+e.txid,item:e,items:r.props.items,onSuccessHandler:r.props.onSuccessHandler,onErrorHandler:r.props.onErrorHandler})})),1<u.length&&React.createElement("div",{className:"pages"},u)):!this.props.isError&&!this.props.isLoading&&this.props.category&&this.props.category.txid&&(i=React.createElement("div",{className:"empty-entry-listing"},React.createElement("p",null,React.createElement("i",{className:"fas fa-link"})),React.createElement("p",null,"There's no links here yetâyou should submit one! If you submit a good one and it gets upvoted, you'll get paid Bitcoin (SV)! ð")));var f=null==this.props.category.txid;return React.createElement("div",null,n,t&&0<t.length&&React.createElement("div",{className:f?"homepage":"subcategories"},React.createElement("ul",{className:"category list"},e.map(function(e,t){var a=React.createElement(CategoryItem,{key:"category-"+e.txid,item:e,items:r.props.items,onSuccessHandler:r.props.onSuccessHandler,onErrorHandler:r.props.onErrorHandler});return(t+1)%3==0?[a,React.createElement("div",{key:"category-clearfix-"+t,className:"clearfix three-column"})]:(t+1)%2==0?[a,React.createElement("div",{key:"category-clearfix-"+t,className:"clearfix two-column"})]:a}),t.length>e.length&&React.createElement("li",{className:"show-more"},React.createElement("a",{onClick:this.handleShowAllCategories.bind(this)},"Show all ",t.length," categories")),React.createElement("div",{className:"clearfix"})),React.createElement("div",{className:"clearfix"})),i,React.createElement("div",{className:"clearfix"}))}},{key:"getCategories",value:function(){var t=this.props.category?this.props.category.txid:get_root_category_txid();return this.props.items.filter(function(e){return!e.deleted&&"category"==e.type&&e.category==t}).sort(function(e,t){return e.satoshis<t.satoshis?1:e.satoshis>t.satoshis?-1:e.votes<t.votes?1:e.votes>t.votes?-1:e.entries<t.entries?1:e.entries>t.entries?-1:e.height<t.height?1:e.height>t.height?-1:0})}},{key:"getEntries",value:function(){var a=this;return this.props.category?this.props.items.filter(function(e){return!e.deleted&&"entry"==e.type&&e.category&&e.category==a.props.category.txid}).sort(function(e,t){if("time"==a.state.sort){if(!e.height)return-1;if(e.height<t.height)return 1;if(e.height>t.height)return-1}else if("votes"==a.state.sort){if(e.votes<t.votes)return 1;if(e.votes>t.votes)return-1;if(e.height<t.height)return 1;if(e.height>t.height)return-1}else if("money"==a.state.sort){if(e.satoshis<t.satoshis)return 1;if(e.satoshis>t.satoshis)return-1;if(e.votes<t.votes)return 1;if(e.votes>t.votes)return-1;if(e.height<t.height)return 1;if(e.height>t.height)return-1}else{if(e.hottness<t.hottness)return 1;if(e.hottness>t.hottness)return-1;if(e.satoshis<t.satoshis)return 1;if(e.satoshis>t.satoshis)return-1;if(e.votes<t.votes)return 1;if(e.votes>t.votes)return-1;if(e.height<t.height)return 1;if(e.height>t.height)return-1}return 0}):[]}}]),a}();
"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?_assertThisInitialized(e):t}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var ChangeLog=function(){function n(e){var t;return _classCallCheck(this,n),(t=_possibleConstructorReturn(this,_getPrototypeOf(n).call(this,e))).state={isExpanded:!1,isShowAll:!1},t}return _inherits(n,React.Component),_createClass(n,[{key:"handleToggleExpand",value:function(e){this.setState({isExpanded:!this.state.isExpanded})}},{key:"handleToggleShowAll",value:function(e){this.setState({isShowAll:!this.state.isShowAll})}},{key:"render",value:function(){var t=this,n=0,e=(this.props.changelog?this.props.changelog.slice(0).reverse():[]).filter(function(e){return e.data.s1==OPENDIR_PROTOCOL||e.data.s1==SETTINGS.admin_address});return e&&0<e.length&&React.createElement("div",{className:"row"},React.createElement("div",{className:"column"},React.createElement("div",{id:"changelog"},React.createElement("h3",null,React.createElement("i",{className:"fas fa-history"})," Changelog"),React.createElement("table",null,React.createElement("tbody",null,e.map(function(e){if(n++<=5||t.state.isShowAll)return React.createElement(ChangeLogItem,{item:e,txpool:t.props.txpool,key:"changelog-"+e.txid,onSuccessHandler:t.props.onSuccessHandler,onErrorHandler:t.props.onErrorHandler,isExpanded:t.state.isExpanded})})),!this.state.isShowingWarning&&5<e.length&&React.createElement("tbody",null,React.createElement("tr",null,React.createElement("td",{colSpan:"6",className:"expand"},React.createElement("a",{onClick:this.handleToggleShowAll.bind(this)},this.state.isShowAll?"Hide":"Show"," all ",e.length," changes from changelog"),"Â ",React.createElement("a",{onClick:this.handleToggleExpand.bind(this)},"expanded"))))))))}}]),n}(),ChangeLogItem=function(){function n(e){var t;return _classCallCheck(this,n),(t=_possibleConstructorReturn(this,_getPrototypeOf(n).call(this,e))).state={isShowingWarning:!1,isExpanded:!1,undo_reason:""},t}return _inherits(n,React.Component),_createClass(n,[{key:"clearForm",value:function(){var e=document.getElementById("changelog-action-"+this.props.item.txid).querySelector(".undo-money-button");if(e){var t=e.parentNode;t.removeChild(e);var n=document.createElement("div");n.className="undo-money-button",t.appendChild(n)}}},{key:"handleClickUndo",value:function(e){e.preventDefault(),this.setState({isShowingWarning:!0})}},{key:"handleUndoSubmit",value:function(e){var t=this;e.preventDefault();var n=findObjectByTX(this.props.item.txid,this.props.txpool);if(n){var a=findRootActionID(n,this.props.txpool);a||alert("Error while finding undo object action_id, please try again");var o=[OPENDIR_PROTOCOL,"undo",a,this.props.item.txid];if(this.state.undo_reason)o.push(this.state.undo_reason);else if(!confirm("Are you sure you want to continue? You didn't specify an undo reason.\n\nProviding a reason helps everyone understand your thinking behind this change, and can prevent it from being reverted in the future."))return;console.log(o);var i=document.getElementById("changelog-action-"+this.props.item.txid).querySelector(".undo-money-button");databutton.build({data:o,button:{$el:i,onPayment:function(e){setTimeout(function(){t.clearForm(),t.setState({isShowingWarning:!1,isExpanded:!1,undo_reason:""}),t.props.onSuccessHandler("Successfully reversed transaction, it will appear automaticallyâplease refresh the page if it doesn't.")},3e3)}}})}else alert("Error while finding undo object, please try again")}},{key:"handleToggleExpand",value:function(e){this.setState({isExpanded:!this.state.isExpanded,isShowingWarning:!1})}},{key:"handleChangeUndoReason",value:function(e){this.setState({undo_reason:e.target.value})}},{key:"render",value:function(){var e,t=(new Date).getTime(),n=satoshisToDollars(this.props.item.satoshis,BSV_PRICE),a=0<this.props.item.satoshis?this.props.item.satoshis+" sats":"";e="admin"==this.props.item.type?this.props.item.type+"."+this.props.item.action:this.props.item.data.s2;var o=!0;return"admin"==this.props.item.type?o=!1:"fork"==this.props.item.type&&(o=!1),React.createElement(React.Fragment,null,React.createElement("tr",null,React.createElement("td",{className:"height"},React.createElement("a",{onClick:this.handleToggleExpand.bind(this),className:"arrow"},this.props.isExpanded||this.state.isExpanded?React.createElement("i",{className:"fas fa-caret-down"}):React.createElement("i",{className:"fas fa-caret-right"})),this.props.item.height?React.createElement("span",{className:"block"},"#",this.props.item.height):React.createElement("span",{className:"pending"},"pending")),React.createElement("td",{className:"action"},e),React.createElement("td",{className:"time"},timeDifference(t,1e3*this.props.item.time)),React.createElement("td",{className:"amount",title:a},n),React.createElement("td",{className:"description"},this.props.item.description),React.createElement("td",{className:"address"},this.props.item.address)),(this.props.isExpanded||this.state.isExpanded)&&React.createElement("tr",null,React.createElement("td",{className:"data",colSpan:"6"},React.createElement("pre",null,React.createElement("code",null,JSON.stringify(this.props.item.data,null,4))))),(this.props.isExpanded||this.state.isExpanded)&&React.createElement("tr",null,React.createElement("td",{className:"undo",colSpan:"6",id:"changelog-action-"+this.props.item.txid},React.createElement("a",{href:"https://whatsonchain.com/tx/"+this.props.item.txid},this.props.item.txid),"Â ",o&&React.createElement("a",{onClick:this.handleClickUndo.bind(this)},"undo"),this.state.isShowingWarning&&React.createElement("div",{className:"notice"},React.createElement("span",{className:"warning"},"You are undoing this change, are you sure you want to do this?"),React.createElement("div",{className:"explain"},React.createElement("p",null,"If you undo this change, you'll be permanently undoing it in this directory for everyone else. Please only do this if you think it's in the best interest of the directory. Your Bitcoin key is forever tied to this transaction, so it will always be traced to you."),React.createElement("p",null,React.createElement("strong",null,"Why are you undoing this change?")),React.createElement("form",{onSubmit:this.handleUndoSubmit.bind(this)},React.createElement("input",{type:"text",placeholder:"reason for undo",value:this.state.undo_reason,onChange:this.handleChangeUndoReason.bind(this)})," ",React.createElement("input",{type:"submit",className:"button button-outline",value:"undo"})),React.createElement("div",{className:"undo-money-button"})," ")))))}}]),n}();
"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _createClass(e,t,a){return t&&_defineProperties(e.prototype,t),a&&_defineProperties(e,a),e}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?_assertThisInitialized(e):t}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var OpenDirectoryApp=function(){function a(e){var t;return _classCallCheck(this,a),(t=_possibleConstructorReturn(this,_getPrototypeOf(a).call(this,e))).state={isLoading:!0,isError:!1,isExpandingAddCategoryForm:!1,isExpandingAddEntryForm:!1,isForking:!1,location:[""],messages:[],raw:{},txpool:[],items:[],cache:{},admin_actions:[],taches:[],category:{txid:get_root_category_txid(),needsupdate:!0},title:SETTINGS.title,intro_markdown:SETTINGS.intro_markdown,faq_markdown:SETTINGS.faq_markdown,theme:SETTINGS.theme,template_txid:SETTINGS.template_txid},t.NETWORK_DELAY=0,t._isMounted=!1,t.addSuccessMessage=t.addSuccessMessage.bind(_assertThisInitialized(t)),t.addErrorMessage=t.addErrorMessage.bind(_assertThisInitialized(t)),t}return _inherits(a,React.Component),_createClass(a,[{key:"componentDidCatch",value:function(e,t){console.log("ERROR",e,t)}},{key:"componentDidMount",value:function(){this._isMounted=!0,this.didUpdateLocation(),this.performAdminActionsFetch(),this.detectTemplateIDFromAddress(),updateBitcoinSVPrice(),window.addEventListener("hashchange",this.didUpdateLocation.bind(this),!1)}},{key:"componentWillUnmount",value:function(){this._isMounted=!1}},{key:"addMessage",value:function(e,t,a,n){var s=this,i=2<arguments.length&&void 0!==a?a:null,r=3<arguments.length&&void 0!==n?n:5e3,o=(new Date).getTime(),c=this.state.messages.concat([{type:t,message:e,key:o}]);this.setState({messages:c},function(){setTimeout(function(){s.hideMessage(o)},r),i&&i()})}},{key:"addSuccessMessage",value:function(e,t,a){var n=1<arguments.length&&void 0!==t?t:null,s=2<arguments.length&&void 0!==a?a:5e3;this.addMessage(e,"success",n,s)}},{key:"addErrorMessage",value:function(e,t,a){var n=1<arguments.length&&void 0!==t?t:null,s=2<arguments.length&&void 0!==a?a:5e3;this.addMessage(e,"error",n,s)}},{key:"hideMessage",value:function(t){var e=this.state.messages.filter(function(e){return e.key!=t});this.setState({messages:e})}},{key:"detectTemplateIDFromAddress",value:function(){if(!this.state.template_txid){var e,t=document.location.href;if(-1!==t.indexOf("bit://")){var a=t.split("/");if(4!==a.length)return void console.log("Unable to detect template ID from address, unknown parts in url");if(a[2]!==B_MEDIA_PROTOCOL&&a[2]!==BCAT_MEDIA_PROTOCOL)return void console.log("Unable to detect template ID from address, unknown parts in url");e=a[3]}else if(-1!==t.indexOf("b://")||-1!==t.indexOf("bcat://")){e=t.split("/")[2]}if(e){if(64!==e.length)return void console.log("Unable to detect valid template ID from address, invalid tx");console.log("Successfully detected template_txid",e,"from address",t),this.setState({template_txid:e})}}}},{key:"handleCloseFork",value:function(){this.setState({isForking:!1})}},{key:"handleChangeTitle",value:function(e){this.setState({title:e.target.value})}},{key:"didChangeFAQHandler",value:function(e){console.log("FAQ",e.target.value),this.setState({faq_markdown:e.target.value})}},{key:"handleToggleFork",value:function(){this.setState({isForking:!this.state.isForking})}},{key:"didChangeIntroHandler",value:function(e){this.setState({intro_markdown:e.target.value})}},{key:"handleChangeTheme",value:function(e){this.setState({theme:e})}},{key:"buildChangeLog",value:function(a){var n=this,e=processAdminResults(this.state.admin_actions).filter(function(e){if(!a&&"uri"==e.type)return!0;if(e.action_id==a)return!0;if(e.action_id){var t=findObjectByTX(e.action_id,n.state.items);if(t&&"category"==t.type&&(!t.category_id||t.txid==e.action_id))return!0}return!1}),t=this.state.raw[this.state.category.txid];return t||(t=[]),(t=t.filter(function(e){return-1!==OPENDIR_ACTIONS.indexOf(e.data.s2)})).concat(e).sort(function(e,t){return(null===e.height)-(null===t.height)||+(e.height>t.height)||-(e.height<t.height)})}},{key:"handleChangeCategory",value:function(e){SETTINGS.category=e,this.didUpdateLocation()}},{key:"getForks",value:function(){this.state.category.txid;return this.state.txpool.filter(function(e){return"fork"==e.type}).sort(function(e,t){return e.satoshis<t.satoshis?1:e.satoshis>t.satoshis?-1:0})}},{key:"handleExpandAddCategoryForm",value:function(){this.setState({isExpandingAddCategoryForm:!0})}},{key:"handleExpandAddEntryForm",value:function(){this.setState({isExpandingAddEntryForm:!0})}},{key:"render",value:function(){var e,t,a,n,s,i,r=this.state.location[0],o=!1,c=!1;if("faq"==r)e=React.createElement("div",{className:"faq"},React.createElement(ReactMarkdown,{source:this.state.faq_markdown}));else if("search"==r)e=React.createElement(SearchPage,{title:this.state.title,items:this.state.items,category:this.state.category});else if("add-directory"==r)e=React.createElement(AddDirectoryPage,{category:this.state.category,onSuccessHandler:this.addSuccessMessage,onErrorHandler:this.addErrorMessage});else{if(this.state.isLoading||this.state.isError||(o=!0,this.state.category.txid&&(c=!0)),n=this.buildChangeLog(this.state.category.txid),s=this.getForks(),!this.state.isError){var l=this.filterOutDetaches(this.state.items);e=React.createElement("div",{className:"list-wrapper"},React.createElement(List,{items:l,category:this.state.category,isError:this.state.isError,isLoading:this.state.isLoading,onSuccessHandler:this.addSuccessMessage,onErrorHandler:this.addErrorMessage}))}t=React.createElement("div",{className:"loading"},React.createElement("div",{className:"spinner"},React.createElement("div",{className:"bounce1"}),React.createElement("div",{className:"bounce2"}),React.createElement("div",{className:"bounce3"})),React.createElement("p",null,"Loading ",this.state.title,"...")),a=React.createElement("div",null,React.createElement("h2",null,"Error"),React.createElement("p",null,React.createElement("strong",null,"Sorry, there was an error while loading open directory information. Please refresh to try again or contact ",React.createElement("a",{href:"https://twitter.com/synfonaut"},"@synfonaut"))),React.createElement("br",null),React.createElement("p",null,React.createElement("button",{onClick:function(){location.reload()},className:"button button-outline"},"Refresh This Page")))}return this.state.intro_markdown&&(i=React.createElement("div",{className:"intro"},React.createElement("h1",null,React.createElement("i",{className:"fas fa-sitemap"})," Open Directory"),React.createElement(ReactMarkdown,{source:this.state.intro_markdown}))),React.createElement("div",{className:this.state.theme+" wrapper"},this.state.isForking&&React.createElement(Fork,{onCloseFork:this.handleCloseFork.bind(this),onErrorHandler:this.addErrorMessage,introMarkdown:this.state.intro_markdown,onIntroChange:this.didChangeIntroHandler.bind(this),theme:this.state.theme,onChangeTheme:this.handleChangeTheme.bind(this),title:this.state.title,onChangeTitle:this.handleChangeTitle.bind(this),faqMarkdown:this.state.faq_markdown,onFAQChange:this.didChangeFAQHandler.bind(this),items:this.state.items,onChangeCategory:this.handleChangeCategory.bind(this),template_txid:this.state.template_txid}),React.createElement("nav",{className:"navigation"},React.createElement("section",{className:"container"},React.createElement("a",{href:"/#",className:"navigation-title"},React.createElement("i",{className:"fas fa-sitemap"}),this.state.title),React.createElement("div",{className:this.state.networkActive?"spinner white active":"spinner white"},React.createElement("div",{className:"bounce1"}),React.createElement("div",{className:"bounce2"}),React.createElement("div",{className:"bounce3"})),React.createElement("ul",{className:"navigation-list float-right"},React.createElement("li",{className:"navigation-item"},React.createElement("a",{className:"navigation-link nav-search",href:"#search"},React.createElement("i",{className:"fas fa-search"}," "),"Search"),React.createElement("a",{className:"navigation-link nav-faq",href:"#faq"},"FAQ"),React.createElement("a",{className:"navigation-link nav-fork",onClick:this.handleToggleFork.bind(this)},"Fork"))))),React.createElement("div",{className:"container"},React.createElement("div",{className:"open-directory"},React.createElement(PoseGroup,null,0<this.state.messages.length&&React.createElement(MessageGroup,{key:"message_group",className:"messages"},this.state.messages.map(function(e){return React.createElement(Message,{key:e.key,className:"message "+e.type},e.message)}))),""==r&&i,e,this.state.isLoading&&0==this.state.items.length&&t,this.state.isError&&a,React.createElement("hr",null),React.createElement("div",{className:"row"},c?React.createElement("div",{className:"column"},!this.state.isExpandingAddEntryForm&&React.createElement("div",{className:"add-entry-callout"},React.createElement("a",{onClick:this.handleExpandAddEntryForm.bind(this)},React.createElement("i",{class:"fas fa-link"})," Submit a new link"),React.createElement("p",null,"Earn ",React.createElement("i",{className:"fab fa-bitcoin"})," Bitcoin (SV) by submitting valuable contentâwhen it gets upvoted you'll receive a portion of the tip!")),this.state.isExpandingAddEntryForm&&React.createElement(AddEntryForm,{category:this.state.category,onSuccessHandler:this.addSuccessMessage,onErrorHandler:this.addErrorMessage})):null,o&&!c?React.createElement("div",{className:"row"},React.createElement("div",{className:"column"},!this.state.isExpandingAddCategoryForm&&React.createElement("div",{className:"add-directory-callout"},React.createElement("a",{onClick:this.handleExpandAddCategoryForm.bind(this)},React.createElement("i",{class:"fas fa-folder"})," Create a new directory"),React.createElement("p",null,"Earn ",React.createElement("i",{className:"fab fa-bitcoin"})," Bitcoin (SV) by creating a new directoryâwhen someone submits content and it gets upvoted you'll receive a portion of the tip! ")),this.state.isExpandingAddCategoryForm&&React.createElement(AddCategoryForm,{category:this.state.category,onSuccessHandler:this.addSuccessMessage,onErrorHandler:this.addErrorMessage})),React.createElement("div",{className:"column"})):null,o&&c?React.createElement("div",{className:"column"},!this.state.isExpandingAddCategoryForm&&React.createElement("div",{className:"add-category-callout"},React.createElement("a",{onClick:this.handleExpandAddCategoryForm.bind(this)},React.createElement("i",{class:"fas fa-folder"})," Create a new subcategory "),React.createElement("p",null,"Earn ",React.createElement("i",{className:"fab fa-bitcoin"})," Bitcoin (SV) by creating a new subcategoryâwhen someone submits content and it gets upvoted you'll receive a portion of the tip! ")),this.state.isExpandingAddCategoryForm&&React.createElement(AddCategoryForm,{category:this.state.category,onSuccessHandler:this.addSuccessMessage,onErrorHandler:this.addErrorMessage})):null),(c||o)&&React.createElement("hr",null),!this.state.isLoading&&React.createElement(ForkLog,{forks:s,onSuccessHandler:this.addSuccessMessage,onErrorHandler:this.addErrorMessage}),!this.state.isLoading&&React.createElement(ChangeLog,{changelog:n,txpool:this.state.txpool,category:this.state.category,onSuccessHandler:this.addSuccessMessage,onErrorHandler:this.addErrorMessage}))))}},{key:"performAdminActionsFetch",value:function(){var t=this;getCachedAdminActions().then(function(e){t.setState({admin_actions:e}),t.performAdminUpdateCheck()}).catch(function(e){console.log("Error while checking for admin actions",e),t.addErrorMessage("Error while checking for admin actions")})}},{key:"performAdminUpdateCheck",value:function(){var a=this;"dir.sv"!=document.location.hostname?getLatestUpdate().then(function(e){if(document.location.origin!=e.uri){console.log("Current location doesn't match latest update URI...new version available",document.location.origin,e.uri);var t=React.createElement("a",{href:e.uri},"new version");a.addSuccessMessage(React.createElement("div",null,a.state.title," has a ",t," available, check it out!"),null,1e4)}else console.log("Using most recent version of app")}):console.log("Skipping app update check since running at http/https")}},{key:"filterOutDetaches",value:function(e){var t=processAdminResults(this.state.admin_actions).filter(function(e){return"attach"==e.action||"detach"==e.action});if(0<e.length&&0<t.length){var a=!0,n=!1,s=void 0;try{for(var i,r=t[Symbol.iterator]();!(a=(i=r.next()).done);a=!0){var o=i.value,c=findObjectByTX(o.action_id,e);c&&("detach"==o.action?c.detached=!0:"attach"==o.action&&delete c.detached)}}catch(e){n=!0,s=e}finally{try{a||null==r.return||r.return()}finally{if(n)throw s}}}return e.filter(function(e){return!e.detached})}},{key:"getLocation",value:function(){return window.location.hash.replace(/^#\/?|\/$/g,"").split("/")}},{key:"didUpdateLocation",value:function(){var e=this,t=this.getLocation(),a=t[0];console.log("location updated",a);var n=this.state.category,s=[],i=this.state.title,r=!1;if("faq"==a)i="FAQ "+this.state.title;else if("search"==a)i="Search "+this.state.title,r=!0;else if("add-directory"==a)i="Add directory to "+this.state.title,r=!0;else{var o=""==a?get_root_category_txid():a,c=this.state.cache[o];if(n={txid:o,needsdata:!0},r=!0,c){var l=findObjectByTX(o,s=c);l&&(l.needsdata=!0,i=n.name+"Â â "+this.state.title,n=l)}}document.title=i,t!==this.state.location&&window.scrollTo(0,0),this.setState({location:t,category:n,items:s,isExpandingAddCategoryForm:!1,isExpandingAddEntryForm:!1},function(){r&&e.networkAPIFetch()})}},{key:"networkAPIFetch",value:function(){var d=this;console.log("network fetching");var e={networkActive:!0};0==this.state.items.length&&(e.isLoading=!0),this.setState(e),setTimeout(function(){var l=d.state.category?d.state.category.txid:get_root_category_txid();fetch_from_network(l).then(function(o){var c=processOpenDirectoryTransactions(o),e=c.filter(function(e){return"entry"==e.type}).map(function(e){var t=e.change.link;return parseTransactionAddressFromURL(t)}).filter(function(e){return e});fetch_bmedia_from_network(e).then(function(e){var t=processOpenDirectoryTransactions(e),a=c.concat(t),n=processResults(o,a),s=d.checkForUpdatedActiveCategory(n),i=d.state.raw;i[l]=o;var r=d.state.cache;r[l]=n,d.setState({networkActive:!1,isLoading:!1,isError:!s,txpool:a,items:n,raw:i,cache:r}),d.setupNetworkSocket()})}).catch(function(e){console.log("error",e),d.setState({isLoading:!1,networkActive:!1,isError:!0})})},this.NETWORK_DELAY)}},{key:"checkForUpdatedActiveCategory",value:function(e){if(this.state.category&&this.state.category.txid&&this.state.category.needsdata){var t=!0,a=!1,n=void 0;try{for(var s,i=e[Symbol.iterator]();!(t=(s=i.next()).done);t=!0){var r=s.value;if("category"==r.type&&r.txid==this.state.category.txid)return this.setState({category:r}),document.title=r.name+"Â â "+this.state.title,!0}}catch(e){a=!0,n=e}finally{try{t||null==i.return||i.return()}finally{if(a)throw n}}return!1}return!0}},{key:"setupNetworkSocket",value:function(){var s=this;this.socket?(console.log("refreshing network socket"),this.socket.close(),delete this.socket):console.log("setting up new network socket");var e=get_bitdb_query(this.state.category?this.state.category.txid:get_root_category_txid()),t=toBase64(JSON.stringify(e)),a=SETTINGS.api_endpoint.replace("{api_key}",SETTINGS.api_key).replace("{api_action}","s").replace("{query}",t);this.socket=new EventSource(a),this.socket.onmessage=function(e){try{var t=JSON.parse(e.data);if(("c"==t.type||"u"==t.type)&&0<t.data.length){for(var a=!1,n=0;n<t.data.length;n++)t.data[n]&&t.data[n].data&&t.data[n].data.s1==OPENDIR_PROTOCOL&&(a=!0);a?(console.log("handled new message",t),s.networkAPIFetch()):console.log("unhandled message",t)}}catch(e){console.log("error handling network socket data",e.data)}}}}]),a}(),MessageGroup=posed.div({enter:{applyAtStart:{display:"block"},opacity:1,beforeChildren:!0},exit:{applyAtEnd:{display:"none"},opacity:0,beforeChildren:!0}}),Message=posed.div({}),application=React.createElement(OpenDirectoryApp,null);ReactDOM.render(application,document.getElementById("app"));text/javascriptutf-8
bundle.min.js
https://whatsonchain.com/tx/1bb45e68269ebdfb29295b6d42e32cc1acc7eb0ec7fdbdcdbdbc50d164adefe5