@koine/next 2.0.0-beta.6 → 2.0.0-beta.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/12/AnalyticsGoogle.d.ts +1 -2
- package/12/DisableErrorOverlay.d.ts +1 -6
- package/12/Seo.d.ts +8 -26
- package/12/SeoDefaults.d.ts +3 -4
- package/12/seoBuildTags.d.ts +1 -16
- package/12/types.d.ts +2 -0
- package/12.cjs.d.ts +1 -0
- package/12.cjs.default.js +1 -0
- package/12.cjs.js +28 -0
- package/12.cjs.mjs +2 -0
- package/12.d.ts +3 -0
- package/12.esm.js +18 -0
- package/config.cjs.d.ts +1 -0
- package/config.cjs.default.js +1 -0
- package/config.cjs.js +9 -0
- package/config.cjs.mjs +2 -0
- package/config.d.ts +7 -0
- package/config.esm.js +5 -0
- package/index.cjs.d.ts +1 -0
- package/index.cjs.default.js +1 -0
- package/index.cjs.js +25 -0
- package/index.cjs.mjs +2 -0
- package/index.d.ts +4 -2
- package/index.esm.js +14 -0
- package/package.json +30 -69
- package/theme/ThemeContext.d.ts +11 -0
- package/theme/ThemeProvider.d.ts +17 -0
- package/theme/useTheme.d.ts +4 -0
- package/typings.d.ts +39 -50
- package/utils/load.d.ts +1 -0
- package/12/AnalyticsGoogle.js +0 -79
- package/12/AnalyticsGoogle.mjs +0 -60
- package/12/DisableErrorOverlay.js +0 -31
- package/12/DisableErrorOverlay.mjs +0 -16
- package/12/DynamicNamespaces.d.ts +0 -13
- package/12/DynamicNamespaces.js +0 -23
- package/12/DynamicNamespaces.mjs +0 -8
- package/12/Favicon.d.ts +0 -4
- package/12/Favicon.js +0 -29
- package/12/Favicon.mjs +0 -10
- package/12/Link.d.ts +0 -10
- package/12/Link.js +0 -38
- package/12/Link.mjs +0 -20
- package/12/NextProgress.d.ts +0 -25
- package/12/NextProgress.js +0 -69
- package/12/NextProgress.mjs +0 -51
- package/12/Seo.js +0 -29
- package/12/Seo.mjs +0 -30
- package/12/SeoDefaults.js +0 -31
- package/12/SeoDefaults.mjs +0 -14
- package/12/T.d.ts +0 -16
- package/12/T.js +0 -43
- package/12/T.mjs +0 -27
- package/12/ThemeContext.d.ts +0 -17
- package/12/ThemeContext.js +0 -25
- package/12/ThemeContext.mjs +0 -7
- package/12/ThemeProvider.d.ts +0 -35
- package/12/ThemeProvider.js +0 -256
- package/12/ThemeProvider.mjs +0 -245
- package/12/TransText.d.ts +0 -3
- package/12/TransText.js +0 -23
- package/12/TransText.mjs +0 -4
- package/12/app/AppHead.d.ts +0 -3
- package/12/app/AppHead.js +0 -31
- package/12/app/AppHead.mjs +0 -12
- package/12/app/AppMain.d.ts +0 -35
- package/12/app/AppMain.js +0 -6
- package/12/app/AppMain.mjs +0 -1
- package/12/app/css/AppMain.d.ts +0 -9
- package/12/app/css/AppMain.js +0 -39
- package/12/app/css/AppMain.mjs +0 -24
- package/12/app/css/AppTheme.d.ts +0 -11
- package/12/app/css/AppTheme.js +0 -33
- package/12/app/css/AppTheme.mjs +0 -17
- package/12/app/css/auth/index.d.ts +0 -11
- package/12/app/css/auth/index.js +0 -40
- package/12/app/css/auth/index.mjs +0 -24
- package/12/app/css/index.d.ts +0 -54
- package/12/app/css/index.js +0 -36
- package/12/app/css/index.mjs +0 -65
- package/12/app/index.d.ts +0 -2
- package/12/app/index.js +0 -7
- package/12/app/index.mjs +0 -2
- package/12/app/sc/AppMain.d.ts +0 -11
- package/12/app/sc/AppMain.js +0 -70
- package/12/app/sc/AppMain.mjs +0 -58
- package/12/app/sc/AppTheme.d.ts +0 -14
- package/12/app/sc/AppTheme.js +0 -33
- package/12/app/sc/AppTheme.mjs +0 -16
- package/12/app/sc/auth/index.d.ts +0 -11
- package/12/app/sc/auth/index.js +0 -40
- package/12/app/sc/auth/index.mjs +0 -24
- package/12/app/sc/index.d.ts +0 -56
- package/12/app/sc/index.js +0 -36
- package/12/app/sc/index.mjs +0 -67
- package/12/document/Document.d.ts +0 -15
- package/12/document/Document.js +0 -49
- package/12/document/Document.mjs +0 -38
- package/12/document/css/index.d.ts +0 -17
- package/12/document/css/index.js +0 -60
- package/12/document/css/index.mjs +0 -53
- package/12/document/index.d.ts +0 -2
- package/12/document/index.js +0 -19
- package/12/document/index.mjs +0 -2
- package/12/document/sc/index.d.ts +0 -19
- package/12/document/sc/index.js +0 -73
- package/12/document/sc/index.mjs +0 -65
- package/12/getT.d.ts +0 -9
- package/12/getT.js +0 -23
- package/12/getT.mjs +0 -8
- package/12/index.d.ts +0 -24
- package/12/index.js +0 -100
- package/12/index.mjs +0 -27
- package/12/seoBuildTags.js +0 -126
- package/12/seoBuildTags.mjs +0 -121
- package/12/to.d.ts +0 -24
- package/12/to.js +0 -31
- package/12/to.mjs +0 -19
- package/12/translationAsOptions.d.ts +0 -3
- package/12/translationAsOptions.js +0 -19
- package/12/translationAsOptions.mjs +0 -9
- package/12/types-i18n.d.ts +0 -118
- package/12/types-i18n.js +0 -15
- package/12/types-i18n.mjs +0 -12
- package/12/types-seo.d.ts +0 -7
- package/12/types-seo.js +0 -4
- package/12/types-seo.mjs +0 -1
- package/12/useBackUrl.d.ts +0 -2
- package/12/useBackUrl.js +0 -47
- package/12/useBackUrl.mjs +0 -28
- package/12/useDateFormat.d.ts +0 -7
- package/12/useDateFormat.js +0 -42
- package/12/useDateFormat.mjs +0 -26
- package/12/useForm.d.ts +0 -27
- package/12/useForm.js +0 -65
- package/12/useForm.mjs +0 -47
- package/12/useLocale.d.ts +0 -2
- package/12/useLocale.js +0 -25
- package/12/useLocale.mjs +0 -6
- package/12/useT.d.ts +0 -4
- package/12/useT.js +0 -58
- package/12/useT.mjs +0 -39
- package/12/useTheme.d.ts +0 -7
- package/12/useTheme.js +0 -23
- package/12/useTheme.mjs +0 -7
- package/12/useTo.d.ts +0 -3
- package/12/useTo.js +0 -26
- package/12/useTo.mjs +0 -8
- package/config/index.d.ts +0 -160
- package/config/index.js +0 -317
- package/config/index.mjs +0 -315
- package/getSiteUrl.d.ts +0 -8
- package/getSiteUrl.js +0 -24
- package/getSiteUrl.mjs +0 -10
- package/index.js +0 -20
- package/index.mjs +0 -2
- package/load.d.ts +0 -10
- package/load.js +0 -31
- package/load.mjs +0 -13
package/12/AnalyticsGoogle.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export type AnalyticsGoogleProps = {
|
|
2
|
-
/** Falls back to `.env` variable `NEXT_PUBLIC_GTM_ID` */
|
|
3
2
|
id?: string;
|
|
4
3
|
};
|
|
5
|
-
export declare
|
|
4
|
+
export declare let AnalyticsGoogle: ({ id }: AnalyticsGoogleProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
6
5
|
export default AnalyticsGoogle;
|
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* Disable error overlay during `dev`
|
|
3
|
-
*
|
|
4
|
-
* @see https://github.com/vercel/next.js/discussions/13387#discussioncomment-101564
|
|
5
|
-
*/
|
|
6
|
-
export declare const DisableErrorOverlay: () => import("react/jsx-runtime").JSX.Element;
|
|
1
|
+
export declare let DisableErrorOverlay: () => import("react/jsx-runtime").JSX.Element;
|
|
7
2
|
export default DisableErrorOverlay;
|
package/12/Seo.d.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import type { NextSeoProps } from "next-seo/lib/types";
|
|
2
2
|
import { type LinkTag, type MetaTag } from "./seoBuildTags";
|
|
3
|
-
|
|
3
|
+
export type SeoData = {
|
|
4
|
+
hidden?: boolean;
|
|
5
|
+
title?: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
keywords?: string | string[];
|
|
8
|
+
ogimage?: string;
|
|
9
|
+
};
|
|
4
10
|
type SeoPropsOpenGraph = NextSeoProps["openGraph"] & {
|
|
5
11
|
image?: string;
|
|
6
12
|
};
|
|
7
|
-
/**
|
|
8
|
-
* @see https://github.com/garmeeh/next-seo/blob/master/src/types.ts#L395
|
|
9
|
-
*/
|
|
10
13
|
export type SeoProps = Omit<NextSeoProps, "additionalMetaTags" | "additionalLinkTags" | "mobileAlternate" | "robotsProps"> & {
|
|
11
14
|
metaTags?: ReadonlyArray<MetaTag>;
|
|
12
15
|
linkTags?: ReadonlyArray<LinkTag>;
|
|
@@ -16,26 +19,5 @@ export type SeoProps = Omit<NextSeoProps, "additionalMetaTags" | "additionalLink
|
|
|
16
19
|
openGraph?: SeoPropsOpenGraph;
|
|
17
20
|
og?: SeoPropsOpenGraph;
|
|
18
21
|
};
|
|
19
|
-
|
|
20
|
-
* Adapted from [garmeeh/next-seo](https://github.com/garmeeh/next-seo)
|
|
21
|
-
*
|
|
22
|
-
* See also:
|
|
23
|
-
* - https://github.com/catnose99/next-head-seo
|
|
24
|
-
* - https://nextjs.org/docs/api-reference/next/head
|
|
25
|
-
*
|
|
26
|
-
* NB: on the homepage you usually want to customize the `titleTemplate` to avoid
|
|
27
|
-
* doubled app name. Assuming your default seo configuration is something like:
|
|
28
|
-
*
|
|
29
|
-
* ```js
|
|
30
|
-
* {
|
|
31
|
-
* titleTemplate: "%s | MyApp"
|
|
32
|
-
* }
|
|
33
|
-
* ```
|
|
34
|
-
*
|
|
35
|
-
* On the homepage you migh want to override it, e.g.:
|
|
36
|
-
* ```js
|
|
37
|
-
* <Seo title="MyApp | Some description" titleTemplate="%s" />
|
|
38
|
-
* ```
|
|
39
|
-
*/
|
|
40
|
-
export declare const Seo: (props: SeoProps) => import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export declare let Seo: (props: SeoProps) => import("react/jsx-runtime").JSX.Element;
|
|
41
23
|
export default Seo;
|
package/12/SeoDefaults.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import type { DefaultSeoProps } from "next-seo/lib/types";
|
|
2
|
+
import type { JsonObject } from "@koine/utils";
|
|
2
3
|
import { type LinkTag, type MetaTag } from "./seoBuildTags";
|
|
3
|
-
/**
|
|
4
|
-
* @see https://github.com/garmeeh/next-seo/blob/master/src/types.ts#L413
|
|
5
|
-
*/
|
|
6
4
|
export type SeoDefaultsProps = Omit<DefaultSeoProps, "additionalMetaTags" | "additionalLinkTags" | "dangerouslySetAllPagesToNoIndex" | "dangerouslySetAllPagesToNoFollow" | "defaultOpenGraphImageWidth" | "defaultOpenGraphImageHeight" | "defaultOpenGraphVideoWidth" | "defaultOpenGraphVideoHeight" | "mobileAlternate" | "robotsProps"> & {
|
|
7
5
|
metaTags?: ReadonlyArray<MetaTag>;
|
|
8
6
|
linkTags?: ReadonlyArray<LinkTag>;
|
|
7
|
+
schema?: JsonObject;
|
|
9
8
|
};
|
|
10
|
-
export declare
|
|
9
|
+
export declare let SeoDefaults: (props: SeoDefaultsProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
10
|
export default SeoDefaults;
|
package/12/seoBuildTags.d.ts
CHANGED
|
@@ -4,20 +4,5 @@ import type { SeoDefaultsProps } from "./SeoDefaults";
|
|
|
4
4
|
export type MetaTag = React.DetailedHTMLProps<React.MetaHTMLAttributes<HTMLMetaElement>, HTMLMetaElement>;
|
|
5
5
|
export type LinkTag = React.DetailedHTMLProps<React.LinkHTMLAttributes<HTMLLinkElement>, HTMLLinkElement>;
|
|
6
6
|
type BuildTagsParams = SeoProps & SeoDefaultsProps;
|
|
7
|
-
|
|
8
|
-
* Comparing to `next-seo` we do a couple of things in addition while many
|
|
9
|
-
* others are removed.
|
|
10
|
-
*
|
|
11
|
-
* - Add `seo` meta object coming from a CMS probably
|
|
12
|
-
* - Add `ogimage` and `openGraph.image` as single image source
|
|
13
|
-
* - Add `og` alias to define `openGraph`
|
|
14
|
-
* - Add check for `title` equal to `templateTitle` to avoid meta titles like
|
|
15
|
-
* "My site | My site" often happening in homepages
|
|
16
|
-
* - Remove the open graph videos and images
|
|
17
|
-
*
|
|
18
|
-
* - Shorter code
|
|
19
|
-
*
|
|
20
|
-
* @returns
|
|
21
|
-
*/
|
|
22
|
-
export declare const seoBuildTags: ({ seo, hidden, keywords, title, titleTemplate, defaultTitle, noindex, nofollow, description, languageAlternates, twitter, facebook, openGraph, og: ogAlias, canonical, metaTags, linkTags, }?: BuildTagsParams) => React.ReactNode[];
|
|
7
|
+
export declare const seoBuildTags: ({ seo, hidden, keywords, title, titleTemplate, defaultTitle, noindex, nofollow, description, languageAlternates, twitter, facebook, openGraph, og: ogAlias, canonical, metaTags, linkTags, schema, }?: BuildTagsParams) => React.ReactNode[];
|
|
23
8
|
export default seoBuildTags;
|
package/12/types.d.ts
ADDED
package/12.cjs.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./12";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports._default = require('./12.cjs.js').default;
|
package/12.cjs.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var router = require('next/router');
|
|
7
|
+
var o = require('next/script');
|
|
8
|
+
var react = require('react');
|
|
9
|
+
var browser = require('@koine/browser');
|
|
10
|
+
var r = require('next/head');
|
|
11
|
+
|
|
12
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
13
|
+
|
|
14
|
+
var o__default = /*#__PURE__*/_interopDefaultLegacy(o);
|
|
15
|
+
var r__default = /*#__PURE__*/_interopDefaultLegacy(r);
|
|
16
|
+
|
|
17
|
+
let AnalyticsGoogle=({id:s})=>{let l=s||process.env.NEXT_PUBLIC_GTM_ID,{events:m,asPath:c,query:d}=router.useRouter(),[p,f]=react.useState(!1),[w,u]=react.useState(!1);return (react.useEffect(()=>{let e=()=>{u(!0);};return m.on("routeChangeComplete",e),()=>{m.off("routeChangeComplete",e);}},[m]),react.useEffect(()=>{w&&p&&c&&browser.gtagPageview(c);},[c,d,w,p]),l)?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(o__default["default"],{id:"google-tagmanager",src:`https://www.googletagmanager.com/gtag/js?id=${s}`,strategy:"afterInteractive",onLoad:()=>f(!0)}),jsxRuntime.jsx(o__default["default"],{id:"google-analytics",strategy:"afterInteractive",children:`
|
|
18
|
+
window.dataLayer = window.dataLayer || [];
|
|
19
|
+
function gtag(){window.dataLayer.push(arguments);}
|
|
20
|
+
gtag('js', new Date());
|
|
21
|
+
|
|
22
|
+
gtag('config', '${s}', { 'send_page_view': false });
|
|
23
|
+
`})]}):null};
|
|
24
|
+
|
|
25
|
+
let DisableErrorOverlay=()=>jsxRuntime.jsx(r__default["default"],{children:"development"===process.env.NODE_ENV&&jsxRuntime.jsx("script",{dangerouslySetInnerHTML:{__html:"window.addEventListener('error',event =>{event.stopImmediatePropagation()});window.addEventListener('unhandledrejection',event =>{event.stopImmediatePropagation()});"}})});
|
|
26
|
+
|
|
27
|
+
exports.AnalyticsGoogle = AnalyticsGoogle;
|
|
28
|
+
exports.DisableErrorOverlay = DisableErrorOverlay;
|
package/12.cjs.mjs
ADDED
package/12.d.ts
ADDED
package/12.esm.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useRouter } from 'next/router';
|
|
3
|
+
import o from 'next/script';
|
|
4
|
+
import { useState, useEffect } from 'react';
|
|
5
|
+
import { gtagPageview } from '@koine/browser';
|
|
6
|
+
import r from 'next/head';
|
|
7
|
+
|
|
8
|
+
let AnalyticsGoogle=({id:s})=>{let l=s||process.env.NEXT_PUBLIC_GTM_ID,{events:m,asPath:c,query:d}=useRouter(),[p,f]=useState(!1),[w,u]=useState(!1);return (useEffect(()=>{let e=()=>{u(!0);};return m.on("routeChangeComplete",e),()=>{m.off("routeChangeComplete",e);}},[m]),useEffect(()=>{w&&p&&c&>agPageview(c);},[c,d,w,p]),l)?jsxs(Fragment,{children:[jsx(o,{id:"google-tagmanager",src:`https://www.googletagmanager.com/gtag/js?id=${s}`,strategy:"afterInteractive",onLoad:()=>f(!0)}),jsx(o,{id:"google-analytics",strategy:"afterInteractive",children:`
|
|
9
|
+
window.dataLayer = window.dataLayer || [];
|
|
10
|
+
function gtag(){window.dataLayer.push(arguments);}
|
|
11
|
+
gtag('js', new Date());
|
|
12
|
+
|
|
13
|
+
gtag('config', '${s}', { 'send_page_view': false });
|
|
14
|
+
`})]}):null};
|
|
15
|
+
|
|
16
|
+
let DisableErrorOverlay=()=>jsx(r,{children:"development"===process.env.NODE_ENV&&jsx("script",{dangerouslySetInnerHTML:{__html:"window.addEventListener('error',event =>{event.stopImmediatePropagation()});window.addEventListener('unhandledrejection',event =>{event.stopImmediatePropagation()});"}})});
|
|
17
|
+
|
|
18
|
+
export { AnalyticsGoogle, DisableErrorOverlay };
|
package/config.cjs.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./config";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports._default = require('./config.cjs.js').default;
|
package/config.cjs.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var next = require('@koine/i18n/next');
|
|
6
|
+
|
|
7
|
+
let withKoine=(o={})=>{let{nx:i,svg:n,i18nRoutes:s,i18nCompiler:l,...p}=o,a={eslint:{ignoreDuringBuilds:!0},typescript:{ignoreBuildErrors:!0},poweredByHeader:!1,experimental:{scrollRestoration:!0,...p.experimental||{}},...p};return (n&&(i?a.nx={svgr:!0}:(delete a.nx,a.webpack=(e,r)=>{let t="function"==typeof a.webpack?a.webpack(e,r):e;return t.module.rules.push({test:/\.svg$/,use:[{loader:"@svgr/webpack",options:{svgoConfig:{plugins:[{name:"removeViewBox",active:!1}]}}}]}),t})),s)?next.withI18nLegacy({...a,i18nRoutes:s}):l?i?next.withI18nAsync({...a,i18nCompiler:l}):next.withI18n({...a,i18nCompiler:l}):a};
|
|
8
|
+
|
|
9
|
+
exports.withKoine = withKoine;
|
package/config.cjs.mjs
ADDED
package/config.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { NextConfig } from "next";
|
|
2
|
+
import { type WithI18nAsyncOptions, type WithI18nLegacyOptions } from "@koine/i18n/next";
|
|
3
|
+
export type WithKoineOptions = NextConfig & {
|
|
4
|
+
nx?: boolean;
|
|
5
|
+
svg?: boolean;
|
|
6
|
+
} & WithI18nLegacyOptions & WithI18nAsyncOptions;
|
|
7
|
+
export declare let withKoine: (options?: WithKoineOptions) => NextConfig;
|
package/config.esm.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { withI18nLegacy, withI18nAsync, withI18n } from '@koine/i18n/next';
|
|
2
|
+
|
|
3
|
+
let withKoine=(o={})=>{let{nx:i,svg:n,i18nRoutes:s,i18nCompiler:l,...p}=o,a={eslint:{ignoreDuringBuilds:!0},typescript:{ignoreBuildErrors:!0},poweredByHeader:!1,experimental:{scrollRestoration:!0,...p.experimental||{}},...p};return (n&&(i?a.nx={svgr:!0}:(delete a.nx,a.webpack=(e,r)=>{let t="function"==typeof a.webpack?a.webpack(e,r):e;return t.module.rules.push({test:/\.svg$/,use:[{loader:"@svgr/webpack",options:{svgoConfig:{plugins:[{name:"removeViewBox",active:!1}]}}}]}),t})),s)?withI18nLegacy({...a,i18nRoutes:s}):l?i?withI18nAsync({...a,i18nCompiler:l}):withI18n({...a,i18nCompiler:l}):a};
|
|
4
|
+
|
|
5
|
+
export { withKoine };
|
package/index.cjs.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./index";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports._default = require('./index.cjs.js').default;
|
package/index.cjs.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var react = require('react');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
var o = require('next/script');
|
|
8
|
+
var utils = require('@koine/utils');
|
|
9
|
+
|
|
10
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
11
|
+
|
|
12
|
+
var o__default = /*#__PURE__*/_interopDefaultLegacy(o);
|
|
13
|
+
|
|
14
|
+
function load(e,o){return new Promise(t=>{setTimeout(()=>t(e),o);})}
|
|
15
|
+
|
|
16
|
+
const ThemeContext=react.createContext({setTheme:e=>{},themes:[]});
|
|
17
|
+
|
|
18
|
+
let l=["light","dark"],d="(prefers-color-scheme: dark)",c="theme";const ThemeProvider=({forcedTheme:r,disableTransitionOnChange:o=!1,enableSystem:v=!0,enableColorScheme:y,themes:p=["light","dark"],defaultTheme:g=v?"system":"light",attribute:w="data-theme",value:x,children:S,nonce:k})=>{let[b,L]=react.useState(()=>u(c,g)),[T,j]=react.useState(()=>u(c)),C=x?Object.values(x):p,E=react.useCallback(e=>{let t=e;if(utils.isServer||!t)return;"system"===e&&v&&(t=f());let r=x?x[t]:t,i=o?$():null,n=document.documentElement;if("class"===w?(n.classList.remove(...C),r&&n.classList.add(r)):r?n.setAttribute(w,r):n.removeAttribute(w),y){let e=l.includes(g)?g:"",r=l.includes(t)?t:e;n.style.colorScheme=r;}i?.();},[w,C,g,o,y,v,x]),I=react.useCallback(e=>{L(e);try{localStorage.setItem(c,e);}catch(e){}},[]),M=react.useCallback(e=>{j(f(e)),"system"===b&&v&&!r&&E("system");},[b,v,r,E]);return react.useEffect(()=>{let e=window.matchMedia(d);return e.addListener(M),M(e),()=>e.removeListener(M)},[M]),react.useEffect(()=>{let e=e=>{e.key===c&&I(e.newValue||g);};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[g,I]),react.useEffect(()=>{E(r??b);},[E,r,b]),jsxRuntime.jsxs(ThemeContext.Provider,{value:{theme:b,setTheme:I,forcedTheme:r,resolvedTheme:"system"===b?T:b,themes:v?[...p,"system"]:p,systemTheme:v?T:void 0},children:[jsxRuntime.jsx(h,{forcedTheme:r,disableTransitionOnChange:o,enableSystem:v,enableColorScheme:y,themes:p,defaultTheme:g,attribute:w,value:x,children:S,attrs:C,nonce:k}),S]})};let h=react.memo(({forcedTheme:t,attribute:o,enableSystem:i,enableColorScheme:n,defaultTheme:s,value:a,attrs:m,nonce:h})=>{let u="system"===s,$=(()=>{let e=`d.remove(${m.map(e=>`'${e}'`).join(",")})`;return `var d=document.documentElement.classList;${e};`})(),f=n?(l.includes(s)?s:null)?`if(e==='light'||e==='dark'||!e)d.style.colorScheme=e||'${s}'`:"if(e==='light'||e==='dark')d.style.colorScheme=e":"",y=(e,t=!1,r=!0)=>{let i=a?a[e]:e,s=t?e+"|| ''":`'${i}'`,m="";return n&&r&&!t&&l.includes(e)&&(m+=`d.style.colorScheme = '${e}';`),"class"===o?t||i?m+=`d.add(${s})`:m+="null":i&&(m+=`d[s](n, ${s})`),m},p=t?`!function(){${$}${y(t)}}()`:i?`!function(){try {${$}var e=localStorage.getItem('${c}');if("system"===e||(!e&&${u})){var t="${d}",m=window.matchMedia(t);if(m.media!==t||m.matches){${y("dark")}}else{${y("light")}}}else if(e){${a?`var x=${JSON.stringify(a)};`:""}${y(a?"x[e]":"e",!0)}}${u?"":"else{"+y(s,!1,!1)+"}"}${f}}catch(e){}}()`:`!function(){try{${$}var e=localStorage.getItem("${c}");if(e){${a?`var x=${JSON.stringify(a)};`:""}${y(a?"x[e]":"e",!0)}}else{${y(s,!1,!1)};}${f}}catch(t){}}();`;return jsxRuntime.jsx(o__default["default"],{id:"next-theme-script",strategy:"beforeInteractive",src:`data:text/javascript;base64,${v(p)}`,nonce:h})},()=>!0),u=(e,t)=>{let r;if(!utils.isServer){try{r=localStorage.getItem(e)||void 0;}catch(e){}return r||t}},$=()=>{let e=document,t=e.createElement("style");return t.appendChild(e.createTextNode("*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),e.head.appendChild(t),()=>{window.getComputedStyle(e.body),setTimeout(()=>{e.head.removeChild(t);},1);}},f=e=>(e||(e=window.matchMedia(d)),e.matches?"dark":"light"),v=e=>utils.isServer?Buffer.from(e).toString("base64"):btoa(e);
|
|
19
|
+
|
|
20
|
+
const useTheme=()=>react.useContext(ThemeContext);
|
|
21
|
+
|
|
22
|
+
exports.ThemeContext = ThemeContext;
|
|
23
|
+
exports.ThemeProvider = ThemeProvider;
|
|
24
|
+
exports.load = load;
|
|
25
|
+
exports.useTheme = useTheme;
|
package/index.cjs.mjs
ADDED
package/index.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { load } from "./utils/load";
|
|
2
|
+
export { ThemeContext, type ThemeContextProps } from "./theme/ThemeContext";
|
|
3
|
+
export { ThemeProvider, type ThemeProviderProps } from "./theme/ThemeProvider";
|
|
4
|
+
export { useTheme, type UseThemeProps } from "./theme/useTheme";
|
package/index.esm.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createContext, useState, useCallback, useEffect, memo, useContext } from 'react';
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import o from 'next/script';
|
|
4
|
+
import { isServer } from '@koine/utils';
|
|
5
|
+
|
|
6
|
+
function load(e,o){return new Promise(t=>{setTimeout(()=>t(e),o);})}
|
|
7
|
+
|
|
8
|
+
const ThemeContext=createContext({setTheme:e=>{},themes:[]});
|
|
9
|
+
|
|
10
|
+
let l=["light","dark"],d="(prefers-color-scheme: dark)",c="theme";const ThemeProvider=({forcedTheme:r,disableTransitionOnChange:o=!1,enableSystem:v=!0,enableColorScheme:y,themes:p=["light","dark"],defaultTheme:g=v?"system":"light",attribute:w="data-theme",value:x,children:S,nonce:k})=>{let[b,L]=useState(()=>u(c,g)),[T,j]=useState(()=>u(c)),C=x?Object.values(x):p,E=useCallback(e=>{let t=e;if(isServer||!t)return;"system"===e&&v&&(t=f());let r=x?x[t]:t,i=o?$():null,n=document.documentElement;if("class"===w?(n.classList.remove(...C),r&&n.classList.add(r)):r?n.setAttribute(w,r):n.removeAttribute(w),y){let e=l.includes(g)?g:"",r=l.includes(t)?t:e;n.style.colorScheme=r;}i?.();},[w,C,g,o,y,v,x]),I=useCallback(e=>{L(e);try{localStorage.setItem(c,e);}catch(e){}},[]),M=useCallback(e=>{j(f(e)),"system"===b&&v&&!r&&E("system");},[b,v,r,E]);return useEffect(()=>{let e=window.matchMedia(d);return e.addListener(M),M(e),()=>e.removeListener(M)},[M]),useEffect(()=>{let e=e=>{e.key===c&&I(e.newValue||g);};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[g,I]),useEffect(()=>{E(r??b);},[E,r,b]),jsxs(ThemeContext.Provider,{value:{theme:b,setTheme:I,forcedTheme:r,resolvedTheme:"system"===b?T:b,themes:v?[...p,"system"]:p,systemTheme:v?T:void 0},children:[jsx(h,{forcedTheme:r,disableTransitionOnChange:o,enableSystem:v,enableColorScheme:y,themes:p,defaultTheme:g,attribute:w,value:x,children:S,attrs:C,nonce:k}),S]})};let h=memo(({forcedTheme:t,attribute:o$1,enableSystem:i,enableColorScheme:n,defaultTheme:s,value:a,attrs:m,nonce:h})=>{let u="system"===s,$=(()=>{let e=`d.remove(${m.map(e=>`'${e}'`).join(",")})`;return `var d=document.documentElement.classList;${e};`})(),f=n?(l.includes(s)?s:null)?`if(e==='light'||e==='dark'||!e)d.style.colorScheme=e||'${s}'`:"if(e==='light'||e==='dark')d.style.colorScheme=e":"",y=(e,t=!1,r=!0)=>{let i=a?a[e]:e,s=t?e+"|| ''":`'${i}'`,m="";return n&&r&&!t&&l.includes(e)&&(m+=`d.style.colorScheme = '${e}';`),"class"===o$1?t||i?m+=`d.add(${s})`:m+="null":i&&(m+=`d[s](n, ${s})`),m},p=t?`!function(){${$}${y(t)}}()`:i?`!function(){try {${$}var e=localStorage.getItem('${c}');if("system"===e||(!e&&${u})){var t="${d}",m=window.matchMedia(t);if(m.media!==t||m.matches){${y("dark")}}else{${y("light")}}}else if(e){${a?`var x=${JSON.stringify(a)};`:""}${y(a?"x[e]":"e",!0)}}${u?"":"else{"+y(s,!1,!1)+"}"}${f}}catch(e){}}()`:`!function(){try{${$}var e=localStorage.getItem("${c}");if(e){${a?`var x=${JSON.stringify(a)};`:""}${y(a?"x[e]":"e",!0)}}else{${y(s,!1,!1)};}${f}}catch(t){}}();`;return jsx(o,{id:"next-theme-script",strategy:"beforeInteractive",src:`data:text/javascript;base64,${v(p)}`,nonce:h})},()=>!0),u=(e,t)=>{let r;if(!isServer){try{r=localStorage.getItem(e)||void 0;}catch(e){}return r||t}},$=()=>{let e=document,t=e.createElement("style");return t.appendChild(e.createTextNode("*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),e.head.appendChild(t),()=>{window.getComputedStyle(e.body),setTimeout(()=>{e.head.removeChild(t);},1);}},f=e=>(e||(e=window.matchMedia(d)),e.matches?"dark":"light"),v=e=>isServer?Buffer.from(e).toString("base64"):btoa(e);
|
|
11
|
+
|
|
12
|
+
const useTheme=()=>useContext(ThemeContext);
|
|
13
|
+
|
|
14
|
+
export { ThemeContext, ThemeProvider, load, useTheme };
|
package/package.json
CHANGED
|
@@ -2,78 +2,39 @@
|
|
|
2
2
|
"name": "@koine/next",
|
|
3
3
|
"sideEffects": false,
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@koine/browser": "2.0.0-beta.
|
|
6
|
-
"@koine/
|
|
7
|
-
"@koine/
|
|
5
|
+
"@koine/browser": "2.0.0-beta.61",
|
|
6
|
+
"@koine/utils": "2.0.0-beta.61",
|
|
7
|
+
"@koine/i18n": "2.0.0-beta.61"
|
|
8
|
+
},
|
|
9
|
+
"peerDependencies": {
|
|
10
|
+
"next": "^14.0.4",
|
|
11
|
+
"next-seo": "^6.4.0",
|
|
12
|
+
"react": "^18.2.0"
|
|
8
13
|
},
|
|
9
14
|
"peerDependenciesMeta": {
|
|
10
|
-
"@emotion/react": {
|
|
11
|
-
"optional": true
|
|
12
|
-
},
|
|
13
|
-
"@emotion/server": {
|
|
14
|
-
"optional": true
|
|
15
|
-
},
|
|
16
|
-
"@emotion/styled": {
|
|
17
|
-
"optional": true
|
|
18
|
-
},
|
|
19
|
-
"@hookform/resolvers": {
|
|
20
|
-
"optional": true
|
|
21
|
-
},
|
|
22
|
-
"@kuus/yup": {
|
|
23
|
-
"optional": true
|
|
24
|
-
},
|
|
25
|
-
"@mui/base": {
|
|
26
|
-
"optional": true
|
|
27
|
-
},
|
|
28
|
-
"@mui/material": {
|
|
29
|
-
"optional": true
|
|
30
|
-
},
|
|
31
|
-
"@tiptap/react": {
|
|
32
|
-
"optional": true
|
|
33
|
-
},
|
|
34
|
-
"@tiptap/starter-kit": {
|
|
35
|
-
"optional": true
|
|
36
|
-
},
|
|
37
|
-
"date-fns": {
|
|
38
|
-
"optional": true
|
|
39
|
-
},
|
|
40
|
-
"framer-motion": {
|
|
41
|
-
"optional": true
|
|
42
|
-
},
|
|
43
|
-
"next-auth": {
|
|
44
|
-
"optional": true
|
|
45
|
-
},
|
|
46
15
|
"next-seo": {
|
|
47
16
|
"optional": true
|
|
48
|
-
},
|
|
49
|
-
"next-translate": {
|
|
50
|
-
"optional": true
|
|
51
|
-
},
|
|
52
|
-
"react-hook-form": {
|
|
53
|
-
"optional": true
|
|
54
|
-
},
|
|
55
|
-
"react-icons": {
|
|
56
|
-
"optional": true
|
|
57
|
-
},
|
|
58
|
-
"react-is": {
|
|
59
|
-
"optional": true
|
|
60
|
-
},
|
|
61
|
-
"react-popper": {
|
|
62
|
-
"optional": true
|
|
63
|
-
},
|
|
64
|
-
"react-swipeable": {
|
|
65
|
-
"optional": true
|
|
66
|
-
},
|
|
67
|
-
"styled-components": {
|
|
68
|
-
"optional": true
|
|
69
|
-
},
|
|
70
|
-
"tailwindcss": {
|
|
71
|
-
"optional": true
|
|
72
17
|
}
|
|
73
18
|
},
|
|
74
|
-
"
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
19
|
+
"exports": {
|
|
20
|
+
"./package.json": "./package.json",
|
|
21
|
+
".": {
|
|
22
|
+
"module": "./index.esm.js",
|
|
23
|
+
"import": "./index.cjs.mjs",
|
|
24
|
+
"default": "./index.cjs.js"
|
|
25
|
+
},
|
|
26
|
+
"./12": {
|
|
27
|
+
"module": "./12.esm.js",
|
|
28
|
+
"import": "./12.cjs.mjs",
|
|
29
|
+
"default": "./12.cjs.js"
|
|
30
|
+
},
|
|
31
|
+
"./config": {
|
|
32
|
+
"module": "./config.esm.js",
|
|
33
|
+
"import": "./config.cjs.mjs",
|
|
34
|
+
"default": "./config.cjs.js"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"module": "./index.esm.js",
|
|
38
|
+
"main": "./index.cjs.js",
|
|
39
|
+
"version": "2.0.0-beta.61"
|
|
40
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export type ThemeContextProps = {
|
|
3
|
+
themes: string[];
|
|
4
|
+
forcedTheme?: string;
|
|
5
|
+
setTheme: (theme: string) => void;
|
|
6
|
+
theme?: string;
|
|
7
|
+
resolvedTheme?: string;
|
|
8
|
+
systemTheme?: "dark" | "light";
|
|
9
|
+
};
|
|
10
|
+
export declare const ThemeContext: import("react").Context<ThemeContextProps>;
|
|
11
|
+
export default ThemeContext;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
type ValueObject = {
|
|
3
|
+
[themeName: string]: string;
|
|
4
|
+
};
|
|
5
|
+
export type ThemeProviderProps = React.PropsWithChildren<{
|
|
6
|
+
themes?: string[];
|
|
7
|
+
forcedTheme?: string;
|
|
8
|
+
enableSystem?: boolean;
|
|
9
|
+
disableTransitionOnChange?: boolean;
|
|
10
|
+
enableColorScheme?: boolean;
|
|
11
|
+
defaultTheme?: string;
|
|
12
|
+
attribute?: string | "class";
|
|
13
|
+
value?: ValueObject;
|
|
14
|
+
nonce?: string;
|
|
15
|
+
}>;
|
|
16
|
+
export declare const ThemeProvider: ({ forcedTheme, disableTransitionOnChange, enableSystem, enableColorScheme, themes, defaultTheme, attribute, value, children, nonce, }: ThemeProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export default ThemeProvider;
|
package/typings.d.ts
CHANGED
|
@@ -12,61 +12,50 @@ declare module "*.svg" {
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* [`next.js` pages router](https://nextjs.org/docs/pages) utility type
|
|
16
16
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
17
|
+
type NextGetStaticPathsResult<Params extends { [key: string]: any }> = Omit<
|
|
18
|
+
import("next").GetStaticPathsResult,
|
|
19
|
+
"paths"
|
|
20
|
+
> & {
|
|
21
|
+
paths: Array<string | { params: Params; locale?: string }>;
|
|
22
|
+
};
|
|
22
23
|
|
|
23
24
|
/**
|
|
24
|
-
*
|
|
25
|
-
* namespace `Koine`. Most of the types here should be prefixed by `Next`, e.g.
|
|
26
|
-
* `NextSomeFeature` accessible anywhere from `Koine.NextSomeFeature`
|
|
25
|
+
* [`next.js` pages router](https://nextjs.org/docs/pages) utility type
|
|
27
26
|
*/
|
|
28
|
-
declare
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
declare type NextPageDataStaticPaths<Params extends { [key: string]: any }> = (
|
|
28
|
+
context: import("next").GetStaticPathsContext,
|
|
29
|
+
) =>
|
|
30
|
+
| Promise<NextGetStaticPathsResult<Params>>
|
|
31
|
+
| NextGetStaticPathsResult<Params>;
|
|
33
32
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
* interface Translations {
|
|
41
|
-
* "~": typeof import("./locales/en/~.json");
|
|
42
|
-
* "_": typeof import("./locales/en/_.json");
|
|
43
|
-
* "$team": typeof import("./locales/en/$team.json");
|
|
44
|
-
* "home": typeof import("./locales/en/home.json");
|
|
45
|
-
* "Header": typeof import("./locales/en/Header.json");
|
|
46
|
-
* }
|
|
47
|
-
* }
|
|
48
|
-
* ```
|
|
49
|
-
*
|
|
50
|
-
* Best to follow a convention to name the files which become the namespaces:
|
|
51
|
-
*
|
|
52
|
-
* - `~`: for app wide **urls** translated definitions
|
|
53
|
-
* - `_`: for app wide **common** translations
|
|
54
|
-
* - `${data}`: dollar prefix for static **data** like arrays, objects, .etc
|
|
55
|
-
* - `{route-name}`: lower cased for **route** specific data
|
|
56
|
-
* - `{ComponentName}`: pascal cased for **components** specific data
|
|
57
|
-
*
|
|
58
|
-
* This works through using [type augmentation](https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation)
|
|
59
|
-
* and [merging interfaces](https://www.typescriptlang.org/docs/handbook/declaration-merging.html#merging-interfaces).
|
|
60
|
-
*/
|
|
61
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
62
|
-
interface Translations {}
|
|
63
|
-
}
|
|
33
|
+
/**
|
|
34
|
+
* [`next.js` pages router](https://nextjs.org/docs/pages) utility type
|
|
35
|
+
*/
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
37
|
+
declare type NextPageDataStatic<P extends { [key: string]: any }> =
|
|
38
|
+
import("next").GetStaticProps<P, import("querystring").ParsedUrlQuery>;
|
|
64
39
|
|
|
65
40
|
/**
|
|
66
|
-
*
|
|
67
|
-
* the `koine` ecosystem. For instance Google Analytics globally available
|
|
68
|
-
* variables.
|
|
41
|
+
* [`next.js` pages router](https://nextjs.org/docs/pages) utility type
|
|
69
42
|
*/
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
44
|
+
declare type NextPageDataServer<P extends { [key: string]: any }> =
|
|
45
|
+
import("next").GetServerSideProps<P, import("querystring").ParsedUrlQuery>;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Workaround to re-create the type `RouteProperties` that is not exported by
|
|
49
|
+
* `next.js`
|
|
50
|
+
*/
|
|
51
|
+
declare type NextRouteProperties = Parameters<
|
|
52
|
+
import("next/router").Router["getRouteInfo"]
|
|
53
|
+
>[0]["routeProps"];
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Extend NodeJS `process.env` with variables used by @koine
|
|
57
|
+
*/
|
|
58
|
+
// declare namespace NodeJS {
|
|
59
|
+
// interface ProcessEnv {
|
|
60
|
+
// }
|
|
61
|
+
// }
|
package/utils/load.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function load<T>(component: T, milliseconds: number): Promise<T>;
|
package/12/AnalyticsGoogle.js
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
"use strict";
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
function _export(target, all) {
|
|
7
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
8
|
-
enumerable: true,
|
|
9
|
-
get: all[name]
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
_export(exports, {
|
|
13
|
-
AnalyticsGoogle: function() {
|
|
14
|
-
return AnalyticsGoogle;
|
|
15
|
-
},
|
|
16
|
-
default: function() {
|
|
17
|
-
return _default;
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
|
|
21
|
-
const _jsxruntime = require("react/jsx-runtime");
|
|
22
|
-
const _router = require("next/router");
|
|
23
|
-
const _script = /*#__PURE__*/ _interop_require_default._(require("next/script"));
|
|
24
|
-
const _react = require("react");
|
|
25
|
-
const _gtagPageview = /*#__PURE__*/ _interop_require_default._(require("@koine/browser/gtagPageview"));
|
|
26
|
-
const AnalyticsGoogle = ({ id })=>{
|
|
27
|
-
const uid = id || process.env["NEXT_PUBLIC_GTM_ID"];
|
|
28
|
-
const { events, asPath, query } = (0, _router.useRouter)();
|
|
29
|
-
const [ready, setReady] = (0, _react.useState)(false);
|
|
30
|
-
const [routed, setRouted] = (0, _react.useState)(false);
|
|
31
|
-
// const [url, setUrl] = useState("");
|
|
32
|
-
(0, _react.useEffect)(()=>{
|
|
33
|
-
const handleRouteChange = ()=>{
|
|
34
|
-
setRouted(true);
|
|
35
|
-
};
|
|
36
|
-
events.on("routeChangeComplete", handleRouteChange);
|
|
37
|
-
return ()=>{
|
|
38
|
-
events.off("routeChangeComplete", handleRouteChange);
|
|
39
|
-
};
|
|
40
|
-
}, [
|
|
41
|
-
events
|
|
42
|
-
]);
|
|
43
|
-
(0, _react.useEffect)(()=>{
|
|
44
|
-
if (routed && ready && asPath) {
|
|
45
|
-
// const search = query;
|
|
46
|
-
(0, _gtagPageview.default)(asPath);
|
|
47
|
-
}
|
|
48
|
-
}, [
|
|
49
|
-
asPath,
|
|
50
|
-
query,
|
|
51
|
-
routed,
|
|
52
|
-
ready
|
|
53
|
-
]);
|
|
54
|
-
if (!uid) {
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
|
|
58
|
-
children: [
|
|
59
|
-
/*#__PURE__*/ (0, _jsxruntime.jsx)(_script.default, {
|
|
60
|
-
id: "google-tagmanager",
|
|
61
|
-
src: `https://www.googletagmanager.com/gtag/js?id=${id}`,
|
|
62
|
-
strategy: "afterInteractive",
|
|
63
|
-
onLoad: ()=>setReady(true)
|
|
64
|
-
}),
|
|
65
|
-
/*#__PURE__*/ (0, _jsxruntime.jsx)(_script.default, {
|
|
66
|
-
id: "google-analytics",
|
|
67
|
-
strategy: "afterInteractive",
|
|
68
|
-
children: `
|
|
69
|
-
window.dataLayer = window.dataLayer || [];
|
|
70
|
-
function gtag(){window.dataLayer.push(arguments);}
|
|
71
|
-
gtag('js', new Date());
|
|
72
|
-
|
|
73
|
-
gtag('config', '${id}', { 'send_page_view': false });
|
|
74
|
-
`
|
|
75
|
-
})
|
|
76
|
-
]
|
|
77
|
-
});
|
|
78
|
-
};
|
|
79
|
-
const _default = AnalyticsGoogle;
|