@plone/volto 17.0.0-alpha.5 → 17.0.0-alpha.7

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.
Files changed (71) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/CHANGELOG.md +91 -13
  3. package/CONTRIBUTING.md +1 -1
  4. package/README.md +4 -4
  5. package/locales/de/LC_MESSAGES/volto.po +17 -17
  6. package/locales/de.json +1 -1
  7. package/package.json +3 -2
  8. package/packages/volto-slate/package.json +1 -1
  9. package/src/actions/language/language.js +8 -8
  10. package/src/components/manage/Add/Add.jsx +2 -2
  11. package/src/components/manage/Blocks/Listing/Edit.jsx +0 -14
  12. package/src/components/manage/Blocks/Listing/getAsyncData.js +10 -2
  13. package/src/components/manage/Blocks/Listing/withQuerystringResults.jsx +18 -13
  14. package/src/components/manage/Blocks/Search/SearchBlockView.jsx +2 -1
  15. package/src/components/manage/Blocks/Search/components/DateRangeFacet.jsx +4 -1
  16. package/src/components/manage/Contents/Contents.jsx +16 -14
  17. package/src/components/manage/Controlpanels/Controlpanels.jsx +190 -224
  18. package/src/components/manage/Controlpanels/Controlpanels.test.jsx +46 -7
  19. package/src/components/manage/Form/InlineForm.jsx +39 -9
  20. package/src/components/manage/Form/InlineFormState.js +8 -0
  21. package/src/components/manage/Multilingual/CreateTranslation.jsx +2 -2
  22. package/src/components/manage/Multilingual/TranslationObject.jsx +4 -3
  23. package/src/components/manage/Preferences/PersonalPreferences.jsx +2 -2
  24. package/src/components/manage/Toolbar/Types.jsx +2 -2
  25. package/src/components/manage/Widgets/DatetimeWidget.jsx +9 -5
  26. package/src/components/manage/Widgets/ObjectListWidget.jsx +3 -8
  27. package/src/components/manage/Widgets/RecurrenceWidget/ByDayField.jsx +2 -1
  28. package/src/components/manage/Widgets/RecurrenceWidget/MonthOfTheYearField.jsx +2 -1
  29. package/src/components/manage/Widgets/RecurrenceWidget/Occurences.jsx +2 -1
  30. package/src/components/manage/Widgets/RecurrenceWidget/RecurrenceWidget.jsx +7 -2
  31. package/src/components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthField.jsx +2 -1
  32. package/src/components/theme/Footer/Footer.jsx +2 -13
  33. package/src/components/theme/Icon/Icon.jsx +2 -2
  34. package/src/components/theme/LanguageSelector/LanguageSelector.js +8 -3
  35. package/src/components/theme/Login/Login.jsx +1 -0
  36. package/src/components/theme/Logo/Logo.jsx +2 -1
  37. package/src/components/theme/MultilingualRedirector/MultilingualRedirector.jsx +2 -2
  38. package/src/components/theme/Navigation/NavItem.jsx +4 -2
  39. package/src/components/theme/Sitemap/Sitemap.jsx +5 -3
  40. package/src/components/theme/View/EventDatesInfo.jsx +2 -1
  41. package/src/components/theme/Widgets/DateWidget.jsx +2 -1
  42. package/src/components/theme/Widgets/DatetimeWidget.jsx +2 -1
  43. package/src/config/index.js +1 -0
  44. package/src/helpers/Robots/Robots.js +16 -1
  45. package/src/helpers/Url/Url.js +8 -3
  46. package/src/helpers/Url/Url.test.js +14 -0
  47. package/src/helpers/Utils/Utils.js +38 -13
  48. package/src/helpers/Utils/Utils.test.js +4 -4
  49. package/src/helpers/index.js +7 -2
  50. package/src/middleware/Api.test.js +54 -0
  51. package/src/middleware/api.js +8 -4
  52. package/src/server.jsx +28 -23
  53. package/test-setup-config.js +1 -0
  54. package/theme/themes/pastanaga/extras/sidebar.less +4 -0
  55. package/.changelog.draft +0 -13
  56. package/.editorconfig +0 -36
  57. package/.storybook/main.js +0 -127
  58. package/.storybook/manager.js +0 -15
  59. package/.storybook/preview.js +0 -21
  60. package/.storybook/static/previewImage.svg +0 -48
  61. package/.vale.ini +0 -10
  62. package/.yarnrc.yml +0 -5
  63. package/jsdoc.json +0 -16
  64. package/netlify.toml +0 -5
  65. package/pyvenv.cfg +0 -3
  66. package/share/man/man1/ttx.1 +0 -225
  67. package/styles/Vocab/Base/accept.txt +0 -0
  68. package/styles/Vocab/Base/reject.txt +0 -0
  69. package/styles/Vocab/Plone/accept.txt +0 -10
  70. package/styles/Vocab/Plone/reject.txt +0 -5
  71. package/towncrier.toml +0 -33
