@blaze-cms/nextjs-tools 0.146.0-node18-tooltips.32 → 0.146.0-node18-tooltips.33

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/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [0.146.0-node18-tooltips.33](https://github.com/thebyte9/blaze/compare/v0.146.0-node18-tooltips.32...v0.146.0-node18-tooltips.33) (2025-12-15)
7
+
8
+
9
+ ### Features
10
+
11
+ * add hash observer for delayed anchor scrolling in SPAs ([#5038](https://github.com/thebyte9/blaze/issues/5038)) ([6414bc4](https://github.com/thebyte9/blaze/commit/6414bc4be7ace0de088499dc9fe4eeb3747d366e))
12
+
13
+
14
+
15
+
16
+
6
17
  # [0.146.0-node18-tooltips.32](https://github.com/thebyte9/blaze/compare/v0.146.0-node18-tooltips.31...v0.146.0-node18-tooltips.32) (2025-12-15)
7
18
 
8
19
  **Note:** Version bump only for package @blaze-cms/nextjs-tools
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.define-property.js");
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _useHashObserver = _interopRequireDefault(require("../hooks/use-hash-observer"));
10
+ function HashObserver() {
11
+ (0, _useHashObserver["default"])();
12
+ return null;
13
+ }
14
+ var _default = exports["default"] = HashObserver;
15
+ //# sourceMappingURL=HashObserver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HashObserver.js","names":["_useHashObserver","_interopRequireDefault","require","HashObserver","useHashObserver","_default","exports"],"sources":["../../src/components/HashObserver.js"],"sourcesContent":["import useHashObserver from '../hooks/use-hash-observer';\n\nfunction HashObserver() {\n useHashObserver();\n return null;\n}\n\nexport default HashObserver;\n"],"mappings":";;;;;;;;AAAA,IAAAA,gBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,SAASC,YAAYA,CAAA,EAAG;EACtB,IAAAC,2BAAe,EAAC,CAAC;EACjB,OAAO,IAAI;AACb;AAAC,IAAAC,QAAA,GAAAC,OAAA,cAEcH,YAAY","ignoreList":[]}
@@ -11,5 +11,12 @@ Object.defineProperty(exports, "DebugSidebar", {
11
11
  return _DebugSidebar["default"];
12
12
  }
13
13
  });
14
+ Object.defineProperty(exports, "HashObserver", {
15
+ enumerable: true,
16
+ get: function get() {
17
+ return _HashObserver["default"];
18
+ }
19
+ });
14
20
  var _DebugSidebar = _interopRequireDefault(require("./DebugSidebar"));
21
+ var _HashObserver = _interopRequireDefault(require("./HashObserver"));
15
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_DebugSidebar","_interopRequireDefault","require"],"sources":["../../src/components/index.js"],"sourcesContent":["import DebugSidebar from './DebugSidebar';\n\nexport { DebugSidebar };\n"],"mappings":";;;;;;;;;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_DebugSidebar","_interopRequireDefault","require","_HashObserver"],"sources":["../../src/components/index.js"],"sourcesContent":["import DebugSidebar from './DebugSidebar';\nimport HashObserver from './HashObserver';\n\nexport { DebugSidebar, HashObserver };\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAF,sBAAA,CAAAC,OAAA","ignoreList":[]}
@@ -42,6 +42,7 @@ var _dynamic = _interopRequireDefault(require("next/dynamic"));
42
42
  var _nextjsComponents = require("@blaze-cms/nextjs-components");
43
43
  var _blaze = _interopRequireDefault(require("../blaze.config"));
44
44
  var _helpers = require("../helpers");
45
+ var _HashObserver = _interopRequireDefault(require("../components/HashObserver"));
45
46
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
46
47
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
47
48
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
@@ -127,7 +128,7 @@ function getWrappedApp(isSsr, config, blazeApp, App) {
127
128
  this.setApolloClient();
128
129
  return /*#__PURE__*/_react["default"].createElement(ErrorBoundary, {
129
130
  app: this.blazeApp
130
- }, /*#__PURE__*/_react["default"].createElement(_nextjsComponents.AppContext.Provider, {
131
+ }, /*#__PURE__*/_react["default"].createElement(_HashObserver["default"], null), /*#__PURE__*/_react["default"].createElement(_nextjsComponents.AppContext.Provider, {
131
132
  value: {
132
133
  blazeApp: this.blazeApp
133
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"withBlaze.js","names":["_react","_interopRequireWildcard","require","_ssr","_coreUi","_interopRequireDefault","_coreAuthUi","_propTypes","_dynamic","_nextjsComponents","_blaze","_helpers","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","prototype","valueOf","call","_getRequireWildcardCache","WeakMap","__esModule","_typeof2","has","get","n","__proto__","a","u","hasOwnProperty","i","set","ErrorBoundary","dynamic","Promise","resolve","then","APP_LOG_NAMESPACE_MAIN","getWrappedApp","isSsr","config","blazeApp","App","_Class","getApolloClient","ctx","requestApp","apolloClient","getClient","createClient","getRequestApp","getBlazeUi","_Component2","props","_this","_classCallCheck2","state","appLoaded","initComplete","_inherits2","_createClass2","key","value","_componentDidMount","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","init","setState","stop","componentDidMount","setApolloClient","_this$props","apolloState","processedBlazeEntities","setupCheckAccessToken","render","createElement","app","AppContext","Provider","_extends2","_getInitialProps","_callee2","context","_Component","router","AppTree","appProps","errorProps","_appProps","_appProps$pageProps","pageProps","mainProps","renderAndCheckPromises","sortedState","_callee2$","_context2","Component","req","res","events","emit","getInitialProps","sent","getDataFromTree","openQueryChecker","checkOpenQueries","race","t0","getErrorMessage","errorCode","statusCode","error","log","cache","extract","sort","reduce","acc","getProcessedEntities","_x","PropTypes","object","undefined","withBlaze","buildConfig","_ref","_ref$forceSsr","forceSsr","window","blazeConfig","logNameSpace","_default","exports"],"sources":["../../src/hoc/withBlaze.js"],"sourcesContent":["// see: https://github.com/zeit/next.js/blob/canary/examples/with-apollo-auth/lib/withApollo.js\nimport React, { Component } from 'react';\nimport { getDataFromTree } from '@apollo/client/react/ssr';\nimport getBlazeUi from '@blaze-cms/core-ui';\nimport { setupCheckAccessToken } from '@blaze-cms/core-auth-ui';\nimport PropTypes from 'prop-types';\nimport dynamic from 'next/dynamic'; // Next.js dynamic\nimport { AppContext } from '@blaze-cms/nextjs-components';\nimport blazeConfig from '../blaze.config';\nimport { getErrorMessage } from '../helpers';\n\nconst ErrorBoundary = dynamic(() => import('@blaze-cms/core-errors-ui'));\n\nconst APP_LOG_NAMESPACE_MAIN = 'main';\n\nfunction getWrappedApp(isSsr, config, blazeApp, App) {\n function getApolloClient(ctx, requestApp) {\n return ctx.apolloClient || requestApp.getClient() || requestApp.createClient();\n }\n\n function getRequestApp(requestApp) {\n return !requestApp && isSsr ? getBlazeUi({ config }) : blazeApp;\n }\n return class extends Component {\n static displayName = 'withBlaze(App)';\n\n static propTypes = {\n apolloState: PropTypes.object,\n apolloClient: PropTypes.object,\n processedBlazeEntities: PropTypes.object\n };\n\n static defaultProps = {\n apolloState: {},\n apolloClient: null,\n processedBlazeEntities: undefined\n };\n\n static async getInitialProps(context) {\n const { Component: _Component, router, AppTree, ctx } = context;\n let appProps = {};\n let errorProps = {};\n\n let requestApp = ctx.blazeApp;\n requestApp = getRequestApp(requestApp);\n\n requestApp.ctx.router = router;\n requestApp.ctx.req = ctx.req;\n requestApp.ctx.res = ctx.res;\n\n await blazeApp.init();\n await requestApp.init();\n\n const apolloClient = getApolloClient(ctx, requestApp);\n\n ctx.apolloClient = apolloClient;\n ctx.blazeApp = requestApp;\n\n requestApp.events.emit('page-load:get-initial-props:before', { ctx });\n\n if (App.getInitialProps) {\n appProps = await App.getInitialProps(context);\n }\n\n const { pageProps = {} } = appProps;\n const mainProps = {\n ...appProps,\n pageProps: { ...pageProps, ...errorProps }\n };\n\n if (!isSsr) return mainProps;\n\n try {\n const renderAndCheckPromises = [\n getDataFromTree(\n <AppTree\n {...appProps}\n Component={_Component}\n router={router}\n apolloClient={apolloClient}\n />\n ),\n requestApp.openQueryChecker.checkOpenQueries()\n ];\n // race is so that if getDataFromTree gets stuck the checkOpenQueries will resolve when outstanding queries are done\n await Promise.race(renderAndCheckPromises);\n } catch (error) {\n errorProps = getErrorMessage(error);\n if (errorProps.errorCode) ctx.res.statusCode = errorProps.errorCode;\n ctx.blazeApp.events.emit('monitor:log', { error });\n requestApp.log.error('Error while running `getDataFromTree`', error);\n }\n\n const apolloState = apolloClient.cache.extract();\n const sortedState = Object.keys(apolloState)\n .sort()\n .reduce((acc, key) => {\n acc[key] = apolloState[key];\n return acc;\n }, {});\n\n return {\n ...mainProps,\n pageProps: { ...mainProps.pageProps, ...errorProps },\n apolloState: sortedState,\n processedBlazeEntities: blazeApp.getProcessedEntities()\n };\n }\n\n constructor(props) {\n super(props);\n this.apolloClient = props.apolloClient;\n this.state = {\n appLoaded: isSsr || blazeApp.initComplete()\n };\n this.blazeApp = blazeApp;\n }\n\n async componentDidMount() {\n if (blazeApp.initComplete()) return;\n\n await blazeApp.init();\n\n this.setState({\n appLoaded: blazeApp.initComplete()\n });\n }\n\n setApolloClient() {\n if (!this.apolloClient) {\n const { apolloState, processedBlazeEntities } = this.props;\n this.apolloClient = blazeApp.createClient(apolloState, processedBlazeEntities);\n setupCheckAccessToken(this.apolloClient);\n }\n }\n\n render() {\n const { appLoaded } = this.state;\n\n if (!appLoaded && !isSsr) return '...loading';\n\n this.setApolloClient();\n\n return (\n <ErrorBoundary app={this.blazeApp}>\n <AppContext.Provider value={{ blazeApp: this.blazeApp }}>\n <App {...this.props} apolloClient={this.apolloClient} blazeApp={this.blazeApp} />\n </AppContext.Provider>\n </ErrorBoundary>\n );\n }\n };\n}\n\nconst withBlaze = (App, buildConfig, { forceSsr = false } = {}) => {\n const isSsr = forceSsr || typeof window === 'undefined';\n const config = buildConfig ? buildConfig(blazeConfig) : blazeConfig;\n const blazeApp = getBlazeUi({ config, logNameSpace: APP_LOG_NAMESPACE_MAIN });\n blazeApp.init();\n\n return getWrappedApp(isSsr, config, blazeApp, App);\n};\n\nexport default withBlaze;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"withBlaze.js","names":["_react","_interopRequireWildcard","require","_ssr","_coreUi","_interopRequireDefault","_coreAuthUi","_propTypes","_dynamic","_nextjsComponents","_blaze","_helpers","_HashObserver","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","prototype","valueOf","call","_getRequireWildcardCache","WeakMap","__esModule","_typeof2","has","get","n","__proto__","a","u","hasOwnProperty","i","set","ErrorBoundary","dynamic","Promise","resolve","then","APP_LOG_NAMESPACE_MAIN","getWrappedApp","isSsr","config","blazeApp","App","_Class","getApolloClient","ctx","requestApp","apolloClient","getClient","createClient","getRequestApp","getBlazeUi","_Component2","props","_this","_classCallCheck2","state","appLoaded","initComplete","_inherits2","_createClass2","key","value","_componentDidMount","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","init","setState","stop","componentDidMount","setApolloClient","_this$props","apolloState","processedBlazeEntities","setupCheckAccessToken","render","createElement","app","AppContext","Provider","_extends2","_getInitialProps","_callee2","context","_Component","router","AppTree","appProps","errorProps","_appProps","_appProps$pageProps","pageProps","mainProps","renderAndCheckPromises","sortedState","_callee2$","_context2","Component","req","res","events","emit","getInitialProps","sent","getDataFromTree","openQueryChecker","checkOpenQueries","race","t0","getErrorMessage","errorCode","statusCode","error","log","cache","extract","sort","reduce","acc","getProcessedEntities","_x","PropTypes","object","undefined","withBlaze","buildConfig","_ref","_ref$forceSsr","forceSsr","window","blazeConfig","logNameSpace","_default","exports"],"sources":["../../src/hoc/withBlaze.js"],"sourcesContent":["// see: https://github.com/zeit/next.js/blob/canary/examples/with-apollo-auth/lib/withApollo.js\nimport React, { Component } from 'react';\nimport { getDataFromTree } from '@apollo/client/react/ssr';\nimport getBlazeUi from '@blaze-cms/core-ui';\nimport { setupCheckAccessToken } from '@blaze-cms/core-auth-ui';\nimport PropTypes from 'prop-types';\nimport dynamic from 'next/dynamic'; // Next.js dynamic\nimport { AppContext } from '@blaze-cms/nextjs-components';\nimport blazeConfig from '../blaze.config';\nimport { getErrorMessage } from '../helpers';\nimport HashObserver from '../components/HashObserver';\n\nconst ErrorBoundary = dynamic(() => import('@blaze-cms/core-errors-ui'));\n\nconst APP_LOG_NAMESPACE_MAIN = 'main';\n\nfunction getWrappedApp(isSsr, config, blazeApp, App) {\n function getApolloClient(ctx, requestApp) {\n return ctx.apolloClient || requestApp.getClient() || requestApp.createClient();\n }\n\n function getRequestApp(requestApp) {\n return !requestApp && isSsr ? getBlazeUi({ config }) : blazeApp;\n }\n return class extends Component {\n static displayName = 'withBlaze(App)';\n\n static propTypes = {\n apolloState: PropTypes.object,\n apolloClient: PropTypes.object,\n processedBlazeEntities: PropTypes.object\n };\n\n static defaultProps = {\n apolloState: {},\n apolloClient: null,\n processedBlazeEntities: undefined\n };\n\n static async getInitialProps(context) {\n const { Component: _Component, router, AppTree, ctx } = context;\n let appProps = {};\n let errorProps = {};\n\n let requestApp = ctx.blazeApp;\n requestApp = getRequestApp(requestApp);\n\n requestApp.ctx.router = router;\n requestApp.ctx.req = ctx.req;\n requestApp.ctx.res = ctx.res;\n\n await blazeApp.init();\n await requestApp.init();\n\n const apolloClient = getApolloClient(ctx, requestApp);\n\n ctx.apolloClient = apolloClient;\n ctx.blazeApp = requestApp;\n\n requestApp.events.emit('page-load:get-initial-props:before', { ctx });\n\n if (App.getInitialProps) {\n appProps = await App.getInitialProps(context);\n }\n\n const { pageProps = {} } = appProps;\n const mainProps = {\n ...appProps,\n pageProps: { ...pageProps, ...errorProps }\n };\n\n if (!isSsr) return mainProps;\n\n try {\n const renderAndCheckPromises = [\n getDataFromTree(\n <AppTree\n {...appProps}\n Component={_Component}\n router={router}\n apolloClient={apolloClient}\n />\n ),\n requestApp.openQueryChecker.checkOpenQueries()\n ];\n // race is so that if getDataFromTree gets stuck the checkOpenQueries will resolve when outstanding queries are done\n await Promise.race(renderAndCheckPromises);\n } catch (error) {\n errorProps = getErrorMessage(error);\n if (errorProps.errorCode) ctx.res.statusCode = errorProps.errorCode;\n ctx.blazeApp.events.emit('monitor:log', { error });\n requestApp.log.error('Error while running `getDataFromTree`', error);\n }\n\n const apolloState = apolloClient.cache.extract();\n const sortedState = Object.keys(apolloState)\n .sort()\n .reduce((acc, key) => {\n acc[key] = apolloState[key];\n return acc;\n }, {});\n\n return {\n ...mainProps,\n pageProps: { ...mainProps.pageProps, ...errorProps },\n apolloState: sortedState,\n processedBlazeEntities: blazeApp.getProcessedEntities()\n };\n }\n\n constructor(props) {\n super(props);\n this.apolloClient = props.apolloClient;\n this.state = {\n appLoaded: isSsr || blazeApp.initComplete()\n };\n this.blazeApp = blazeApp;\n }\n\n async componentDidMount() {\n if (blazeApp.initComplete()) return;\n\n await blazeApp.init();\n\n this.setState({\n appLoaded: blazeApp.initComplete()\n });\n }\n\n setApolloClient() {\n if (!this.apolloClient) {\n const { apolloState, processedBlazeEntities } = this.props;\n this.apolloClient = blazeApp.createClient(apolloState, processedBlazeEntities);\n setupCheckAccessToken(this.apolloClient);\n }\n }\n\n render() {\n const { appLoaded } = this.state;\n\n if (!appLoaded && !isSsr) return '...loading';\n\n this.setApolloClient();\n\n return (\n <ErrorBoundary app={this.blazeApp}>\n <HashObserver />\n <AppContext.Provider value={{ blazeApp: this.blazeApp }}>\n <App {...this.props} apolloClient={this.apolloClient} blazeApp={this.blazeApp} />\n </AppContext.Provider>\n </ErrorBoundary>\n );\n }\n };\n}\n\nconst withBlaze = (App, buildConfig, { forceSsr = false } = {}) => {\n const isSsr = forceSsr || typeof window === 'undefined';\n const config = buildConfig ? buildConfig(blazeConfig) : blazeConfig;\n const blazeApp = getBlazeUi({ config, logNameSpace: APP_LOG_NAMESPACE_MAIN });\n blazeApp.init();\n\n return getWrappedApp(isSsr, config, blazeApp, App);\n};\n\nexport default withBlaze;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.define-property.js");
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ require("core-js/modules/es.array.index-of.js");
10
+ require("core-js/modules/es.array.slice.js");
11
+ require("core-js/modules/es.string.starts-with.js");
12
+ require("core-js/modules/web.timers.js");
13
+ var _react = require("react");
14
+ var _router = _interopRequireDefault(require("next/router"));
15
+ var DEFAULT_TIMEOUT = 3000;
16
+ function useHashObserver() {
17
+ var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_TIMEOUT;
18
+ (0, _react.useEffect)(function () {
19
+ if (typeof window === 'undefined') return undefined;
20
+ var observer = null;
21
+ var timeoutId = null;
22
+ var currentHash = null;
23
+ var isObserving = false;
24
+ var scrollToElement = function scrollToElement(hash) {
25
+ if (!hash) return false;
26
+ var id = hash.startsWith('#') ? hash.slice(1) : hash;
27
+ var element = document.getElementById(id);
28
+ if (element) {
29
+ element.scrollIntoView();
30
+ return true;
31
+ }
32
+ return false;
33
+ };
34
+ var stopObserving = function stopObserving() {
35
+ if (observer) {
36
+ observer.disconnect();
37
+ observer = null;
38
+ }
39
+ if (timeoutId) {
40
+ clearTimeout(timeoutId);
41
+ timeoutId = null;
42
+ }
43
+ isObserving = false;
44
+ currentHash = null;
45
+ };
46
+ var startObserving = function startObserving(hash) {
47
+ if (isObserving) {
48
+ stopObserving();
49
+ }
50
+ currentHash = hash;
51
+ isObserving = true;
52
+ if (scrollToElement(hash)) {
53
+ stopObserving();
54
+ return;
55
+ }
56
+ observer = new MutationObserver(function () {
57
+ if (scrollToElement(currentHash)) {
58
+ stopObserving();
59
+ }
60
+ });
61
+ var targetNode = document.getElementById('__next') || document.getElementById('root') || document.body;
62
+ observer.observe(targetNode, {
63
+ childList: true,
64
+ subtree: true
65
+ });
66
+ timeoutId = setTimeout(function () {
67
+ stopObserving();
68
+ }, timeout);
69
+ };
70
+ var handleRouteChange = function handleRouteChange(url) {
71
+ var hashIndex = url.indexOf('#');
72
+ if (hashIndex === -1) {
73
+ stopObserving();
74
+ return;
75
+ }
76
+ var hash = url.slice(hashIndex);
77
+ if (hash) {
78
+ startObserving(hash);
79
+ }
80
+ };
81
+ var handleHashChange = function handleHashChange(url) {
82
+ var hashIndex = url.indexOf('#');
83
+ if (hashIndex === -1) {
84
+ stopObserving();
85
+ return;
86
+ }
87
+ var hash = url.slice(hashIndex);
88
+ if (hash) {
89
+ startObserving(hash);
90
+ } else {
91
+ stopObserving();
92
+ }
93
+ };
94
+ _router["default"].events.on('routeChangeComplete', handleRouteChange);
95
+ _router["default"].events.on('hashChangeComplete', handleHashChange);
96
+ if (window.location.hash) {
97
+ startObserving(window.location.hash);
98
+ }
99
+ return function () {
100
+ stopObserving();
101
+ _router["default"].events.off('routeChangeComplete', handleRouteChange);
102
+ _router["default"].events.off('hashChangeComplete', handleHashChange);
103
+ };
104
+ }, [timeout]);
105
+ }
106
+ var _default = exports["default"] = useHashObserver;
107
+ //# sourceMappingURL=use-hash-observer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-hash-observer.js","names":["_react","require","_router","_interopRequireDefault","DEFAULT_TIMEOUT","useHashObserver","timeout","arguments","length","undefined","useEffect","window","observer","timeoutId","currentHash","isObserving","scrollToElement","hash","id","startsWith","slice","element","document","getElementById","scrollIntoView","stopObserving","disconnect","clearTimeout","startObserving","MutationObserver","targetNode","body","observe","childList","subtree","setTimeout","handleRouteChange","url","hashIndex","indexOf","handleHashChange","Router","events","on","location","off","_default","exports"],"sources":["../../src/hooks/use-hash-observer.js"],"sourcesContent":["import { useEffect } from 'react';\nimport Router from 'next/router';\n\nconst DEFAULT_TIMEOUT = 3000;\n\nfunction useHashObserver(timeout = DEFAULT_TIMEOUT) {\n useEffect(\n () => {\n if (typeof window === 'undefined') return undefined;\n\n let observer = null;\n let timeoutId = null;\n let currentHash = null;\n let isObserving = false;\n\n const scrollToElement = hash => {\n if (!hash) return false;\n\n const id = hash.startsWith('#') ? hash.slice(1) : hash;\n const element = document.getElementById(id);\n\n if (element) {\n element.scrollIntoView();\n return true;\n }\n\n return false;\n };\n\n const stopObserving = () => {\n if (observer) {\n observer.disconnect();\n observer = null;\n }\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n isObserving = false;\n currentHash = null;\n };\n\n const startObserving = hash => {\n if (isObserving) {\n stopObserving();\n }\n\n currentHash = hash;\n isObserving = true;\n\n if (scrollToElement(hash)) {\n stopObserving();\n return;\n }\n\n observer = new MutationObserver(() => {\n if (scrollToElement(currentHash)) {\n stopObserving();\n }\n });\n\n const targetNode =\n document.getElementById('__next') || document.getElementById('root') || document.body;\n observer.observe(targetNode, {\n childList: true,\n subtree: true\n });\n\n timeoutId = setTimeout(() => {\n stopObserving();\n }, timeout);\n };\n\n const handleRouteChange = url => {\n const hashIndex = url.indexOf('#');\n if (hashIndex === -1) {\n stopObserving();\n return;\n }\n\n const hash = url.slice(hashIndex);\n if (hash) {\n startObserving(hash);\n }\n };\n\n const handleHashChange = url => {\n const hashIndex = url.indexOf('#');\n if (hashIndex === -1) {\n stopObserving();\n return;\n }\n\n const hash = url.slice(hashIndex);\n if (hash) {\n startObserving(hash);\n } else {\n stopObserving();\n }\n };\n\n Router.events.on('routeChangeComplete', handleRouteChange);\n Router.events.on('hashChangeComplete', handleHashChange);\n\n if (window.location.hash) {\n startObserving(window.location.hash);\n }\n\n return () => {\n stopObserving();\n Router.events.off('routeChangeComplete', handleRouteChange);\n Router.events.off('hashChangeComplete', handleHashChange);\n };\n },\n [timeout]\n );\n}\n\nexport default useHashObserver;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import useHashObserver from '../hooks/use-hash-observer';
2
+ function HashObserver() {
3
+ useHashObserver();
4
+ return null;
5
+ }
6
+ export default HashObserver;
7
+ //# sourceMappingURL=HashObserver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HashObserver.js","names":["useHashObserver","HashObserver"],"sources":["../../src/components/HashObserver.js"],"sourcesContent":["import useHashObserver from '../hooks/use-hash-observer';\n\nfunction HashObserver() {\n useHashObserver();\n return null;\n}\n\nexport default HashObserver;\n"],"mappings":"AAAA,OAAOA,eAAe,MAAM,4BAA4B;AAExD,SAASC,YAAYA,CAAA,EAAG;EACtBD,eAAe,CAAC,CAAC;EACjB,OAAO,IAAI;AACb;AAEA,eAAeC,YAAY","ignoreList":[]}
@@ -1,3 +1,4 @@
1
1
  import DebugSidebar from './DebugSidebar';
2
- export { DebugSidebar };
2
+ import HashObserver from './HashObserver';
3
+ export { DebugSidebar, HashObserver };
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["DebugSidebar"],"sources":["../../src/components/index.js"],"sourcesContent":["import DebugSidebar from './DebugSidebar';\n\nexport { DebugSidebar };\n"],"mappings":"AAAA,OAAOA,YAAY,MAAM,gBAAgB;AAEzC,SAASA,YAAY","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["DebugSidebar","HashObserver"],"sources":["../../src/components/index.js"],"sourcesContent":["import DebugSidebar from './DebugSidebar';\nimport HashObserver from './HashObserver';\n\nexport { DebugSidebar, HashObserver };\n"],"mappings":"AAAA,OAAOA,YAAY,MAAM,gBAAgB;AACzC,OAAOC,YAAY,MAAM,gBAAgB;AAEzC,SAASD,YAAY,EAAEC,YAAY","ignoreList":[]}
@@ -12,6 +12,7 @@ import dynamic from 'next/dynamic'; // Next.js dynamic
12
12
  import { AppContext } from '@blaze-cms/nextjs-components';
13
13
  import blazeConfig from '../blaze.config';
14
14
  import { getErrorMessage } from '../helpers';
15
+ import HashObserver from '../components/HashObserver';
15
16
  const ErrorBoundary = dynamic(() => import('@blaze-cms/core-errors-ui'));
16
17
  const APP_LOG_NAMESPACE_MAIN = 'main';
17
18
  function getWrappedApp(isSsr, config, blazeApp, App) {
@@ -117,7 +118,7 @@ function getWrappedApp(isSsr, config, blazeApp, App) {
117
118
  this.setApolloClient();
118
119
  return /*#__PURE__*/React.createElement(ErrorBoundary, {
119
120
  app: this.blazeApp
120
- }, /*#__PURE__*/React.createElement(AppContext.Provider, {
121
+ }, /*#__PURE__*/React.createElement(HashObserver, null), /*#__PURE__*/React.createElement(AppContext.Provider, {
121
122
  value: {
122
123
  blazeApp: this.blazeApp
123
124
  }
@@ -1 +1 @@
1
- {"version":3,"file":"withBlaze.js","names":["React","Component","getDataFromTree","getBlazeUi","setupCheckAccessToken","PropTypes","dynamic","AppContext","blazeConfig","getErrorMessage","ErrorBoundary","APP_LOG_NAMESPACE_MAIN","getWrappedApp","isSsr","config","blazeApp","App","_Class","getApolloClient","ctx","requestApp","apolloClient","getClient","createClient","getRequestApp","getInitialProps","context","_Component","router","AppTree","appProps","errorProps","req","res","init","events","emit","pageProps","mainProps","_objectSpread","renderAndCheckPromises","createElement","_extends","openQueryChecker","checkOpenQueries","Promise","race","error","errorCode","statusCode","log","apolloState","cache","extract","sortedState","Object","keys","sort","reduce","acc","key","processedBlazeEntities","getProcessedEntities","constructor","props","state","appLoaded","initComplete","componentDidMount","setState","setApolloClient","render","app","Provider","value","_defineProperty","object","undefined","withBlaze","buildConfig","forceSsr","window","logNameSpace"],"sources":["../../src/hoc/withBlaze.js"],"sourcesContent":["// see: https://github.com/zeit/next.js/blob/canary/examples/with-apollo-auth/lib/withApollo.js\nimport React, { Component } from 'react';\nimport { getDataFromTree } from '@apollo/client/react/ssr';\nimport getBlazeUi from '@blaze-cms/core-ui';\nimport { setupCheckAccessToken } from '@blaze-cms/core-auth-ui';\nimport PropTypes from 'prop-types';\nimport dynamic from 'next/dynamic'; // Next.js dynamic\nimport { AppContext } from '@blaze-cms/nextjs-components';\nimport blazeConfig from '../blaze.config';\nimport { getErrorMessage } from '../helpers';\n\nconst ErrorBoundary = dynamic(() => import('@blaze-cms/core-errors-ui'));\n\nconst APP_LOG_NAMESPACE_MAIN = 'main';\n\nfunction getWrappedApp(isSsr, config, blazeApp, App) {\n function getApolloClient(ctx, requestApp) {\n return ctx.apolloClient || requestApp.getClient() || requestApp.createClient();\n }\n\n function getRequestApp(requestApp) {\n return !requestApp && isSsr ? getBlazeUi({ config }) : blazeApp;\n }\n return class extends Component {\n static displayName = 'withBlaze(App)';\n\n static propTypes = {\n apolloState: PropTypes.object,\n apolloClient: PropTypes.object,\n processedBlazeEntities: PropTypes.object\n };\n\n static defaultProps = {\n apolloState: {},\n apolloClient: null,\n processedBlazeEntities: undefined\n };\n\n static async getInitialProps(context) {\n const { Component: _Component, router, AppTree, ctx } = context;\n let appProps = {};\n let errorProps = {};\n\n let requestApp = ctx.blazeApp;\n requestApp = getRequestApp(requestApp);\n\n requestApp.ctx.router = router;\n requestApp.ctx.req = ctx.req;\n requestApp.ctx.res = ctx.res;\n\n await blazeApp.init();\n await requestApp.init();\n\n const apolloClient = getApolloClient(ctx, requestApp);\n\n ctx.apolloClient = apolloClient;\n ctx.blazeApp = requestApp;\n\n requestApp.events.emit('page-load:get-initial-props:before', { ctx });\n\n if (App.getInitialProps) {\n appProps = await App.getInitialProps(context);\n }\n\n const { pageProps = {} } = appProps;\n const mainProps = {\n ...appProps,\n pageProps: { ...pageProps, ...errorProps }\n };\n\n if (!isSsr) return mainProps;\n\n try {\n const renderAndCheckPromises = [\n getDataFromTree(\n <AppTree\n {...appProps}\n Component={_Component}\n router={router}\n apolloClient={apolloClient}\n />\n ),\n requestApp.openQueryChecker.checkOpenQueries()\n ];\n // race is so that if getDataFromTree gets stuck the checkOpenQueries will resolve when outstanding queries are done\n await Promise.race(renderAndCheckPromises);\n } catch (error) {\n errorProps = getErrorMessage(error);\n if (errorProps.errorCode) ctx.res.statusCode = errorProps.errorCode;\n ctx.blazeApp.events.emit('monitor:log', { error });\n requestApp.log.error('Error while running `getDataFromTree`', error);\n }\n\n const apolloState = apolloClient.cache.extract();\n const sortedState = Object.keys(apolloState)\n .sort()\n .reduce((acc, key) => {\n acc[key] = apolloState[key];\n return acc;\n }, {});\n\n return {\n ...mainProps,\n pageProps: { ...mainProps.pageProps, ...errorProps },\n apolloState: sortedState,\n processedBlazeEntities: blazeApp.getProcessedEntities()\n };\n }\n\n constructor(props) {\n super(props);\n this.apolloClient = props.apolloClient;\n this.state = {\n appLoaded: isSsr || blazeApp.initComplete()\n };\n this.blazeApp = blazeApp;\n }\n\n async componentDidMount() {\n if (blazeApp.initComplete()) return;\n\n await blazeApp.init();\n\n this.setState({\n appLoaded: blazeApp.initComplete()\n });\n }\n\n setApolloClient() {\n if (!this.apolloClient) {\n const { apolloState, processedBlazeEntities } = this.props;\n this.apolloClient = blazeApp.createClient(apolloState, processedBlazeEntities);\n setupCheckAccessToken(this.apolloClient);\n }\n }\n\n render() {\n const { appLoaded } = this.state;\n\n if (!appLoaded && !isSsr) return '...loading';\n\n this.setApolloClient();\n\n return (\n <ErrorBoundary app={this.blazeApp}>\n <AppContext.Provider value={{ blazeApp: this.blazeApp }}>\n <App {...this.props} apolloClient={this.apolloClient} blazeApp={this.blazeApp} />\n </AppContext.Provider>\n </ErrorBoundary>\n );\n }\n };\n}\n\nconst withBlaze = (App, buildConfig, { forceSsr = false } = {}) => {\n const isSsr = forceSsr || typeof window === 'undefined';\n const config = buildConfig ? buildConfig(blazeConfig) : blazeConfig;\n const blazeApp = getBlazeUi({ config, logNameSpace: APP_LOG_NAMESPACE_MAIN });\n blazeApp.init();\n\n return getWrappedApp(isSsr, config, blazeApp, App);\n};\n\nexport default withBlaze;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"withBlaze.js","names":["React","Component","getDataFromTree","getBlazeUi","setupCheckAccessToken","PropTypes","dynamic","AppContext","blazeConfig","getErrorMessage","HashObserver","ErrorBoundary","APP_LOG_NAMESPACE_MAIN","getWrappedApp","isSsr","config","blazeApp","App","_Class","getApolloClient","ctx","requestApp","apolloClient","getClient","createClient","getRequestApp","getInitialProps","context","_Component","router","AppTree","appProps","errorProps","req","res","init","events","emit","pageProps","mainProps","_objectSpread","renderAndCheckPromises","createElement","_extends","openQueryChecker","checkOpenQueries","Promise","race","error","errorCode","statusCode","log","apolloState","cache","extract","sortedState","Object","keys","sort","reduce","acc","key","processedBlazeEntities","getProcessedEntities","constructor","props","state","appLoaded","initComplete","componentDidMount","setState","setApolloClient","render","app","Provider","value","_defineProperty","object","undefined","withBlaze","buildConfig","forceSsr","window","logNameSpace"],"sources":["../../src/hoc/withBlaze.js"],"sourcesContent":["// see: https://github.com/zeit/next.js/blob/canary/examples/with-apollo-auth/lib/withApollo.js\nimport React, { Component } from 'react';\nimport { getDataFromTree } from '@apollo/client/react/ssr';\nimport getBlazeUi from '@blaze-cms/core-ui';\nimport { setupCheckAccessToken } from '@blaze-cms/core-auth-ui';\nimport PropTypes from 'prop-types';\nimport dynamic from 'next/dynamic'; // Next.js dynamic\nimport { AppContext } from '@blaze-cms/nextjs-components';\nimport blazeConfig from '../blaze.config';\nimport { getErrorMessage } from '../helpers';\nimport HashObserver from '../components/HashObserver';\n\nconst ErrorBoundary = dynamic(() => import('@blaze-cms/core-errors-ui'));\n\nconst APP_LOG_NAMESPACE_MAIN = 'main';\n\nfunction getWrappedApp(isSsr, config, blazeApp, App) {\n function getApolloClient(ctx, requestApp) {\n return ctx.apolloClient || requestApp.getClient() || requestApp.createClient();\n }\n\n function getRequestApp(requestApp) {\n return !requestApp && isSsr ? getBlazeUi({ config }) : blazeApp;\n }\n return class extends Component {\n static displayName = 'withBlaze(App)';\n\n static propTypes = {\n apolloState: PropTypes.object,\n apolloClient: PropTypes.object,\n processedBlazeEntities: PropTypes.object\n };\n\n static defaultProps = {\n apolloState: {},\n apolloClient: null,\n processedBlazeEntities: undefined\n };\n\n static async getInitialProps(context) {\n const { Component: _Component, router, AppTree, ctx } = context;\n let appProps = {};\n let errorProps = {};\n\n let requestApp = ctx.blazeApp;\n requestApp = getRequestApp(requestApp);\n\n requestApp.ctx.router = router;\n requestApp.ctx.req = ctx.req;\n requestApp.ctx.res = ctx.res;\n\n await blazeApp.init();\n await requestApp.init();\n\n const apolloClient = getApolloClient(ctx, requestApp);\n\n ctx.apolloClient = apolloClient;\n ctx.blazeApp = requestApp;\n\n requestApp.events.emit('page-load:get-initial-props:before', { ctx });\n\n if (App.getInitialProps) {\n appProps = await App.getInitialProps(context);\n }\n\n const { pageProps = {} } = appProps;\n const mainProps = {\n ...appProps,\n pageProps: { ...pageProps, ...errorProps }\n };\n\n if (!isSsr) return mainProps;\n\n try {\n const renderAndCheckPromises = [\n getDataFromTree(\n <AppTree\n {...appProps}\n Component={_Component}\n router={router}\n apolloClient={apolloClient}\n />\n ),\n requestApp.openQueryChecker.checkOpenQueries()\n ];\n // race is so that if getDataFromTree gets stuck the checkOpenQueries will resolve when outstanding queries are done\n await Promise.race(renderAndCheckPromises);\n } catch (error) {\n errorProps = getErrorMessage(error);\n if (errorProps.errorCode) ctx.res.statusCode = errorProps.errorCode;\n ctx.blazeApp.events.emit('monitor:log', { error });\n requestApp.log.error('Error while running `getDataFromTree`', error);\n }\n\n const apolloState = apolloClient.cache.extract();\n const sortedState = Object.keys(apolloState)\n .sort()\n .reduce((acc, key) => {\n acc[key] = apolloState[key];\n return acc;\n }, {});\n\n return {\n ...mainProps,\n pageProps: { ...mainProps.pageProps, ...errorProps },\n apolloState: sortedState,\n processedBlazeEntities: blazeApp.getProcessedEntities()\n };\n }\n\n constructor(props) {\n super(props);\n this.apolloClient = props.apolloClient;\n this.state = {\n appLoaded: isSsr || blazeApp.initComplete()\n };\n this.blazeApp = blazeApp;\n }\n\n async componentDidMount() {\n if (blazeApp.initComplete()) return;\n\n await blazeApp.init();\n\n this.setState({\n appLoaded: blazeApp.initComplete()\n });\n }\n\n setApolloClient() {\n if (!this.apolloClient) {\n const { apolloState, processedBlazeEntities } = this.props;\n this.apolloClient = blazeApp.createClient(apolloState, processedBlazeEntities);\n setupCheckAccessToken(this.apolloClient);\n }\n }\n\n render() {\n const { appLoaded } = this.state;\n\n if (!appLoaded && !isSsr) return '...loading';\n\n this.setApolloClient();\n\n return (\n <ErrorBoundary app={this.blazeApp}>\n <HashObserver />\n <AppContext.Provider value={{ blazeApp: this.blazeApp }}>\n <App {...this.props} apolloClient={this.apolloClient} blazeApp={this.blazeApp} />\n </AppContext.Provider>\n </ErrorBoundary>\n );\n }\n };\n}\n\nconst withBlaze = (App, buildConfig, { forceSsr = false } = {}) => {\n const isSsr = forceSsr || typeof window === 'undefined';\n const config = buildConfig ? buildConfig(blazeConfig) : blazeConfig;\n const blazeApp = getBlazeUi({ config, logNameSpace: APP_LOG_NAMESPACE_MAIN });\n blazeApp.init();\n\n return getWrappedApp(isSsr, config, blazeApp, App);\n};\n\nexport default withBlaze;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,94 @@
1
+ import { useEffect } from 'react';
2
+ import Router from 'next/router';
3
+ const DEFAULT_TIMEOUT = 3000;
4
+ function useHashObserver(timeout = DEFAULT_TIMEOUT) {
5
+ useEffect(() => {
6
+ if (typeof window === 'undefined') return undefined;
7
+ let observer = null;
8
+ let timeoutId = null;
9
+ let currentHash = null;
10
+ let isObserving = false;
11
+ const scrollToElement = hash => {
12
+ if (!hash) return false;
13
+ const id = hash.startsWith('#') ? hash.slice(1) : hash;
14
+ const element = document.getElementById(id);
15
+ if (element) {
16
+ element.scrollIntoView();
17
+ return true;
18
+ }
19
+ return false;
20
+ };
21
+ const stopObserving = () => {
22
+ if (observer) {
23
+ observer.disconnect();
24
+ observer = null;
25
+ }
26
+ if (timeoutId) {
27
+ clearTimeout(timeoutId);
28
+ timeoutId = null;
29
+ }
30
+ isObserving = false;
31
+ currentHash = null;
32
+ };
33
+ const startObserving = hash => {
34
+ if (isObserving) {
35
+ stopObserving();
36
+ }
37
+ currentHash = hash;
38
+ isObserving = true;
39
+ if (scrollToElement(hash)) {
40
+ stopObserving();
41
+ return;
42
+ }
43
+ observer = new MutationObserver(() => {
44
+ if (scrollToElement(currentHash)) {
45
+ stopObserving();
46
+ }
47
+ });
48
+ const targetNode = document.getElementById('__next') || document.getElementById('root') || document.body;
49
+ observer.observe(targetNode, {
50
+ childList: true,
51
+ subtree: true
52
+ });
53
+ timeoutId = setTimeout(() => {
54
+ stopObserving();
55
+ }, timeout);
56
+ };
57
+ const handleRouteChange = url => {
58
+ const hashIndex = url.indexOf('#');
59
+ if (hashIndex === -1) {
60
+ stopObserving();
61
+ return;
62
+ }
63
+ const hash = url.slice(hashIndex);
64
+ if (hash) {
65
+ startObserving(hash);
66
+ }
67
+ };
68
+ const handleHashChange = url => {
69
+ const hashIndex = url.indexOf('#');
70
+ if (hashIndex === -1) {
71
+ stopObserving();
72
+ return;
73
+ }
74
+ const hash = url.slice(hashIndex);
75
+ if (hash) {
76
+ startObserving(hash);
77
+ } else {
78
+ stopObserving();
79
+ }
80
+ };
81
+ Router.events.on('routeChangeComplete', handleRouteChange);
82
+ Router.events.on('hashChangeComplete', handleHashChange);
83
+ if (window.location.hash) {
84
+ startObserving(window.location.hash);
85
+ }
86
+ return () => {
87
+ stopObserving();
88
+ Router.events.off('routeChangeComplete', handleRouteChange);
89
+ Router.events.off('hashChangeComplete', handleHashChange);
90
+ };
91
+ }, [timeout]);
92
+ }
93
+ export default useHashObserver;
94
+ //# sourceMappingURL=use-hash-observer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-hash-observer.js","names":["useEffect","Router","DEFAULT_TIMEOUT","useHashObserver","timeout","window","undefined","observer","timeoutId","currentHash","isObserving","scrollToElement","hash","id","startsWith","slice","element","document","getElementById","scrollIntoView","stopObserving","disconnect","clearTimeout","startObserving","MutationObserver","targetNode","body","observe","childList","subtree","setTimeout","handleRouteChange","url","hashIndex","indexOf","handleHashChange","events","on","location","off"],"sources":["../../src/hooks/use-hash-observer.js"],"sourcesContent":["import { useEffect } from 'react';\nimport Router from 'next/router';\n\nconst DEFAULT_TIMEOUT = 3000;\n\nfunction useHashObserver(timeout = DEFAULT_TIMEOUT) {\n useEffect(\n () => {\n if (typeof window === 'undefined') return undefined;\n\n let observer = null;\n let timeoutId = null;\n let currentHash = null;\n let isObserving = false;\n\n const scrollToElement = hash => {\n if (!hash) return false;\n\n const id = hash.startsWith('#') ? hash.slice(1) : hash;\n const element = document.getElementById(id);\n\n if (element) {\n element.scrollIntoView();\n return true;\n }\n\n return false;\n };\n\n const stopObserving = () => {\n if (observer) {\n observer.disconnect();\n observer = null;\n }\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n isObserving = false;\n currentHash = null;\n };\n\n const startObserving = hash => {\n if (isObserving) {\n stopObserving();\n }\n\n currentHash = hash;\n isObserving = true;\n\n if (scrollToElement(hash)) {\n stopObserving();\n return;\n }\n\n observer = new MutationObserver(() => {\n if (scrollToElement(currentHash)) {\n stopObserving();\n }\n });\n\n const targetNode =\n document.getElementById('__next') || document.getElementById('root') || document.body;\n observer.observe(targetNode, {\n childList: true,\n subtree: true\n });\n\n timeoutId = setTimeout(() => {\n stopObserving();\n }, timeout);\n };\n\n const handleRouteChange = url => {\n const hashIndex = url.indexOf('#');\n if (hashIndex === -1) {\n stopObserving();\n return;\n }\n\n const hash = url.slice(hashIndex);\n if (hash) {\n startObserving(hash);\n }\n };\n\n const handleHashChange = url => {\n const hashIndex = url.indexOf('#');\n if (hashIndex === -1) {\n stopObserving();\n return;\n }\n\n const hash = url.slice(hashIndex);\n if (hash) {\n startObserving(hash);\n } else {\n stopObserving();\n }\n };\n\n Router.events.on('routeChangeComplete', handleRouteChange);\n Router.events.on('hashChangeComplete', handleHashChange);\n\n if (window.location.hash) {\n startObserving(window.location.hash);\n }\n\n return () => {\n stopObserving();\n Router.events.off('routeChangeComplete', handleRouteChange);\n Router.events.off('hashChangeComplete', handleHashChange);\n };\n },\n [timeout]\n );\n}\n\nexport default useHashObserver;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blaze-cms/nextjs-tools",
3
- "version": "0.146.0-node18-tooltips.32",
3
+ "version": "0.146.0-node18-tooltips.33",
4
4
  "description": "Blaze nextjs tools",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-es/index.js",
@@ -36,13 +36,13 @@
36
36
  "@blaze-cms/plugin-auth-fe": "0.146.0-node18-tooltips.32",
37
37
  "@blaze-cms/plugin-auth-local-fe": "0.146.0-node18-tooltips.32",
38
38
  "@blaze-cms/plugin-chart": "0.146.0-node18-tooltips.19",
39
- "@blaze-cms/plugin-google-maps-fe": "0.146.0-node18-tooltips.32",
40
- "@blaze-cms/plugin-gtm-fe": "0.146.0-node18-tooltips.32",
41
- "@blaze-cms/plugin-page-builder-fe": "0.146.0-node18-tooltips.32",
39
+ "@blaze-cms/plugin-google-maps-fe": "0.146.0-node18-tooltips.33",
40
+ "@blaze-cms/plugin-gtm-fe": "0.146.0-node18-tooltips.33",
41
+ "@blaze-cms/plugin-page-builder-fe": "0.146.0-node18-tooltips.33",
42
42
  "@blaze-cms/plugin-preview-fe": "0.146.0-node18-tooltips.32",
43
- "@blaze-cms/plugin-search-ui": "0.146.0-node18-tooltips.32",
43
+ "@blaze-cms/plugin-search-ui": "0.146.0-node18-tooltips.33",
44
44
  "@blaze-cms/plugin-structured-data-fe": "0.146.0-node18-tooltips.25",
45
- "@blaze-cms/react-page-builder": "0.146.0-node18-tooltips.32",
45
+ "@blaze-cms/react-page-builder": "0.146.0-node18-tooltips.33",
46
46
  "@blaze-cms/setup-ui": "0.146.0-node18-tooltips.0",
47
47
  "@blaze-react/switches": "0.8.0-alpha.112",
48
48
  "autoprefixer": "^10.2.3",
@@ -71,5 +71,5 @@
71
71
  "lib/*",
72
72
  "lib-es/*"
73
73
  ],
74
- "gitHead": "1955dabbe3de0e3617e06d605753571807161240"
74
+ "gitHead": "716b7ae2c9ac96e4515eaf2d64f9c85f6d0458d1"
75
75
  }
@@ -0,0 +1,8 @@
1
+ import useHashObserver from '../hooks/use-hash-observer';
2
+
3
+ function HashObserver() {
4
+ useHashObserver();
5
+ return null;
6
+ }
7
+
8
+ export default HashObserver;
@@ -1,3 +1,4 @@
1
1
  import DebugSidebar from './DebugSidebar';
2
+ import HashObserver from './HashObserver';
2
3
 
3
- export { DebugSidebar };
4
+ export { DebugSidebar, HashObserver };
@@ -8,6 +8,7 @@ import dynamic from 'next/dynamic'; // Next.js dynamic
8
8
  import { AppContext } from '@blaze-cms/nextjs-components';
9
9
  import blazeConfig from '../blaze.config';
10
10
  import { getErrorMessage } from '../helpers';
11
+ import HashObserver from '../components/HashObserver';
11
12
 
12
13
  const ErrorBoundary = dynamic(() => import('@blaze-cms/core-errors-ui'));
13
14
 
@@ -143,6 +144,7 @@ function getWrappedApp(isSsr, config, blazeApp, App) {
143
144
 
144
145
  return (
145
146
  <ErrorBoundary app={this.blazeApp}>
147
+ <HashObserver />
146
148
  <AppContext.Provider value={{ blazeApp: this.blazeApp }}>
147
149
  <App {...this.props} apolloClient={this.apolloClient} blazeApp={this.blazeApp} />
148
150
  </AppContext.Provider>
@@ -0,0 +1,119 @@
1
+ import { useEffect } from 'react';
2
+ import Router from 'next/router';
3
+
4
+ const DEFAULT_TIMEOUT = 3000;
5
+
6
+ function useHashObserver(timeout = DEFAULT_TIMEOUT) {
7
+ useEffect(
8
+ () => {
9
+ if (typeof window === 'undefined') return undefined;
10
+
11
+ let observer = null;
12
+ let timeoutId = null;
13
+ let currentHash = null;
14
+ let isObserving = false;
15
+
16
+ const scrollToElement = hash => {
17
+ if (!hash) return false;
18
+
19
+ const id = hash.startsWith('#') ? hash.slice(1) : hash;
20
+ const element = document.getElementById(id);
21
+
22
+ if (element) {
23
+ element.scrollIntoView();
24
+ return true;
25
+ }
26
+
27
+ return false;
28
+ };
29
+
30
+ const stopObserving = () => {
31
+ if (observer) {
32
+ observer.disconnect();
33
+ observer = null;
34
+ }
35
+ if (timeoutId) {
36
+ clearTimeout(timeoutId);
37
+ timeoutId = null;
38
+ }
39
+ isObserving = false;
40
+ currentHash = null;
41
+ };
42
+
43
+ const startObserving = hash => {
44
+ if (isObserving) {
45
+ stopObserving();
46
+ }
47
+
48
+ currentHash = hash;
49
+ isObserving = true;
50
+
51
+ if (scrollToElement(hash)) {
52
+ stopObserving();
53
+ return;
54
+ }
55
+
56
+ observer = new MutationObserver(() => {
57
+ if (scrollToElement(currentHash)) {
58
+ stopObserving();
59
+ }
60
+ });
61
+
62
+ const targetNode =
63
+ document.getElementById('__next') || document.getElementById('root') || document.body;
64
+ observer.observe(targetNode, {
65
+ childList: true,
66
+ subtree: true
67
+ });
68
+
69
+ timeoutId = setTimeout(() => {
70
+ stopObserving();
71
+ }, timeout);
72
+ };
73
+
74
+ const handleRouteChange = url => {
75
+ const hashIndex = url.indexOf('#');
76
+ if (hashIndex === -1) {
77
+ stopObserving();
78
+ return;
79
+ }
80
+
81
+ const hash = url.slice(hashIndex);
82
+ if (hash) {
83
+ startObserving(hash);
84
+ }
85
+ };
86
+
87
+ const handleHashChange = url => {
88
+ const hashIndex = url.indexOf('#');
89
+ if (hashIndex === -1) {
90
+ stopObserving();
91
+ return;
92
+ }
93
+
94
+ const hash = url.slice(hashIndex);
95
+ if (hash) {
96
+ startObserving(hash);
97
+ } else {
98
+ stopObserving();
99
+ }
100
+ };
101
+
102
+ Router.events.on('routeChangeComplete', handleRouteChange);
103
+ Router.events.on('hashChangeComplete', handleHashChange);
104
+
105
+ if (window.location.hash) {
106
+ startObserving(window.location.hash);
107
+ }
108
+
109
+ return () => {
110
+ stopObserving();
111
+ Router.events.off('routeChangeComplete', handleRouteChange);
112
+ Router.events.off('hashChangeComplete', handleHashChange);
113
+ };
114
+ },
115
+ [timeout]
116
+ );
117
+ }
118
+
119
+ export default useHashObserver;
@@ -0,0 +1,260 @@
1
+ /**
2
+ * @jest-environment jsdom
3
+ */
4
+ import React from 'react';
5
+ import '@testing-library/jest-dom/extend-expect';
6
+ import { render, act } from '@testing-library/react';
7
+ import Router from 'next/router';
8
+ import useHashObserver from '../../../../src/hooks/use-hash-observer';
9
+
10
+ jest.mock('next/router', () => ({
11
+ events: {
12
+ on: jest.fn(),
13
+ off: jest.fn()
14
+ }
15
+ }));
16
+
17
+ function TestComponent({ timeout }) {
18
+ useHashObserver(timeout);
19
+ return <div data-testid="test-component">Test</div>;
20
+ }
21
+
22
+ describe('useHashObserver', () => {
23
+ beforeEach(() => {
24
+ document.body.innerHTML = '';
25
+ jest.clearAllMocks();
26
+
27
+ delete window.location;
28
+ window.location = { hash: '' };
29
+
30
+ Element.prototype.scrollIntoView = jest.fn();
31
+
32
+ Router.events = {
33
+ on: jest.fn(),
34
+ off: jest.fn()
35
+ };
36
+ });
37
+
38
+ afterEach(() => {
39
+ jest.clearAllTimers();
40
+ jest.useRealTimers();
41
+ });
42
+
43
+ it('should register router event listeners on mount', () => {
44
+ const { unmount } = render(<TestComponent />);
45
+
46
+ expect(Router.events.on).toHaveBeenCalledWith('routeChangeComplete', expect.any(Function));
47
+ expect(Router.events.on).toHaveBeenCalledWith('hashChangeComplete', expect.any(Function));
48
+
49
+ unmount();
50
+ });
51
+
52
+ it('should cleanup event listeners on unmount', () => {
53
+ const { unmount } = render(<TestComponent />);
54
+
55
+ unmount();
56
+
57
+ expect(Router.events.off).toHaveBeenCalledWith('routeChangeComplete', expect.any(Function));
58
+ expect(Router.events.off).toHaveBeenCalledWith('hashChangeComplete', expect.any(Function));
59
+ });
60
+
61
+ it('should scroll to element if it exists immediately', async () => {
62
+ jest.useFakeTimers();
63
+
64
+ const testElement = document.createElement('div');
65
+ testElement.id = 'test-section';
66
+ document.body.appendChild(testElement);
67
+
68
+ window.location.hash = '#test-section';
69
+
70
+ act(() => {
71
+ render(<TestComponent />);
72
+ });
73
+
74
+ act(() => {
75
+ jest.runAllTimers();
76
+ });
77
+
78
+ expect(testElement.scrollIntoView).toHaveBeenCalledWith();
79
+ });
80
+
81
+ it('should handle route change with hash', () => {
82
+ const testElement = document.createElement('div');
83
+ testElement.id = 'route-section';
84
+ document.body.appendChild(testElement);
85
+
86
+ render(<TestComponent />);
87
+
88
+ const routeChangeHandler = Router.events.on.mock.calls.find(
89
+ call => call[0] === 'routeChangeComplete'
90
+ )[1];
91
+
92
+ act(() => {
93
+ routeChangeHandler('/page#route-section');
94
+ });
95
+
96
+ expect(testElement.scrollIntoView).toHaveBeenCalled();
97
+ });
98
+
99
+ it('should handle route change without hash', () => {
100
+ render(<TestComponent />);
101
+
102
+ const routeChangeHandler = Router.events.on.mock.calls.find(
103
+ call => call[0] === 'routeChangeComplete'
104
+ )[1];
105
+
106
+ expect(() => {
107
+ act(() => {
108
+ routeChangeHandler('/page');
109
+ });
110
+ }).not.toThrow();
111
+ });
112
+
113
+ it('should handle hash change', () => {
114
+ const testElement = document.createElement('div');
115
+ testElement.id = 'hash-section';
116
+ document.body.appendChild(testElement);
117
+
118
+ render(<TestComponent />);
119
+
120
+ const hashChangeHandler = Router.events.on.mock.calls.find(
121
+ call => call[0] === 'hashChangeComplete'
122
+ )[1];
123
+
124
+ act(() => {
125
+ hashChangeHandler('/page#hash-section');
126
+ });
127
+
128
+ expect(testElement.scrollIntoView).toHaveBeenCalled();
129
+ });
130
+
131
+ it('should stop observing after timeout', () => {
132
+ jest.useFakeTimers();
133
+
134
+ render(<TestComponent timeout={1000} />);
135
+
136
+ const hashChangeHandler = Router.events.on.mock.calls.find(
137
+ call => call[0] === 'hashChangeComplete'
138
+ )[1];
139
+
140
+ act(() => {
141
+ hashChangeHandler('/page#nonexistent');
142
+ });
143
+
144
+ act(() => {
145
+ jest.advanceTimersByTime(1100);
146
+ });
147
+
148
+ const lateElement = document.createElement('div');
149
+ lateElement.id = 'nonexistent';
150
+ document.body.appendChild(lateElement);
151
+
152
+ expect(lateElement.scrollIntoView).not.toHaveBeenCalled();
153
+ });
154
+
155
+ it('should handle rapid hash changes', () => {
156
+ jest.useFakeTimers();
157
+
158
+ const element2 = document.createElement('div');
159
+ element2.id = 'section-2';
160
+ document.body.appendChild(element2);
161
+
162
+ render(<TestComponent />);
163
+
164
+ const hashChangeHandler = Router.events.on.mock.calls.find(
165
+ call => call[0] === 'hashChangeComplete'
166
+ )[1];
167
+
168
+ act(() => {
169
+ hashChangeHandler('/page#section-1');
170
+ });
171
+
172
+ act(() => {
173
+ hashChangeHandler('/page#section-2');
174
+ });
175
+
176
+ expect(element2.scrollIntoView).toHaveBeenCalled();
177
+ });
178
+
179
+ it('should handle empty hash gracefully', () => {
180
+ render(<TestComponent />);
181
+
182
+ const hashChangeHandler = Router.events.on.mock.calls.find(
183
+ call => call[0] === 'hashChangeComplete'
184
+ )[1];
185
+
186
+ expect(() => {
187
+ act(() => {
188
+ hashChangeHandler('/page');
189
+ });
190
+ }).not.toThrow();
191
+ });
192
+
193
+ it('should use custom timeout value', () => {
194
+ jest.useFakeTimers();
195
+
196
+ const customTimeout = 5000;
197
+ render(<TestComponent timeout={customTimeout} />);
198
+
199
+ const hashChangeHandler = Router.events.on.mock.calls.find(
200
+ call => call[0] === 'hashChangeComplete'
201
+ )[1];
202
+
203
+ act(() => {
204
+ hashChangeHandler('/page#nonexistent');
205
+ });
206
+
207
+ act(() => {
208
+ jest.advanceTimersByTime(4999);
209
+ });
210
+
211
+ const element = document.createElement('div');
212
+ element.id = 'nonexistent';
213
+ document.body.appendChild(element);
214
+
215
+ act(() => {
216
+ jest.advanceTimersByTime(1);
217
+ });
218
+
219
+ expect(element.scrollIntoView).not.toHaveBeenCalled();
220
+ });
221
+
222
+ it('should verify observer stops after timeout', () => {
223
+ jest.useFakeTimers();
224
+
225
+ render(<TestComponent timeout={1000} />);
226
+
227
+ const hashChangeHandler = Router.events.on.mock.calls.find(
228
+ call => call[0] === 'hashChangeComplete'
229
+ )[1];
230
+
231
+ act(() => {
232
+ hashChangeHandler('/page#delayed-element');
233
+ });
234
+
235
+ act(() => {
236
+ jest.advanceTimersByTime(1000);
237
+ });
238
+
239
+ const element = document.createElement('div');
240
+ element.id = 'delayed-element';
241
+ document.body.appendChild(element);
242
+
243
+ act(() => {
244
+ jest.advanceTimersByTime(100);
245
+ });
246
+
247
+ expect(element.scrollIntoView).not.toHaveBeenCalled();
248
+
249
+ const anotherElement = document.createElement('div');
250
+ anotherElement.id = 'another-element';
251
+ document.body.appendChild(anotherElement);
252
+
253
+ act(() => {
254
+ jest.advanceTimersByTime(100);
255
+ });
256
+
257
+ expect(element.scrollIntoView).not.toHaveBeenCalled();
258
+ expect(anotherElement.scrollIntoView).not.toHaveBeenCalled();
259
+ });
260
+ });