Search
Search

Transaction: 59N4Ji4...rRDU

Signed by
Receiver
Status
Succeeded
Transaction Fee
0.0013 
Deposit Value
0.0002 
Gas Used
13 Tgas
Attached Gas
300 Tgas
Created
March 15, 2024 at 5:17:35pm
Hash
59N4Ji4QmqPLhjYinHkZdAvvM1d9RhEUc853SDM1rRDU

Actions

Called method: 'set' in contract: social.near
Arguments:
{ "data": { "ndcdev.near": { "widget": { "daos.Layouts.App": { "": "let fontCss = fetch(\n \"https://fonts.googleapis.com/css2?family=Montserrat:wght@100;200;300;400;500;600;700&display=swap\"\n);\n\nif (!fontCss) {\n function AppLayout({ page, children }) {\n return <></>;\n }\n return { AppLayout };\n}\nfontCss = fontCss.body;\n\nconst Theme = styled.div`\n position: fixed;\n inset: 73px 0px 0px;\n width: 100%;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n font-weight: 500;\n font-family: \"Montserrat\", sans-serif;\n ${fontCss};\n\n font-style: normal;\n background: #f8f6ff;\n\n select {\n cursor: pointer;\n }\n\n a {\n color: inherit;\n font-weight: 500;\n\n &.color-text {\n background: linear-gradient(\n 270deg,\n rgb(246 112 85) 1%,\n rgb(180 102 248) 50%,\n rgb(82 129 249) 99.83%\n );\n\n &.color-dark {\n background: linear-gradient(\n 270deg,\n #efdcd1 -1.69%,\n #e0c6f7 43.78%,\n #adc3fb 99.83%\n );\n }\n background-clip: text;\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n }\n\n .profile-info {\n color: inherit;\n font-size: 16px;\n margin-left: 5px;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n color: #151718;\n }\n\n h1 {\n font-weight: 600;\n }\n\n img {\n width: 100%;\n }\n`;\n\nconst Container = styled.div`\n width: 100%;\n min-height: 100vh;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n align-items: center;\n @media screen and (max-width: 768px) {\n overflow-x: hidden;\n }\n\n .btn {\n &:disabled {\n box-shadow: none;\n border: 1px solid darkgray;\n background: #eee;\n color: #353333 !important;\n }\n }\n\n .btn-primary {\n border-radius: 10px;\n background: #a4c2fd;\n border: 1px solid #a4c2fd;\n color: white !important;\n text-decoration: none;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 1rem;\n box-shadow: 0px 20px 30px 0px rgba(0, 0, 0, 0.15);\n padding: 10px 40px 10px 25px;\n\n &:hover {\n text-decoration: none;\n cursor: pointer;\n border: 1px solid #a4c2fd;\n }\n }\n\n .btn-outline-primary {\n border-radius: 10px;\n color: #151718 !important;\n text-decoration: none;\n display: flex;\n gap: 1rem;\n box-shadow: 0px 20px 30px 0px rgba(0, 0, 0, 0.15);\n padding: 10px 40px 10px 25px;\n\n &:hover {\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n .btn-sm {\n padding: 5px 10px 5px 20px;\n box-shadow: 0px 5px 10px 0px rgba(0, 0, 0, 0.1);\n }\n\n a.dao-btn {\n font-size: 24px;\n transition: all 0.3s ease;\n border-radius: 50px;\n border: 3px solid black;\n padding: 15px 40px;\n text-align: center;\n margin-bottom: 2rem;\n\n &:hover {\n text-decoration: none;\n }\n }\n\n .red {\n color: rgb(255 141 141);\n }\n\n .blue {\n color: rgb(146 168 210);\n }\n\n @keyframes scroll {\n 0% {\n transform: translate(0%);\n }\n 100% {\n transform: translate(-100%);\n }\n }\n`;\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 75%;\n margin: 3rem 0;\n\n @media screen and (max-width: 786px) {\n width: 100%;\n }\n`;\n\nfunction AppLayout({ page, props, children }) {\n return (\n <Theme>\n <Container>\n <Widget src={`ndcdev.near/widget/daos.Components.NavBar`} />\n {[\"home\", \"dao\", \"communities\"].includes(page) ? (\n children\n ) : (\n <Wrapper>{children}</Wrapper>\n )}\n <Widget\n src={`ndcdev.near/widget/daos.Components.Footer`}\n props={{ page }}\n />\n </Container>\n </Theme>\n );\n}\n\nreturn { AppLayout };\n" }, "daos.Components.Form": { "": "const {\n form,\n formEls,\n setFormEls,\n handleChange,\n handleSave,\n handleSelectDao,\n handleAttachments,\n attachments,\n daos,\n selectedDaoId,\n id,\n} = props;\n\nconst TypeSection = styled.div`\n border-radius: 50px;\n background: rgba(255, 255, 255, 0.3);\n text-align: center;\n margin-right: 100px;\n width: 100%;\n text-transform: uppercase;\n h4 {\n font-weight: 600;\n margin: 0;\n }\n`;\n\nconst Form = styled.div`\n border-radius: 20px;\n background: white;\n padding: 3rem;\n\n label {\n font-size: 14px;\n margin-bottom: 5px;\n }\n\n .form-control.error {\n border: 1px solid red;\n }\n\n .title {\n b {\n font-weight: 600;\n }\n font-weight: 300;\n\n a {\n text-decoration: underline;\n }\n }\n`;\n\nconst ButtonContainer = styled.div`\n display: flex;\n justify-content: space-beetween;\n gap: 2rem;\n padding-top: 2rem;\n\n @media screen and (max-width: 786px) {\n flex-direction: column;\n gap: 1rem;\n padding-top: 1rem;\n }\n`;\n\nconst MobileForm = styled.div`\n @media screen and (max-width: 786px) {\n padding-bottom: 2rem;\n }\n`;\n\nconst UploadFileButton = styled.div`\n width: 47%;\n\n @media screen and (max-width: 768px) {\n width: 100%;\n }\n`;\n\nconst [preview, setPreview] = useState(false);\n\nconst PreviewButton = () => (\n <div\n style={{ width: \"max-content\" }}\n className=\"btn-primary\"\n onClick={() => setPreview(!preview)}\n >\n Preview\n <i className=\"bi bi-eye\" />\n </div>\n);\n\nconst ProposalButton = () => (\n <button\n style={{ width: \"max-content\" }}\n className=\"btn btn-primary\"\n disabled={form[formEls.post_type].some(\n (el) => el.required && !formEls[el.name],\n )}\n onClick={handleSave}\n >\n {id ? \"Edit\" : \"Create\"} proposal\n <i className=\"bi bi-plus-lg\" />\n </button>\n);\n\nreturn (\n <>\n {preview ? (\n <MobileForm>\n <Widget\n src=\"ndcdev.near/widget/daos.Components.Post\"\n props={{\n item: { ...formEls, dao_id: selectedDaoId, attachments },\n index: 0,\n post_type: formEls.post_type,\n showMoreDefault: 0,\n preview: true,\n attachments,\n }}\n />\n <ButtonContainer>\n <PreviewButton />\n <ProposalButton />\n </ButtonContainer>\n </MobileForm>\n ) : (\n <Form className=\"d-flex flex-column gap-3\">\n <div\n onClick={() => {\n const newFormEl = formEls;\n newFormEl.post_type =\n formEls.post_type === \"Proposal\" ? \"Report\" : \"Proposal\";\n setFormEls(newFormEl);\n }}\n >\n <p className=\"mb-2\">Form type</p>\n <div className=\"d-flex gap-3 align-items-center\">\n <Widget src={`ndcdev.near/widget/daos.Components.Switch`} />\n <TypeSection>\n <h4>{formEls.post_type}</h4>\n </TypeSection>\n </div>\n </div>\n <label>Select Dao</label>\n <select\n className=\"form-control\"\n value={selectedDaoId}\n onChange={handleSelectDao}\n >\n {daos.map((dao) => (\n <option value={dao.id}>{dao.name}</option>\n ))}\n </select>\n {form[formEls.post_type].map((el) => (\n <div className=\"form-element\">\n <label for={el.name}>\n {el.label}\n {el.required && \"*\"}\n </label>\n {el.type === \"file\" ? (\n <Widget\n src={`ndcdev.near/widget/daos.Components.FileUploader`}\n props={{\n onChange: (fileUrl) => handleChange(el, fileUrl),\n }}\n />\n ) : el.type === \"textarea\" ? (\n <div className=\"d-flex flex-wrap\">\n <Widget\n src={`ndcdev.near/widget/daos.Components.MarkdownEditor`}\n props={{\n element: { ...el, value: formEls[el.name] ?? el.value },\n handleChange,\n }}\n />\n </div>\n ) : el.type === \"tag\" ? (\n <Widget\n src={\"sayalot.near/widget/TagsEditor\"}\n props={{\n label: \"Tags\",\n placeholder: \"Enter tags\",\n setTagsObject: (tags) => handleChange(el, Object.keys(tags)),\n }}\n />\n ) : (\n <input\n class={`form-control ${error[el.name] && \"error\"}`}\n type={el.type}\n name={el.name}\n min={el.min}\n value={formEls[el.name] ?? \"\"}\n onChange={(e) => handleChange(el, e.target.value)}\n />\n )}\n </div>\n ))}\n <Widget\n src={\"ndcdev.near/widget/daos.Components.Attachment\"}\n props={{ attachments }}\n />\n <Widget\n src={`ndcdev.near/widget/daos.Components.FileUploader`}\n props={{\n onChange: handleAttachments,\n children: (\n <UploadFileButton className=\"btn-primary\">\n Upload File\n </UploadFileButton>\n ),\n styles: { width: '90%' },\n classNames: \"\",\n }}\n />\n <ButtonContainer>\n <PreviewButton />\n <ProposalButton />\n </ButtonContainer>\n <a\n className=\"d-flex gap-2\"\n target=\"_blank\"\n href=\"https://docs.google.com/document/d/110CqEddPa-99JwM8iCl_kKJxdXLH6IlVePwubO5A55o/edit#heading=h.qya6e5j9ka46\"\n >\n <span>Near Digital Collective application form GUIDE</span>\n <i className=\"bi bi-box-arrow-up-right\" />\n </a>\n </Form>\n )}\n </>\n);\n" }, "daos.Pages.Daos.List": { "": "let { contractName, content } = VM.require(\n `ndcdev.near/widget/daos.Config`\n);\n\nif (!contractName || !content)\n return <Widget src=\"flashui.near/widget/Loading\" />;\n\ncontent = content.home;\n\nconst Container = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n padding: 1rem 0 5rem 0;\n\n @media screen and (max-width: 786px) {\n padding: 2rem;\n }\n`;\n\nconst Description = styled.div`\n font-size: 20px;\n font-weight: 400;\n line-height: 2rem;\n padding: 2rem 0 3rem 0;\n\n a {\n text-decoration: underline;\n }\n\n @media screen and (max-width: 786px) {\n justify-content: center;\n text-align: left;\n }\n`;\n\nconst daos = Near.view(contractName, \"get_dao_list\");\n\nif (!daos) return <Widget src=\"flashui.near/widget/Loading\" />;\n\nreturn (\n <Container>\n <Widget\n src={`ndcdev.near/widget/daos.Components.Title`}\n props={{\n imgUrl: content.whatisGrassrootDAO.image,\n title: content.whatisGrassrootDAO.title,\n }}\n />\n <Description>{content.whatisGrassrootDAO.text}</Description>\n\n <div className=\"d-flex flex-wrap justify-content-center gap-4\">\n {daos\n .filter((dao) => dao.dao_type === \"DAO\")\n .sort((a, b) => a.title < b.title)\n .map((dao) => (\n <Widget\n src={`ndcdev.near/widget/daos.Components.Dao.Card`}\n props={{ dao, index }}\n />\n ))}\n </div>\n </Container>\n);\n" }, "daos.Components.Comment": { "": "const {\n dao,\n comment,\n isLikedByMe,\n showReply,\n setShowReply,\n handleLike,\n handleSpam,\n isPreview,\n postId,\n} = props;\n\nconst Body = styled.div`\n padding: 0rem 1rem;\n @media screen and (max-width: 786px) {\n padding-bottom: 50px;\n }\n`;\n\nconst Content = styled.div`\n .datetime {\n font-style: italic;\n font-size: 12px;\n }\n`;\n\nconst Actions = styled.div`\n display: flex;\n align-items: center;\n gap: 25px;\n margin: -3px 0 10px 0;\n\n a:hover {\n text-decoration: none;\n }\n\n @media screen and (max-width: 786px) {\n justify-content: space-between;\n gap: 5px;\n }\n`;\n\nconst Post = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n margin-left: 1rem;\n padding-left: 1rem;\n border-left: 2px solid rgb(241 241 241);\n`;\n\nconst Header = styled.div`\n margin-bottom: 0;\n display: inline-flex;\n width: 100%;\n\n a:hover {\n text-decoration: none;\n }\n`;\n\nconst formatDate = (timestamp) => {\n const date = new Date(parseInt(timestamp) / 1000000);\n\n return `${date.toLocaleDateString()}, ${date.getHours()}:${date.getMinutes()}`;\n};\n\nreturn (\n <>\n <Header>\n <div className=\"mt-3 d-flex w-100 gap-3 align-items-center\">\n <Widget\n src=\"near/widget/AccountProfile\"\n props={{\n accountId: comment.author_id,\n hideAccountId: true,\n }}\n />\n {comment.author_id === context.accountId && (\n <a\n href={`https://near.org/ndcdev.near/widget/daos.App?page=comments&post_id=${postId}&comment_id=${comment.id}&edit=true`}\n >\n <i className=\"bi blue bi-pencil-fill\" />\n </a>\n )}\n </div>\n </Header>\n <Post>\n <Body>\n <Content>\n <div className=\"datetime d-flex gap-2 mb-2 mt-1 align-items-center justify-content-between text-secondary\">\n Updated at: {formatDate(comment.snapshot.timestamp)}\n </div>\n <Widget\n src={\"ndcdev.near/widget/daos.Components.MarkdownViewer\"}\n props={{ text: comment.snapshot.description }}\n />\n <Widget\n src={\"ndcdev.near/widget/daos.Components.Attachment\"}\n props={{ attachments: comment.snapshot.attachments }}\n />\n </Content>\n\n {!isPreview && (\n <Actions>\n <div\n role=\"button\"\n className=\"d-flex gap-1 align-items-center\"\n onClick={() => handleLike(comment.id)}\n >\n <small className=\"blue\">{comment.likes.length}</small>\n <i\n className={`bi blue ${\n isLikedByMe(comment) ? \"bi-heart-fill\" : \"bi-heart\"\n }`}\n />\n </div>\n <Link\n className=\"d-flex gap-1 align-items-center\"\n to={`/ndcdev.near/widget/daos.App?page=comments&post_id=${postId}&comment_id=${comment.id}`}\n >\n <small className=\"blue\">{comment.child_comments.length}</small>\n <i className={\"bi blue bi-reply fs-5\"} />\n </Link>\n\n <Widget\n src={\"ndcdev.near/widget/daos.Components.Clipboard\"}\n props={{\n text: `https://near.org/ndcdev.near/widget/daos.App?page=comments&post_id=${postId}&comment_id=${comment.id}`,\n }}\n />\n {dao.owners.includes(context.accountId) && (\n <div role=\"button\" onClick={() => handleSpam(comment)}>\n <i\n className={\n comment.snapshot.is_spam\n ? \"bi red bi-flag-fill\"\n : \"bi blue bi-flag\"\n }\n />\n </div>\n )}\n </Actions>\n )}\n </Body>\n </Post>\n </>\n);\n" } } } } }

