static-cms/scripts/externals.js
Shawn Erquhart 18c579d0e9 feat: Code Widget + Markdown Widget Internal Overhaul (#2828)
* wip - upgrade to slate 0.43

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* finish list handling logic

* add plugins directory

* tests wip

* setup testing

* wip

* add selection commands

* finish list testing

* stuff

* add codemirror

* abstract codemirror from slate

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* codemirror mostly working, some bugs

* upgrade to slate 46

* upgrade to slate 47

* wip

* wip

* progress

* wip

* mostly working links with surrounding marks

* wip

* tests passing

* add test

* fix formatting

* update snapshots

* close self closing tag in markdown html output

* wip - commonmark

* hold on commonmark work

* all tests passing

* fix e2e specs

* ignore tests in esm builds

* break/backspace plugins wip

* finish enter/backspace spec

* fix soft break handling

* wip - editor component deletion

* add insertion points

* make insertion points invisible

* fix empty mark nodes output to markdown

* fix pasting

* improve insertion points

* add static bottom insertion point

* improve click handling at insertion points

* restore current table functionality

* add paste support for Slate fragments

* support cut/copy markdown, paste between rich/raw editor

* fix copy paste

* wip - paste/select bug fixing

* fixed known slate issues

* split plugins

* fix editor toggles

* force text cursor in code widget

* wip - reorg plugins

* finish markdown control reorg

* configure plugin types

* quote block adjacent handling with tests

* wip

* finish quote logic and tests

* fix copy paste plugin migration regressions

* fix force insert before node

* fix trailing insertion point

* remove empty headers

* codemirror working properly in markdown widget

* return focus to codemirror on lang select enter

* fix state issues for widgets with local state

* wip - vim working, just need to work out distribution

* add settings pane

* wip - default modes

* fix deps

* add programming language data

* implement linguist langs in code widget

* everything built in

* remove old registration code, fix focus styling

* fix/update linting setup

* fix js lint errors

* remove stylelint from format script

* fix remaining linting errors

* fix reducer test failures

* chore: update commitlint for worktree support

* chore: fix remaining tests

* chore: drop unused monaco plugin

* chore: remove extraneous global styles rendering

* chore: fix failing tests

* fix: tests

* fix: quote/list nesting (tests still broken)

* fix: update quote tests

* chore: bring back code widget test config

* fix: autofocus

* fix: code blocks without the code widget

* fix: code editor component state issues

* fix: error

* fix: add code block test, few fixes

* chore: remove notes

* fix: [wip] update stateful shortcodes on undo/redo

* fix: support code styled links, handle unknown langs

* fix: few fixes

* fix: autofocus on insert, focus on all clicks

* fix: linting

* fix: autofocus

* fix: update code block fixture

* fix: remove unused cypress snapshot plugin

* fix: drop node 8 test, add node 12

* fix: use lodash.flatten instead of Array.flat

* fix: remove console logs
2019-12-16 19:17:37 +02:00

116 lines
2.9 KiB
JavaScript

const fs = require('fs');
const path = require('path');
/**
* Takes a dash [-] separated name and makes it camel-cased
* netlify-cms-something to NetlifyCmsSomething
* @param {} string
*/
const toGlobalName = name =>
`${name}`
.replace(new RegExp(/[-_/]+/, 'g'), ' ')
.replace(new RegExp(/[^\w\s]/, 'g'), '')
.replace(
new RegExp(/\s+(.)(\w+)/, 'g'),
($1, $2, $3) => `${$2.toUpperCase() + $3.toLowerCase()}`,
)
.replace(new RegExp(/\s/, 'g'), '')
.replace(new RegExp(/\w/), s => s.toUpperCase());
const packages = fs.readdirSync(path.resolve(__dirname, '../packages'));
const packageExports = {};
packages.map(name => {
packageExports[name] = {
root: `${toGlobalName(name)}`.split('.'),
commonjs2: name,
commonjs: name,
amd: name,
umd: name,
};
});
module.exports = {
toGlobalName,
externals: {
...packageExports,
lodash: {
root: ['NetlifyCmsDefaultExports', 'Lodash'],
commonjs2: 'lodash',
commonjs: 'lodash',
amd: 'lodash',
umd: 'lodash',
},
'@emotion/core': {
root: ['NetlifyCmsDefaultExports', 'EmotionCore'],
commonjs2: '@emotion/core',
commonjs: '@emotion/core',
amd: '@emotion/core',
umd: '@emotion/core',
},
'@emotion/styled': {
root: ['NetlifyCmsDefaultExports', 'EmotionStyled'],
commonjs2: '@emotion/styled',
commonjs: '@emotion/styled',
amd: '@emotion/styled',
umd: '@emotion/styled',
},
codemirror: {
root: 'CodeMirror',
commonjs2: 'codemirror',
commonjs: 'codemirror',
amd: 'codemirror',
umd: 'codemirror',
},
immutable: {
root: ['NetlifyCmsDefaultExports', 'Immutable'],
commonjs2: 'immutable',
commonjs: 'immutable',
amd: 'immutable',
umd: 'immutable',
},
moment: {
root: ['NetlifyCmsDefaultExports', 'Moment'],
commonjs2: 'moment',
commonjs: 'moment',
amd: 'moment',
umd: 'moment',
},
'prop-types': {
root: ['NetlifyCmsDefaultExports', 'PropTypes'],
commonjs2: 'prop-types',
commonjs: 'prop-types',
amd: 'prop-types',
umd: 'prop-types',
},
'react-immutable-proptypes': {
root: ['NetlifyCmsDefaultExports', 'ImmutablePropTypes'],
commonjs2: 'react-immutable-proptypes',
commonjs: 'react-immutable-proptypes',
amd: 'react-immutable-proptypes',
umd: 'react-immutable-proptypes',
},
react: {
root: 'React',
commonjs2: 'react',
commonjs: 'react',
amd: 'react',
umd: 'react',
},
'react-dom': {
root: 'ReactDOM',
commonjs2: 'react-dom',
commonjs: 'react-dom',
amd: 'react-dom',
umd: 'react-dom',
},
uuid: {
root: ['NetlifyCmsDefaultExports', 'UUId'],
commonjs2: 'uuid',
commonjs: 'uuid',
amd: 'uuid',
umd: 'uuid',
},
},
};