gatsby-theme-q3 3.1.0 → 3.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,109 +0,0 @@
1
- const { get } = require('lodash');
2
-
3
- const getId = (v) => get(v, 'contentful_id');
4
-
5
- const genCursor = (a = [], i = 0) => ({
6
- isFirst: i === 0,
7
- isLast: i === a.length - 1,
8
- next: a[i + 1],
9
- prev: a[i - 1],
10
- first: a[0],
11
- last: a[a.length - 1],
12
- });
13
-
14
- const joinArchiveUrlWithPageNumber = (url, page) =>
15
- `${url}/${page}`;
16
-
17
- const getPreviousArchiveUrl = (archiveUrl, page) => {
18
- if (page === 2) return archiveUrl;
19
- if (page !== 1)
20
- return joinArchiveUrlWithPageNumber(
21
- archiveUrl,
22
- page - 1,
23
- );
24
-
25
- return null;
26
- };
27
-
28
- const getNextArchiveUrl = (
29
- archiveUrl,
30
- page,
31
- totalNumberOfPages,
32
- ) => {
33
- if (page < totalNumberOfPages)
34
- return joinArchiveUrlWithPageNumber(
35
- archiveUrl,
36
- page + 1,
37
- );
38
-
39
- return null;
40
- };
41
-
42
- const getCurrentArchiveUrl = (archiveUrl, page) =>
43
- page < 2
44
- ? archiveUrl
45
- : joinArchiveUrlWithPageNumber(archiveUrl, page);
46
-
47
- const getNumberOfPages = (
48
- entries = [],
49
- postsPerPage = 15,
50
- ) => {
51
- const len = Array.isArray(entries) ? entries.length : 0;
52
- return Math.ceil(len / postsPerPage);
53
- };
54
-
55
- const appendSiblingsToContext = (entries) =>
56
- entries.map((node, i) => {
57
- const cursor = genCursor(entries, i);
58
- const prev = getId(
59
- cursor.isFirst ? cursor.last : cursor.prev,
60
- );
61
-
62
- const next = getId(
63
- cursor.isLast ? cursor.first : cursor.next,
64
- );
65
-
66
- return {
67
- ...node,
68
- prev,
69
- next,
70
- };
71
- });
72
-
73
- const paginateArchiveContext = (entries = [], pathName) => {
74
- const postsPerPage = 15;
75
- const numPages = getNumberOfPages(entries, postsPerPage);
76
- const output = [];
77
-
78
- for (let i = 0; i < numPages; i += 1) {
79
- const page = i + 1; // always offset for pretty URLs
80
- const path = getCurrentArchiveUrl(pathName, page);
81
- const prev = getPreviousArchiveUrl(pathName, page);
82
- const next = getNextArchiveUrl(
83
- pathName,
84
- page,
85
- numPages,
86
- );
87
-
88
- output.push({
89
- limit: postsPerPage,
90
- skip: i * postsPerPage,
91
- total: numPages,
92
- pageNum: i,
93
- path,
94
- next,
95
- prev,
96
- });
97
- }
98
-
99
- return output;
100
- };
101
-
102
- module.exports = {
103
- appendSiblingsToContext,
104
- genCursor,
105
- getNextArchiveUrl,
106
- getNumberOfPages,
107
- getPreviousArchiveUrl,
108
- paginateArchiveContext,
109
- };
package/helpers/setup.js DELETED
@@ -1,60 +0,0 @@
1
- const path = require('path');
2
- const fs = require('fs');
3
- const { compact, get } = require('lodash');
4
- const loadContent = require('./loadContent');
5
- const loadTheme = require('./loadTheme');
6
-
7
- const getFile =
8
- (directory) =>
9
- (possibleFileNames = []) =>
10
- possibleFileNames.reduce((acc, curr) => {
11
- if (acc) return acc;
12
- const filename = path.resolve(directory, curr);
13
- return fs.existsSync(filename) ? filename : undefined;
14
- }, undefined);
15
-
16
- module.exports = (
17
- siteMetadata,
18
- plugins = [],
19
- workingDirection = process.cwd(),
20
- ) => {
21
- const f = getFile(workingDirection);
22
-
23
- const locale = loadContent(f(['locale', 'lang']));
24
- const theme = loadTheme(
25
- f(['theme.js', 'gatsby-theme.js', 'mui.js']),
26
- );
27
-
28
- return {
29
- siteMetadata: {
30
- appDirectory: '/app',
31
- author: '3merge',
32
- description: '',
33
- siteUrl: 'https://3merge.ca/',
34
- ...siteMetadata,
35
- },
36
- plugins: compact(
37
- [
38
- {
39
- resolve: 'gatsby-theme-q3',
40
- options: {
41
- icon: f([
42
- 'static/favicon.png',
43
- 'static/favicon.jpg',
44
- ]),
45
-
46
- brandingColor: get(
47
- theme,
48
- 'palette.primary.main',
49
- '#000',
50
- ),
51
-
52
- locale,
53
- theme,
54
- ...siteMetadata,
55
- },
56
- },
57
- ].concat(plugins),
58
- ),
59
- };
60
- };
package/helpers/slug.js DELETED
@@ -1,31 +0,0 @@
1
- const slugify = require('slugify');
2
-
3
- const getSlug = (target) => {
4
- const keys = ['slug', 'title', 'name', 'contentful_id'];
5
-
6
- let slug;
7
- let i = 0;
8
-
9
- do {
10
- const v = target[keys[i]];
11
- if (v)
12
- slug = slugify(v, {
13
- replacement: '-',
14
- remove: undefined,
15
- lower: true,
16
- strict: true,
17
- });
18
-
19
- i += 1;
20
- } while (!slug);
21
-
22
- return slug;
23
- };
24
-
25
- const getDirectoryPath = (v) => {
26
- if (typeof v !== 'string') return '/';
27
- return v.startsWith('/') ? v : `/${v}`;
28
- };
29
-
30
- module.exports = (node = {}, basepath = '/') =>
31
- [getDirectoryPath(basepath), getSlug(node)].join('/');
@@ -1,24 +0,0 @@
1
- const slug = require('./slug');
2
-
3
- module.exports = (
4
- dir,
5
- resourceName,
6
- { createFieldExtension, createTypes },
7
- ) => {
8
- // mirrors reach router prop
9
- // an unlikely name otherwise
10
- const resolverKey = 'to';
11
-
12
- createFieldExtension({
13
- name: resolverKey,
14
- extend: () => ({
15
- resolve: (source) => slug(source, dir),
16
- }),
17
- });
18
-
19
- createTypes(`
20
- type ${resourceName} implements Node {
21
- ${resolverKey}: String @${resolverKey}
22
- }
23
- `);
24
- };
@@ -1,42 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _q3UiLocale = require("q3-ui-locale");
9
-
10
- var _propTypes = _interopRequireDefault(require("prop-types"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- const registeri18ResourceBundles = contentData => {
15
- if (!contentData || !('en' in contentData)) return;
16
- Object.entries(contentData).forEach(([key, bundle]) => {
17
- Object.entries(bundle).forEach(([namespace, data]) => {
18
- _q3UiLocale.i18n.addResourceBundle(key, namespace, data, true, true);
19
- });
20
- });
21
- };
22
-
23
- const LocaleBundles = ({
24
- children,
25
- locale
26
- }) => {
27
- registeri18ResourceBundles(locale);
28
- return children;
29
- };
30
-
31
- LocaleBundles.defaultProps = {
32
- children: null,
33
- locale: {}
34
- };
35
- LocaleBundles.propTypes = {
36
- // eslint-disable-next-line
37
- children: _propTypes.default.any,
38
- // eslint-disable-next-line
39
- locale: _propTypes.default.object
40
- };
41
- var _default = LocaleBundles;
42
- exports.default = _default;
@@ -1,31 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _react = _interopRequireDefault(require("react"));
9
-
10
- var _q3UiLocale = require("q3-ui-locale");
11
-
12
- var _q3UiPermissions = require("q3-ui-permissions");
13
-
14
- var _q3UiRest = require("q3-ui-rest");
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- const useLocale = () => {
19
- var _React$useContext, _React$useContext$sta;
20
-
21
- const profile = (_React$useContext = _react.default.useContext(_q3UiPermissions.AuthContext)) === null || _React$useContext === void 0 ? void 0 : (_React$useContext$sta = _React$useContext.state) === null || _React$useContext$sta === void 0 ? void 0 : _React$useContext$sta.profile;
22
- const lng = profile === null || profile === void 0 ? void 0 : profile.lang;
23
- (0, _q3UiRest.useTimezoneInterceptor)(profile === null || profile === void 0 ? void 0 : profile.timezone);
24
-
25
- _react.default.useEffect(() => {
26
- if (lng && _q3UiLocale.i18n.resolvedLanguage) _q3UiLocale.i18n.changeLanguage(lng);
27
- }, [lng]);
28
- };
29
-
30
- var _default = useLocale;
31
- exports.default = _default;
@@ -1,37 +0,0 @@
1
- import { i18n } from 'q3-ui-locale';
2
- import PropTypes from 'prop-types';
3
-
4
- const registeri18ResourceBundles = (contentData) => {
5
- if (!contentData || !('en' in contentData)) return;
6
-
7
- Object.entries(contentData).forEach(([key, bundle]) => {
8
- Object.entries(bundle).forEach(([namespace, data]) => {
9
- i18n.addResourceBundle(
10
- key,
11
- namespace,
12
- data,
13
- true,
14
- true,
15
- );
16
- });
17
- });
18
- };
19
-
20
- const LocaleBundles = ({ children, locale }) => {
21
- registeri18ResourceBundles(locale);
22
- return children;
23
- };
24
-
25
- LocaleBundles.defaultProps = {
26
- children: null,
27
- locale: {},
28
- };
29
-
30
- LocaleBundles.propTypes = {
31
- // eslint-disable-next-line
32
- children: PropTypes.any,
33
- // eslint-disable-next-line
34
- locale: PropTypes.object,
35
- };
36
-
37
- export default LocaleBundles;
@@ -1,20 +0,0 @@
1
- import React from 'react';
2
- import { i18n } from 'q3-ui-locale';
3
- import { AuthContext } from 'q3-ui-permissions';
4
- import { useTimezoneInterceptor } from 'q3-ui-rest';
5
-
6
- const useLocale = () => {
7
- const profile =
8
- React.useContext(AuthContext)?.state?.profile;
9
-
10
- const lng = profile?.lang;
11
-
12
- useTimezoneInterceptor(profile?.timezone);
13
-
14
- React.useEffect(() => {
15
- if (lng && i18n.resolvedLanguage)
16
- i18n.changeLanguage(lng);
17
- }, [lng]);
18
- };
19
-
20
- export default useLocale;