From 0aa373b5eb1b2d243ce7d84a2af2cf724c2c6248 Mon Sep 17 00:00:00 2001
From: Asherah Connor <asherah@hrzn.ee>
Date: Tue, 16 Aug 2022 12:08:51 +1000
Subject: [PATCH] fix(core): isNodeSelection, isTextSelection not always false

Fixes #2979.  Since the ProseMirror TypeScript upgrade, these have
always returned false, since the Selection type tree are all classes
now.
---
 packages/core/src/helpers/isNodeSelection.ts  |  4 +---
 packages/core/src/helpers/isTextSelection.ts  |  4 +---
 packages/core/src/utilities/isClass.ts        |  7 -------
 packages/core/src/utilities/isObject.ts       | 10 ----------
 .../cypress/integration/core/isClass.spec.ts  | 19 -------------------
 5 files changed, 2 insertions(+), 42 deletions(-)
 delete mode 100644 packages/core/src/utilities/isClass.ts
 delete mode 100644 packages/core/src/utilities/isObject.ts
 delete mode 100644 tests/cypress/integration/core/isClass.spec.ts

diff --git a/packages/core/src/helpers/isNodeSelection.ts b/packages/core/src/helpers/isNodeSelection.ts
index 07ea50feae..cb40e62bd2 100644
--- a/packages/core/src/helpers/isNodeSelection.ts
+++ b/packages/core/src/helpers/isNodeSelection.ts
@@ -1,7 +1,5 @@
 import { NodeSelection } from 'prosemirror-state'
 
-import { isObject } from '../utilities/isObject'
-
 export function isNodeSelection(value: unknown): value is NodeSelection {
-  return isObject(value) && value instanceof NodeSelection
+  return value instanceof NodeSelection
 }
diff --git a/packages/core/src/helpers/isTextSelection.ts b/packages/core/src/helpers/isTextSelection.ts
index 6724426cad..8d3ecd8a4a 100644
--- a/packages/core/src/helpers/isTextSelection.ts
+++ b/packages/core/src/helpers/isTextSelection.ts
@@ -1,7 +1,5 @@
 import { TextSelection } from 'prosemirror-state'
 
-import { isObject } from '../utilities/isObject'
-
 export function isTextSelection(value: unknown): value is TextSelection {
-  return isObject(value) && value instanceof TextSelection
+  return value instanceof TextSelection
 }
diff --git a/packages/core/src/utilities/isClass.ts b/packages/core/src/utilities/isClass.ts
deleted file mode 100644
index 925fabd7d7..0000000000
--- a/packages/core/src/utilities/isClass.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export function isClass(value: any): boolean {
-  if (value.constructor?.toString().substring(0, 5) !== 'class') {
-    return false
-  }
-
-  return true
-}
diff --git a/packages/core/src/utilities/isObject.ts b/packages/core/src/utilities/isObject.ts
deleted file mode 100644
index a5a17b6581..0000000000
--- a/packages/core/src/utilities/isObject.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { isClass } from './isClass'
-
-export function isObject(value: any): boolean {
-  return (
-    value
-    && typeof value === 'object'
-    && !Array.isArray(value)
-    && !isClass(value)
-  )
-}
diff --git a/tests/cypress/integration/core/isClass.spec.ts b/tests/cypress/integration/core/isClass.spec.ts
deleted file mode 100644
index d7f09c8f9b..0000000000
--- a/tests/cypress/integration/core/isClass.spec.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-/// <reference types="cypress" />
-
-import { isClass } from '@tiptap/core/src/utilities/isClass'
-
-describe('isClass', () => {
-  it('returns true for classes', () => {
-    const instance = new (class {
-      public foo = 'bar'
-    })()
-
-    expect(isClass(instance)).to.eq(true)
-  })
-
-  it('return false for objects', () => {
-    const instance = {}
-
-    expect(isClass(instance)).to.eq(false)
-  })
-})