From 01a0b99d00fa2ad86bfc38ac02e5ddd61fa403e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Thu, 5 Mar 2020 21:35:30 +0100 Subject: [PATCH] add collect.js --- packages/tiptap-core/package.json | 1 + packages/tiptap-core/src/ExtensionManager.ts | 25 +++++++++----------- yarn.lock | 5 ++++ 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/packages/tiptap-core/package.json b/packages/tiptap-core/package.json index 42a8a793..04d2d8d2 100644 --- a/packages/tiptap-core/package.json +++ b/packages/tiptap-core/package.json @@ -12,6 +12,7 @@ "dist" ], "dependencies": { + "collect.js": "^4.20.3", "prosemirror-example-setup": "^1.1.2", "prosemirror-model": "^1.9.1", "prosemirror-schema-basic": "^1.1.2", diff --git a/packages/tiptap-core/src/ExtensionManager.ts b/packages/tiptap-core/src/ExtensionManager.ts index dbff14e0..cc0740cf 100644 --- a/packages/tiptap-core/src/ExtensionManager.ts +++ b/packages/tiptap-core/src/ExtensionManager.ts @@ -1,4 +1,5 @@ import { keymap } from 'prosemirror-keymap' +import collect from 'collect.js' import { Editor } from './Editor' export default class ExtensionManager { @@ -13,22 +14,18 @@ export default class ExtensionManager { this.extensions = extensions } - get nodes() { - return this.extensions - .filter(extension => extension.type === 'node') - .reduce((nodes, { name, schema }) => ({ - ...nodes, - [name]: schema, - }), {}) + get nodes(): any { + return collect(this.extensions) + .where('type', 'node') + .mapWithKeys((extension: any) => [extension.name, extension.schema]) + .all() } - get marks() { - return this.extensions - .filter(extension => extension.type === 'mark') - .reduce((marks, { name, schema }) => ({ - ...marks, - [name]: schema, - }), {}) + get marks(): any { + return collect(this.extensions) + .where('type', 'mark') + .mapWithKeys((extension: any) => [extension.name, extension.schema]) + .all() } } diff --git a/yarn.lock b/yarn.lock index 95ddbeb3..bc5e9cac 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3811,6 +3811,11 @@ collapse-white-space@^1.0.0, collapse-white-space@^1.0.2: resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== +collect.js@^4.20.3: + version "4.20.3" + resolved "https://registry.yarnpkg.com/collect.js/-/collect.js-4.20.3.tgz#fb8c98fbf7f042519f3ee7366a5b674e73de1cd4" + integrity sha512-sPNxjntNe7GHszjcH3zWdyLQVYMRlK9uWnRGtnUsuCpHM/iUbqKSDeUail06hmwgQP7otIJEZwrSJScGxZ5XEg== + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"