@@ -6,7 +6,7 @@ import {
6
6
  getColor,
7
7
  getInitials,
8
8
  hasApiExpander,
9
- normalizeLanguageName,
9
+ toGettextLang,
10
10
  parseDateTime,
11
11
  removeFromArray,
12
12
  reorderArray,
@@ -284,12 +284,12 @@ describe('Utils tests', () => {
284
284
  });
285
285
  });
286
286
 
287
- describe('normalizeLanguageName', () => {
287
+ describe('toGettextLang', () => {
288
288
  it('Normalizes an extended language (pt_BR)', () => {
289
- expect(normalizeLanguageName('pt-br')).toStrictEqual('pt_BR');
289
+ expect(toGettextLang('pt-br')).toStrictEqual('pt_BR');
290
290
  });
291
291
  it('Normalizes a simple language (ca)', () => {
292
- expect(normalizeLanguageName('ca')).toStrictEqual('ca');
292
+ expect(toGettextLang('ca')).toStrictEqual('ca');
293
293
  });
294
294
  });
295
295
 
@@ -80,11 +80,16 @@ export {
80
80
  applyConfig,
81
81
  withServerErrorCode,
82
82
  parseDateTime,
83
- normalizeLanguageName,
84
- toLangUnderscoreRegion,
83
+ toGettextLang,
84
+ normalizeLanguageName, // old name for toGettextLang
85
+ toReactIntlLang,
86
+ toLangUnderscoreRegion, // old name for toReactIntlLang
87
+ toBackendLang,
85
88
  hasApiExpander,
86
89
  replaceItemOfArray,
87
90
  cloneDeepSchema,
91
+ arrayRange,
92
+ reorderArray,
88
93
  } from '@plone/volto/helpers/Utils/Utils';
89
94
  export { messages } from './MessageLabels/MessageLabels';
90
95
  export {
@@ -53,6 +53,60 @@ describe('api middleware helpers', () => {
53
53
  );
54
54
  expect(result).toEqual('/de/mypage/@navigation?expand.navigation.depth=3');
55
55
  });
56
+ it('addExpandersToPath - Path matching, preserve query', () => {
57
+ config.settings.apiExpanders = [
58
+ {
59
+ match: '/de/mypage',
60
+ GET_CONTENT: ['mycustomexpander', 'mycustomexpander2'],
61
+ },
62
+ ];
63
+
64
+ const result = addExpandersToPath(
65
+ '/de/mypage/@navigation?expand.navigation.depth=3',
66
+ GET_CONTENT,
67
+ );
68
+ expect(result).toEqual(
69
+ '/de/mypage/@navigation?expand=mycustomexpander,mycustomexpander2&expand.navigation.depth=3',
70
+ );
71
+ });
72
+ it('addExpandersToPath - Path matching, preserve query with multiple', () => {
73
+ config.settings.apiExpanders = [
74
+ {
75
+ match: '/de/mypage',
76
+ GET_CONTENT: ['mycustomexpander', 'mycustomexpander2'],
77
+ },
78
+ ];
79
+
80
+ const result = addExpandersToPath(
81
+ '/de/mypage/@navigation?expand.navigation.depth=3&expand.other=2',
82
+ GET_CONTENT,
83
+ );
84
+ expect(result).toEqual(
85
+ '/de/mypage/@navigation?expand=mycustomexpander,mycustomexpander2&expand.navigation.depth=3&expand.other=2',
86
+ );
87
+ });
88
+ it('addExpandersToPath - Path not matching, preserve encoded query', () => {
89
+ config.settings.apiExpanders = [
90
+ {
91
+ match: '/de/otherpath',
92
+ GET_CONTENT: ['mycustomexpander'],
93
+ },
94
+ ];
95
+
96
+ const result = addExpandersToPath('/de/mypage?query=a%26b', GET_CONTENT);
97
+ expect(result).toEqual('/de/mypage?query=a%26b');
98
+ });
99
+ it('addExpandersToPath - Path matching, preserve encoded query', () => {
100
+ config.settings.apiExpanders = [
101
+ {
102
+ match: '/de/mypage',
103
+ GET_CONTENT: ['mycustomexpander'],
104
+ },
105
+ ];
106
+
107
+ const result = addExpandersToPath('/de/mypage?query=a%26b', GET_CONTENT);
108
+ expect(result).toEqual('/de/mypage?expand=mycustomexpander&query=a%26b');
109
+ });
56
110
  it('addExpandersToPath - Two custom expanders from settings', () => {
57
111
  config.settings.apiExpanders = [
58
112
  {
@@ -18,7 +18,11 @@ import {
18
18
  SET_APIERROR,
19
19
  } from '@plone/volto/constants/ActionTypes';
20
20
  import { changeLanguage } from '@plone/volto/actions';
21
- import { normalizeLanguageName, getCookieOptions } from '@plone/volto/helpers';
21
+ import {
22
+ toGettextLang,
23
+ toReactIntlLang,
24
+ getCookieOptions,
25
+ } from '@plone/volto/helpers';
22
26
  let socket = null;
23
27
 
24
28
  /**
@@ -43,7 +47,7 @@ export function addExpandersToPath(path, type, isAnonymous) {
43
47
  const {
44
48
  url,
45
49
  query: { expand, ...query },
46
- } = qs.parseUrl(path);
50
+ } = qs.parseUrl(path, { decode: false });
47
51
 
48
52
  const expandersFromConfig = apiExpanders
49
53
  .filter((expand) => matchPath(url, expand.match) && expand[type])
@@ -205,11 +209,11 @@ const apiMiddlewareFactory = (api) => ({ dispatch, getState }) => (next) => (
205
209
  const lang = result?.language?.token;
206
210
  if (
207
211
  lang &&
208
- getState().intl.language !== lang &&
212
+ getState().intl.locale !== toReactIntlLang(lang) &&
209
213
  !subrequest &&
210
214
  config.settings.supportedLanguages.includes(lang)
211
215
  ) {
212
- const langFileName = normalizeLanguageName(lang);
216
+ const langFileName = toGettextLang(lang);
213
217
  import('~/../locales/' + langFileName + '.json').then((locale) => {
214
218
  dispatch(changeLanguage(lang, locale.default));
215
219
  });
package/src/server.jsx CHANGED
@@ -26,8 +26,9 @@ import {
26
26
  Html,
27
27
  Api,
28
28
  persistAuthToken,
29
- normalizeLanguageName,
30
- toLangUnderscoreRegion,
29
+ toBackendLang,
30
+ toGettextLang,
31
+ toReactIntlLang,
31
32
  } from '@plone/volto/helpers';
32
33
  import { changeLanguage } from '@plone/volto/actions';
33
34
 
@@ -44,9 +45,9 @@ let locales = {};
44
45
 
45
46
  if (config.settings) {
46
47
  config.settings.supportedLanguages.forEach((lang) => {
47
- const langFileName = normalizeLanguageName(lang);
48
+ const langFileName = toGettextLang(lang);
48
49
  import('@root/../locales/' + langFileName + '.json').then((locale) => {
49
- locales = { ...locales, [lang]: locale.default };
50
+ locales = { ...locales, [toReactIntlLang(lang)]: locale.default };
50
51
  });
51
52
  });
52
53
  }
@@ -101,13 +102,15 @@ server.use(function (err, req, res, next) {
101
102
  function setupServer(req, res, next) {
102
103
  const api = new Api(req);
103
104
 
104
- const lang = new locale.Locales(
105
- req.universalCookies.get('I18N_LANGUAGE') ||
106
- config.settings.defaultLanguage ||
107
- req.headers['accept-language'],
108
- )
109
- .best(supported)
110
- .toString();
105
+ const lang = toReactIntlLang(
106
+ new locale.Locales(
107
+ req.universalCookies.get('I18N_LANGUAGE') ||
108
+ config.settings.defaultLanguage ||
109
+ req.headers['accept-language'],
110
+ )
111
+ .best(supported)
112
+ .toString(),
113
+ );
111
114
 
112
115
  // Minimum initial state for the fake Redux store instance
113
116
  const initialState = {
@@ -176,13 +179,15 @@ server.get('/*', (req, res) => {
176
179
 
177
180
  const browserdetect = detect(req.headers['user-agent']);
178
181
 
179
- const lang = new locale.Locales(
180
- req.universalCookies.get('I18N_LANGUAGE') ||
181
- config.settings.defaultLanguage ||
182
- req.headers['accept-language'],
183
- )
184
- .best(supported)
185
- .toString();
182
+ const lang = toReactIntlLang(
183
+ new locale.Locales(
184
+ req.universalCookies.get('I18N_LANGUAGE') ||
185
+ config.settings.defaultLanguage ||
186
+ req.headers['accept-language'],
187
+ )
188
+ .best(supported)
189
+ .toString(),
190
+ );
186
191
 
187
192
  const authToken = req.universalCookies.get('auth_token');
188
193
  const initialState = {
@@ -217,7 +222,7 @@ server.get('/*', (req, res) => {
217
222
 
218
223
  loadOnServer({ store, location, routes, api })
219
224
  .then(() => {
220
- const cookie_lang =
225
+ const initialLang =
221
226
  req.universalCookies.get('I18N_LANGUAGE') ||
222
227
  config.settings.defaultLanguage ||
223
228
  req.headers['accept-language'];
@@ -230,15 +235,15 @@ server.get('/*', (req, res) => {
230
235
  // present the language token field, for some reason. In this case, we
231
236
  // should follow the cookie rather then switching the language
232
237
  const contentLang = store.getState().content.get?.error
233
- ? cookie_lang
238
+ ? initialLang
234
239
  : store.getState().content.data?.language?.token ||
235
240
  config.settings.defaultLanguage;
236
241
 
237
- if (cookie_lang !== contentLang) {
238
- const newLocale = toLangUnderscoreRegion(
242
+ if (toBackendLang(initialLang) !== contentLang) {
243
+ const newLang = toReactIntlLang(
239
244
  new locale.Locales(contentLang).best(supported).toString(),
240
245
  );
241
- store.dispatch(changeLanguage(newLocale, locales[newLocale], req));
246
+ store.dispatch(changeLanguage(newLang, locales[newLang], req));
242
247
  }
243
248
 
244
249
  const context = {};
@@ -82,6 +82,7 @@ config.set('settings', {
82
82
  viewableInBrowserObjects: [],
83
83
  styleClassNameConverters,
84
84
  styleClassNameExtenders,
85
+ blockSettingsTabFieldsetsInitialStateOpen: true,
85
86
  });
86
87
  config.set('blocks', {
87
88
  blocksConfig: {
@@ -489,3 +489,7 @@
489
489
  margin-left: 5px;
490
490
  }
491
491
  }
492
+
493
+ .formtabs {
494
+ flex-wrap: wrap;
495
+ }
package/.changelog.draft DELETED
@@ -1,13 +0,0 @@
1
- ## 17.0.0-alpha.5 (2023-04-14)
2
-
3
- ### Bugfix
4
-
5
- - Generate a split sitemap @reebalazs [#4638](https://github.com/plone/volto/issues/4638)
6
- - Fix Move to top of folder ordering in folder content view @iFlameing [#4690](https://github.com/plone/volto/issues/4690)
7
- - Revert "Add current page parameter to the route in the listing and search block pagination (#4159)" @sneridagh [#4695](https://github.com/plone/volto/issues/4695)
8
- - Fix search block in edit mode re-queries multiple blocks with an empty search text @reebalazs [#4697](https://github.com/plone/volto/issues/4697)
9
-
10
- ### Documentation
11
-
12
- - Update links for 2022 Training archive. @stevepiercy [#4635](https://github.com/plone/volto/issues/4635)
13
-
package/.editorconfig DELETED
@@ -1,36 +0,0 @@
1
- # EditorConfig Configurtaion file, for more details see:
2
- # http://EditorConfig.org
3
- # EditorConfig is a convention description, that could be interpreted
4
- # by multiple editors to enforce common coding conventions for specific
5
- # file types
6
-
7
- # top-most EditorConfig file:
8
- # Will ignore other EditorConfig files in Home directory or upper tree level.
9
- root = true
10
-
11
-
12
- [*] # For All Files
13
- # Unix-style newlines with a newline ending every file
14
- end_of_line = lf
15
- insert_final_newline = true
16
- trim_trailing_whitespace = true
17
- # Set default charset
18
- charset = utf-8
19
- # Indent style default
20
- indent_style = space
21
- # Max Line Length - a hard line wrap, should be disabled
22
- max_line_length = off
23
-
24
- [*.{py,cfg,ini}]
25
- # 4 space indentation
26
- indent_size = 4
27
-
28
- [*.{html,dtml,pt,zpt,xml,zcml,js,jsx,json,less,css,yaml,yml}]
29
- # 2 space indentation
30
- indent_size = 2
31
-
32
- [{Makefile,.gitmodules}]
33
- # Tab indentation (no size specified, but view as 4 spaces)
34
- indent_style = tab
35
- indent_size = unset
36
- tab_width = unset
@@ -1,127 +0,0 @@
1
- const webpack = require('webpack');
2
- const fs = require('fs');
3
- const path = require('path');
4
- const makeLoaderFinder = require('razzle-dev-utils/makeLoaderFinder');
5
- const fileLoaderFinder = makeLoaderFinder('file-loader');
6
- const projectRootPath = path.resolve('.');
7
- const lessPlugin = require('../webpack-plugins/webpack-less-plugin');
8
- const createConfig = require('../node_modules/razzle/config/createConfigAsync.js');
9
- const razzleConfig = require(path.join(projectRootPath, 'razzle.config.js'));
10
- const SVGLOADER = {
11
- test: /icons\/.*\.svg$/,
12
- use: [
13
- {
14
- loader: 'svg-loader',
15
- },
16
- {
17
- loader: 'svgo-loader',
18
- options: {
19
- plugins: [
20
- {
21
- name: 'preset-default',
22
- params: {
23
- overrides: {
24
- convertPathData: false,
25
- removeViewBox: false,
26
- },
27
- },
28
- },
29
- 'removeTitle',
30
- 'removeUselessStrokeAndFill',
31
- ],
32
- },
33
- },
34
- ],
35
- };
36
- const defaultRazzleOptions = {
37
- verbose: false,
38
- debug: {},
39
- buildType: 'iso',
40
- cssPrefix: 'static/css',
41
- jsPrefix: 'static/js',
42
- enableSourceMaps: true,
43
- enableReactRefresh: true,
44
- enableTargetBabelrc: false,
45
- enableBabelCache: true,
46
- forceRuntimeEnvVars: [],
47
- mediaPrefix: 'static/media',
48
- staticCssInDev: false,
49
- emitOnErrors: false,
50
- disableWebpackbar: false,
51
- browserslist: ['>1%', 'last 4 versions', 'Firefox ESR', 'not ie 11', 'not dead']
52
- };
53
- module.exports = {
54
- stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'],
55
- addons: ['@storybook/addon-links', '@storybook/addon-essentials'],
56
- staticDirs: ['./static'],
57
- webpackFinal: async (config, {
58
- configType
59
- }) => {
60
- // `configType` has a value of 'DEVELOPMENT' or 'PRODUCTION'
61
- // You can change the configuration based on that.
62
- // 'PRODUCTION' is used when building the static version of storybook.
63
-
64
- // Make whatever fine-grained changes you need
65
- let baseConfig;
66
- baseConfig = await createConfig('web', 'dev', {
67
- // clearConsole: false,
68
- modifyWebpackConfig: razzleConfig.modifyWebpackConfig,
69
- plugins: razzleConfig.plugins
70
- }, webpack, false, undefined, [], defaultRazzleOptions);
71
- const AddonConfigurationRegistry = require('../addon-registry');
72
- const registry = new AddonConfigurationRegistry(projectRootPath);
73
- config = lessPlugin({
74
- registry
75
- }).modifyWebpackConfig({
76
- env: {
77
- target: 'web',
78
- dev: 'dev'
79
- },
80
- webpackConfig: config,
81
- webpackObject: webpack,
82
- options: {}
83
- });
84
-
85
- // Put the SVG loader on top and prevent the asset/resource rule
86
- // from processing the app's SVGs
87
- config.module.rules.unshift(SVGLOADER);
88
- const fileLoaderRule = config.module.rules.find(rule => rule.test.test('.svg'));
89
- fileLoaderRule.exclude = /icons\/.*\.svg$/;
90
- config.plugins.unshift(new webpack.DefinePlugin({
91
- __DEVELOPMENT__: true,
92
- __CLIENT__: true,
93
- __SERVER__: false
94
- }));
95
- const resultConfig = {
96
- ...config,
97
- resolve: {
98
- ...config.resolve,
99
- alias: {
100
- ...config.resolve.alias,
101
- ...baseConfig.resolve.alias
102
- }
103
- }
104
- };
105
-
106
- // Addons have to be loaded with babel
107
- const addonPaths = registry.addonNames.map(addon => fs.realpathSync(registry.packages[addon].modulePath));
108
- resultConfig.module.rules[1].exclude = input =>
109
- // exclude every input from node_modules except from @plone/volto
110
- /node_modules\/(?!(@plone\/volto)\/)/.test(input) &&
111
- // If input is in an addon, DON'T exclude it
112
- !addonPaths.some(p => input.includes(p));
113
- return resultConfig;
114
- },
115
- babel: async options => {
116
- return {
117
- ...options,
118
- plugins: [...options.plugins, ['./node_modules/babel-plugin-root-import/build/index.js', {
119
- rootPathSuffix: './src'
120
- }]]
121
- // any extra options you want to set
122
- };
123
- },
124
- core: {
125
- builder: 'webpack5'
126
- }
127
- };
@@ -1,15 +0,0 @@
1
- import { addons } from '@storybook/addons';
2
-
3
- addons.setConfig({
4
- isFullscreen: false,
5
- showNav: true,
6
- showPanel: true,
7
- panelPosition: 'bottom',
8
- sidebarAnimations: true,
9
- enableShortcuts: true,
10
- isToolshown: true,
11
- theme: undefined,
12
- selectedPanel: undefined,
13
- initialActive: 'sidebar',
14
- showRoots: true,
15
- });
@@ -1,21 +0,0 @@
1
- import '@plone/volto/config'; // This is the bootstrap for the global config - client side
2
- import React from 'react';
3
- import { StaticRouter } from 'react-router-dom';
4
- import { IntlProvider } from 'react-intl';
5
- import enMessages from '@root/../locales/en.json';
6
-
7
- import '@root/theme';
8
-
9
- export const parameters = {
10
- actions: { argTypesRegex: '^on[A-Z].*' },
11
- };
12
-
13
- export const decorators = [
14
- (Story) => (
15
- <IntlProvider messages={enMessages} locale="en" defaultLocale="en">
16
- <StaticRouter location="/">
17
- <Story />
18
- </StaticRouter>
19
- </IntlProvider>
20
- ),
21
- ];
@@ -1,48 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <!-- Generator: Adobe Illustrator 13.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
3
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
- <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
- width="158.253px" height="40.686px" viewBox="0 0 158.253 40.686" enable-background="new 0 0 158.253 40.686"
6
- xml:space="preserve">
7
- <g>
8
- <path fill="#0095D3" d="M65.327,23.208h-6.589v11.388h-4.393V5.638h10.981c5.653,0,9.271,3.742,9.271,8.785
9
- S70.979,23.208,65.327,23.208z M65.082,9.583h-6.345v9.639h6.345c3.05,0,5.124-1.749,5.124-4.799
10
- C70.206,11.372,68.132,9.583,65.082,9.583z"/>
11
- <path fill="#0095D3" d="M83.969,34.596c-3.904,0-5.652-2.644-5.652-5.693V5.638h4.148v23.021c0,1.587,0.567,2.399,2.235,2.399h1.83
12
- v3.538H83.969z"/>
13
- <path fill="#0095D3" d="M104.762,32.399c-1.344,1.384-3.377,2.44-6.184,2.44c-2.805,0-4.799-1.058-6.141-2.44
14
- c-1.951-2.032-2.439-4.637-2.439-8.134c0-3.457,0.488-6.061,2.439-8.094c1.342-1.383,3.336-2.44,6.141-2.44
15
- c2.807,0,4.84,1.059,6.184,2.44c1.951,2.033,2.439,4.637,2.439,8.094C107.203,27.763,106.713,30.366,104.762,32.399z
16
- M101.629,18.613c-0.773-0.773-1.83-1.181-3.051-1.181c-1.219,0-2.236,0.406-3.01,1.181c-1.26,1.261-1.422,3.416-1.422,5.652
17
- s0.162,4.393,1.422,5.653c0.773,0.771,1.791,1.22,3.01,1.22c1.221,0,2.277-0.447,3.051-1.22c1.262-1.262,1.424-3.417,1.424-5.653
18
- S102.891,19.873,101.629,18.613z"/>
19
- <path fill="#0095D3" d="M123.643,34.596V22.029c0-3.214-1.83-4.597-4.147-4.597s-4.271,1.423-4.271,4.597v12.566h-4.147v-20.62
20
- h4.065v2.074c1.425-1.546,3.416-2.318,5.49-2.318c2.115,0,3.865,0.691,5.084,1.871c1.586,1.545,2.074,3.497,2.074,5.815v13.178
21
- L123.643,34.596L123.643,34.596z"/>
22
- <path fill="#0095D3" d="M135.772,25.486c0,3.537,1.871,5.774,5.246,5.774c2.317,0,3.539-0.649,5.004-2.115l2.643,2.481
23
- c-2.115,2.114-4.107,3.213-7.727,3.213c-5.166,0-9.273-2.725-9.273-10.574c0-6.671,3.457-10.534,8.744-10.534
24
- c5.531,0,8.744,4.067,8.744,9.925v1.83H135.772z M144.475,19.791c-0.65-1.545-2.113-2.604-4.066-2.604
25
- c-1.951,0-3.457,1.059-4.107,2.604c-0.406,0.936-0.488,1.546-0.529,2.807h9.273C145.003,21.337,144.883,20.726,144.475,19.791z"/>
26
- <circle fill="#0095D3" cx="17.815" cy="11.516" r="4.402"/>
27
- <path fill="#0095D3" d="M31.167,20.311c0,2.433-1.969,4.401-4.403,4.401c-2.427,0-4.401-1.97-4.401-4.401
28
- c0-2.433,1.975-4.401,4.401-4.401C29.2,15.909,31.167,17.879,31.167,20.311z"/>
29
- <circle fill="#0095D3" cx="17.801" cy="29.131" r="4.402"/>
30
- <g>
31
- <path fill="#0095D3" d="M20.441-0.045C9.207-0.044,0.1,9.063,0.099,20.298C0.1,31.532,9.207,40.639,20.441,40.641
32
- c11.235-0.002,20.341-9.107,20.343-20.343C40.783,9.063,31.677-0.044,20.441-0.045z M31.891,31.747
33
- c-2.937,2.934-6.972,4.742-11.45,4.743c-4.478-0.001-8.513-1.811-11.45-4.743C6.058,28.81,4.25,24.775,4.249,20.298
34
- c0.001-4.478,1.809-8.513,4.743-11.45c2.937-2.934,6.972-4.742,11.45-4.743c4.478,0.001,8.513,1.81,11.45,4.743
35
- c2.934,2.938,4.742,6.973,4.743,11.45C36.633,24.775,34.825,28.81,31.891,31.747z"/>
36
- </g>
37
- <g>
38
- <path fill="#0095D3" d="M153.985,9.95c-1.195,0-2.164,0.971-2.164,2.168c0.002,1.197,0.969,2.168,2.164,2.168
39
- c1.199,0,2.172-0.971,2.172-2.168S155.184,9.95,153.985,9.95z M153.985,13.968c-1.021-0.002-1.846-0.827-1.846-1.85
40
- c0.002-1.021,0.825-1.849,1.846-1.851c1.023,0.002,1.852,0.828,1.854,1.851C155.836,13.141,155.008,13.966,153.985,13.968z"/>
41
- </g>
42
- <g>
43
- <path fill="#0095D3" d="M154.507,13.409l-0.54-1.08h-0.486v1.08h-0.389v-2.564h0.994c0.484,0,0.796,0.313,0.796,0.75
44
- c0,0.367-0.224,0.602-0.513,0.68l0.592,1.136L154.507,13.409L154.507,13.409z M154.056,11.195h-0.575v0.803h0.575
45
- c0.261,0,0.437-0.147,0.437-0.399S154.317,11.195,154.056,11.195z"/>
46
- </g>
47
- </g>
48
- </svg>
package/.vale.ini DELETED
@@ -1,10 +0,0 @@
1
- StylesPath = styles
2
-
3
- MinAlertLevel = suggestion
4
-
5
- Vocab = Base,Plone
6
-
7
- Packages = Microsoft
8
-
9
- [*.md]
10
- BasedOnStyles = Vale, Microsoft
package/.yarnrc.yml DELETED
@@ -1,5 +0,0 @@
1
- defaultSemverRangePrefix: ""
2
-
3
- nodeLinker: node-modules
4
-
5
- yarnPath: .yarn/releases/yarn-3.2.3.cjs
package/jsdoc.json DELETED
@@ -1,16 +0,0 @@
1
- {
2
- "tags": {
3
- "allowUnknownTags": true
4
- },
5
- "source": {
6
- "include": ["./src"],
7
- "includePattern": ".+\\.js$",
8
- "excludePattern": ".+\\.(spec|e2e)\\.js$"
9
- },
10
- "opts": {
11
- "encoding": "utf8",
12
- "destination": "jsdoc",
13
- "recurse": true,
14
- "verbose": true
15
- }
16
- }
package/netlify.toml DELETED
@@ -1,5 +0,0 @@
1
- [build.environment]
2
- PYTHON_VERSION = "3.8"
3
- NODE_VERSION = "16.17.1"
4
- [build]
5
- ignore = "git diff --quiet $CACHED_COMMIT_REF $COMMIT_REF ./docs/"
package/pyvenv.cfg DELETED
@@ -1,3 +0,0 @@
1
- home = /opt/homebrew/opt/python@3.9/bin
2
- include-system-site-packages = false
3
- version = 3.9.16