From 7a2ac17d6e941db5bdc1ee7645ad99f6e254ef11 Mon Sep 17 00:00:00 2001 From: Torben Lundsgaard Date: Tue, 6 Feb 2024 15:25:28 +0100 Subject: [PATCH] Prepare release 1.19 --- assets/admin/settings.asset.php | 2 +- assets/admin/settings.js | 2 +- assets/admin/wizard.asset.php | 2 +- assets/admin/wizard.js | 2 +- composer.json | 2 +- composer.lock | 39 +++++++++--------- gtm-kit.php | 4 +- languages/gtm-kit.pot | 70 +++++++++++++++++++++------------ package.json | 2 +- readme.txt | 10 ++--- vendor/composer/installed.php | 4 +- 11 files changed, 76 insertions(+), 63 deletions(-) diff --git a/assets/admin/settings.asset.php b/assets/admin/settings.asset.php index 1c380b1..b23347d 100644 --- a/assets/admin/settings.asset.php +++ b/assets/admin/settings.asset.php @@ -1 +1 @@ - array('lodash', 'react', 'react-dom', 'wp-api-fetch', 'wp-components', 'wp-element', 'wp-i18n'), 'version' => '0333fbdc4036c3034f0e'); + array('lodash', 'react', 'react-dom', 'wp-api-fetch', 'wp-components', 'wp-element', 'wp-i18n'), 'version' => 'f2be2b3e6277da2304eb'); diff --git a/assets/admin/settings.js b/assets/admin/settings.js index e90becf..3605977 100644 --- a/assets/admin/settings.js +++ b/assets/admin/settings.js @@ -1 +1 @@ -!function(){"use strict";var t={n:function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(a,{a:a}),a},d:function(e,a){for(var n in a)t.o(a,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:a[n]})},o:function(t,e){return Object.prototype.hasOwnProperty.call(t,e)}},e=window.React,a=t.n(e),n=window.wp.i18n,i=window.wp.element,r=window.wp.components,o=window.lodash,l=window.wp.apiFetch,s=t.n(l);s().use(s().createNonceMiddleware(window.gtmkitSettings.nonce)),s().use(s().createRootURLMiddleware(window.gtmkitSettings.root));const m=async(t,e,a=null,n=!1)=>{let i={};try{i=await s()({path:t,method:e,...a&&{data:a}})}catch(a){return console.log(`${e} ${t} Errors:`,a),{[`gtm_kit_api_${e}_${t}_errors`]:!0}}return!0===n?i:!0===i.success?i.data:options};var c=(t,e)=>{const a={...t};switch(e.type){case"FETCH_SETTINGS":a.fetchedSettings={...e.payload.fetchedSettings,integrations:e.payload.fetchedSettings.integrations||{}},a.stateSettings=e.payload.stateSettings,a.siteData=e.payload.siteData,a.installData=e.payload.installData,a.isPending=!1,a.canSave=!1,e.payload.fetchedSettings.gtm_kit_api_fetch_settings_errors&&(a.notice=(0,n.__)("An error occurred.","gtm-kit"),a.hasError=!0);break;case"UPDATE_SETTINGS_BEFORE":a.isPending=e.payload.isPending;break;case"UPDATE_SETTINGS":a.fetchedSettings=e.payload.fetchedSettings,a.stateSettings=e.payload.stateSettings,a.isPending=!1,a.canSave=!!e.payload.fetchedSettings.gtm_kit_api_update_settings_errors,a.notice=e.payload.fetchedSettings.gtm_kit_api_update_settings_errors?(0,n.__)("An error occurred.","gtm-kit"):(0,n.__)("Saved Successfully.","gtm-kit"),a.hasError=!!e.payload.fetchedSettings.gtm_kit_api_update_settings_errors;break;case"UPDATE_STATE":a.fetchedSettings=e.payload.fetchedSettings||a.fetchedSettings,a.stateSettings=e.payload.stateSettings||a.stateSettings,a.isPending=e.payload.isPending||a.isPending,a.notice=e.payload.notice||a.notice,a.hasError=e.payload.hasError||a.hasError,a.canSave=e.payload.canSave||a.canSave,a.isSendingSystemData=e.payload.isSendingSystemData||a.isSendingSystemData,a.supportTicket=e.payload.supportTicket||a.supportTicket;break;case"SEND_SUPPORT_DATA_BEFORE":a.isSendingSystemData=e.payload.isSendingSystemData||a.isSendingSystemData;break;case"SEND_SUPPORT_DATA":a.isSendingSystemData=!1,a.isSystemDataSent=e.payload.isSystemDataSent||a.isSystemDataSent,a.systemDataMessage=e.payload.systemDataMessage||a.systemDataMessage}return a};const g=(0,i.createContext)();var u,d=t=>{const[a,n]=(0,i.useReducer)(c,{fetchedSettings:{},stateSettings:{},isPending:!0,notice:"",hasError:!1,canSave:!1,supportTicket:"",isSystemDataSent:!1,systemDataMessage:""}),r=async()=>{const[t,e]=await Promise.all([m("gtmkit/v1/get-options","GET"),m("gtmkit/v1/get-site-data","GET")]),a="wizard"===window.gtmkitSettings.currentPage?await m("gtmkit/v1/get-install-data","GET"):{};n({type:"FETCH_SETTINGS",payload:{fetchedSettings:t,stateSettings:t,siteData:e,installData:a}})},l=async t=>{n({type:"UPDATE_STATE",payload:t})};(0,i.useEffect)((()=>{r()}),[]);const s={useDispatch:t=>{n(t)},useUpdateSettings:async()=>{n({type:"UPDATE_SETTINGS_BEFORE",payload:{isPending:!0}});const t=await(e=a.stateSettings,m("gtmkit/v1/set-options","POST",e));var e;n({type:"UPDATE_SETTINGS",payload:{fetchedSettings:t,stateSettings:t}})},useFetchSettings:r,useUpdateState:l,useUpdateStateSettings:async(t,e,n)=>{const i=JSON.parse(JSON.stringify(a.stateSettings));let r;i[t][e]=n,r=!(0,o.isEqual)(i,a.fetchedSettings),l({stateSettings:i,canSave:r})},useImportSettings:async(t,e)=>{const n=JSON.parse(JSON.stringify(a.stateSettings));let i;const r={};r.general={...n.general,...e.general},"integrations"in e&&(r.integrations={...n.integrations,...e.integrations}),i=!(0,o.isEqual)(r,a.fetchedSettings),l({stateSettings:r,canSave:i})},useUpdateSupportTicket:async t=>{l({supportTicket:t})},useSendSystemData:async()=>{n({type:"SEND_SUPPORT_DATA_BEFORE",payload:{isSendingSystemData:!0}});const t=await(e=a.supportTicket,m("gtmkit/v1/send-support-data","POST",e,!0));var e;n({type:"SEND_SUPPORT_DATA",payload:{isSendingSystemData:!1,isSystemDataSent:t.success,systemDataMessage:t.data}})},useSettings:a.stateSettings,useIsPending:a.isPending,useNotice:a.notice,useHasError:a.hasError,useCanSave:a.canSave,useSiteData:a.siteData,useInstallData:a.installData,useIsSending:a.isSendingSystemData,useSupportTicket:a.supportTicket,useIsSystemDataSent:a.isSystemDataSent,useSystemDataMessage:a.systemDataMessage};return(0,e.createElement)(g.Provider,{value:s},t.children)};function p(){return p=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0&&(e.hash=t.substr(a),t=t.substr(0,a));let n=t.indexOf("?");n>=0&&(e.search=t.substr(n),t=t.substr(0,n)),t&&(e.pathname=t)}return e}var y;function x(t,e,a){void 0===a&&(a="/");let n=A(("string"==typeof e?b(e):e).pathname||"/",a);if(null==n)return null;let i=S(t);!function(t){t.sort(((t,e)=>t.score!==e.score?e.score-t.score:function(t,e){return t.length===e.length&&t.slice(0,-1).every(((t,a)=>t===e[a]))?t[t.length-1]-e[e.length-1]:0}(t.routesMeta.map((t=>t.childrenIndex)),e.routesMeta.map((t=>t.childrenIndex)))))}(i);let r=null;for(let t=0;null==r&&t{let o={relativePath:void 0===r?t.path||"":r,caseSensitive:!0===t.caseSensitive,childrenIndex:i,route:t};o.relativePath.startsWith("/")&&(_(o.relativePath.startsWith(n),'Absolute route path "'+o.relativePath+'" nested under path "'+n+'" is not valid. An absolute child route path must start with the combined path of all its parent routes.'),o.relativePath=o.relativePath.slice(n.length));let l=H([n,o.relativePath]),s=a.concat(o);t.children&&t.children.length>0&&(_(!0!==t.index,'Index routes must not have child routes. Please remove all child routes from route path "'+l+'".'),S(t.children,e,s,l)),(null!=t.path||t.index)&&e.push({path:l,score:M(l,t.index),routesMeta:s})};return t.forEach(((t,e)=>{var a;if(""!==t.path&&null!=(a=t.path)&&a.includes("?"))for(let a of w(t.path))i(t,e,a);else i(t,e)})),e}function w(t){let e=t.split("/");if(0===e.length)return[];let[a,...n]=e,i=a.endsWith("?"),r=a.replace(/\?$/,"");if(0===n.length)return i?[r,""]:[r];let o=w(n.join("/")),l=[];return l.push(...o.map((t=>""===t?r:[r,t].join("/")))),i&&l.push(...o),l.map((e=>t.startsWith("/")&&""===e?"/":e))}!function(t){t.data="data",t.deferred="deferred",t.redirect="redirect",t.error="error"}(y||(y={})),new Set(["lazy","caseSensitive","path","id","index","children"]);const N=/^:\w+$/,C=3,T=2,D=1,G=10,P=-2,I=t=>"*"===t;function M(t,e){let a=t.split("/"),n=a.length;return a.some(I)&&(n+=P),e&&(n+=T),a.filter((t=>!I(t))).reduce(((t,e)=>t+(N.test(e)?C:""===e?D:G)),n)}function O(t,e){let{routesMeta:a}=t,n={},i="/",r=[];for(let t=0;t(n.push({paramName:e,isOptional:null!=a}),a?"/?([^\\/]+)?":"/([^\\/]+)")));return t.endsWith("*")?(n.push({paramName:"*"}),i+="*"===t||"/*"===t?"(.*)$":"(?:\\/(.+)|\\/*)$"):a?i+="\\/*$":""!==t&&"/"!==t&&(i+="(?:(?=\\/|$))"),[new RegExp(i,e?void 0:"i"),n]}(t.path,t.caseSensitive,t.end),i=e.match(a);if(!i)return null;let r=i[0],o=r.replace(/(.)\/+$/,"$1"),l=i.slice(1);return{params:n.reduce(((t,e,a)=>{let{paramName:n,isOptional:i}=e;if("*"===n){let t=l[a]||"";o=r.slice(0,r.length-t.length).replace(/(.)\/+$/,"$1")}const s=l[a];return t[n]=i&&!s?void 0:function(t,e){try{return decodeURIComponent(t)}catch(a){return k(!1,'The value for the URL param "'+e+'" will not be decoded because the string "'+t+'" is a malformed URL segment. This is probably due to a bad percent encoding ('+a+")."),t}}(s||"",n),t}),{}),pathname:r,pathnameBase:o,pattern:t}}function U(t){try{return decodeURI(t)}catch(e){return k(!1,'The URL path "'+t+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent encoding ('+e+")."),t}}function A(t,e){if("/"===e)return t;if(!t.toLowerCase().startsWith(e.toLowerCase()))return null;let a=e.endsWith("/")?e.length-1:e.length,n=t.charAt(a);return n&&"/"!==n?null:t.slice(a)||"/"}function L(t,e,a,n){return"Cannot include a '"+t+"' character in a manually specified `to."+e+"` field ["+JSON.stringify(n)+"]. Please separate it out to the `to."+a+'` field. Alternatively you may provide the full path as a string in and the router will parse it for you.'}function j(t,e){let a=function(t){return t.filter(((t,e)=>0===e||t.route.path&&t.route.path.length>0))}(t);return e?a.map(((e,a)=>a===t.length-1?e.pathname:e.pathnameBase)):a.map((t=>t.pathnameBase))}function F(t,e,a,n){let i;void 0===n&&(n=!1),"string"==typeof t?i=b(t):(i=p({},t),_(!i.pathname||!i.pathname.includes("?"),L("?","pathname","search",i)),_(!i.pathname||!i.pathname.includes("#"),L("#","pathname","hash",i)),_(!i.search||!i.search.includes("#"),L("#","search","hash",i)));let r,o=""===t||""===i.pathname,l=o?"/":i.pathname;if(null==l)r=a;else if(n){let t=0===e.length?[]:e[e.length-1].replace(/^\//,"").split("/");if(l.startsWith("..")){let e=l.split("/");for(;".."===e[0];)e.shift(),t.pop();i.pathname=e.join("/")}r="/"+t.join("/")}else{let t=e.length-1;if(l.startsWith("..")){let e=l.split("/");for(;".."===e[0];)e.shift(),t-=1;i.pathname=e.join("/")}r=t>=0?e[t]:"/"}let s=function(t,e){void 0===e&&(e="/");let{pathname:a,search:n="",hash:i=""}="string"==typeof t?b(t):t,r=a?a.startsWith("/")?a:function(t,e){let a=e.replace(/\/+$/,"").split("/");return t.split("/").forEach((t=>{".."===t?a.length>1&&a.pop():"."!==t&&a.push(t)})),a.length>1?a.join("/"):"/"}(a,e):e;return{pathname:r,search:W(n),hash:K(i)}}(i,r),m=l&&"/"!==l&&l.endsWith("/"),c=(o||"."===l)&&a.endsWith("/");return s.pathname.endsWith("/")||!m&&!c||(s.pathname+="/"),s}const H=t=>t.join("/").replace(/\/\/+/g,"/"),B=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),W=t=>t&&"?"!==t?t.startsWith("?")?t:"?"+t:"",K=t=>t&&"#"!==t?t.startsWith("#")?t:"#"+t:"";Error;const J=["post","put","patch","delete"],z=(new Set(J),["get",...J]);function $(){return $=Object.assign?Object.assign.bind():function(t){for(var e=1;e{n.current=!0})),e.useCallback((function(e,i){void 0===i&&(i={}),n.current&&("number"==typeof e?t.navigate(e):t.navigate(e,$({fromRouteId:a},i)))}),[t,a])}():function(){tt()||_(!1);let t=e.useContext(q),{basename:a,future:n,navigator:i}=e.useContext(Y),{matches:r}=e.useContext(Q),{pathname:o}=et(),l=JSON.stringify(j(r,n.v7_relativeSplatPath)),s=e.useRef(!1);return at((()=>{s.current=!0})),e.useCallback((function(e,n){if(void 0===n&&(n={}),!s.current)return;if("number"==typeof e)return void i.go(e);let r=F(e,JSON.parse(l),o,"path"===n.relative);null==t&&"/"!==a&&(r.pathname="/"===r.pathname?a:H([a,r.pathname])),(n.replace?i.replace:i.push)(r,n.state,n)}),[a,i,l,o,t])}()}function it(t,a){let{relative:n}=void 0===a?{}:a,{future:i}=e.useContext(Y),{matches:r}=e.useContext(Q),{pathname:o}=et(),l=JSON.stringify(j(r,i.v7_relativeSplatPath));return e.useMemo((()=>F(t,JSON.parse(l),o,"path"===n)),[t,l,o,n])}function rt(t,a,n,i){tt()||_(!1);let{navigator:r}=e.useContext(Y),{matches:o}=e.useContext(Q),l=o[o.length-1],s=l?l.params:{},m=(l&&l.pathname,l?l.pathnameBase:"/");l&&l.route;let c,g=et();if(a){var d;let t="string"==typeof a?b(a):a;"/"===m||(null==(d=t.pathname)?void 0:d.startsWith(m))||_(!1),c=t}else c=g;let p=c.pathname||"/",h=x(t,{pathname:"/"===m?p:p.slice(m.length)||"/"}),k=function(t,a,n,i){var r;if(void 0===a&&(a=[]),void 0===n&&(n=null),void 0===i&&(i=null),null==t){var o;if(null==(o=n)||!o.errors)return null;t=n.matches}let l=t,s=null==(r=n)?void 0:r.errors;if(null!=s){let t=l.findIndex((t=>t.route.id&&(null==s?void 0:s[t.route.id])));t>=0||_(!1),l=l.slice(0,Math.min(l.length,t+1))}let m=!1,c=-1;if(n&&i&&i.v7_partialHydration)for(let t=0;t=0?l.slice(0,c+1):[l[0]];break}}return l.reduceRight(((t,i,r)=>{let o,g=!1,u=null,d=null;var p;n&&(o=s&&i.route.id?s[i.route.id]:void 0,u=i.route.errorElement||lt,m&&(c<0&&0===r?(dt[p="route-fallback"]||(dt[p]=!0),g=!0,d=null):c===r&&(g=!0,d=i.route.hydrateFallbackElement||null)));let h=a.concat(l.slice(0,r+1)),_=()=>{let a;return a=o?u:g?d:i.route.Component?e.createElement(i.route.Component,null):i.route.element?i.route.element:t,e.createElement(mt,{match:i,routeContext:{outlet:t,matches:h,isDataRoute:null!=n},children:a})};return n&&(i.route.ErrorBoundary||i.route.errorElement||0===r)?e.createElement(st,{location:n.location,revalidation:n.revalidation,component:u,error:o,children:_(),routeContext:{outlet:null,matches:h,isDataRoute:!0}}):_()}),null)}(h&&h.map((t=>Object.assign({},t,{params:Object.assign({},s,t.params),pathname:H([m,r.encodeLocation?r.encodeLocation(t.pathname).pathname:t.pathname]),pathnameBase:"/"===t.pathnameBase?m:H([m,r.encodeLocation?r.encodeLocation(t.pathnameBase).pathname:t.pathnameBase])}))),o,n,i);return a&&k?e.createElement(X.Provider,{value:{location:$({pathname:"/",search:"",hash:"",state:null,key:"default"},c),navigationType:u.Pop}},k):k}function ot(){let t=function(){var t;let a=e.useContext(Z),n=function(t){let a=e.useContext(V);return a||_(!1),a}(gt.UseRouteError),i=ut(gt.UseRouteError);return void 0!==a?a:null==(t=n.errors)?void 0:t[i]}(),a=function(t){return null!=t&&"number"==typeof t.status&&"string"==typeof t.statusText&&"boolean"==typeof t.internal&&"data"in t}(t)?t.status+" "+t.statusText:t instanceof Error?t.message:JSON.stringify(t),n=t instanceof Error?t.stack:null,i={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return e.createElement(e.Fragment,null,e.createElement("h2",null,"Unexpected Application Error!"),e.createElement("h3",{style:{fontStyle:"italic"}},a),n?e.createElement("pre",{style:i},n):null,null)}const lt=e.createElement(ot,null);class st extends e.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,e){return e.location!==t.location||"idle"!==e.revalidation&&"idle"===t.revalidation?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:void 0!==t.error?t.error:e.error,location:e.location,revalidation:t.revalidation||e.revalidation}}componentDidCatch(t,e){console.error("React Router caught the following error during render",t,e)}render(){return void 0!==this.state.error?e.createElement(Q.Provider,{value:this.props.routeContext},e.createElement(Z.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function mt(t){let{routeContext:a,match:n,children:i}=t,r=e.useContext(q);return r&&r.static&&r.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=n.route.id),e.createElement(Q.Provider,{value:a},i)}var ct=function(t){return t.UseBlocker="useBlocker",t.UseRevalidator="useRevalidator",t.UseNavigateStable="useNavigate",t}(ct||{}),gt=function(t){return t.UseBlocker="useBlocker",t.UseLoaderData="useLoaderData",t.UseActionData="useActionData",t.UseRouteError="useRouteError",t.UseNavigation="useNavigation",t.UseRouteLoaderData="useRouteLoaderData",t.UseMatches="useMatches",t.UseRevalidator="useRevalidator",t.UseNavigateStable="useNavigate",t.UseRouteId="useRouteId",t}(gt||{});function ut(t){let a=function(t){let a=e.useContext(Q);return a||_(!1),a}(),n=a.matches[a.matches.length-1];return n.route.id||_(!1),n.route.id}const dt={};function pt(t){let{to:a,replace:n,state:i,relative:r}=t;tt()||_(!1);let{future:o,static:l}=e.useContext(Y),{matches:s}=e.useContext(Q),{pathname:m}=et(),c=nt(),g=F(a,j(s,o.v7_relativeSplatPath),m,"path"===r),u=JSON.stringify(g);return e.useEffect((()=>c(JSON.parse(u),{replace:n,state:i,relative:r})),[c,u,r,n,i]),null}function ht(t){_(!1)}function _t(t){let{basename:a="/",children:n=null,location:i,navigationType:r=u.Pop,navigator:o,static:l=!1,future:s}=t;tt()&&_(!1);let m=a.replace(/^\/*/,"/"),c=e.useMemo((()=>({basename:m,navigator:o,static:l,future:$({v7_relativeSplatPath:!1},s)})),[m,s,o,l]);"string"==typeof i&&(i=b(i));let{pathname:g="/",search:d="",hash:p="",state:h=null,key:k="default"}=i,f=e.useMemo((()=>{let t=A(g,m);return null==t?null:{location:{pathname:t,search:d,hash:p,state:h,key:k},navigationType:r}}),[m,g,d,p,h,k,r]);return null==f?null:e.createElement(Y.Provider,{value:c},e.createElement(X.Provider,{children:n,value:f}))}function kt(t){let{children:e,location:a}=t;return rt(ft(e),a)}function ft(t,a){void 0===a&&(a=[]);let n=[];return e.Children.forEach(t,((t,i)=>{if(!e.isValidElement(t))return;let r=[...a,i];if(t.type===e.Fragment)return void n.push.apply(n,ft(t.props.children,r));t.type!==ht&&_(!1),t.props.index&&t.props.children&&_(!1);let o={id:t.props.id||r.join("-"),caseSensitive:t.props.caseSensitive,element:t.props.element,Component:t.props.Component,index:t.props.index,path:t.props.path,loader:t.props.loader,action:t.props.action,errorElement:t.props.errorElement,ErrorBoundary:t.props.ErrorBoundary,hasErrorBoundary:null!=t.props.ErrorBoundary||null!=t.props.errorElement,shouldRevalidate:t.props.shouldRevalidate,handle:t.props.handle,lazy:t.props.lazy};t.props.children&&(o.children=ft(t.props.children,r)),n.push(o)})),n}e.startTransition,new Promise((()=>{})),e.Component;var Et=window.ReactDOM,vt=t.n(Et);function bt(){return bt=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0||(i[a]=t[a]);return i}new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);const xt=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],St=["aria-current","caseSensitive","className","end","style","to","unstable_viewTransition","children"],wt=e.createContext({isTransitioning:!1});new Map;const Nt=e.startTransition;function Ct(t){let{basename:a,children:n,future:i,window:r}=t,o=e.useRef();null==o.current&&(o.current=function(t){return void 0===t&&(t={}),function(t,e,a,n){void 0===n&&(n={});let{window:i=document.defaultView,v5Compat:r=!1}=n,o=i.history,l=u.Pop,s=null,m=c();function c(){return(o.state||{idx:null}).idx}function g(){l=u.Pop;let t=c(),e=null==t?null:t-m;m=t,s&&s({action:l,location:k.location,delta:e})}function d(t){let e="null"!==i.location.origin?i.location.origin:i.location.href,a="string"==typeof t?t:v(t);return _(e,"No window.location.(origin|href) available to create URL for href: "+a),new URL(a,e)}null==m&&(m=0,o.replaceState(p({},o.state,{idx:m}),""));let k={get action(){return l},get location(){return t(i,o)},listen(t){if(s)throw new Error("A history only accepts one active listener");return i.addEventListener(h,g),s=t,()=>{i.removeEventListener(h,g),s=null}},createHref(t){return e(i,t)},createURL:d,encodeLocation(t){let e=d(t);return{pathname:e.pathname,search:e.search,hash:e.hash}},push:function(t,e){l=u.Push;let n=E(k.location,t,e);a&&a(n,t),m=c()+1;let g=f(n,m),d=k.createHref(n);try{o.pushState(g,"",d)}catch(t){if(t instanceof DOMException&&"DataCloneError"===t.name)throw t;i.location.assign(d)}r&&s&&s({action:l,location:k.location,delta:1})},replace:function(t,e){l=u.Replace;let n=E(k.location,t,e);a&&a(n,t),m=c();let i=f(n,m),g=k.createHref(n);o.replaceState(i,"",g),r&&s&&s({action:l,location:k.location,delta:0})},go(t){return o.go(t)}};return k}((function(t,e){let{pathname:a="/",search:n="",hash:i=""}=b(t.location.hash.substr(1));return a.startsWith("/")||a.startsWith(".")||(a="/"+a),E("",{pathname:a,search:n,hash:i},e.state&&e.state.usr||null,e.state&&e.state.key||"default")}),(function(t,e){let a=t.document.querySelector("base"),n="";if(a&&a.getAttribute("href")){let e=t.location.href,a=e.indexOf("#");n=-1===a?e:e.slice(0,a)}return n+"#"+("string"==typeof e?e:v(e))}),(function(t,e){k("/"===t.pathname.charAt(0),"relative pathnames are not supported in hash history.push("+JSON.stringify(e)+")")}),t)}({window:r,v5Compat:!0}));let l=o.current,[s,m]=e.useState({action:l.action,location:l.location}),{v7_startTransition:c}=i||{},g=e.useCallback((t=>{c&&Nt?Nt((()=>m(t))):m(t)}),[m,c]);return e.useLayoutEffect((()=>l.listen(g)),[l,g]),e.createElement(_t,{basename:a,children:n,location:s.location,navigationType:s.action,navigator:l,future:i})}Et.flushSync;const Tt="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,Dt=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Gt=e.forwardRef((function(t,a){let n,{onClick:i,relative:r,reloadDocument:o,replace:l,state:s,target:m,to:c,preventScrollReset:g,unstable_viewTransition:u}=t,d=yt(t,xt),{basename:p}=e.useContext(Y),h=!1;if("string"==typeof c&&Dt.test(c)&&(n=c,Tt))try{let t=new URL(window.location.href),e=c.startsWith("//")?new URL(t.protocol+c):new URL(c),a=A(e.pathname,p);e.origin===t.origin&&null!=a?c=a+e.search+e.hash:h=!0}catch(t){}let k=function(t,a){let{relative:n}=void 0===a?{}:a;tt()||_(!1);let{basename:i,navigator:r}=e.useContext(Y),{hash:o,pathname:l,search:s}=it(t,{relative:n}),m=l;return"/"!==i&&(m="/"===l?i:H([i,l])),r.createHref({pathname:m,search:s,hash:o})}(c,{relative:r}),f=function(t,a){let{target:n,replace:i,state:r,preventScrollReset:o,relative:l,unstable_viewTransition:s}=void 0===a?{}:a,m=nt(),c=et(),g=it(t,{relative:l});return e.useCallback((e=>{if(function(t,e){return!(0!==t.button||e&&"_self"!==e||function(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}(t))}(e,n)){e.preventDefault();let a=void 0!==i?i:v(c)===v(g);m(t,{replace:a,state:r,preventScrollReset:o,relative:l,unstable_viewTransition:s})}}),[c,m,g,i,r,n,t,o,l,s])}(c,{replace:l,state:s,target:m,preventScrollReset:g,relative:r,unstable_viewTransition:u});return e.createElement("a",bt({},d,{href:n||k,onClick:h||o?i:function(t){i&&i(t),t.defaultPrevented||f(t)},ref:a,target:m}))})),Pt=e.forwardRef((function(t,a){let{"aria-current":n="page",caseSensitive:i=!1,className:r="",end:o=!1,style:l,to:s,unstable_viewTransition:m,children:c}=t,g=yt(t,St),u=it(s,{relative:g.relative}),d=et(),p=e.useContext(V),{navigator:h}=e.useContext(Y),k=null!=p&&function(t,a){void 0===a&&(a={});let n=e.useContext(wt);null==n&&_(!1);let{basename:i}=function(t){let a=e.useContext(q);return a||_(!1),a}(It.useViewTransitionState),r=it(t,{relative:a.relative});if(!n.isTransitioning)return!1;let o=A(n.currentLocation.pathname,i)||n.currentLocation.pathname,l=A(n.nextLocation.pathname,i)||n.nextLocation.pathname;return null!=R(r.pathname,l)||null!=R(r.pathname,o)}(u)&&!0===m,f=h.encodeLocation?h.encodeLocation(u).pathname:u.pathname,E=d.pathname,v=p&&p.navigation&&p.navigation.location?p.navigation.location.pathname:null;i||(E=E.toLowerCase(),v=v?v.toLowerCase():null,f=f.toLowerCase());const b="/"!==f&&f.endsWith("/")?f.length-1:f.length;let y,x=E===f||!o&&E.startsWith(f)&&"/"===E.charAt(b),S=null!=v&&(v===f||!o&&v.startsWith(f)&&"/"===v.charAt(f.length)),w={isActive:x,isPending:S,isTransitioning:k},N=x?n:void 0;y="function"==typeof r?r(w):[r,x?"active":null,S?"pending":null,k?"transitioning":null].filter(Boolean).join(" ");let C="function"==typeof l?l(w):l;return e.createElement(Gt,bt({},g,{"aria-current":N,className:y,ref:a,style:C,to:s,unstable_viewTransition:m}),"function"==typeof c?c(w):c)}));var It,Mt;(function(t){t.UseScrollRestoration="useScrollRestoration",t.UseSubmit="useSubmit",t.UseSubmitFetcher="useSubmitFetcher",t.UseFetcher="useFetcher",t.useViewTransitionState="useViewTransitionState"})(It||(It={})),function(t){t.UseFetcher="useFetcher",t.UseFetchers="useFetchers",t.UseScrollRestoration="useScrollRestoration"}(Mt||(Mt={}));var Ot=({title:t})=>(0,e.createElement)(e.Fragment,null,(0,e.createElement)("header",{className:"gtmkit-px-8 gtmkit-py-6 gtmkit-sticky"},(0,e.createElement)("div",{className:"gtmkit-flex gtmkit-items-center gtmkit-justify-between"},(0,e.createElement)("h1",{className:"gtmkit-flex gtmkit-items-center gtmkit-font-medium gtmkit-text-3xl"},(0,e.createElement)("svg",{className:"gtmkit-mr-8",height:"44",viewBox:"0 0 160 54",width:"128",xmlns:"http://www.w3.org/2000/svg"},(0,e.createElement)("rect",{fill:"#888",height:"54",rx:"4.265",width:"160"}),(0,e.createElement)("path",{d:"m88.659 7.002h-49.266c-2.915 0-5.378-.184-9.23 2.596l-18.743 12.752c-4.549 3.292-4.571 6.001 0 9.302l18.743 12.751c3.652 2.646 6.299 2.597 9.23 2.597h15.686 33.58c2.931-.057 5.394-1.784 5.34-3.923v-32.21c-.012-2.134-2.409-3.865-5.34-3.865z",fill:"#3969bb",transform:"matrix(-1 0 0 -1 101.999867 53.999547)"}),(0,e.createElement)("g",{fill:"#fff",transform:"matrix(1.465202 0 0 1.465202 -4.582436 -7.553126)"},(0,e.createElement)("path",{d:"m18.316 23.086h4.632v6.052c-.75.245-1.459.415-2.121.514-.663.098-1.341.148-2.033.148-1.764 0-3.106-.517-4.035-1.554-.929-1.034-1.395-2.519-1.395-4.457 0-1.886.538-3.356 1.617-4.41 1.078-1.054 2.573-1.579 4.481-1.579 1.2 0 2.357.239 3.469.718l-.823 1.979c-.85-.425-1.737-.637-2.657-.637-1.071 0-1.932.358-2.572 1.077-.645.718-.968 1.685-.968 2.899 0 1.267.26 2.233.78 2.904.516.667 1.271.999 2.262.999.517 0 1.041-.052 1.572-.158v-2.435h-2.209zm11.912 6.555h-2.474v-9.614h-3.173v-2.06h8.816v2.06h-3.169zm9.908 0-2.811-9.158h-.072c.103 1.863.154 3.105.154 3.728v5.43h-2.213v-11.674h3.368l2.764 8.927h.048l2.934-8.927h3.369v11.674h-2.308v-5.525c0-.261 0-.561.009-.903.009-.341.048-1.246.112-2.716h-.074l-3.011 9.144z"}),(0,e.createElement)("path",{d:"m88.883 31.898h-3.811l-4.147-6.67-1.417 1.018v5.652h-3.357v-15.83h3.357v7.242l1.318-1.861 4.293-5.381h3.724l-5.523 7.006zm1.589-15.233c0-1.075.6-1.614 1.8-1.614 1.199 0 1.798.539 1.798 1.614 0 .512-.148.91-.45 1.196-.297.284-.749.429-1.348.429-1.2 0-1.8-.543-1.8-1.625zm3.449 15.233h-3.302v-12.104h3.302zm8.563-2.413c.578 0 1.271-.128 2.077-.38v2.456c-.82.37-1.831.552-3.031.552-1.324 0-2.28-.333-2.885-1.001-.602-.667-.902-1.668-.902-3.003v-5.835h-1.585v-1.399l1.823-1.103.949-2.557h2.115v2.579h3.388v2.48h-3.388v5.835c0 .467.129.815.393 1.041.264.222.614.335 1.046.335z"}))),t)))),Rt=({to:t,title:a})=>(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Pt,{to:t,className:({isActive:t})=>"gtmkit-border-b-4 gtmkit-border-white gtmkit-text-color-grey gtmkit-font-semibold gtmkit-pt-5 gtmkit-pb-[18px] hover:gtmkit-border-color-grey "+(t?"gtmkit-text-color-heading gtmkit-border-b-color-primary ":"")},a)),Ut=({NavList:t})=>(0,e.createElement)("nav",{className:"gtmkit-flex gtmkit-flex-wrap gtmkit-items-center gtmkit-px-8 gtmkit-border-y gtmkit-bg-white gtmkit-border-color-border gtmkit-text-[15px] gtmkit-space-x-9"},t.map((function(t){return(0,e.createElement)(Rt,{key:t.to,to:t.to,title:t.title})})));function At(){return At=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0||(i[a]=t[a]);return i}function jt(t,e){return jt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},jt(t,e)}function Ft(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,jt(t,e)}function Ht(t,e){return t.replace(new RegExp("(^|\\s)"+e+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}var Bt=a().createContext(null),Wt=function(t){return t.scrollTop},Kt="unmounted",Jt="exited",zt="entering",$t="entered",qt="exiting",Vt=function(t){function e(e,a){var n;n=t.call(this,e,a)||this;var i,r=a&&!a.isMounting?e.enter:e.appear;return n.appearStatus=null,e.in?r?(i=Jt,n.appearStatus=zt):i=$t:i=e.unmountOnExit||e.mountOnEnter?Kt:Jt,n.state={status:i},n.nextCallback=null,n}Ft(e,t),e.getDerivedStateFromProps=function(t,e){return t.in&&e.status===Kt?{status:Jt}:null};var n=e.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(t){var e=null;if(t!==this.props){var a=this.state.status;this.props.in?a!==zt&&a!==$t&&(e=zt):a!==zt&&a!==$t||(e=qt)}this.updateStatus(!1,e)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var t,e,a,n=this.props.timeout;return t=e=a=n,null!=n&&"number"!=typeof n&&(t=n.exit,e=n.enter,a=void 0!==n.appear?n.appear:e),{exit:t,enter:e,appear:a}},n.updateStatus=function(t,e){if(void 0===t&&(t=!1),null!==e)if(this.cancelNextCallback(),e===zt){if(this.props.unmountOnExit||this.props.mountOnEnter){var a=this.props.nodeRef?this.props.nodeRef.current:vt().findDOMNode(this);a&&Wt(a)}this.performEnter(t)}else this.performExit();else this.props.unmountOnExit&&this.state.status===Jt&&this.setState({status:Kt})},n.performEnter=function(t){var e=this,a=this.props.enter,n=this.context?this.context.isMounting:t,i=this.props.nodeRef?[n]:[vt().findDOMNode(this),n],r=i[0],o=i[1],l=this.getTimeouts(),s=n?l.appear:l.enter;t||a?(this.props.onEnter(r,o),this.safeSetState({status:zt},(function(){e.props.onEntering(r,o),e.onTransitionEnd(s,(function(){e.safeSetState({status:$t},(function(){e.props.onEntered(r,o)}))}))}))):this.safeSetState({status:$t},(function(){e.props.onEntered(r)}))},n.performExit=function(){var t=this,e=this.props.exit,a=this.getTimeouts(),n=this.props.nodeRef?void 0:vt().findDOMNode(this);e?(this.props.onExit(n),this.safeSetState({status:qt},(function(){t.props.onExiting(n),t.onTransitionEnd(a.exit,(function(){t.safeSetState({status:Jt},(function(){t.props.onExited(n)}))}))}))):this.safeSetState({status:Jt},(function(){t.props.onExited(n)}))},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(t,e){e=this.setNextCallback(e),this.setState(t,e)},n.setNextCallback=function(t){var e=this,a=!0;return this.nextCallback=function(n){a&&(a=!1,e.nextCallback=null,t(n))},this.nextCallback.cancel=function(){a=!1},this.nextCallback},n.onTransitionEnd=function(t,e){this.setNextCallback(e);var a=this.props.nodeRef?this.props.nodeRef.current:vt().findDOMNode(this),n=null==t&&!this.props.addEndListener;if(a&&!n){if(this.props.addEndListener){var i=this.props.nodeRef?[this.nextCallback]:[a,this.nextCallback],r=i[0],o=i[1];this.props.addEndListener(r,o)}null!=t&&setTimeout(this.nextCallback,t)}else setTimeout(this.nextCallback,0)},n.render=function(){var t=this.state.status;if(t===Kt)return null;var e=this.props,n=e.children,i=(e.in,e.mountOnEnter,e.unmountOnExit,e.appear,e.enter,e.exit,e.timeout,e.addEndListener,e.onEnter,e.onEntering,e.onEntered,e.onExit,e.onExiting,e.onExited,e.nodeRef,Lt(e,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]));return a().createElement(Bt.Provider,{value:null},"function"==typeof n?n(t,i):a().cloneElement(a().Children.only(n),i))},e}(a().Component);function Yt(){}Vt.contextType=Bt,Vt.propTypes={},Vt.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:Yt,onEntering:Yt,onEntered:Yt,onExit:Yt,onExiting:Yt,onExited:Yt},Vt.UNMOUNTED=Kt,Vt.EXITED=Jt,Vt.ENTERING=zt,Vt.ENTERED=$t,Vt.EXITING=qt;var Xt=Vt,Qt=function(t,e){return t&&e&&e.split(" ").forEach((function(e){return n=e,void((a=t).classList?a.classList.remove(n):"string"==typeof a.className?a.className=Ht(a.className,n):a.setAttribute("class",Ht(a.className&&a.className.baseVal||"",n)));var a,n}))},Zt=function(t){function e(){for(var e,a=arguments.length,n=new Array(a),i=0;i{const{useUpdateSettings:o,useIsPending:l,useCanSave:s}=(0,i.useContext)(g);return(0,e.createElement)(r.Button,{className:a,onClick:()=>o(),variant:"primary",disabled:l||!s},s?(0,n.__)(t,"gtm-kit"):(0,n.__)("Saved","gtm-kit"),l?(0,e.createElement)(r.Spinner,null):"")},ae=()=>{const{useCanSave:t}=(0,i.useContext)(g);return(0,e.createElement)(te,{in:t,timeout:500,classNames:"slide",unmountOnExit:!0},(0,e.createElement)("footer",{className:"gtmkit-fixed gtmkit-bottom-0 gtmkit-w-full gtmkit-z-10 gtmkit-bg-color-grey gtmkit-text-white gtmkit-p-8"},(0,e.createElement)(ee,null)))},ne=({subject:t})=>{const a=!0===t||"on"===t,i=!0===a?"gtmkit-bg-color-success":"gtmkit-bg-color-button-disabled";return(0,e.createElement)("div",{className:"gtmkit-text-xs gtmkit-text-white gtmkit-font-bold gtmkit-rounded-full gtmkit-py gtmkit-px-2 gtmkit-h-5 gtmkit-leading-5 gtmkit-uppercase "+i},a?(0,n.__)("Active","gtm-kit"):(0,n.__)("Inactive","gtm-kit"))};const ie=(0,i.forwardRef)((({children:t,className:a="",...n},i)=>(0,e.createElement)("div",{...n,className:"gtmkit-flex gtmkit-flex-col gtmkit-min-h-[128px] gtmkit-bg-white gtmkit-border gtmkit-border-color-border gtmkit-mb-6 gtmkit-py-4 gtmkit-px-5 gtmkit-rounded gtmkit-group gtmkit-w-full "+a,ref:i},t)));ie.Header=({as:t="h3",title:a="",children:n,className:i="",...r})=>(0,e.createElement)("div",{...r,className:"gtmkit-flex gtmkit-justify-between gtmkit-items-center gtmkit-mb-5 "+i},(0,e.createElement)(t,{className:"gtmkit-text-2xl gtmkit-font-bold gtmkit-text-color-heading"},a),n),ie.Content=({as:t="div",children:a,className:n="gtmkit-flex-auto",...i})=>(0,e.createElement)(t,{...i,className:n},a),ie.Button=({url:t,destination:a,newTab:n=!1,text:i,group:o="",...l})=>{const s=nt();return(0,e.createElement)("div",{...l,className:"gtmkit-mt-4 gtmkit-mb-0.5"},(0,e.createElement)(r.Button,{variant:"primary",className:"gtmkit-rounded !gtmkit-py-4 !gtmkit-px-8 gtmkit-w-full sm:gtmkit-w-auto gtmkit-min-w-[225px]",onClick:()=>{a&&t&&!1===n?window.gtmkitSettings.current_poage===o?s(a,{replace:!0}):window.location.href=t+"#"+a:t?n?window.open(t):window.location.href=t:s(a,{replace:!0})}},(0,e.createElement)("span",{className:"gtmkit-mx-auto gtmkit-text-sm gtmkit-font-bold"},i)))};var re=ie,oe=({title:t,data:a,className:r=""})=>{const{useSettings:o}=(0,i.useContext)(g);return(0,e.createElement)(e.Fragment,null,(0,e.createElement)("h2",{className:"gtmkit-text-2xl gtmkit-font-bold gtmkit-text-color-heading gtmkit-mb-8 gtmkit-mt-6"},t),(0,e.createElement)("div",{className:"lg:gtmkit-grid lg:gtmkit-grid-cols-2 xl:gtmkit-grid-cols-3 gtmkit-justify-between gtmkit-gap-6 gtmkit-border-b gtmkit-border-color-border gtmkit-pb-6 gtmkit-min-h-[175px] "+r},a.map(((t,a)=>!1===t.featured?null:(0,e.createElement)(re,{key:a},(0,e.createElement)(re.Header,{title:t.title},t.pill?(0,e.createElement)(ne,{subject:o[t.group][t.option]}):null),(0,e.createElement)(re.Content,null,t.text.map(((t,a)=>(0,e.createElement)("p",{key:a},t)))),(0,e.createElement)(re.Button,{url:t.link.url,destination:t.link.destination,text:t.link.text?t.link.text:(0,n.__)("Read article","gtm-kit"),newTab:t.link.external,group:t.group}))))))};const le=[{title:"Woocommerce",pill:!0,group:"integrations",option:"woocommerce_integration",text:[(0,n.__)("The #1 open source eCommerce platform built for WordPress","gtm-kit")],link:{internal:!0,url:window.gtmkitSettings.integrationsUrl,destination:"/woocommerce",text:(0,n.__)("Setup integration","gtm-kit")}},{title:"Contact Form 7",pill:!0,group:"integrations",option:"cf7_integration",text:[(0,n.__)("Just another contact form plugin for WordPress. Simple but flexible","gtm-kit")],link:{internal:!0,url:window.gtmkitSettings.integrationsUrl,destination:"/cf7",text:(0,n.__)("Setup integration","gtm-kit")}},{title:"Easy Digital Downloads",pill:!0,group:"integrations",option:"edd_integration",text:[(0,n.__)("Easy way to sell Digital Products With WordPress","gtm-kit")],link:{internal:!0,url:window.gtmkitSettings.integrationsUrl,destination:"/edd",text:(0,n.__)("Setup integration","gtm-kit")}}],se=[{title:"Getting started with GTM Kit",text:[(0,n.__)("How to get the most out of Google Tag Manager with GTM Kit.","gtm-kit")],link:{external:!0,url:"https://gtmkit.com/documentation/getting-started-with-gtm-kit/#utm_source=gtmkit-plugin&utm_medium=software&utm_term=getting-started&utm_content=dashboard-tutorials"},featured:!0},{title:(0,n.__)("WooCommerce integration","gtm-kit"),text:[(0,n.__)("Integrate WooCommerce with Google Tag Manager and Google Analytics.","gtm-kit")],link:{external:!0,url:"https://gtmkit.com/documentation/woocommerce/#utm_source=gtmkit-plugin&utm_medium=software&utm_term=woocommerce&utm_content=dashboard-tutorials"},featured:!0},{title:"Contact Form 7 Integration",text:[(0,n.__)("Integrate Contact Form 7 with Google Tag Manager and Google Analytics.","gtm-kit")],link:{external:!0,url:"https://gtmkit.com/documentation/contact-form-7-integration/#utm_source=gtmkit-plugin&utm_medium=software&utm_term=getting-started&utm_content=dashboard-tutorials"},featured:!1},{title:"Easy Digital Downloads integration",text:[(0,n.__)("Integrate Easy Digital Downloads with Google Tag Manager and Google Analytics.","gtm-kit")],link:{external:!0,url:"https://gtmkit.com/documentation/set-up-easy-digital-downloads-for-google-tag-manager/#utm_source=gtmkit-plugin&utm_medium=software&utm_term=getting-started&utm_content=dashboard-tutorials"},featured:!1},{title:"Advanced GTM container implementation",text:[(0,n.__)("Customization of the GTM container implementation and Server Side Tracking.","gtm-kit")],link:{external:!0,url:"https://gtmkit.com/documentation/advanced-gtm-container-implementation/#utm_source=gtmkit-plugin&utm_medium=software&utm_term=getting-started&utm_content=dashboard-tutorials"},featured:!1},{title:"Settings, actions and filters for developers",text:[(0,n.__)("One of the things that makes GTM Kit a great tool for developers is the ability to override options in wp-config.php.","gtm-kit")],link:{external:!0,url:"https://gtmkit.com/documentation/settings-actions-and-filters-for-developers/#utm_source=gtmkit-plugin&utm_medium=software&utm_term=getting-started&utm_content=dashboard-tutorials"},featured:!1}];var me=()=>{const{useSettings:t}=(0,i.useContext)(g),[a,r]=(0,i.useState)(se),o=Boolean(t.general.sgtm_domain&&t.general.sgtm_domain.trim());return(0,i.useEffect)((()=>{r((t=>[...t,{title:(0,n.__)("See all tutorials…","gtm-kit"),text:[(0,n.__)("See all our tutorial and get the most out of GTM Kit","gtm-kit")],link:{external:!0,url:"https://gtmkit.com/documentation/#utm_source=gtmkit-plugin&utm_medium=software&utm_term=documentation&utm_content=dashboard-tutorials",text:(0,n.__)("Read articles","gtm-kit")},featured:!0}]))}),[]),(0,e.createElement)(e.Fragment,null,(0,e.createElement)("h2",{className:"gtmkit-text-2xl gtmkit-font-bold gtmkit-text-color-heading gtmkit-mb-8"},(0,n.__)("General","gtm-kit")),(0,e.createElement)("div",{className:"lg:gtmkit-grid lg:gtmkit-grid-cols-2 xl:gtmkit-grid-cols-3 lg:gtmkit-justify-between gtmkit-gap-6 gtmkit-border-b gtmkit-border-color-border gtmkit-pb-6 gtmkit-min-h-[175px]"},(0,e.createElement)(re,null,(0,e.createElement)(re.Header,{title:"Google Tag Manager Container"},(0,e.createElement)(ne,{subject:t.general.gtm_id&&t.general.container_active})),(0,e.createElement)(re.Content,null,t.general.gtm_id&&t.general.container_active?(0,e.createElement)("p",null,(0,n.__)("Container ID:","gtm-kit")," ",t&&t.general.gtm_id):(0,e.createElement)("p",null,(0,n.__)("The container is not active but the datalayer is generated.","gtm-kit"))),(0,e.createElement)(re.Button,{destination:"/container",text:(0,n.__)("Edit container","gtm-kit")})),(0,e.createElement)(re,null,(0,e.createElement)(re.Header,{title:(0,n.__)("Server-side GTM","gtm-kit")},(0,e.createElement)(ne,{subject:o})),(0,e.createElement)(re.Content,null,(0,e.createElement)("p",null,(0,n.__)("Server-side tagging is a silver bullet that gives you improved data accuracy, performance, privacy, and flexibility.","gtm-kit"))),(0,e.createElement)(re.Button,{destination:"/container",text:(0,n.__)("Edit container","gtm-kit")})),(0,e.createElement)(re,null,(0,e.createElement)(re.Header,{title:(0,n.__)("Help improve GTM Kit","gtm-kit")},(0,e.createElement)(ne,{subject:t.general.analytics_active})),(0,e.createElement)(re.Content,null,(0,e.createElement)("p",null,(0,n.__)("Share anonymous data with the development team to help improve GTM Kit.","gtm-kit"))),(0,e.createElement)(re.Button,{destination:"/misc",text:(0,n.__)("Share anonymous data","gtm-kit")}))),(0,e.createElement)(oe,{title:(0,n.__)("Tutorials","gtm-kit"),data:a}),(0,e.createElement)(oe,{title:(0,n.__)("Integrations","gtm-kit"),data:le}))},ce=({title:t,placeholder:a,help:n,className:o="gtmkit-settings-field-wrap gtmkit-py-4 gtmkit-max-w-md",optionGroup:l="general",optionName:s,isDisabled:m})=>{const{useSettings:c,useUpdateStateSettings:u}=(0,i.useContext)(g);return(0,e.createElement)(r.TextControl,{label:t,placeholder:a,help:n,className:o,value:c[l][s],onChange:t=>u(l,s,t),disabled:m})},ge=({title:t,label:a,optionGroup:n="general",optionName:o,disabled:l=!1})=>{const{useSettings:s,useUpdateStateSettings:m}=(0,i.useContext)(g);return(0,e.createElement)(e.Fragment,null,(0,e.createElement)("div",{className:"gtmkit-settings-field-wrap gtmkit-py-4"},(0,e.createElement)(r.BaseControl,{label:t},(0,e.createElement)(r.ToggleControl,{label:a,checked:!l&&s[n][o],onChange:()=>{m(n,o,!(s&&s[n][o]))},disabled:l}))))},ue=({title:t,options:a,help:n,className:o="gtmkit-settings-field-wrap gtmkit-py-4",optionGroup:l="general",optionName:s,disabled:m})=>{const{useSettings:c,useUpdateStateSettings:u}=(0,i.useContext)(g);return(0,e.createElement)(r.RadioControl,{label:t,options:a,help:n,className:o,selected:parseInt(c[l][s]),onChange:t=>u(l,s,t),disabled:m})};const de=(0,i.forwardRef)((({children:t,className:a="",disabled:n=!1,...i},r)=>(0,e.createElement)("div",{...i,className:"gtmkit-mb-12 gtmkit-border gtmkit-bg-white gtmkit-w-3/4 gtmkit-border-color-grey "+a+(n?"gtmkit-opacity-60":""),ref:r},t)));de.Header=({as:t="h3",title:a="",children:n,className:i="",...r})=>(0,e.createElement)(t,{...r,className:"gtmkit-font-bold gtmkit-text-lg gtmkit-px-8 gtmkit-py-4 gtmkit-border-b gtmkit-border-color-grey "+i},a,n),de.Content=({as:t="div",children:a,className:n="",...i})=>(0,e.createElement)(t,{...i,className:"gtmkit-px-8 gtmkit-py-6 "+n},a);var pe=de,he=()=>{const{useSettings:t}=(0,i.useContext)(g),a=!(t.general.sgtm_domain&&t.general.sgtm_domain.trim()&&t.general.sgtm_container_identifier&&t.general.sgtm_container_identifier.trim());return(0,e.createElement)(e.Fragment,null,(0,e.createElement)("h2",{className:"gtmkit-text-2xl gtmkit-font-bold gtmkit-text-color-heading gtmkit-mb-8"},(0,n.__)("Google Tag Manager container","gtm-kit")),(0,e.createElement)(pe,null,(0,e.createElement)(pe.Header,{title:(0,n.__)("General Container Settings","gtm-kit")}),(0,e.createElement)(pe.Content,null,(0,e.createElement)("p",{className:"gtmkit-mb-4"},(0,n.__)("To start collecting data with Google Tag manager you must register the Container ID of your Google Tag Manager container.","gtm-kit")),(0,e.createElement)(ce,{title:(0,n.__)("GTM Container ID:","gtm-kit"),optionName:"gtm_id",placeholder:(0,n.__)("Enter GTM Container ID","gtm-kit")}),(0,e.createElement)(ge,{title:(0,n.__)("Inject Container Code","gtm-kit"),label:(0,n.__)("Setting this to Off will remove the Google Tag Manager container code but the data layer will remain.","gtm-kit"),optionName:"container_active"}),(0,e.createElement)(ge,{title:(0,n.__)("Just the container","gtm-kit"),label:(0,n.__)("Setting this to On will reduce the functionality to just the GTM container code. No additional data will be pushed to the datalayer regardless of any other settings.","gtm-kit"),optionName:"just_the_container"}),(0,e.createElement)(ce,{title:(0,n.__)("dataLayer variable name:","gtm-kit"),optionName:"datalayer_name",placeholder:"dataLayer",help:(0,n.__)("The default name of the data layer object is dataLayer. If you prefer to use a different name for your data layer, you may do.","gtm-kit")}))),(0,e.createElement)(pe,null,(0,e.createElement)(pe.Header,{title:(0,n.__)("Server-side Tagging (sGTM)","gtm-kit")}),(0,e.createElement)("div",{className:"gtmkit-grid gtmkit-grid-cols-2 gtmkit-gap-4"},(0,e.createElement)(pe.Content,null,(0,e.createElement)(ce,{title:(0,n.__)("sGTM Container Domain:","gtm-kit"),optionName:"sgtm_domain",placeholder:(0,n.__)("Enter domain …","gtm-kit"),help:(0,n.__)("Enter your custom domain name if you are using a custom server side GTM container for tracking.","gtm-kit")}),(0,e.createElement)(ce,{title:(0,n.__)("sGTM container identifier:","gtm-kit"),optionName:"sgtm_container_identifier",placeholder:(0,n.__)("Enter loader name …","gtm-kit"),help:(0,n.__)("Only use if you are using a custom loader.","gtm-kit")}),(0,e.createElement)(ge,{title:(0,n.__)("Cookie Keeper (for Stape users only)","gtm-kit"),label:(0,n.__)("Prolong cookie lifetime in Safari and other browsers with ITP. This only works if you use Stape sGTM hosting and have set up the Cookie Keeper power up.","gtm-kit"),optionName:"sgtm_cookie_keeper",disabled:a})),(0,e.createElement)("div",{className:"gtmkit-px-8 gtmkit-py-6"},(0,e.createElement)("div",{className:"gtmkit-border-2 gtmkit-px-4 gtmkit-mt-3"},(0,e.createElement)("h4",{className:"gtmkit-pt-3 gtmkit-mb-4 gtmkit-text-lg gtmkit-font-bold"},(0,n.__)("Google Tag Manager Server-side Tagging","gtm-kit")),(0,e.createElement)("p",{className:"gtmkit-mb-4"},(0,n.__)("Server-side tagging is a silver bullet that gives you improved data accuracy, performance, privacy, and flexibility.","gtm-kit")," ",(0,e.createElement)("a",{href:"https://gtmkit.com/guides/google-tag-manager-server-side-tagging/#utm_source=gtmkit-plugin&utm_medium=software&utm_term=sgtm&utm_content=dashboard-container",className:"gtmkit-text-color-primary gtmkit-font-semibold hover:gtmkit-underline",target:"_blank",rel:"noreferrer"},(0,n.__)("Learn more","gtm-kit"))),(0,e.createElement)("h4",{className:"gtmkit-pt-4 gtmkit-mb-4 gtmkit-text-lg gtmkit-font-bold"},(0,n.__)("Hosting server-side GTM containers","gtm-kit")),(0,e.createElement)("p",{className:"gtmkit-mb-4"},(0,n.__)("Setting up server-side tracking can be challenging and costly but there is an easy and cheap solution.","gtm-kit")),(0,e.createElement)("p",{className:"gtmkit-mb-4"},(0,n.__)("Stape.io is a solution for hosting server-side Google Tag Manager containers, offering a simplified approach that demands less technical expertise than solutions like Google Cloud Platform.","gtm-kit")," ",(0,n.__)("Additionally, it provides valuable add-ons for enhanced functionality.","gtm-kit")),(0,e.createElement)("p",{className:"gtmkit-mb-4"},(0,e.createElement)("a",{href:"https://stape.io/?pt=tlam&rs=plugin",className:"gtmkit-text-color-primary gtmkit-font-semibold hover:gtmkit-underline",target:"_blank",rel:"noreferrer"},(0,n.__)("Learn more about Stape.io","gtm-kit"))))))),(0,e.createElement)(pe,null,(0,e.createElement)(pe.Header,{title:(0,n.__)("Page Speed Optimization","gtm-kit")}),(0,e.createElement)("div",{className:"gtmkit-grid gtmkit-grid-cols-2 gtmkit-gap-4"},(0,e.createElement)(pe.Content,null,(0,e.createElement)(ge,{title:(0,n.__)("load_js event","gtm-kit"),label:(0,n.__)("Setting this to On will push the event 'load_js' om page load.","gtm-kit"),optionName:"load_js_event"})),(0,e.createElement)("div",{className:"gtmkit-px-8 gtmkit-py-6"},(0,e.createElement)("div",{className:"gtmkit-border-2 gtmkit-px-4 gtmkit-mt-3"},(0,e.createElement)("h4",{className:"gtmkit-pt-3 gtmkit-mb-4 gtmkit-text-lg gtmkit-font-bold"},(0,n.__)("Delay JavaScript execution","gtm-kit")),(0,e.createElement)("p",{className:"gtmkit-mb-4"},(0,n.__)("Page optimization plugins can delay the 'load_js' event and this can be used to delay the triggering og tags in Google Tag Manager.","gtm-kit")," ",(0,e.createElement)("a",{href:"https://gtmkit.com/guides/delay-javascript-execution-in-gtm/#utm_source=gtmkit-plugin&utm_medium=software&utm_term=delay-js&utm_content=dashboard-container",className:"gtmkit-text-color-primary gtmkit-font-semibold hover:gtmkit-underline",target:"_blank",rel:"noreferrer"},(0,n.__)("Learn more","gtm-kit"))))))),(0,e.createElement)(pe,null,(0,e.createElement)(pe.Header,{title:(0,n.__)("Google Tag Manager Environment","gtm-kit")}),(0,e.createElement)("div",{className:"gtmkit-grid gtmkit-grid-cols-2 gtmkit-gap-4"},(0,e.createElement)(pe.Content,null,(0,e.createElement)(ce,{title:(0,n.__)("gtm_auth:","gtm-kit"),optionName:"gtm_auth",placeholder:(0,n.__)("Enter gtm_auth code","gtm-kit"),help:(0,n.__)("Enter your gtm_auth code your GTM environment.","gtm-kit")}),(0,e.createElement)(ce,{title:(0,n.__)("gtm_preview:","gtm-kit"),optionName:"gtm_preview",placeholder:(0,n.__)("Enter gtm_preview code","gtm-kit"),help:(0,n.__)("Enter your gtm_preview code your GTM environment.","gtm-kit")})),(0,e.createElement)("div",{className:"gtmkit-px-8 gtmkit-py-6"},(0,e.createElement)("div",{className:"gtmkit-border-2 gtmkit-px-4 gtmkit-mt-3"},(0,e.createElement)("h4",{className:"gtmkit-pt-3 gtmkit-mb-4 gtmkit-text-lg gtmkit-font-bold"},(0,n.__)("Environments","gtm-kit")),(0,e.createElement)("p",{className:"gtmkit-mb-4"},(0,n.__)("In Google Tag Manager you can define different environments like Live, Dev and QA.","gtm-kit")," ",(0,n.__)('To use a specific environment in GTM Kit you must enter the "gtm_auth" and "gtm_preview" codes for that environment.',"gtm-kit")," ",(0,n.__)("If left empty the default environment will be used.","gtm-kit")),(0,e.createElement)("h4",{className:"gtmkit-pt-4 gtmkit-mb-4 gtmkit-text-lg gtmkit-font-bold"},(0,n.__)("Override settings in wp-config.php","gtm-kit")),(0,e.createElement)("p",{className:"gtmkit-mb-4"},(0,n.__)("You can override the values of using constants in wp-config.php, which is a very useful for setting the value in your development and staging environments.","gtm-kit")," ",(0,e.createElement)("a",{href:"https://gtmkit.com/documentation/settings-actions-and-filters-for-developers/#utm_source=gtmkit-plugin&utm_medium=software&utm_term=container-settings&utm_content=dashboard-container",className:"gtmkit-text-color-primary gtmkit-font-semibold hover:gtmkit-underline",target:"_blank",rel:"noreferrer"},(0,n.__)("Learn more","gtm-kit"))))))),(0,e.createElement)(pe,null,(0,e.createElement)(pe.Header,{title:(0,n.__)("Container Code Implementation","gtm-kit")}),(0,e.createElement)(pe.Content,null,(0,e.createElement)(ue,{title:(0,n.__)("Container code implementation:","gtm-kit"),options:[{label:(0,n.__)("Standard implementation as recommended by Google (no delay)","gtm-kit"),value:0},{label:(0,n.__)("Load container when browser is idle (requestIdleCallback)","gtm-kit"),value:1}],help:(0,n.__)("Depending on how you use Google Tag Manager you can delay the loading of the container script until the browser is idle.","gtm-kit"),optionName:"script_implementation"}),(0,e.createElement)(ue,{title:(0,n.__)("Container code noscript implementation:","gtm-kit"),options:[{label:(0,n.__)("Just after the opening tag","gtm-kit"),value:0},{label:(0,n.__)("Footer of the page (not recommended by Google)","gtm-kit"),value:1},{label:(0,n.__)("Custom (insert function in your template)","gtm-kit"),value:2},{label:(0,n.__)("Disable