(()=>{"use strict";var e={n:t=>{var l=t&&t.__esModule?()=>t.default:()=>t;return e.d(l,{a:l}),l},d:(t,l)=>{for(var n in l)e.o(l,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:l[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{store:()=>G});var l={};e.r(l),e.d(l,{getDownloadableBlocks:()=>k,getErrorNoticeForBlock:()=>h,getErrorNotices:()=>y,getInstalledBlockTypes:()=>g,getNewBlockTypes:()=>_,getUnusedBlockTypes:()=>w,isInstalling:()=>E,isRequestingDownloadableBlocks:()=>b});var n={};e.r(n),e.d(n,{addInstalledBlockType:()=>D,clearErrorNotice:()=>x,fetchDownloadableBlocks:()=>S,installBlockType:()=>O,receiveDownloadableBlocks:()=>C,removeInstalledBlockType:()=>R,setErrorNotice:()=>M,setIsInstalling:()=>P,uninstallBlockType:()=>A});var o={};e.r(o),e.d(o,{getDownloadableBlocks:()=>Y});const r=window.wp.element,a=window.wp.plugins,s=window.wp.hooks,c=window.wp.blocks,i=window.wp.data,d=window.wp.editor,u=(0,i.combineReducers)({downloadableBlocks:(e={},t)=>{switch(t.type){case"FETCH_DOWNLOADABLE_BLOCKS":return{...e,[t.filterValue]:{isRequesting:!0}};case"RECEIVE_DOWNLOADABLE_BLOCKS":return{...e,[t.filterValue]:{results:t.downloadableBlocks,isRequesting:!1}}}return e},blockManagement:(e={installedBlockTypes:[],isInstalling:{}},t)=>{switch(t.type){case"ADD_INSTALLED_BLOCK_TYPE":return{...e,installedBlockTypes:[...e.installedBlockTypes,t.item]};case"REMOVE_INSTALLED_BLOCK_TYPE":return{...e,installedBlockTypes:e.installedBlockTypes.filter((e=>e.name!==t.item.name))};case"SET_INSTALLING_BLOCK":return{...e,isInstalling:{...e.isInstalling,[t.blockId]:t.isInstalling}}}return e},errorNotices:(e={},t)=>{switch(t.type){case"SET_ERROR_NOTICE":return{...e,[t.blockId]:{message:t.message,isFatal:t.isFatal}};case"CLEAR_ERROR_NOTICE":const{[t.blockId]:l,...n}=e;return n}return e}}),m=window.wp.blockEditor;function p(e,t=[]){if(!t.length)return!1;if(t.some((({name:t})=>t===e.name)))return!0;for(let l=0;lt=>{const l=e(m.store).getBlocks();return g(t).filter((e=>p(e,l)))})),w=(0,i.createRegistrySelector)((e=>t=>{const l=e(m.store).getBlocks();return g(t).filter((e=>!p(e,l)))}));function E(e,t){return e.blockManagement.isInstalling[t]||!1}function y(e){return e.errorNotices}function h(e,t){return e.errorNotices[t]}const f=window.wp.i18n,v=window.wp.apiFetch;var B=e.n(v);const I=window.wp.notices,N=window.wp.url,T=e=>new Promise(((t,l)=>{const n=document.createElement(e.nodeName);["id","rel","src","href","type"].forEach((t=>{e[t]&&(n[t]=e[t])})),e.innerHTML&&n.appendChild(document.createTextNode(e.innerHTML)),n.onload=()=>t(!0),n.onerror=()=>l(new Error("Error loading asset.")),document.body.appendChild(n),("link"===n.nodeName.toLowerCase()||"script"===n.nodeName.toLowerCase()&&!n.src)&&t()}));function L(e){if(!e)return!1;const t=e.links["wp:plugin"]||e.links.self;return!(!t||!t.length)&&t[0].href}function S(e){return{type:"FETCH_DOWNLOADABLE_BLOCKS",filterValue:e}}function C(e,t){return{type:"RECEIVE_DOWNLOADABLE_BLOCKS",downloadableBlocks:e,filterValue:t}}const O=e=>async({registry:t,dispatch:l})=>{const{id:n,name:o}=e;let r=!1;l.clearErrorNotice(n);try{l.setIsInstalling(n,!0);const a=L(e);let s={};a?await B()({method:"PUT",url:a,data:{status:"active"}}):s=(await B()({method:"POST",path:"wp/v2/plugins",data:{slug:n,status:"active"}}))._links,l.addInstalledBlockType({...e,links:{...e.links,...s}});const i=["api_version","title","category","parent","icon","description","keywords","attributes","provides_context","uses_context","supports","styles","example","variations"];if(await B()({path:(0,N.addQueryArgs)(`/wp/v2/block-types/${o}`,{_fields:i})}).catch((()=>{})).then((e=>{e&&(0,c.unstable__bootstrapServerSideBlockDefinitions)({[o]:Object.fromEntries(Object.entries(e).filter((([e])=>i.includes(e))))})})),await async function(){const e=await B()({url:document.location.href,parse:!1}),t=await e.text(),l=(new window.DOMParser).parseFromString(t,"text/html"),n=Array.from(l.querySelectorAll('link[rel="stylesheet"],script')).filter((e=>e.id&&!document.getElementById(e.id)));for(const e of n)await T(e)}(),!t.select(c.store).getBlockTypes().some((e=>e.name===o)))throw new Error((0,f.__)("Error registering block. Try reloading the page."));t.dispatch(I.store).createInfoNotice((0,f.sprintf)(// translators: %s is the block title. (0,f.__)("Block %s installed and added."),e.title),{speak:!0,type:"snackbar"}),r=!0}catch(e){let o=e.message||(0,f.__)("An error occurred."),r=e instanceof Error;const a={folder_exists:(0,f.__)("This block is already installed. Try reloading the page."),unable_to_connect_to_filesystem:(0,f.__)("Error installing block. You can reload the page and try again.")};a[e.code]&&(r=!0,o=a[e.code]),l.setErrorNotice(n,o,r),t.dispatch(I.store).createErrorNotice(o,{speak:!0,isDismissible:!0})}return l.setIsInstalling(n,!1),r},A=e=>async({registry:t,dispatch:l})=>{try{const t=L(e);await B()({method:"PUT",url:t,data:{status:"inactive"}}),await B()({method:"DELETE",url:t}),l.removeInstalledBlockType(e)}catch(e){t.dispatch(I.store).createErrorNotice(e.message||(0,f.__)("An error occurred."))}};function D(e){return{type:"ADD_INSTALLED_BLOCK_TYPE",item:e}}function R(e){return{type:"REMOVE_INSTALLED_BLOCK_TYPE",item:e}}function P(e,t){return{type:"SET_INSTALLING_BLOCK",blockId:e,isInstalling:t}}function M(e,t,l=!1){return{type:"SET_ERROR_NOTICE",blockId:e,message:t,isFatal:l}}function x(e){return{type:"CLEAR_ERROR_NOTICE",blockId:e}}var F=function(){return F=Object.assign||function(e){for(var t,l=1,n=arguments.length;l0&&l>="0"&&l<="9"?"_"+l+n:""+l.toUpperCase()+n}function K(e,t){return void 0===t&&(t={}),function(e,t){void 0===t&&(t={});for(var l=t.splitRegexp,n=void 0===l?H:l,o=t.stripRegexp,r=void 0===o?$:o,a=t.transform,s=void 0===a?V:a,c=t.delimiter,i=void 0===c?" ":c,d=j(j(e,n,"$1\0$2"),r,"\0"),u=0,m=d.length;"\0"===d.charAt(u);)u++;for(;"\0"===d.charAt(m-1);)m--;return d.slice(u,m).split("\0").map(s).join(i)}(e,F({delimiter:"",transform:z},t))}function U(e,t){return 0===t?e.toLowerCase():z(e,t)}const Y=e=>async({dispatch:t})=>{if(e)try{t(S(e));t(C((await B()({path:`wp/v2/block-directory/search?term=${e}`})).map((e=>Object.fromEntries(Object.entries(e).map((([e,t])=>{return[(l=e,void 0===n&&(n={}),K(l,F({transform:U},n))),t];var l,n}))))),e))}catch{}},q={reducer:u,selectors:l,actions:n,resolvers:o},G=(0,i.createReduxStore)("core/block-directory",q);function W(){const{uninstallBlockType:e}=(0,i.useDispatch)(G),t=(0,i.useSelect)((e=>{const{isAutosavingPost:t,isSavingPost:l}=e(d.store);return l()&&!t()}),[]),l=(0,i.useSelect)((e=>e(G).getUnusedBlockTypes()),[]);return(0,r.useEffect)((()=>{t&&l.length&&l.forEach((t=>{e(t),(0,c.unregisterBlockType)(t.name)}))}),[t]),null}(0,i.register)(G);const Z=window.wp.compose,Q=window.wp.components,J=window.wp.coreData,X=window.wp.htmlEntities,ee=function({icon:e,size:t=24,...l}){return(0,r.cloneElement)(e,{width:t,height:t,...l})},te=window.wp.primitives,le=(0,r.createElement)(te.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,r.createElement)(te.Path,{d:"M11.776 4.454a.25.25 0 01.448 0l2.069 4.192a.25.25 0 00.188.137l4.626.672a.25.25 0 01.139.426l-3.348 3.263a.25.25 0 00-.072.222l.79 4.607a.25.25 0 01-.362.263l-4.138-2.175a.25.25 0 00-.232 0l-4.138 2.175a.25.25 0 01-.363-.263l.79-4.607a.25.25 0 00-.071-.222L4.754 9.881a.25.25 0 01.139-.426l4.626-.672a.25.25 0 00.188-.137l2.069-4.192z"})),ne=(0,r.createElement)(te.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,r.createElement)(te.Path,{d:"M9.518 8.783a.25.25 0 00.188-.137l2.069-4.192a.25.25 0 01.448 0l2.07 4.192a.25.25 0 00.187.137l4.626.672a.25.25 0 01.139.427l-3.347 3.262a.25.25 0 00-.072.222l.79 4.607a.25.25 0 01-.363.264l-4.137-2.176a.25.25 0 00-.233 0l-4.138 2.175a.25.25 0 01-.362-.263l.79-4.607a.25.25 0 00-.072-.222L4.753 9.882a.25.25 0 01.14-.427l4.625-.672zM12 14.533c.28 0 .559.067.814.2l1.895.997-.362-2.11a1.75 1.75 0 01.504-1.55l1.533-1.495-2.12-.308a1.75 1.75 0 01-1.317-.957L12 7.39v7.143z"})),oe=(0,r.createElement)(te.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,r.createElement)(te.Path,{fillRule:"evenodd",d:"M9.706 8.646a.25.25 0 01-.188.137l-4.626.672a.25.25 0 00-.139.427l3.348 3.262a.25.25 0 01.072.222l-.79 4.607a.25.25 0 00.362.264l4.138-2.176a.25.25 0 01.233 0l4.137 2.175a.25.25 0 00.363-.263l-.79-4.607a.25.25 0 01.072-.222l3.347-3.262a.25.25 0 00-.139-.427l-4.626-.672a.25.25 0 01-.188-.137l-2.069-4.192a.25.25 0 00-.448 0L9.706 8.646zM12 7.39l-.948 1.921a1.75 1.75 0 01-1.317.957l-2.12.308 1.534 1.495c.412.402.6.982.503 1.55l-.362 2.11 1.896-.997a1.75 1.75 0 011.629 0l1.895.997-.362-2.11a1.75 1.75 0 01.504-1.55l1.533-1.495-2.12-.308a1.75 1.75 0 01-1.317-.957L12 7.39z",clipRule:"evenodd"})),re=function({rating:e}){const t=.5*Math.round(e/.5),l=Math.floor(e),n=Math.ceil(e-l),o=5-(l+n);return(0,r.createElement)("span",{"aria-label":(0,f.sprintf)( /* translators: %s: number of stars. */ (0,f.__)("%s out of 5 stars"),t)},Array.from({length:l}).map(((e,t)=>(0,r.createElement)(ee,{key:`full_stars_${t}`,className:"block-directory-block-ratings__star-full",icon:le,size:16}))),Array.from({length:n}).map(((e,t)=>(0,r.createElement)(ee,{key:`half_stars_${t}`,className:"block-directory-block-ratings__star-half-full",icon:ne,size:16}))),Array.from({length:o}).map(((e,t)=>(0,r.createElement)(ee,{key:`empty_stars_${t}`,className:"block-directory-block-ratings__star-empty",icon:oe,size:16}))))},ae=({rating:e})=>(0,r.createElement)("span",{className:"block-directory-block-ratings"},(0,r.createElement)(re,{rating:e})),se=function({icon:e}){const t="block-directory-downloadable-block-icon";return null!==e.match(/\.(jpeg|jpg|gif|png|svg)(?:\?.*)?$/)?(0,r.createElement)("img",{className:t,src:e,alt:""}):(0,r.createElement)(m.BlockIcon,{className:t,icon:e,showColors:!0})},ce=({block:e})=>{const t=(0,i.useSelect)((t=>t(G).getErrorNoticeForBlock(e.id)),[e]);return t?(0,r.createElement)("div",{className:"block-directory-downloadable-block-notice"},(0,r.createElement)("div",{className:"block-directory-downloadable-block-notice__content"},t.message,t.isFatal?" "+(0,f.__)("Try reloading the page."):null)):null};function ie({title:e,rating:t,ratingCount:l},{hasNotice:n,isInstalled:o,isInstalling:r}){const a=.5*Math.round(t/.5);return!o&&n?(0,f.sprintf)("Retry installing %s.",(0,X.decodeEntities)(e)):o?(0,f.sprintf)("Add %s.",(0,X.decodeEntities)(e)):r?(0,f.sprintf)("Installing %s.",(0,X.decodeEntities)(e)):l<1?(0,f.sprintf)("Install %s.",(0,X.decodeEntities)(e)):(0,f.sprintf)( /* translators: %1$s: block title, %2$s: average rating, %3$s: total ratings count. */ (0,f._n)("Install %1$s. %2$s stars with %3$s review.","Install %1$s. %2$s stars with %3$s reviews.",l),(0,X.decodeEntities)(e),a,l)}const de=function({composite:e,item:t,onClick:l}){const{author:n,description:o,icon:a,rating:s,title:d}=t,u=!!(0,c.getBlockType)(t.name),{hasNotice:m,isInstalling:p,isInstallable:b}=(0,i.useSelect)((e=>{const{getErrorNoticeForBlock:l,isInstalling:n}=e(G),o=l(t.id),r=o&&o.isFatal;return{hasNotice:!!o,isInstalling:n(t.id),isInstallable:!r}}),[t]);let k="";return u?k=(0,f.__)("Installed!"):p&&(k=(0,f.__)("Installing…")),(0,r.createElement)(Q.__unstableCompositeItem,{__experimentalIsFocusable:!0,role:"option",as:Q.Button,...e,className:"block-directory-downloadable-block-list-item",onClick:e=>{e.preventDefault(),l()},isBusy:p,disabled:p||!b,label:ie(t,{hasNotice:m,isInstalled:u,isInstalling:p}),showTooltip:!0,tooltipPosition:"top center"},(0,r.createElement)("div",{className:"block-directory-downloadable-block-list-item__icon"},(0,r.createElement)(se,{icon:a,title:d}),p?(0,r.createElement)("span",{className:"block-directory-downloadable-block-list-item__spinner"},(0,r.createElement)(Q.Spinner,null)):(0,r.createElement)(ae,{rating:s})),(0,r.createElement)("span",{className:"block-directory-downloadable-block-list-item__details"},(0,r.createElement)("span",{className:"block-directory-downloadable-block-list-item__title"},(0,r.createInterpolateElement)((0,f.sprintf)( /* translators: %1$s: block title, %2$s: author name. */ (0,f.__)("%1$s by %2$s"),(0,X.decodeEntities)(d),n),{span:(0,r.createElement)("span",{className:"block-directory-downloadable-block-list-item__author"})})),m?(0,r.createElement)(ce,{block:t}):(0,r.createElement)(r.Fragment,null,(0,r.createElement)("span",{className:"block-directory-downloadable-block-list-item__desc"},k||(0,X.decodeEntities)(o)),b&&!(u||p)&&(0,r.createElement)(Q.VisuallyHidden,null,(0,f.__)("Install block")))))},ue=()=>{},me=function({items:e,onHover:t=ue,onSelect:l}){const n=(0,Q.__unstableUseCompositeState)(),{installBlockType:o}=(0,i.useDispatch)(G);return e.length?(0,r.createElement)(Q.__unstableComposite,{...n,role:"listbox",className:"block-directory-downloadable-blocks-list","aria-label":(0,f.__)("Blocks available for install")},e.map((e=>(0,r.createElement)(de,{key:e.id,composite:n,onClick:()=>{(0,c.getBlockType)(e.name)?l(e):o(e).then((t=>{t&&l(e)})),t(null)},onHover:t,item:e})))):null},pe=window.wp.a11y,be=function({children:e,downloadableItems:t,hasLocalBlocks:l}){const n=t.length;return(0,r.useEffect)((()=>{(0,pe.speak)((0,f.sprintf)( /* translators: %d: number of available blocks. */ (0,f._n)("%d additional block is available to install.","%d additional blocks are available to install.",n),n))}),[n]),(0,r.createElement)(r.Fragment,null,!l&&(0,r.createElement)("p",{className:"block-directory-downloadable-blocks-panel__no-local"},(0,f.__)("No results available from your installed blocks.")),(0,r.createElement)("div",{className:"block-editor-inserter__quick-inserter-separator"}),(0,r.createElement)("div",{className:"block-directory-downloadable-blocks-panel"},(0,r.createElement)("div",{className:"block-directory-downloadable-blocks-panel__header"},(0,r.createElement)("h2",{className:"block-directory-downloadable-blocks-panel__title"},(0,f.__)("Available to install")),(0,r.createElement)("p",{className:"block-directory-downloadable-blocks-panel__description"},(0,f.__)("Select a block to install and add it to your post."))),e))},ke=(0,r.createElement)(te.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,r.createElement)(te.Path,{d:"M19 8h-1V6h-5v2h-2V6H6v2H5c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-8c0-1.1-.9-2-2-2zm.5 10c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5v-8c0-.3.2-.5.5-.5h14c.3 0 .5.2.5.5v8z"})),ge=function(){return(0,r.createElement)(r.Fragment,null,(0,r.createElement)("div",{className:"block-editor-inserter__no-results"},(0,r.createElement)(ee,{className:"block-editor-inserter__no-results-icon",icon:ke}),(0,r.createElement)("p",null,(0,f.__)("No results found."))),(0,r.createElement)("div",{className:"block-editor-inserter__tips"},(0,r.createElement)(Q.Tip,null,(0,f.__)("Interested in creating your own block?"),(0,r.createElement)("br",null),(0,r.createElement)(Q.ExternalLink,{href:"https://developer.wordpress.org/block-editor/"},(0,f.__)("Get started here"),"."))))},_e=[],we=(0,Z.compose)([(0,i.withSelect)(((e,{filterValue:t,rootClientId:l=null})=>{const{getDownloadableBlocks:n,isRequestingDownloadableBlocks:o}=e(G),{canInsertBlockType:r}=e(m.store),a=e(J.store).canUser("read","block-directory/search");let s=a?function(e){const t=n(e),o=t.filter((e=>r(e,l,!0)));return t.length===o.length?t:o}(t):[];return 0===s.length&&(s=_e),{downloadableItems:s,hasPermission:a,isLoading:o(t)}}))])((function({downloadableItems:e,onSelect:t,onHover:l,hasLocalBlocks:n,hasPermission:o,isLoading:a,isTyping:s}){return void 0===o||a||s?(0,r.createElement)(r.Fragment,null,o&&!n&&(0,r.createElement)(r.Fragment,null,(0,r.createElement)("p",{className:"block-directory-downloadable-blocks-panel__no-local"},(0,f.__)("No results available from your installed blocks.")),(0,r.createElement)("div",{className:"block-editor-inserter__quick-inserter-separator"})),(0,r.createElement)("div",{className:"block-directory-downloadable-blocks-panel has-blocks-loading"},(0,r.createElement)(Q.Spinner,null))):!1===o?n?null:(0,r.createElement)(ge,null):e.length?(0,r.createElement)(be,{downloadableItems:e,hasLocalBlocks:n},(0,r.createElement)(me,{items:e,onSelect:t,onHover:l})):!n&&(0,r.createElement)(ge,null)})),Ee=function(){const[e,t]=(0,r.useState)(""),l=(0,Z.debounce)(t,400);return(0,r.createElement)(m.__unstableInserterMenuExtension,null,(({onSelect:t,onHover:n,filterValue:o,hasItems:a,rootClientId:s})=>(e!==o&&l(o),e?(0,r.createElement)(we,{onSelect:t,onHover:n,rootClientId:s,filterValue:e,hasLocalBlocks:a,isTyping:o!==e}):null)))};function ye({items:e}){return e.length?(0,r.createElement)("ul",{className:"block-directory-compact-list"},e.map((({icon:e,id:t,title:l,author:n})=>(0,r.createElement)("li",{key:t,className:"block-directory-compact-list__item"},(0,r.createElement)(se,{icon:e,title:l}),(0,r.createElement)("div",{className:"block-directory-compact-list__item-details"},(0,r.createElement)("div",{className:"block-directory-compact-list__item-title"},l),(0,r.createElement)("div",{className:"block-directory-compact-list__item-author"},(0,f.sprintf)( /* translators: %s: Name of the block author. */ (0,f.__)("By %s"),n))))))):null}var he;const{PluginPrePublishPanel:fe}=null!==(he=window?.wp?.editPost)&&void 0!==he?he:{};function ve(){const e=(0,i.useSelect)((e=>e(G).getNewBlockTypes()),[]);return e.length?(0,r.createElement)(fe,{icon:ke,title:(0,f.sprintf)(// translators: %d: number of blocks (number). (0,f._n)("Added: %d block","Added: %d blocks",e.length),e.length),initialOpen:!0},(0,r.createElement)("p",{className:"installed-blocks-pre-publish-panel__copy"},(0,f._n)("The following block has been added to your site.","The following blocks have been added to your site.",e.length)),(0,r.createElement)(ye,{items:e})):null}function Be({attributes:e,block:t,clientId:l}){const n=(0,i.useSelect)((e=>e(G).isInstalling(t.id)),[t.id]),{installBlockType:o}=(0,i.useDispatch)(G),{replaceBlock:a}=(0,i.useDispatch)(m.store);return(0,r.createElement)(Q.Button,{onClick:()=>o(t).then((n=>{if(n){const n=(0,c.getBlockType)(t.name),[o]=(0,c.parse)(e.originalContent);o&&n&&a(l,(0,c.createBlock)(n.name,o.attributes,o.innerBlocks))}})),disabled:n,isBusy:n,variant:"primary"},(0,f.sprintf)( /* translators: %s: block name */ (0,f.__)("Install %s"),t.title))}const Ie=({originalBlock:e,...t})=>{const{originalName:l,originalUndelimitedContent:n,clientId:o}=t.attributes,{replaceBlock:a}=(0,i.useDispatch)(m.store),s=!!n,d=(0,i.useSelect)((e=>{const{canInsertBlockType:t,getBlockRootClientId:l}=e(m.store);return t("core/html",l(o))}),[o]);let u=(0,f.sprintf)( /* translators: %s: block name */ (0,f.__)("Your site doesn’t include support for the %s block. You can try installing the block or remove it entirely."),e.title||l);const p=[(0,r.createElement)(Be,{key:"install",block:e,attributes:t.attributes,clientId:t.clientId})];return s&&d&&(u=(0,f.sprintf)( /* translators: %s: block name */ (0,f.__)("Your site doesn’t include support for the %s block. You can try installing the block, convert it to a Custom HTML block, or remove it entirely."),e.title||l),p.push((0,r.createElement)(Q.Button,{key:"convert",onClick:()=>{a(t.clientId,(0,c.createBlock)("core/html",{content:n}))},variant:"tertiary"},(0,f.__)("Keep as HTML")))),(0,r.createElement)("div",{...(0,m.useBlockProps)()},(0,r.createElement)(m.Warning,{actions:p},u),(0,r.createElement)(r.RawHTML,null,n))};(0,a.registerPlugin)("block-directory",{render:()=>(0,r.createElement)(r.Fragment,null,(0,r.createElement)(W,null),(0,r.createElement)(Ee,null),(0,r.createElement)(ve,null))}),(0,s.addFilter)("blocks.registerBlockType","block-directory/fallback",((e,t)=>{return"core/missing"!==t||(e.edit=(l=e.edit,e=>{const{originalName:t}=e.attributes,{block:n,hasPermission:o}=(0,i.useSelect)((e=>{const{getDownloadableBlocks:l}=e(G),n=l("block:"+t).filter((({name:e})=>t===e));return{hasPermission:e(J.store).canUser("read","block-directory/search"),block:n.length&&n[0]}}),[t]);return o&&n?(0,r.createElement)(Ie,{...e,originalBlock:n}):(0,r.createElement)(l,{...e})})),e;var l})),(window.wp=window.wp||{}).blockDirectory=t})(); //# sourceMappingURL=index.min.js.map Working at Bookkeeper360: Employee Reviews – ICIE Fund

Working at Bookkeeper360: Employee Reviews

bookkeeper360

The second plan, “Small Business Plus,” accommodates 126 to 150 transactions and class and location tracking, in addition to the features of the Small Business Plan. Moreover, just like Bookkeeper360, Bookkeeper.com offers additional services for payroll, tax planning and management, as well as general financial planning. Bookkeeper360 eliminates the headaches and cash surprises caused by having messy books and inaccurate financials by providing you with accurate and timely financial insights about your business. Let’s face it, you didn’t start your business to run an accounting department. Our team of CPAs, advisors, and technology experts have all the tools to help you succeed. We have a 100% US-based team that utilizes technology to manage your accounting with a personalized touch.

Check out what our customers are saying

bookkeeper360

Any services beyond bookkeeping, such as payroll, human resources (HR), taxes, or keeping your books up-to-date, are available at an additional cost. You can also opt to use the Bookkeeper360 App without subscribing to the bookkeeping service for $19 per month. Like Bookkeeper360, Bookeeper.com is a U.S.-based online bookkeeping service provider that works with small businesses. If you’re looking for more from your accounting firm than basic bookkeeping service, then Bookkeeper360 is probably the better choice for your business. Bookkeeper360 offers the ability to create your own custom plan including many features unavailable in QuickBooks Live, like CFO advice, tax preparation, payroll and HR, and back office tasks.

Fast-paced fin-tech company driving the accounting industry forward

It shows that revenue sometimes increases, decreases, peaks, or plummets. For instance, pay attention to syndication revenue (yellow columns). This revenue source is not present in all months while merchandise licensing is consistent in almost all months.

  • With this app, you’ll have access to a forms library, salary benchmarking tools and HR professionals.
  • The Bookkeeper360 app can also provide cash management insights using illustrative charts.
  • Our team of CPAs, advisors, and technology experts have all the tools to help you succeed.
  • It’s not often there’s revolution in business finance, but there’s a dramatic transformation being driven by rapid technological advancements, reshaping core functions in finance.
  • Bookkeeper360 is a fintech accounting solution for small businesses.

How To Choose a Virtual Bookkeeper for Your Business

  • The easiest way to answer that question is to start out with your preferred investment approach.
  • Bench is a worthy alternative to Bookkeeper360 if you’re looking for a tech-savvy provider that focuses largely on bookkeeping.
  • That includes determining the frequency of the service and deciding whether you require services in addition to bookkeeping, such as payroll and HR or tax filing.
  • Then, you’ll connect Bookkeeper360 to your accounting system—either QuickBooks or Xero—and work online collaboratively with your bookkeeper to manage your finances.
  • With such a diversity of offerings, it can be difficult to parse the good from the bad.

You don’t have time to clean up messy books or deal with the IRS notices that result from inaccurate tax filings. Xero doesn’t assess any individual advisor’s or firm’s proficiency as an accountant, bookkeeper or financial advisor. And Xero certified advisors and advisors with industry or bank specialisations are not employees of Xero.

Bookkeeper360, founded in 2012, is a financial technology firm that offers accounting and cloud-based bookkeeping and business advisory services. As a Xero Platinum partner, Bookkeeper360 provides seamless integration with Xero’s cloud-based accounting software. Bookkeeper360 can work with a variety of payroll solutions, including top providers like Gusto and ADP. It also gives you the option to integrate Xero with these different solutions to sync your payroll data. Bookkeeper360 is an accounting platform for startups and growth-stage businesses.

HR solutions

  • Unlike Bookkeeper360 and Bookkeeper.com, Bench offers the same service regardless of your plan, the price only changes based on the amount of your monthly expenses.
  • If you decide to get this service, it should take less than two weeks to set up.
  • Online bookkeeping companies will often specialize in services for a particular type of company.
  • This guarantee enables you to request an audit of your books at any time and is not something that Bookkeeper360 offers.

The best online bookkeeping service should offer a wide range of bookkeeping solutions, including catch-up bookkeeping, invoicing, bill pay, bank reconciliation, payroll, and tax filing. On top of its core online bookkeeping services, Bookkeeper360 offers additional solutions for functions like payroll, taxes and HR. Bookkeeper360 is a financial technology solution that helps businesses manage their finances. They’ll also assist you with connecting Bookkeeper360 to your accounting system—either QuickBooks or Xero. You’ll then use Bookkeeper360’s cloud-based system to collaborate with your dedicated bookkeeper and manage your finances. Upon enrollment, you’ll be assigned a dedicated bookkeeper who will work with you to figure out the best strategy for your business.

bookkeeper360

If you choose to integrate Bookkeeper360 with Xero instead of QuickBooks, you’ll have access to Xero integrations, which are far fewer than QuickBooks. QuickBooks Live has a feature that is unique to the service, its 100% Accurate Books Guarantee. This guarantee enables you to request an audit of your books at any time and is not something that Bookkeeper360 offers. Our team volunteers at quarterly graduations, dog walks and events throughout the year in support of Canine Companions for Independence mission.

The best on our list is what we think is best for most, not for everyone. As such, identify your specific needs while reviewing our list, and you’ll bookkeeper360 be sure to find the ideal fit from our top-rated services. The three subscription plans for core bookkeeping services are listed below.

Bookkeeper360 Tax & Consulting Services

Leave a Comment

Your email address will not be published. Required fields are marked *

WE HAVE BECOME AVODA FUND

X