(()=>{"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 Accounting for Truckers: Steps, FAQs, Resources – ICIE Fund

Accounting for Truckers: Steps, FAQs, Resources

accounting for truck drivers

Tracking your income and expenses regularly is essential to stay on top of your business’s performance, identify financial trends, and avoid surprises. Keeping detailed records can be helpful in making informed truckers bookkeeping service decisions about the future of the business. Separating your business and personal finances can help you keep track of your business’s financial health and make it easier to manage your finances.

How to Collaborate Effectively with Your Accountant

TruckingOffice is another popular option for midsize and large trucking businesses. The software offers features such as load tracking, fuel tracking, and comprehensive invoicing and billing capabilities. Additionally, TruckingOffice offers a range of customizable reports that allow businesses to track and analyze their financial data effectively. This best trucking accounting software review gets the full under-the-hood analysis so you know what each piece of software is suitable for. Some of these apps are dedicated to the trucking industry, while others are just good small business accounting software which can be used by truck drivers or companies. Rigbooks is a straightforward bookkeeping application that was designed specifically for trucking businesses.

  • In addition to saving time, a trucking accountant can also help you minimize expenses.
  • That’s another reason paying for tax services is essential for the transportation business.
  • Email invoices to clients for free and accept payments online or print and mail them.
  • Zoho Books facilitates online payment acceptance through integration with over ten third-party payment gateways, such as Stripe and PayPal.
  • Accounting software makes bookkeeping easier by letting you scan receipts or enter data in one place so that it’s readily available when needed.

Accounting App for Truckers That Offers Secure Online Payments

Trucking businesses should seek professional advice from a tax accountant and ensure they are compliant with all relevant tax regulations. The software offers a range of pricing plans, including a starter plan for individuals and a standard plan for small businesses. Xero also offers a free trial, allowing small businesses to test the software before committing to a subscription. We sync seamlessly with your financial accounts and tools to keep your books up-to-date and save you the time and effort of manually uploading documents. The offers that appear on the website are from software companies from which CRM.org receives compensation. This compensation may impact how and where products appear on this site (including, for example, the order in which they appear).

accounting for truck drivers

Importance of Accurate Accounting in the Trucking Industry

Also, we hope that the provider considers adding an accounting integration like QuickBooks Online to add bookkeeping features. However, premium accounting software is worth it in the long run since it can save you time and manpower in managing your accounts. A profit and loss statement is an accounting tool used to calculate net income. It lists all revenue and expenses for a set period of time (usually quarterly or annually). A profit and loss statement can also be used to calculate cost-per-mile, helping you choose loads that will maximize your business income. Invoices can be auto-generated, fuel card data can be imported directly from any major provider, and taxes (including IFTA) can be calculated.

Quickbooks Online (Great trucker bookkeeping software)

The software places a top focus on translating costs into per-mile calculations. This focus is intended to make it easier to calculate load values and stay on top of receipts for tax filing. While available for businesses of all sizes, Rigbooks is designed for owner operators and small fleets.

Axon (Top transportation accounting software)

accounting for truck drivers

While Quickbooks can be used for trucking companies, some trucking-specific features are missing such as cost-per-mile calculations and IFTA reporting. However, some companies use other solutions for those tasks and find Quickbooks meets their accounting needs. Tailwind TMS provides tools to ensure records are uploaded as quickly as possible.

  • We sync seamlessly with your financial accounts and tools to keep your books up-to-date and save you the time and effort of manually uploading documents.
  • Keep records of each purchase’s amount, date, location, and business purpose.
  • For example, the mobile app lets drivers capture signed bills of lading with their mobile phones on delivery.
  • On the other hand, accounting will require more training and knowledge of finance.

QuickBooks Online: Overall Best Trucking Accounting Software When Integrated With RAMA Logistics Software

IFTA reporting is also easy thanks to Rigbooks importing the latest fuel tax rates for all jurisdictions automatically. Finding the right accounting software for your trucking business can seem daunting but choosing the right one will save time and money in the long run. You can document trucking costs manually, but connecting your business accounts to accounting software https://www.bookstime.com/ is much easier. It can track and categorize your expenses automatically, though you may need to keep some supplemental records. For example, transportation management software, also known simply as trucking software, is a must-have for owner-operators. It serves as a digital hub and tax center from which you can manage all of your paperwork and filing responsibilities.

Leave a Comment

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

WE HAVE BECOME AVODA FUND

X