diff --git a/README.md b/README.md
index ecdfc57..f6d4c0f 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,3 @@
-### Meidt
+
Medit
-A browser based Markdown editor.
\ No newline at end of file
+This libray is extracted from Marktext. Thanks to their hard work.
diff --git a/commitlint.config.js b/commitlint.config.js
new file mode 100644
index 0000000..a1e84d5
--- /dev/null
+++ b/commitlint.config.js
@@ -0,0 +1,30 @@
+module.exports = {
+ parserPreset: {
+ parserOpts: {
+ headerPattern: /^(\w*)(?:\((.*)\))?:[ ]?(.*)$/,
+ headerCorrespondence: ['type', 'scope', 'subject']
+ }
+ },
+ rules: {
+ 'type-empty': [2, 'never'],
+ 'type-case': [2, 'always', 'lower-case'],
+ 'subject-empty': [2, 'never'],
+ 'type-enum': [
+ 2,
+ 'always',
+ [
+ 'build',
+ 'ci',
+ 'chore',
+ 'docs',
+ 'feat',
+ 'fix',
+ 'perf',
+ 'refactor',
+ 'revert',
+ 'style',
+ 'test'
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/lib/contentState/index.js b/lib/contentState/index.js
index 250b257..1f3a346 100644
--- a/lib/contentState/index.js
+++ b/lib/contentState/index.js
@@ -232,8 +232,11 @@ class ContentState {
})
this.setNextRenderRange()
this.stateRender.collectLabels(blocks)
+ console.log("[ContentState::render]: blocks", blocks);
+
this.stateRender.render(blocks, activeBlocks, matches)
if (isRenderCursor) {
+ console.log("[ContentState::render] setCursor")
this.setCursor()
} else {
this.muya.blur()
@@ -269,6 +272,7 @@ class ContentState {
this.stateRender.collectLabels(blocks)
this.stateRender.partialRender(blocksToRender, activeBlocks, matches, startKey, endKey)
if (isRenderCursor) {
+ console.log("[ContentState:partialRender] setCursor")
this.setCursor()
} else {
this.muya.blur()
diff --git a/lib/eventHandler/clickEvent.js b/lib/eventHandler/clickEvent.js
index 7a8c96b..54c2368 100644
--- a/lib/eventHandler/clickEvent.js
+++ b/lib/eventHandler/clickEvent.js
@@ -55,7 +55,7 @@ class ClickEvent {
end
}
}
-
+ console.log("[contextClickBingding]:Context clicked, set curser to: ", contentState.cursor, " and dispatch 'contextmenu' event.")
const sectionChanges = contentState.selectionChange(contentState.cursor)
eventCenter.dispatch('contextmenu', event, sectionChanges)
}
diff --git a/lib/parser/render/index.js b/lib/parser/render/index.js
index 6340198..2162b20 100644
--- a/lib/parser/render/index.js
+++ b/lib/parser/render/index.js
@@ -1,13 +1,13 @@
import loadRenderer from '../../renderers'
-import { CLASS_OR_ID, PREVIEW_DOMPURIFY_CONFIG } from '../../config'
-import { conflict, mixins, camelToSnake, sanitize } from '../../utils'
-import { patch, toVNode, toHTML, h } from './snabbdom'
-import { beginRules } from '../rules'
+import {CLASS_OR_ID, PREVIEW_DOMPURIFY_CONFIG} from '../../config'
+import {conflict, mixins, camelToSnake, sanitize} from '../../utils'
+import {patch, toVNode, toHTML, h} from './snabbdom'
+import {beginRules} from '../rules'
import renderInlines from './renderInlines'
import renderBlock from './renderBlock'
class StateRender {
- constructor (muya) {
+ constructor(muya) {
this.muya = muya
this.eventCenter = muya.eventCenter
this.codeCache = new Map()
@@ -23,16 +23,16 @@ class StateRender {
this.container = null
}
- setContainer (container) {
+ setContainer(container) {
this.container = container
}
// collect link reference definition
- collectLabels (blocks) {
+ collectLabels(blocks) {
this.labels.clear()
const travel = block => {
- const { text, children } = block
+ const {text, children} = block
if (children && children.length) {
children.forEach(c => travel(c))
} else if (text) {
@@ -52,10 +52,10 @@ class StateRender {
blocks.forEach(b => travel(b))
}
- checkConflicted (block, token, cursor) {
- const { start, end } = cursor
+ checkConflicted(block, token, cursor) {
+ const {start, end} = cursor
const key = block.key
- const { start: tokenStart, end: tokenEnd } = token.range
+ const {start: tokenStart, end: tokenEnd} = token.range
if (key !== start.key && key !== end.key) {
return false
@@ -69,16 +69,16 @@ class StateRender {
}
}
- getClassName (outerClass, block, token, cursor) {
+ getClassName(outerClass, block, token, cursor) {
return outerClass || (this.checkConflicted(block, token, cursor) ? CLASS_OR_ID.AG_GRAY : CLASS_OR_ID.AG_HIDE)
}
- getHighlightClassName (active) {
+ getHighlightClassName(active) {
return active ? CLASS_OR_ID.AG_HIGHLIGHT : CLASS_OR_ID.AG_SELECTION
}
- getSelector (block, activeBlocks) {
- const { cursor, selectedBlock } = this.muya.contentState
+ getSelector(block, activeBlocks) {
+ const {cursor, selectedBlock} = this.muya.contentState
const type = block.type === 'hr' ? 'p' : block.type
const isActive = activeBlocks.some(b => b.key === block.key) || block.key === cursor.start.key
@@ -95,15 +95,17 @@ class StateRender {
return selector
}
- async renderMermaid () {
+ async renderMermaid() {
if (this.mermaidCache.size) {
+ console.log("[StateRender:renderMermaid]: start");
+
const mermaid = await loadRenderer('mermaid')
mermaid.initialize({
securityLevel: 'strict',
theme: this.muya.options.mermaidTheme
})
for (const [key, value] of this.mermaidCache.entries()) {
- const { code } = value
+ const {code} = value
const target = document.querySelector(key)
if (!target) {
continue
@@ -111,6 +113,11 @@ class StateRender {
try {
mermaid.parse(code)
target.innerHTML = sanitize(code, PREVIEW_DOMPURIFY_CONFIG, true)
+ // mermaid will not render if DOM target has data-processed attribute set to true,
+ // so we need to remove it here.
+ if (target.getAttribute('data-processed') === 'true') {
+ target.removeAttribute("data-processed");
+ }
mermaid.init(undefined, target)
} catch (err) {
target.innerHTML = '< Invalid Mermaid Codes >'
@@ -122,7 +129,7 @@ class StateRender {
}
}
- async renderDiagram () {
+ async renderDiagram() {
const cache = this.diagramCache
if (cache.size) {
const RENDER_MAP = {
@@ -137,11 +144,11 @@ class StateRender {
if (!target) {
continue
}
- const { code, functionType } = value
+ const {code, functionType} = value
const render = RENDER_MAP[functionType]
const options = {}
if (functionType === 'sequence') {
- Object.assign(options, { theme: this.muya.options.sequenceTheme })
+ Object.assign(options, {theme: this.muya.options.sequenceTheme})
} else if (functionType === 'vega-lite') {
Object.assign(options, {
actions: false,
@@ -171,7 +178,7 @@ class StateRender {
}
}
- render (blocks, activeBlocks, matches) {
+ render(blocks, activeBlocks, matches) {
const selector = `div#${CLASS_OR_ID.AG_EDITOR_ID}`
const children = blocks.map(block => {
return this.renderBlock(null, block, activeBlocks, matches, true)
@@ -187,7 +194,7 @@ class StateRender {
}
// Only render the blocks which you updated
- partialRender (blocks, activeBlocks, matches, startKey, endKey) {
+ partialRender(blocks, activeBlocks, matches, startKey, endKey) {
const cursorOutMostBlock = activeBlocks[activeBlocks.length - 1]
// If cursor is not in render blocks, need to render cursor block independently
const needRenderCursorBlock = blocks.indexOf(cursorOutMostBlock) === -1
@@ -216,7 +223,7 @@ class StateRender {
// Render cursor block independently
if (needRenderCursorBlock) {
- const { key } = cursorOutMostBlock
+ const {key} = cursorOutMostBlock
const cursorDom = document.querySelector(`#${key}`)
if (cursorDom) {
const oldCursorVnode = toVNode(cursorDom)
@@ -237,7 +244,7 @@ class StateRender {
* @param {array} activeBlocks
* @param {array} matches
*/
- singleRender (block, activeBlocks, matches) {
+ singleRender(block, activeBlocks, matches) {
const selector = `#${block.key}`
const newVdom = this.renderBlock(null, block, activeBlocks, matches, true)
const rootDom = document.querySelector(selector)
@@ -248,7 +255,7 @@ class StateRender {
this.codeCache.clear()
}
- invalidateImageCache () {
+ invalidateImageCache() {
this.loadImageMap.forEach((imageInfo, key) => {
imageInfo.touchMsec = Date.now()
this.loadImageMap.set(key, imageInfo)
diff --git a/lib/parser/render/snabbdom.js b/lib/parser/render/snabbdom.js
index 2f6cc0b..92129bf 100644
--- a/lib/parser/render/snabbdom.js
+++ b/lib/parser/render/snabbdom.js
@@ -19,10 +19,13 @@ export const patch = init([
eventListenersModule
])
-export const h = sh
-export const toVNode = sToVNode
+
+export const h = sh // for create virtual dom
+
+export const toVNode = sToVNode // converting a DOM element to a virtual node
export const toHTML = require('snabbdom-to-html') // helper function for convert vnode to HTML string
+
export const htmlToVNode = html => { // helper function for convert html to vnode
const wrapper = document.createElement('div')
wrapper.innerHTML = html
diff --git a/lib/renderers/index.js b/lib/renderers/index.js
index 7235667..89ba157 100644
--- a/lib/renderers/index.js
+++ b/lib/renderers/index.js
@@ -20,7 +20,7 @@ const loadRenderer = async (name) => {
rendererCache.set(name, m.default)
break
case 'mermaid':
- m = await import('mermaid/dist/mermaid.core.js')
+ m = await import('mermaid/dist/mermaid.core.mjs')
rendererCache.set(name, m.default)
break
case 'vega-lite':
diff --git a/lib/selection/README.md b/lib/selection/README.md
new file mode 100644
index 0000000..33888a9
--- /dev/null
+++ b/lib/selection/README.md
@@ -0,0 +1,26 @@
+## Some Knowledge to know before you start
+
+### Node Type
+- 1: Element node
+- 2: Attribute node
+- 3: Text node
+- 4: CDATA section node
+- 5: Entity Reference node
+- 6: Entity node
+- 7: Processing Instruction node
+- 8: Comment node
+- 9: Document node
+- 10: Document Type node
+- 11: Document Fragment node
+- 12: Notation node
+
+### Range.setStart() and Range.setEnd()
+If the `node` argument passed to `setStart()` is a text node, the `startOffset` value is the index of the first
+character in the text node that should be included in the range. For example, if `node` is a text node containing
+the string "Hello, world", and `startOffset` is 3, then the range would start with the fourth character in the
+text node, which is the letter "l"
+
+If the `node` argument is an element node, the `startOffset` value is the index of the child node within the
+element that should be the start of the range. For example, if `node` is an unordered list (``) element with
+three list items (`- `), and `startOffset` is 2, then the range would start with the third `
- ` child element
+within the `
`. translate this to chinese
\ No newline at end of file
diff --git a/lib/selection/index.js b/lib/selection/index.js
index d24eebb..5c5d6f3 100644
--- a/lib/selection/index.js
+++ b/lib/selection/index.js
@@ -3,7 +3,7 @@
* and customize for specialized use.
*/
import Cursor from './cursor'
-import { CLASS_OR_ID } from '../config'
+import {CLASS_OR_ID} from '../config'
import {
isBlockContainer,
traverseUp,
@@ -20,11 +20,11 @@ const filterOnlyParentElements = node => {
}
class Selection {
- constructor (doc) {
+ constructor(doc) {
this.doc = doc // document
}
- findMatchingSelectionParent (testElementFunction, contentWindow) {
+ findMatchingSelectionParent(testElementFunction, contentWindow) {
const selection = contentWindow.getSelection()
let range
let current
@@ -48,7 +48,7 @@ class Selection {
// subsequent to an anchor tag if it would otherwise be placed right at the trailing edge inside the
// anchor. This cursor positioning, even though visually equivalent to the user, can affect behavior
// in MS IE.
- importSelection (selectionState, root, favorLaterSelectionAnchor) {
+ importSelection(selectionState, root, favorLaterSelectionAnchor) {
if (!selectionState || !root) {
throw new Error('your must provide a [selectionState] and a [root] element')
}
@@ -173,7 +173,7 @@ class Selection {
}
// Utility method called from importSelection only
- importSelectionMoveCursorPastAnchor (selectionState, range) {
+ importSelectionMoveCursorPastAnchor(selectionState, range) {
const nodeInsideAnchorTagFunction = function (node) {
return node.nodeName.toLowerCase() === 'a'
}
@@ -207,7 +207,7 @@ class Selection {
// Uses the emptyBlocksIndex calculated by getIndexRelativeToAdjacentEmptyBlocks
// to move the cursor back to the start of the correct paragraph
- importSelectionMoveCursorPastBlocks (root, index = 1, range) {
+ importSelectionMoveCursorPastBlocks(root, index = 1, range) {
const treeWalker = this.doc.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, filterOnlyParentElements, false)
const startContainer = range.startContainer
let startBlock
@@ -259,7 +259,7 @@ class Selection {
// https://stackoverflow.com/questions/4176923/html-of-selected-text
// by Tim Down
- getSelectionHtml () {
+ getSelectionHtml() {
const sel = this.doc.getSelection()
let i
let html = ''
@@ -275,10 +275,10 @@ class Selection {
return html
}
- chopHtmlByCursor (root) {
- const { left } = this.getCaretOffsets(root)
+ chopHtmlByCursor(root) {
+ const {left} = this.getCaretOffsets(root)
const markedText = root.textContent
- const { type, info } = getCursorPositionWithinMarkedText(markedText, left)
+ const {type, info} = getCursorPositionWithinMarkedText(markedText, left)
const pre = markedText.slice(0, left)
const post = markedText.slice(left)
switch (type) {
@@ -312,7 +312,7 @@ class Selection {
* @param {Range} A Range representing cursor position. Will window.getSelection if none is passed.
* @return {Object} 'left' and 'right' attributes contain offsets from beginning and end of Element
*/
- getCaretOffsets (element, range) {
+ getCaretOffsets2(element, range) {
let preCaretRange
let postCaretRange
@@ -335,14 +335,51 @@ class Selection {
}
}
- selectNode (node) {
+ getCaretOffsets(element, range = null) {
+ if (!range) {
+ range = window.getSelection().getRangeAt(0)
+ }
+
+ const preCaretRange = range.cloneRange()
+ preCaretRange.selectNodeContents(element)
+ preCaretRange.setEnd(range.endContainer, range.endOffset)
+ const left = preCaretRange.toString().length
+
+ const postCaretRange = range.cloneRange()
+ postCaretRange.selectNodeContents(element)
+ postCaretRange.setStart(range.endContainer, range.endOffset)
+ const right = postCaretRange.toString().length
+
+ return {left, right}
+ }
+
+ selectNode(node) {
const range = this.doc.createRange()
range.selectNodeContents(node)
this.selectRange(range)
}
- select (startNode, startOffset, endNode, endOffset) {
+ /**
+ * If the `node` argument passed to `setStart()` is a text node, the `startOffset` value is the index of the first
+ * character in the text node that should be included in the range. For example, if `node` is a text node containing
+ * the string "Hello, world", and `startOffset` is 3, then the range would start with the fourth character in the
+ * text node, which is the letter "l".
+ * If the `node` argument is an element node, the `startOffset` value is the index of the child node within the
+ * element that should be the start of the range. For example, if `node` is an unordered list (``) element with
+ * three list items (`- `), and `startOffset` is 2, then the range would start with the third `
- ` child element
+ * within the `
`.
+ * @param startNode
+ * @param startOffset
+ * @param endNode
+ * @param endOffset
+ * @returns {Range}
+ */
+ select(startNode, startOffset, endNode, endOffset) {
const range = this.doc.createRange()
+ if(startNode.nodeType === 1 && startOffset > startNode.childNodes.length) {
+ console.error("start Node is type of Element Node, which startOffset should small then it's child number, startOffset is out of range");
+ return range;
+ }
range.setStart(startNode, startOffset)
if (endNode) {
range.setEnd(endNode, endOffset)
@@ -353,7 +390,7 @@ class Selection {
return range
}
- setFocus (focusNode, focusOffset) {
+ setFocus(focusNode, focusOffset) {
const selection = this.doc.getSelection()
selection.extend(focusNode, focusOffset)
}
@@ -363,8 +400,8 @@ class Selection {
*
* @param {boolean} moveCursorToStart A boolean representing whether or not to set the caret to the beginning of the prior selection.
*/
- clearSelection (moveCursorToStart) {
- const { rangeCount } = this.doc.getSelection()
+ clearSelection(moveCursorToStart) {
+ const {rangeCount} = this.doc.getSelection()
if (!rangeCount) return
if (moveCursorToStart) {
this.doc.getSelection().collapseToStart()
@@ -379,11 +416,11 @@ class Selection {
* @param {DomElement} node Element where to jump
* @param {integer} offset Where in the element should we jump, 0 by default
*/
- moveCursor (node, offset) {
+ moveCursor(node, offset) {
this.select(node, offset)
}
- getSelectionRange () {
+ getSelectionRange() {
const selection = this.doc.getSelection()
if (selection.rangeCount === 0) {
return null
@@ -391,7 +428,7 @@ class Selection {
return selection.getRangeAt(0)
}
- selectRange (range) {
+ selectRange(range) {
const selection = this.doc.getSelection()
selection.removeAllRanges()
@@ -401,15 +438,15 @@ class Selection {
// https://stackoverflow.com/questions/1197401/
// how-can-i-get-the-element-the-caret-is-in-with-javascript-when-using-contenteditable
// by You
- getSelectionStart () {
+ getSelectionStart() {
const node = this.doc.getSelection().anchorNode
const startNode = (node && node.nodeType === 3 ? node.parentNode : node)
return startNode
}
- setCursorRange (cursorRange) {
- const { anchor, focus } = cursorRange
+ setCursorRange(cursorRange) {
+ const {anchor, focus} = cursorRange
const anchorParagraph = document.querySelector(`#${anchor.key}`)
const focusParagraph = document.querySelector(`#${focus.key}`)
const getNodeAndOffset = (node, offset) => {
@@ -476,11 +513,14 @@ class Selection {
count += textLength
}
}
- return { node, offset }
+ return {node, offset}
}
- let { node: anchorNode, offset: anchorOffset } = getNodeAndOffset(anchorParagraph, anchor.offset)
- let { node: focusNode, offset: focusOffset } = getNodeAndOffset(focusParagraph, focus.offset)
+ let {node: anchorNode, offset: anchorOffset} = getNodeAndOffset(anchorParagraph, anchor.offset)
+ let {node: focusNode, offset: focusOffset} = getNodeAndOffset(focusParagraph, focus.offset)
+
+ console.log("[setCursorRange] anchorNode: ", anchorParagraph, anchor.offset);
+ console.log("[setCursorRange] focusNode: ", focusParagraph, focus.offset);
if (anchorNode.nodeType === 3 || anchorNode.nodeType === 1 && !anchorNode.classList.contains('ag-image-container')) {
anchorOffset = Math.min(anchorOffset, anchorNode.textContent.length)
@@ -493,7 +533,7 @@ class Selection {
this.setFocus(focusNode, focusOffset)
}
- isValidCursorNode (node) {
+ isValidCursorNode(node) {
if (!node) return false
if (node.nodeType === 3) {
node = node.parentNode
@@ -502,8 +542,8 @@ class Selection {
return node.closest('span.ag-paragraph')
}
- getCursorRange () {
- let { anchorNode, anchorOffset, focusNode, focusOffset } = this.doc.getSelection()
+ getCursorRange() {
+ let {anchorNode, anchorOffset, focusNode, focusOffset} = this.doc.getSelection()
const isAnchorValid = this.isValidCursorNode(anchorNode)
const isFocusValid = this.isValidCursorNode(focusNode)
let needFix = false
@@ -580,12 +620,13 @@ class Selection {
fOffset = aOffset
}
- const anchor = { key: anchorParagraph.id, offset: aOffset }
+ const anchor = {key: anchorParagraph.id, offset: aOffset}
- const focus = { key: focusParagraph.id, offset: fOffset }
- const result = new Cursor({ anchor, focus })
+ const focus = {key: focusParagraph.id, offset: fOffset}
+ const result = new Cursor({anchor, focus})
if (needFix) {
+ console.log('[getCursorRange] need fix: ', result)
this.setCursorRange(result)
}
@@ -593,9 +634,9 @@ class Selection {
}
// topOffset is the line counts above cursor, and bottomOffset is line counts below cursor.
- getCursorYOffset (paragraph) {
- const { y } = this.getCursorCoords()
- const { height, top } = paragraph.getBoundingClientRect()
+ getCursorYOffset(paragraph) {
+ const {y} = this.getCursorCoords()
+ const {height, top} = paragraph.getBoundingClientRect()
const lineHeight = parseFloat(getComputedStyle(paragraph).lineHeight)
const topOffset = Math.round((y - top) / lineHeight)
const bottomOffset = Math.round((top + height - lineHeight - y) / lineHeight)
@@ -606,7 +647,7 @@ class Selection {
}
}
- getCursorCoords () {
+ getCursorCoords() {
const sel = this.doc.getSelection()
let range
let x = 0
@@ -627,7 +668,7 @@ class Selection {
}
}
if (rects.length) {
- const { left, top, x: rectX, y: rectY, width: rWidth } = rects[0]
+ const {left, top, x: rectX, y: rectY, width: rWidth} = rects[0]
x = rectX || left
y = rectY || top
width = rWidth
@@ -635,10 +676,10 @@ class Selection {
}
}
- return { x, y, width }
+ return {x, y, width}
}
- getSelectionEnd () {
+ getSelectionEnd() {
const node = this.doc.getSelection().focusNode
const endNode = (node && node.nodeType === 3 ? node.parentNode : node)
diff --git a/package.json b/package.json
index 4e75314..8f3f946 100644
--- a/package.json
+++ b/package.json
@@ -43,7 +43,7 @@
"html-tags": "^3.1.0",
"joplin-turndown-plugin-gfm": "^1.0.12",
"katex": "0.15.3",
- "mermaid": "8.14.0",
+ "mermaid": "10.0.2",
"ot-json1": "^1.0.2",
"ot-text-unicode": "^4.0.0",
"popper.js": "^1.16.1",
diff --git a/yarn.lock b/yarn.lock
index f26d9d5..12812fc 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1125,10 +1125,10 @@
resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
-"@braintree/sanitize-url@^3.1.0":
- version "3.1.0"
- resolved "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-3.1.0.tgz"
- integrity sha512-GcIY79elgB+azP74j8vqkiXz8xLFfIzbQJdlwOPisgbKT00tviJQuEghOXSMVxJ00HoYJbGswr4kcllUc4xCcg==
+"@braintree/sanitize-url@^6.0.0":
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz#6110f918d273fe2af8ea1c4398a88774bb9fc12f"
+ integrity sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg==
"@commitlint/cli@^16.2.3":
version "16.2.3"
@@ -3483,6 +3483,20 @@ core-util-is@~1.0.0:
resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz"
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
+cose-base@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/cose-base/-/cose-base-1.0.3.tgz#650334b41b869578a543358b80cda7e0abe0a60a"
+ integrity sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==
+ dependencies:
+ layout-base "^1.0.0"
+
+cose-base@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/cose-base/-/cose-base-2.2.0.tgz#1c395c35b6e10bb83f9769ca8b817d614add5c01"
+ integrity sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==
+ dependencies:
+ layout-base "^2.0.0"
+
cosmiconfig-typescript-loader@^1.0.0:
version "1.0.3"
resolved "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.3.tgz"
@@ -3684,10 +3698,27 @@ currently-unhandled@^0.4.1:
dependencies:
array-find-index "^1.0.1"
-d3-array@1, d3-array@^1.1.1, d3-array@^1.2.0:
- version "1.2.4"
- resolved "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz"
- integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==
+cytoscape-cose-bilkent@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz#762fa121df9930ffeb51a495d87917c570ac209b"
+ integrity sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==
+ dependencies:
+ cose-base "^1.0.0"
+
+cytoscape-fcose@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz#e4d6f6490df4fab58ae9cea9e5c3ab8d7472f471"
+ integrity sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==
+ dependencies:
+ cose-base "^2.2.0"
+
+cytoscape@^3.23.0:
+ version "3.23.0"
+ resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.23.0.tgz#054ee05a6d0aa3b4f139382bbf2f4e5226df3c6d"
+ integrity sha512-gRZqJj/1kiAVPkrVFvz/GccxsXhF3Qwpptl32gKKypO4IlqnKBjTOu+HbXtEggSGzC5KCaHp3/F7GgENrtsFkA==
+ dependencies:
+ heap "^0.2.6"
+ lodash "^4.17.21"
"d3-array@1 - 2", d3-array@2, d3-array@^2.3.0, d3-array@^2.5.0, d3-array@^2.7.1:
version "2.12.1"
@@ -3703,27 +3734,18 @@ d3-array@1, d3-array@^1.1.1, d3-array@^1.2.0:
dependencies:
internmap "1 - 2"
-d3-axis@1:
- version "1.0.12"
- resolved "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.12.tgz"
- integrity sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==
+d3-array@^3.2.0:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.3.tgz#39f1f4954e4a09ff69ac597c2d61906b04e84740"
+ integrity sha512-JRHwbQQ84XuAESWhvIPaUV4/1UYTBOLiOPGWqgFDHZS1D5QN9c57FbH3QpEnQMYiOXNzKUQyGTZf+EVO7RT5TQ==
+ dependencies:
+ internmap "1 - 2"
d3-axis@3:
version "3.0.0"
resolved "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz"
integrity sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==
-d3-brush@1:
- version "1.1.6"
- resolved "https://registry.npmjs.org/d3-brush/-/d3-brush-1.1.6.tgz"
- integrity sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==
- dependencies:
- d3-dispatch "1"
- d3-drag "1"
- d3-interpolate "1"
- d3-selection "1"
- d3-transition "1"
-
d3-brush@3:
version "3.0.0"
resolved "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz"
@@ -3735,14 +3757,6 @@ d3-brush@3:
d3-selection "3"
d3-transition "3"
-d3-chord@1:
- version "1.0.6"
- resolved "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.6.tgz"
- integrity sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==
- dependencies:
- d3-array "1"
- d3-path "1"
-
d3-chord@3:
version "3.0.1"
resolved "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz"
@@ -3750,16 +3764,6 @@ d3-chord@3:
dependencies:
d3-path "1 - 3"
-d3-collection@1:
- version "1.0.7"
- resolved "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz"
- integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==
-
-d3-color@1:
- version "1.4.1"
- resolved "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz"
- integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==
-
"d3-color@1 - 2", d3-color@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz"
@@ -3770,19 +3774,12 @@ d3-color@1:
resolved "https://registry.npmjs.org/d3-color/-/d3-color-3.0.1.tgz"
integrity sha512-6/SlHkDOBLyQSJ1j1Ghs82OIUXpKWlR0hCsw0XrLSQhuUPuCSmLQ1QPH98vpnQxMUQM2/gfAkUEWsupVpd9JGw==
-d3-contour@1:
- version "1.3.2"
- resolved "https://registry.npmjs.org/d3-contour/-/d3-contour-1.3.2.tgz"
- integrity sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==
- dependencies:
- d3-array "^1.1.1"
-
-d3-contour@3:
- version "3.0.1"
- resolved "https://registry.npmjs.org/d3-contour/-/d3-contour-3.0.1.tgz"
- integrity sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ==
+d3-contour@4:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-4.0.2.tgz#bb92063bc8c5663acb2422f99c73cbb6c6ae3bcc"
+ integrity sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==
dependencies:
- d3-array "2 - 3"
+ d3-array "^3.2.0"
d3-delaunay@6, d3-delaunay@^6.0.2:
version "6.0.2"
@@ -3791,24 +3788,11 @@ d3-delaunay@6, d3-delaunay@^6.0.2:
dependencies:
delaunator "5"
-d3-dispatch@1:
- version "1.0.6"
- resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz"
- integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==
-
"d3-dispatch@1 - 3", d3-dispatch@3:
version "3.0.1"
resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz"
integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==
-d3-drag@1:
- version "1.2.5"
- resolved "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz"
- integrity sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==
- dependencies:
- d3-dispatch "1"
- d3-selection "1"
-
"d3-drag@2 - 3", d3-drag@3:
version "3.0.0"
resolved "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz"
@@ -3817,15 +3801,6 @@ d3-drag@1:
d3-dispatch "1 - 3"
d3-selection "3"
-d3-dsv@1:
- version "1.2.0"
- resolved "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.2.0.tgz"
- integrity sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==
- dependencies:
- commander "2"
- iconv-lite "0.4"
- rw "1"
-
"d3-dsv@1 - 3", d3-dsv@3, d3-dsv@^3.0.1:
version "3.0.1"
resolved "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz"
@@ -3844,23 +3819,11 @@ d3-dsv@^2.0.0:
iconv-lite "0.4"
rw "1"
-d3-ease@1:
- version "1.0.7"
- resolved "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz"
- integrity sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==
-
"d3-ease@1 - 3", d3-ease@3:
version "3.0.1"
resolved "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz"
integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==
-d3-fetch@1:
- version "1.2.0"
- resolved "https://registry.npmjs.org/d3-fetch/-/d3-fetch-1.2.0.tgz"
- integrity sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==
- dependencies:
- d3-dsv "1"
-
d3-fetch@3:
version "3.0.1"
resolved "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz"
@@ -3868,16 +3831,6 @@ d3-fetch@3:
dependencies:
d3-dsv "1 - 3"
-d3-force@1:
- version "1.2.1"
- resolved "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz"
- integrity sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==
- dependencies:
- d3-collection "1"
- d3-dispatch "1"
- d3-quadtree "1"
- d3-timer "1"
-
d3-force@3, d3-force@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz"
@@ -3887,11 +3840,6 @@ d3-force@3, d3-force@^3.0.0:
d3-quadtree "1 - 3"
d3-timer "1 - 3"
-d3-format@1:
- version "1.4.5"
- resolved "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz"
- integrity sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==
-
"d3-format@1 - 2", d3-format@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz"
@@ -3921,13 +3869,6 @@ d3-geo-projection@^4.0.0:
d3-array "1 - 3"
d3-geo "1.12.0 - 3"
-d3-geo@1:
- version "1.12.1"
- resolved "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.1.tgz"
- integrity sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==
- dependencies:
- d3-array "1"
-
"d3-geo@1.12.0 - 2", d3-geo@^2.0.1:
version "2.0.2"
resolved "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz"
@@ -3942,23 +3883,11 @@ d3-geo@1:
dependencies:
d3-array "2.5.0 - 3"
-d3-hierarchy@1:
- version "1.1.9"
- resolved "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz"
- integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==
-
d3-hierarchy@3, d3-hierarchy@^3.1.0:
version "3.1.1"
resolved "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.1.tgz"
integrity sha512-LtAIu54UctRmhGKllleflmHalttH3zkfSi4NlKrTAoFKjC+AFBJohsCAdgCBYQwH0F8hIOGY89X1pPqAchlMkA==
-d3-interpolate@1:
- version "1.4.0"
- resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz"
- integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==
- dependencies:
- d3-color "1"
-
"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3, d3-interpolate@^3.0.1:
version "3.0.1"
resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz"
@@ -3973,11 +3902,6 @@ d3-interpolate@1:
dependencies:
d3-color "1 - 2"
-d3-path@1:
- version "1.0.9"
- resolved "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz"
- integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==
-
"d3-path@1 - 2", d3-path@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz"
@@ -3988,44 +3912,21 @@ d3-path@1:
resolved "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz"
integrity sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==
-d3-polygon@1:
- version "1.0.6"
- resolved "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.6.tgz"
- integrity sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==
-
d3-polygon@3:
version "3.0.1"
resolved "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz"
integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==
-d3-quadtree@1:
- version "1.0.7"
- resolved "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz"
- integrity sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==
-
"d3-quadtree@1 - 3", d3-quadtree@3:
version "3.0.1"
resolved "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz"
integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==
-d3-random@1:
- version "1.1.2"
- resolved "https://registry.npmjs.org/d3-random/-/d3-random-1.1.2.tgz"
- integrity sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==
-
d3-random@3:
version "3.0.1"
resolved "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz"
integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==
-d3-scale-chromatic@1:
- version "1.5.0"
- resolved "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz"
- integrity sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==
- dependencies:
- d3-color "1"
- d3-interpolate "1"
-
d3-scale-chromatic@3:
version "3.0.0"
resolved "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz"
@@ -4034,18 +3935,6 @@ d3-scale-chromatic@3:
d3-color "1 - 3"
d3-interpolate "1 - 3"
-d3-scale@2:
- version "2.2.2"
- resolved "https://registry.npmjs.org/d3-scale/-/d3-scale-2.2.2.tgz"
- integrity sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==
- dependencies:
- d3-array "^1.2.0"
- d3-collection "1"
- d3-format "1"
- d3-interpolate "1"
- d3-time "1"
- d3-time-format "2"
-
d3-scale@4, d3-scale@^4.0.2:
version "4.0.2"
resolved "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz"
@@ -4068,23 +3957,11 @@ d3-scale@^3.2.2:
d3-time "^2.1.1"
d3-time-format "2 - 3"
-d3-selection@1, d3-selection@^1.1.0:
- version "1.4.2"
- resolved "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz"
- integrity sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==
-
"d3-selection@2 - 3", d3-selection@3:
version "3.0.0"
resolved "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz"
integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==
-d3-shape@1:
- version "1.3.7"
- resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz"
- integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==
- dependencies:
- d3-path "1"
-
d3-shape@3, d3-shape@^3.1.0:
version "3.1.0"
resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz"
@@ -4099,13 +3976,6 @@ d3-shape@^2.0.0:
dependencies:
d3-path "1 - 2"
-d3-time-format@2:
- version "2.3.0"
- resolved "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz"
- integrity sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==
- dependencies:
- d3-time "1"
-
"d3-time-format@2 - 3", d3-time-format@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz"
@@ -4120,11 +3990,6 @@ d3-time-format@2:
dependencies:
d3-time "1 - 3"
-d3-time@1:
- version "1.1.0"
- resolved "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz"
- integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==
-
"d3-time@1 - 2", d3-time@^2.0.0, d3-time@^2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz"
@@ -4139,28 +4004,11 @@ d3-time@1:
dependencies:
d3-array "2 - 3"
-d3-timer@1:
- version "1.0.10"
- resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz"
- integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==
-
"d3-timer@1 - 3", d3-timer@3, d3-timer@^3.0.1:
version "3.0.1"
resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz"
integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==
-d3-transition@1:
- version "1.3.2"
- resolved "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz"
- integrity sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==
- dependencies:
- d3-color "1"
- d3-dispatch "1"
- d3-ease "1"
- d3-interpolate "1"
- d3-selection "^1.1.0"
- d3-timer "1"
-
"d3-transition@2 - 3", d3-transition@3:
version "3.0.1"
resolved "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz"
@@ -4172,22 +4020,6 @@ d3-transition@1:
d3-interpolate "1 - 3"
d3-timer "1 - 3"
-d3-voronoi@1:
- version "1.1.4"
- resolved "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.4.tgz"
- integrity sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==
-
-d3-zoom@1:
- version "1.8.3"
- resolved "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.8.3.tgz"
- integrity sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==
- dependencies:
- d3-dispatch "1"
- d3-drag "1"
- d3-interpolate "1"
- d3-selection "1"
- d3-transition "1"
-
d3-zoom@3:
version "3.0.0"
resolved "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz"
@@ -4199,54 +4031,17 @@ d3-zoom@3:
d3-selection "2 - 3"
d3-transition "2 - 3"
-d3@^5.14:
- version "5.16.0"
- resolved "https://registry.npmjs.org/d3/-/d3-5.16.0.tgz"
- integrity sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==
- dependencies:
- d3-array "1"
- d3-axis "1"
- d3-brush "1"
- d3-chord "1"
- d3-collection "1"
- d3-color "1"
- d3-contour "1"
- d3-dispatch "1"
- d3-drag "1"
- d3-dsv "1"
- d3-ease "1"
- d3-fetch "1"
- d3-force "1"
- d3-format "1"
- d3-geo "1"
- d3-hierarchy "1"
- d3-interpolate "1"
- d3-path "1"
- d3-polygon "1"
- d3-quadtree "1"
- d3-random "1"
- d3-scale "2"
- d3-scale-chromatic "1"
- d3-selection "1"
- d3-shape "1"
- d3-time "1"
- d3-time-format "2"
- d3-timer "1"
- d3-transition "1"
- d3-voronoi "1"
- d3-zoom "1"
-
-d3@^7.0.0:
- version "7.3.0"
- resolved "https://registry.npmjs.org/d3/-/d3-7.3.0.tgz"
- integrity sha512-MDRLJCMK232OJQRqGljQ/gCxtB8k3/sLKFjftMjzPB3nKVUODpdW9Rb3vcq7U8Ka5YKoZkAmp++Ur6I+6iNWIw==
+d3@^7.4.0, d3@^7.8.2:
+ version "7.8.4"
+ resolved "https://registry.yarnpkg.com/d3/-/d3-7.8.4.tgz#e35d45800e4068cab07e59e5d883a4bb42ab217f"
+ integrity sha512-q2WHStdhiBtD8DMmhDPyJmXUxr6VWRngKyiJ5EfXMxPw+tqT6BhNjhJZ4w3BHsNm3QoVfZLY8Orq/qPFczwKRA==
dependencies:
d3-array "3"
d3-axis "3"
d3-brush "3"
d3-chord "3"
d3-color "3"
- d3-contour "3"
+ d3-contour "4"
d3-delaunay "6"
d3-dispatch "3"
d3-drag "3"
@@ -4272,23 +4067,13 @@ d3@^7.0.0:
d3-transition "3"
d3-zoom "3"
-dagre-d3@^0.6.4:
- version "0.6.4"
- resolved "https://registry.npmjs.org/dagre-d3/-/dagre-d3-0.6.4.tgz"
- integrity sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==
- dependencies:
- d3 "^5.14"
- dagre "^0.8.5"
- graphlib "^2.1.8"
- lodash "^4.17.15"
-
-dagre@^0.8.5:
- version "0.8.5"
- resolved "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz"
- integrity sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==
+dagre-d3-es@7.0.9:
+ version "7.0.9"
+ resolved "https://registry.yarnpkg.com/dagre-d3-es/-/dagre-d3-es-7.0.9.tgz#aca12fccd9d09955a4430029ba72ee6934542a8d"
+ integrity sha512-rYR4QfVmy+sR44IBDvVtcAmOReGBvRCWDpO2QjYwqgh9yijw6eSHBqaPG/LIOEy7aBsniLvtMW6pg19qJhq60w==
dependencies:
- graphlib "^2.1.8"
- lodash "^4.17.15"
+ d3 "^7.8.2"
+ lodash-es "^4.17.21"
dargs@^7.0.0:
version "7.0.0"
@@ -4304,6 +4089,11 @@ data-urls@^2.0.0:
whatwg-mimetype "^2.3.0"
whatwg-url "^8.0.0"
+dayjs@^1.11.7:
+ version "1.11.7"
+ resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2"
+ integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==
+
debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9:
version "2.6.9"
resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
@@ -4578,10 +4368,10 @@ domino@^2.1.6:
resolved "https://registry.npmjs.org/domino/-/domino-2.1.6.tgz"
integrity sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ==
-dompurify@2.3.5:
- version "2.3.5"
- resolved "https://registry.npmjs.org/dompurify/-/dompurify-2.3.5.tgz"
- integrity sha512-kD+f8qEaa42+mjdOpKeztu9Mfx5bv9gVLO6K9jRx4uGvh6Wv06Srn4jr1wPNY2OOUGGSKHNFN+A8MA3v0E0QAQ==
+dompurify@2.4.3:
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.3.tgz#f4133af0e6a50297fc8874e2eaedc13a3c308c03"
+ integrity sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ==
dompurify@^2.3.6:
version "2.3.6"
@@ -4676,6 +4466,11 @@ element-resize-detector@^1.2.4:
dependencies:
batch-processor "1.0.0"
+elkjs@^0.8.2:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/elkjs/-/elkjs-0.8.2.tgz#c37763c5a3e24e042e318455e0147c912a7c248e"
+ integrity sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==
+
elliptic@^6.5.3:
version "6.5.4"
resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz"
@@ -5725,13 +5520,6 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4,
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz"
integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
-graphlib@^2.1.8:
- version "2.1.8"
- resolved "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz"
- integrity sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==
- dependencies:
- lodash "^4.17.15"
-
handle-thing@^2.0.0:
version "2.0.1"
resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz"
@@ -5841,6 +5629,11 @@ he@^1.1.1, he@^1.2.0:
resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+heap@^0.2.6:
+ version "0.2.7"
+ resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.7.tgz#1e6adf711d3f27ce35a81fe3b7bd576c2260a8fc"
+ integrity sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==
+
hmac-drbg@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz"
@@ -7191,10 +6984,10 @@ katex@0.15.3:
dependencies:
commander "^8.0.0"
-khroma@^1.4.1:
- version "1.4.1"
- resolved "https://registry.npmjs.org/khroma/-/khroma-1.4.1.tgz"
- integrity sha512-+GmxKvmiRuCcUYDgR7g5Ngo0JEDeOsGdNONdU2zsiBQaK4z19Y2NvXqfEDE0ZiIrg45GTZyAnPLVsLZZACYm3Q==
+khroma@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/khroma/-/khroma-2.0.0.tgz#7577de98aed9f36c7a474c4d453d94c0d6c6588b"
+ integrity sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
version "3.2.2"
@@ -7248,6 +7041,16 @@ launch-editor@^2.6.0:
picocolors "^1.0.0"
shell-quote "^1.7.3"
+layout-base@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-1.0.2.tgz#1291e296883c322a9dd4c5dd82063721b53e26e2"
+ integrity sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==
+
+layout-base@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-2.0.1.tgz#d0337913586c90f9c2c075292069f5c2da5dd285"
+ integrity sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==
+
leven@^2.1.0:
version "2.1.0"
resolved "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz"
@@ -7382,6 +7185,11 @@ locate-path@^6.0.0:
dependencies:
p-locate "^5.0.0"
+lodash-es@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
+ integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
+
lodash.debounce@^4.0.8:
version "4.0.8"
resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz"
@@ -7649,20 +7457,27 @@ merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1:
resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-mermaid@8.14.0:
- version "8.14.0"
- resolved "https://registry.npmjs.org/mermaid/-/mermaid-8.14.0.tgz"
- integrity sha512-ITSHjwVaby1Li738sxhF48sLTxcNyUAoWfoqyztL1f7J6JOLpHOuQPNLBb6lxGPUA0u7xP9IRULgvod0dKu35A==
- dependencies:
- "@braintree/sanitize-url" "^3.1.0"
- d3 "^7.0.0"
- dagre "^0.8.5"
- dagre-d3 "^0.6.4"
- dompurify "2.3.5"
- graphlib "^2.1.8"
- khroma "^1.4.1"
- moment-mini "^2.24.0"
- stylis "^4.0.10"
+mermaid@10.0.2:
+ version "10.0.2"
+ resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-10.0.2.tgz#8e294ea4890fe86ca7f5a4cd3c10362ec8d3ed98"
+ integrity sha512-slwoB9WdNUT+/W9VhxLYRLZ0Ey12fIE+cAZjm3FmHTD+0F1uoJETfsNbVS1POnvQZhFYzfT6/z6hJZXgecqVBA==
+ dependencies:
+ "@braintree/sanitize-url" "^6.0.0"
+ cytoscape "^3.23.0"
+ cytoscape-cose-bilkent "^4.1.0"
+ cytoscape-fcose "^2.1.0"
+ d3 "^7.4.0"
+ dagre-d3-es "7.0.9"
+ dayjs "^1.11.7"
+ dompurify "2.4.3"
+ elkjs "^0.8.2"
+ khroma "^2.0.0"
+ lodash-es "^4.17.21"
+ non-layered-tidy-tree-layout "^2.0.2"
+ stylis "^4.1.2"
+ ts-dedent "^2.2.0"
+ uuid "^9.0.0"
+ web-worker "^1.2.0"
methods@~1.1.2:
version "1.1.2"
@@ -7828,11 +7643,6 @@ mkdirp@^0.5.1:
dependencies:
minimist "^1.2.5"
-moment-mini@^2.24.0:
- version "2.24.0"
- resolved "https://registry.npmjs.org/moment-mini/-/moment-mini-2.24.0.tgz"
- integrity sha512-9ARkWHBs+6YJIvrIp0Ik5tyTTtP9PoV0Ssu2Ocq5y9v8+NOOpWiRshAp8c4rZVWTOe+157on/5G+zj5pwIQFEQ==
-
ms@2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
@@ -7973,6 +7783,11 @@ node-releases@^2.0.8:
resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz"
integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==
+non-layered-tidy-tree-layout@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz#57d35d13c356643fc296a55fb11ac15e74da7804"
+ integrity sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==
+
normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0:
version "2.5.0"
resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz"
@@ -10302,10 +10117,10 @@ stylelint@^9.10.1:
svg-tags "^1.0.0"
table "^5.0.0"
-stylis@^4.0.10:
- version "4.0.13"
- resolved "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz"
- integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==
+stylis@^4.1.2:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7"
+ integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==
sugarss@^2.0.0:
version "2.0.0"
@@ -10652,6 +10467,11 @@ trough@^1.0.0:
resolved "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz"
integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==
+ts-dedent@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5"
+ integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==
+
ts-node@^10.4.0:
version "10.4.0"
resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz"
@@ -10994,6 +10814,11 @@ uuid@^8.3.2:
resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
+uuid@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5"
+ integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==
+
v8-compile-cache@^2.0.3, v8-compile-cache@^2.3.0:
version "2.3.0"
resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz"
@@ -11544,6 +11369,11 @@ wbuf@^1.1.0, wbuf@^1.7.3:
dependencies:
minimalistic-assert "^1.0.0"
+web-worker@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.2.0.tgz#5d85a04a7fbc1e7db58f66595d7a3ac7c9c180da"
+ integrity sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==
+
webfontloader@^1.6.28:
version "1.6.28"
resolved "https://registry.npmjs.org/webfontloader/-/webfontloader-1.6.28.tgz"