Transaction Execution Plan

Convert Transaction To Receipt
Gas Burned:
2 Tgas
Tokens Burned:
0.00025 
Receipt:
Predecessor ID:
Receiver ID:
Gas Burned:
10 Tgas
Tokens Burned:
0.00106 
Called method: 'set' in contract: social.near
Arguments:
{ "data": { "ndcdev.near": { "widget": { "daos.Layouts.App": { "": "let fontCss = fetch(\n \"https://fonts.googleapis.com/css2?family=Montserrat:wght@100;200;300;400;500;600;700&display=swap\"\n);\n\nif (!fontCss) {\n function AppLayout({ page, children }) {\n return <></>;\n }\n return { AppLayout };\n}\nfontCss = fontCss.body;\n\nconst Theme = styled.div`\n position: fixed;\n inset: 73px 0px 0px;\n width: 100%;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n font-weight: 500;\n font-family: \"Montserrat\", sans-serif;\n ${fontCss};\n\n font-style: normal;\n background: #f8f6ff;\n\n select {\n cursor: pointer;\n }\n\n a {\n color: inherit;\n font-weight: 500;\n\n &.color-text {\n background: linear-gradient(\n 270deg,\n rgb(246 112 85) 1%,\n rgb(180 102 248) 50%,\n rgb(82 129 249) 99.83%\n );\n\n &.color-dark {\n background: linear-gradient(\n 270deg,\n #efdcd1 -1.69%,\n #e0c6f7 43.78%,\n #adc3fb 99.83%\n );\n }\n background-clip: text;\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n }\n\n .profile-info {\n color: inherit;\n font-size: 16px;\n margin-left: 5px;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n color: #151718;\n }\n\n h1 {\n font-weight: 600;\n }\n\n img {\n width: 100%;\n }\n`;\n\nconst Container = styled.div`\n width: 100%;\n min-height: 100vh;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n align-items: center;\n @media screen and (max-width: 768px) {\n overflow-x: hidden;\n }\n\n .btn {\n &:disabled {\n box-shadow: none;\n border: 1px solid darkgray;\n background: #eee;\n color: #353333 !important;\n }\n }\n\n .btn-primary {\n border-radius: 10px;\n background: #a4c2fd;\n border: 1px solid #a4c2fd;\n color: white !important;\n text-decoration: none;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 1rem;\n box-shadow: 0px 20px 30px 0px rgba(0, 0, 0, 0.15);\n padding: 10px 40px 10px 25px;\n\n &:hover {\n text-decoration: none;\n cursor: pointer;\n border: 1px solid #a4c2fd;\n }\n }\n\n .btn-outline-primary {\n border-radius: 10px;\n color: #151718 !important;\n text-decoration: none;\n display: flex;\n gap: 1rem;\n box-shadow: 0px 20px 30px 0px rgba(0, 0, 0, 0.15);\n padding: 10px 40px 10px 25px;\n\n &:hover {\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n .btn-sm {\n padding: 5px 10px 5px 20px;\n box-shadow: 0px 5px 10px 0px rgba(0, 0, 0, 0.1);\n }\n\n a.dao-btn {\n font-size: 24px;\n transition: all 0.3s ease;\n border-radius: 50px;\n border: 3px solid black;\n padding: 15px 40px;\n text-align: center;\n margin-bottom: 2rem;\n\n &:hover {\n text-decoration: none;\n }\n }\n\n .red {\n color: rgb(255 141 141);\n }\n\n .blue {\n color: rgb(146 168 210);\n }\n\n @keyframes scroll {\n 0% {\n transform: translate(0%);\n }\n 100% {\n transform: translate(-100%);\n }\n }\n`;\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 75%;\n margin: 3rem 0;\n\n @media screen and (max-width: 786px) {\n width: 100%;\n }\n`;\n\nfunction AppLayout({ page, props, children }) {\n return (\n <Theme>\n <Container>\n <Widget src={`ndcdev.near/widget/daos.Components.NavBar`} />\n {[\"home\", \"dao\", \"communities\"].includes(page) ? (\n children\n ) : (\n <Wrapper>{children}</Wrapper>\n )}\n <Widget\n src={`ndcdev.near/widget/daos.Components.Footer`}\n props={{ page }}\n />\n </Container>\n </Theme>\n );\n}\n\nreturn { AppLayout };\n" }, "daos.Components.Form": { "": "const {\n form,\n formEls,\n setFormEls,\n handleChange,\n handleSave,\n handleSelectDao,\n handleAttachments,\n attachments,\n daos,\n selectedDaoId,\n id,\n} = props;\n\nconst TypeSection = styled.div`\n border-radius: 50px;\n background: rgba(255, 255, 255, 0.3);\n text-align: center;\n margin-right: 100px;\n width: 100%;\n text-transform: uppercase;\n h4 {\n font-weight: 600;\n margin: 0;\n }\n`;\n\nconst Form = styled.div`\n border-radius: 20px;\n background: white;\n padding: 3rem;\n\n label {\n font-size: 14px;\n margin-bottom: 5px;\n }\n\n .form-control.error {\n border: 1px solid red;\n }\n\n .title {\n b {\n font-weight: 600;\n }\n font-weight: 300;\n\n a {\n text-decoration: underline;\n }\n }\n`;\n\nconst ButtonContainer = styled.div`\n display: flex;\n justify-content: space-beetween;\n gap: 2rem;\n padding-top: 2rem;\n\n @media screen and (max-width: 786px) {\n flex-direction: column;\n gap: 1rem;\n padding-top: 1rem;\n }\n`;\n\nconst MobileForm = styled.div`\n @media screen and (max-width: 786px) {\n padding-bottom: 2rem;\n }\n`;\n\nconst UploadFileButton = styled.div`\n width: 47%;\n\n @media screen and (max-width: 768px) {\n width: 100%;\n }\n`;\n\nconst [preview, setPreview] = useState(false);\n\nconst PreviewButton = () => (\n <div\n style={{ width: \"max-content\" }}\n className=\"btn-primary\"\n onClick={() => setPreview(!preview)}\n >\n Preview\n <i className=\"bi bi-eye\" />\n </div>\n);\n\nconst ProposalButton = () => (\n <button\n style={{ width: \"max-content\" }}\n className=\"btn btn-primary\"\n disabled={form[formEls.post_type].some(\n (el) => el.required && !formEls[el.name],\n )}\n onClick={handleSave}\n >\n {id ? \"Edit\" : \"Create\"} proposal\n <i className=\"bi bi-plus-lg\" />\n </button>\n);\n\nreturn (\n <>\n {preview ? (\n <MobileForm>\n <Widget\n src=\"ndcdev.near/widget/daos.Components.Post\"\n props={{\n item: { ...formEls, dao_id: selectedDaoId, attachments },\n index: 0,\n post_type: formEls.post_type,\n showMoreDefault: 0,\n preview: true,\n attachments,\n }}\n />\n <ButtonContainer>\n <PreviewButton />\n <ProposalButton />\n </ButtonContainer>\n </MobileForm>\n ) : (\n <Form className=\"d-flex flex-column gap-3\">\n <div\n onClick={() => {\n const newFormEl = formEls;\n newFormEl.post_type =\n formEls.post_type === \"Proposal\" ? \"Report\" : \"Proposal\";\n setFormEls(newFormEl);\n }}\n >\n <p className=\"mb-2\">Form type</p>\n <div className=\"d-flex gap-3 align-items-center\">\n <Widget src={`ndcdev.near/widget/daos.Components.Switch`} />\n <TypeSection>\n <h4>{formEls.post_type}</h4>\n </TypeSection>\n </div>\n </div>\n <label>Select Dao</label>\n <select\n className=\"form-control\"\n value={selectedDaoId}\n onChange={handleSelectDao}\n >\n {daos.map((dao) => (\n <option value={dao.id}>{dao.name}</option>\n ))}\n </select>\n {form[formEls.post_type].map((el) => (\n <div className=\"form-element\">\n <label for={el.name}>\n {el.label}\n {el.required && \"*\"}\n </label>\n {el.type === \"file\" ? (\n <Widget\n src={`ndcdev.near/widget/daos.Components.FileUploader`}\n props={{\n onChange: (fileUrl) => handleChange(el, fileUrl),\n }}\n />\n ) : el.type === \"textarea\" ? (\n <div className=\"d-flex flex-wrap\">\n <Widget\n src={`ndcdev.near/widget/daos.Components.MarkdownEditor`}\n props={{\n element: { ...el, value: formEls[el.name] ?? el.value },\n handleChange,\n }}\n />\n </div>\n ) : el.type === \"tag\" ? (\n <Widget\n src={\"sayalot.near/widget/TagsEditor\"}\n props={{\n label: \"Tags\",\n placeholder: \"Enter tags\",\n setTagsObject: (tags) => handleChange(el, Object.keys(tags)),\n }}\n />\n ) : (\n <input\n class={`form-control ${error[el.name] && \"error\"}`}\n type={el.type}\n name={el.name}\n min={el.min}\n value={formEls[el.name] ?? \"\"}\n onChange={(e) => handleChange(el, e.target.value)}\n />\n )}\n </div>\n ))}\n <Widget\n src={\"ndcdev.near/widget/daos.Components.Attachment\"}\n props={{ attachments }}\n />\n <Widget\n src={`ndcdev.near/widget/daos.Components.FileUploader`}\n props={{\n onChange: handleAttachments,\n children: (\n <UploadFileButton className=\"btn-primary\">\n Upload File\n </UploadFileButton>\n ),\n styles: { width: '90%' },\n classNames: \"\",\n }}\n />\n <ButtonContainer>\n <PreviewButton />\n <ProposalButton />\n </ButtonContainer>\n <a\n className=\"d-flex gap-2\"\n target=\"_blank\"\n href=\"https://docs.google.com/document/d/110CqEddPa-99JwM8iCl_kKJxdXLH6IlVePwubO5A55o/edit#heading=h.qya6e5j9ka46\"\n >\n <span>Near Digital Collective application form GUIDE</span>\n <i className=\"bi bi-box-arrow-up-right\" />\n </a>\n </Form>\n )}\n </>\n);\n" }, "daos.Pages.Daos.List": { "": "let { contractName, content } = VM.require(\n `ndcdev.near/widget/daos.Config`\n);\n\nif (!contractName || !content)\n return <Widget src=\"flashui.near/widget/Loading\" />;\n\ncontent = content.home;\n\nconst Container = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n padding: 1rem 0 5rem 0;\n\n @media screen and (max-width: 786px) {\n padding: 2rem;\n }\n`;\n\nconst Description = styled.div`\n font-size: 20px;\n font-weight: 400;\n line-height: 2rem;\n padding: 2rem 0 3rem 0;\n\n a {\n text-decoration: underline;\n }\n\n @media screen and (max-width: 786px) {\n justify-content: center;\n text-align: left;\n }\n`;\n\nconst daos = Near.view(contractName, \"get_dao_list\");\n\nif (!daos) return <Widget src=\"flashui.near/widget/Loading\" />;\n\nreturn (\n <Container>\n <Widget\n src={`ndcdev.near/widget/daos.Components.Title`}\n props={{\n imgUrl: content.whatisGrassrootDAO.image,\n title: content.whatisGrassrootDAO.title,\n }}\n />\n <Description>{content.whatisGrassrootDAO.text}</Description>\n\n <div className=\"d-flex flex-wrap justify-content-center gap-4\">\n {daos\n .filter((dao) => dao.dao_type === \"DAO\")\n .sort((a, b) => a.title < b.title)\n .map((dao) => (\n <Widget\n src={`ndcdev.near/widget/daos.Components.Dao.Card`}\n props={{ dao, index }}\n />\n ))}\n </div>\n </Container>\n);\n" }, "daos.Components.Comment": { "": "const {\n dao,\n comment,\n isLikedByMe,\n showReply,\n setShowReply,\n handleLike,\n handleSpam,\n isPreview,\n postId,\n} = props;\n\nconst Body = styled.div`\n padding: 0rem 1rem;\n @media screen and (max-width: 786px) {\n padding-bottom: 50px;\n }\n`;\n\nconst Content = styled.div`\n .datetime {\n font-style: italic;\n font-size: 12px;\n }\n`;\n\nconst Actions = styled.div`\n display: flex;\n align-items: center;\n gap: 25px;\n margin: -3px 0 10px 0;\n\n a:hover {\n text-decoration: none;\n }\n\n @media screen and (max-width: 786px) {\n justify-content: space-between;\n gap: 5px;\n }\n`;\n\nconst Post = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n margin-left: 1rem;\n padding-left: 1rem;\n border-left: 2px solid rgb(241 241 241);\n`;\n\nconst Header = styled.div`\n margin-bottom: 0;\n display: inline-flex;\n width: 100%;\n\n a:hover {\n text-decoration: none;\n }\n`;\n\nconst formatDate = (timestamp) => {\n const date = new Date(parseInt(timestamp) / 1000000);\n\n return `${date.toLocaleDateString()}, ${date.getHours()}:${date.getMinutes()}`;\n};\n\nreturn (\n <>\n <Header>\n <div className=\"mt-3 d-flex w-100 gap-3 align-items-center\">\n <Widget\n src=\"near/widget/AccountProfile\"\n props={{\n accountId: comment.author_id,\n hideAccountId: true,\n }}\n />\n {comment.author_id === context.accountId && (\n <a\n href={`https://near.org/ndcdev.near/widget/daos.App?page=comments&post_id=${postId}&comment_id=${comment.id}&edit=true`}\n >\n <i className=\"bi blue bi-pencil-fill\" />\n </a>\n )}\n </div>\n </Header>\n <Post>\n <Body>\n <Content>\n <div className=\"datetime d-flex gap-2 mb-2 mt-1 align-items-center justify-content-between text-secondary\">\n Updated at: {formatDate(comment.snapshot.timestamp)}\n </div>\n <Widget\n src={\"ndcdev.near/widget/daos.Components.MarkdownViewer\"}\n props={{ text: comment.snapshot.description }}\n />\n <Widget\n src={\"ndcdev.near/widget/daos.Components.Attachment\"}\n props={{ attachments: comment.snapshot.attachments }}\n />\n </Content>\n\n {!isPreview && (\n <Actions>\n <div\n role=\"button\"\n className=\"d-flex gap-1 align-items-center\"\n onClick={() => handleLike(comment.id)}\n >\n <small className=\"blue\">{comment.likes.length}</small>\n <i\n className={`bi blue ${\n isLikedByMe(comment) ? \"bi-heart-fill\" : \"bi-heart\"\n }`}\n />\n </div>\n <Link\n className=\"d-flex gap-1 align-items-center\"\n to={`/ndcdev.near/widget/daos.App?page=comments&post_id=${postId}&comment_id=${comment.id}`}\n >\n <small className=\"blue\">{comment.child_comments.length}</small>\n <i className={\"bi blue bi-reply fs-5\"} />\n </Link>\n\n <Widget\n src={\"ndcdev.near/widget/daos.Components.Clipboard\"}\n props={{\n text: `https://near.org/ndcdev.near/widget/daos.App?page=comments&post_id=${postId}&comment_id=${comment.id}`,\n }}\n />\n {dao.owners.includes(context.accountId) && (\n <div role=\"button\" onClick={() => handleSpam(comment)}>\n <i\n className={\n comment.snapshot.is_spam\n ? \"bi red bi-flag-fill\"\n : \"bi blue bi-flag\"\n }\n />\n </div>\n )}\n </Actions>\n )}\n </Body>\n </Post>\n </>\n);\n" } } } } }
Result:
{ "block_height": "114768904" }
No logs
Receipt:
Predecessor ID:
Receiver ID:
Gas Burned:
223 Ggas
Tokens Burned:
0 
Transferred 0.188  to ndcdev.near
Empty result
No logs