From f61dbf34a447e31b0afc87539efdf181543c4942 Mon Sep 17 00:00:00 2001 From: Thomas HUMMEL Date: Sat, 12 Oct 2024 17:37:07 +0200 Subject: [PATCH 1/8] Merge with upstream mastr --- src/services.ts | 42 +++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/src/services.ts b/src/services.ts index 27e8e9c2..6f600950 100644 --- a/src/services.ts +++ b/src/services.ts @@ -1,7 +1,5 @@ /* eslint-disable no-useless-escape */ -import type { ServicesConfigType } from './serviceConfig'; - -const SERVICES: ServicesConfigType = { +export default { vimeo: { regex: /(?:http[s]?:\/\/)?(?:www.)?(?:player.)?vimeo\.co(?:.+\/([^\/]\d+)(?:#t=[\d]+)?s?$)/, embedUrl: 'https://player.vimeo.com/video/<%= remote_id %>?title=0&byline=0', @@ -20,7 +18,7 @@ const SERVICES: ServicesConfigType = { return id; } - const paramsMap: Record = { + const paramsMap = { start: 'start', end: 'end', t: 'start', @@ -29,7 +27,7 @@ const SERVICES: ServicesConfigType = { list: 'list', }; - let newParams = params.slice(1) + params = params.slice(1) .split('&') .map(param => { const [name, value] = param.split('='); @@ -40,13 +38,13 @@ const SERVICES: ServicesConfigType = { return null; } - if (!(paramsMap[name])) { + if (!paramsMap[name]) { return null; } - if (value === 'LL' || - value.startsWith('RDMM') || - value.startsWith('FL')) { + if (value === 'LL' + || value.startsWith('RDMM') + || value.startsWith('FL')) { return null; } @@ -54,7 +52,7 @@ const SERVICES: ServicesConfigType = { }) .filter(param => !!param); - return id + '?' + newParams.join('&'); + return id + '?' + params.join('&'); }, }, coub: { @@ -131,8 +129,7 @@ const SERVICES: ServicesConfigType = { id: (ids) => ids.join('/embed/'), }, instagram: { - //it support both reel and post - regex: /^https:\/\/(?:www\.)?instagram\.com\/(?:reel|p)\/(.*)/, + regex: /https?:\/\/www\.instagram\.com\/p\/([^\/\?\&]+)\/?.*/, embedUrl: 'https://www.instagram.com/p/<%= remote_id %>/embed', html: '', height: 505, @@ -140,12 +137,12 @@ const SERVICES: ServicesConfigType = { id: (groups: string[]) => groups?.[0]?.split("/")[0], }, twitter: { - regex: /^https?:\/\/(www\.)?(?:twitter\.com|x\.com)\/.+\/status\/(\d+)/, - embedUrl: 'https://platform.twitter.com/embed/Tweet.html?id=<%= remote_id %>', + regex: /^https?:\/\/twitter\.com\/(?:#!\/)?(\w+)\/status(?:es)?\/(\d+?.*)?$/, + embedUrl: 'https://twitframe.com/show?url=https://twitter.com/<%= remote_id %>', html: '', height: 300, width: 600, - id: ids => ids[1], + id: ids => ids.join('/status/'), }, pinterest: { regex: /https?:\/\/([^\/\?\&]*).pinterest.com\/pin\/([^\/\?\&]*)\/?$/, @@ -183,6 +180,21 @@ const SERVICES: ServicesConfigType = { width: 600, id: (groups) => `${groups.join('/')}.js`, }, + whimsical: { + regex: /(https:\/\/)?whimsical.com\/(?:[a-zA-Z0-9\-]+\-)?([a-km-zA-HJ-NP-Z1-9]{16,22})(@[a-km-zA-HJ-NP-Z1-9]+)?/, + embedUrl: 'https://whimsical.com/embed/<%= remote_id %>', + html: "", + height: 300, + width: 600, + id: (ids) => ids[1] + }, + figma:{ + regex: /(https:\/\/www\.figma\.com\/.*)?/, + embedUrl: 'https://www.figma.com/embed?embed_host=share&url=<%= remote_id %>', + html: "", + height: 300, + width: 600 + }, }; export default SERVICES; From e2e4ca14057aa9d622fe59817ccbe3186d07a278 Mon Sep 17 00:00:00 2001 From: Thomas HUMMEL Date: Tue, 23 Apr 2024 11:52:26 +0200 Subject: [PATCH 2/8] core(test): Add whimsical and figma tests --- test/services.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/test/services.ts b/test/services.ts index 1685d840..d67d712a 100644 --- a/test/services.ts +++ b/test/services.ts @@ -463,3 +463,30 @@ describe('Miro service', () => { }) }); +describe('whimsical', () => { + it('should correctly parse URL got from a browser', () => { + const regularBoardUrl = 'https://whimsical.com/test-86ajy7vWEzYATvwFFvbwfA'; + const event = composePasteEventMock('pattern', 'whimsical', regularBoardUrl); + + embed.onPaste(event); + + expect(patterns.whimsical.test(regularBoardUrl)).to.be.true; + expect(embed.data.service).to.be.equal('whimsical'); + expect(embed.data.embed).to.be.equal('https://whimsical.com/embed/86ajy7vWEzYATvwFFvbwfA'); + expect(embed.data.source).to.be.equal(regularBoardUrl); + }); +}); + +describe('figma', () => { + it('should correctly parse URL got from a browser', () => { + const regularBoardUrl = 'https://www.figma.com/file/3BYrViWFPvfhbrpm1aO3ha/Untitled?type=design&node-id=0%3A1&mode=design&t=WutMRT9L8VJNEL5z-1'; + const event = composePasteEventMock('pattern', 'figma', regularBoardUrl); + + embed.onPaste(event); + + expect(patterns.figma.test(regularBoardUrl)).to.be.true; + expect(embed.data.service).to.be.equal('figma'); + expect(embed.data.embed).to.be.equal('https://www.figma.com/embed?embed_host=share&url=https://www.figma.com/file/3BYrViWFPvfhbrpm1aO3ha/Untitled?type=design&node-id=0%3A1&mode=design&t=WutMRT9L8VJNEL5z-1'); + expect(embed.data.source).to.be.equal(regularBoardUrl); + }); +}); From 3255c04cd3528ebdddb01f207b3b44cfe7f6a05d Mon Sep 17 00:00:00 2001 From: Thomas HUMMEL Date: Fri, 19 Jul 2024 10:29:08 +0200 Subject: [PATCH 3/8] core(lib): Update readme and package version --- README.md | 8 ++++---- package.json | 11 ++++------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 650acb97..dfc57583 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Tool uses Editor.js pasted patterns handling and inserts iframe with embedded co - [Facebook](https://www.facebook.com) - `facebook` service - [Instagram](https://www.instagram.com/codex_team/) - `instagram` service - [YouTube](https://youtube.com) - `youtube` service -- [Twitter](https://twitter.com) - `twitter` service. (official twitter api is used for render, no need to use twitframe) +- [Twitter](https://twitter.com/codex_team) - `twitter` service. ( used for render) - [Twitch](https://twitch.tv) - `twitch-video` service for videos and `twitch-channel` for channels - [Miro](https://miro.com) - `miro` service - [Vimeo](https://vimeo.com) — `vimeo` service @@ -25,10 +25,10 @@ Tool uses Editor.js pasted patterns handling and inserts iframe with embedded co - [CodePen](https://codepen.io) — `codepen` service - [Pinterest](https://www.pinterest.com) - `pinterest` service - [GitHub Gist](https://gist.github.com) - `github` service +- [Figma](https://www.figma.com/) - `figma` service +- [Whimsical](https://whimsical.com/) - whimsical service - 👇 Any other [customized service](#add-more-services) - - ## Installation Get the package @@ -151,6 +151,7 @@ var editor = EditorJS({ ``` #### Inline Toolbar + Editor.js provides useful inline toolbar. You can allow it\`s usage in the Embed Tool caption by providing `inlineToolbar: true`. ```javascript @@ -180,7 +181,6 @@ var editor = EditorJS({ | height | `number` | embedded content height | caption | `string` | content caption - ```json { "type" : "embed", diff --git a/package.json b/package.json index c1087c17..21fe2f53 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@editorjs/embed", - "version": "2.7.6", + "version": "2.8.0", "keywords": [ "codex editor", "embed", @@ -25,7 +25,7 @@ "scripts": { "dev": "vite", "build": "vite build", - "test": "mocha --require ts-node/register --require ignore-styles --recursive './test/**/*.ts'", + "test": "mocha -r @babel/register -r ignore-styles --recursive ./test", "lint": "eslint src/ --ext .js", "lint:errors": "eslint src/ --ext .js --quiet", "lint:fix": "eslint src/ --ext .js --fix" @@ -54,10 +54,7 @@ "ts-node": "^10.9.2", "typescript": "^5.4.5", "vite": "^4.5.0", - "vite-plugin-css-injected-by-js": "^3.3.0", - "vite-plugin-dts": "^3.9.1" + "vite-plugin-css-injected-by-js": "^3.3.0" }, - "dependencies": { - "@editorjs/editorjs": "^2.29.1" - } + "dependencies": {} } From c34654115b4f33d6f9c2b8a01a2bfa6596774bbf Mon Sep 17 00:00:00 2001 From: Thomas HUMMEL Date: Sat, 12 Oct 2024 17:53:40 +0200 Subject: [PATCH 4/8] core(package.json): Change version and update test script --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 21fe2f53..7a08f8ce 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@editorjs/embed", - "version": "2.8.0", + "version": "2.7.7", "keywords": [ "codex editor", "embed", @@ -25,7 +25,7 @@ "scripts": { "dev": "vite", "build": "vite build", - "test": "mocha -r @babel/register -r ignore-styles --recursive ./test", + "test": "mocha --require ts-node/register --require ignore-styles --recursive './test/**/*.ts'", "lint": "eslint src/ --ext .js", "lint:errors": "eslint src/ --ext .js --quiet", "lint:fix": "eslint src/ --ext .js --fix" From c45446870374056422cc9ada63d4520487d87619 Mon Sep 17 00:00:00 2001 From: Thomas HUMMEL Date: Fri, 18 Oct 2024 10:06:21 +0200 Subject: [PATCH 5/8] fix(changes): Remove unexpected changes --- package.json | 7 +++++-- src/services.ts | 10 ++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 7a08f8ce..bb63bbc7 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,10 @@ "ts-node": "^10.9.2", "typescript": "^5.4.5", "vite": "^4.5.0", - "vite-plugin-css-injected-by-js": "^3.3.0" + "vite-plugin-css-injected-by-js": "^3.3.0", + "vite-plugin-dts": "^3.9.1" }, - "dependencies": {} + "dependencies": { + "@editorjs/editorjs": "^2.29.1" + } } diff --git a/src/services.ts b/src/services.ts index 6f600950..b2343db0 100644 --- a/src/services.ts +++ b/src/services.ts @@ -1,5 +1,7 @@ /* eslint-disable no-useless-escape */ -export default { +import type { ServicesConfigType } from './serviceConfig'; + +const SERVICES: ServicesConfigType = { vimeo: { regex: /(?:http[s]?:\/\/)?(?:www.)?(?:player.)?vimeo\.co(?:.+\/([^\/]\d+)(?:#t=[\d]+)?s?$)/, embedUrl: 'https://player.vimeo.com/video/<%= remote_id %>?title=0&byline=0', @@ -42,9 +44,9 @@ export default { return null; } - if (value === 'LL' - || value.startsWith('RDMM') - || value.startsWith('FL')) { + if (value === 'LL' || + value.startsWith('RDMM') || + value.startsWith('FL')) { return null; } From bb57dc1b978f63de306aacea144d7ea256c1e0ef Mon Sep 17 00:00:00 2001 From: Thomas HUMMEL Date: Mon, 21 Oct 2024 09:35:54 +0200 Subject: [PATCH 6/8] core(services): Keep only expected changes --- README.md | 2 +- src/services.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index dfc57583..d91bd147 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Tool uses Editor.js pasted patterns handling and inserts iframe with embedded co - [Facebook](https://www.facebook.com) - `facebook` service - [Instagram](https://www.instagram.com/codex_team/) - `instagram` service - [YouTube](https://youtube.com) - `youtube` service -- [Twitter](https://twitter.com/codex_team) - `twitter` service. ( used for render) +- [Twitter](https://twitter.com) - `twitter` service. (official twitter api is used for render, no need to use twitframe) - [Twitch](https://twitch.tv) - `twitch-video` service for videos and `twitch-channel` for channels - [Miro](https://miro.com) - `miro` service - [Vimeo](https://vimeo.com) — `vimeo` service diff --git a/src/services.ts b/src/services.ts index b2343db0..c58f1774 100644 --- a/src/services.ts +++ b/src/services.ts @@ -20,7 +20,7 @@ const SERVICES: ServicesConfigType = { return id; } - const paramsMap = { + const paramsMap: Record = { start: 'start', end: 'end', t: 'start', @@ -29,7 +29,7 @@ const SERVICES: ServicesConfigType = { list: 'list', }; - params = params.slice(1) + let newParams = params.slice(1) .split('&') .map(param => { const [name, value] = param.split('='); @@ -54,7 +54,7 @@ const SERVICES: ServicesConfigType = { }) .filter(param => !!param); - return id + '?' + params.join('&'); + return id + '?' + newParams.join('&'); }, }, coub: { @@ -144,7 +144,7 @@ const SERVICES: ServicesConfigType = { html: '', height: 300, width: 600, - id: ids => ids.join('/status/'), + id: ids => ids[1], }, pinterest: { regex: /https?:\/\/([^\/\?\&]*).pinterest.com\/pin\/([^\/\?\&]*)\/?$/, From 72774147f2f9346aa9a89b789012e6afb33a31ad Mon Sep 17 00:00:00 2001 From: Thomas HUMMEL Date: Mon, 21 Oct 2024 09:37:41 +0200 Subject: [PATCH 7/8] core(services): Keep only expected changes 2 --- src/services.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/services.ts b/src/services.ts index c58f1774..f536aaef 100644 --- a/src/services.ts +++ b/src/services.ts @@ -131,7 +131,7 @@ const SERVICES: ServicesConfigType = { id: (ids) => ids.join('/embed/'), }, instagram: { - regex: /https?:\/\/www\.instagram\.com\/p\/([^\/\?\&]+)\/?.*/, + regex: /^https:\/\/(?:www\.)?instagram\.com\/(?:reel|p)\/(.*)/, embedUrl: 'https://www.instagram.com/p/<%= remote_id %>/embed', html: '', height: 505, @@ -139,8 +139,8 @@ const SERVICES: ServicesConfigType = { id: (groups: string[]) => groups?.[0]?.split("/")[0], }, twitter: { - regex: /^https?:\/\/twitter\.com\/(?:#!\/)?(\w+)\/status(?:es)?\/(\d+?.*)?$/, - embedUrl: 'https://twitframe.com/show?url=https://twitter.com/<%= remote_id %>', + regex: /^https?:\/\/(www\.)?(?:twitter\.com|x\.com)\/.+\/status\/(\d+)/, + embedUrl: 'https://platform.twitter.com/embed/Tweet.html?id=<%= remote_id %>', html: '', height: 300, width: 600, From b0c39bd9a5165f5c9be08ef9751f10096de70bc1 Mon Sep 17 00:00:00 2001 From: Peter Savchenko Date: Fri, 21 Nov 2025 20:12:38 +0300 Subject: [PATCH 8/8] release 1.8.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9cfcb692..425a2637 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@editorjs/embed", - "version": "2.7.7", + "version": "2.8.0", "keywords": [ "codex editor", "embed",