div>div>div[data-slate-node="element"]]:leading-[30px]',
// Increase Slate line height in the renderer
From 5cb0ddd9d53c648dfb97271557f5d74daa002f8a Mon Sep 17 00:00:00 2001
From: Botho <1258870+elbotho@users.noreply.github.com>
Date: Tue, 10 Dec 2024 15:23:47 +0100
Subject: [PATCH 2/4] fix(plugin-exercise): show task again before
interactive-element selection
---
.../editor/src/plugins/exercise/editor.tsx | 28 +++++++++----------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/packages/editor/src/plugins/exercise/editor.tsx b/packages/editor/src/plugins/exercise/editor.tsx
index c8ff92eab3..47c8269171 100644
--- a/packages/editor/src/plugins/exercise/editor.tsx
+++ b/packages/editor/src/plugins/exercise/editor.tsx
@@ -88,22 +88,22 @@ export function ExerciseEditor(props: ExerciseProps) {
+ {/* Special case for the blanks exercise: Until the child plugin is selected we hide the task to avoid confusion */}
+ {/* Background: Users often add their blanks-text to the task */}
+
+ {content.render({
+ config: {
+ textPluginPlaceholder: exStrings.placeholder,
+ },
+ })}
+
{interactive.defined ? (
<>
- {/* Special case for the blanks exercise: Until the child plugin is selected we hide the task to avoid confusion */}
- {/* Background: Users often add their blanks-text to the task */}
-
- {content.render({
- config: {
- textPluginPlaceholder: exStrings.placeholder,
- },
- })}
-
{interactive.render()}
{hideInteractiveInitially.defined ? (
From 9e7f6dfe47046c13a9e2f4d99b28e3d60200a6af Mon Sep 17 00:00:00 2001
From: Botho <1258870+elbotho@users.noreply.github.com>
Date: Wed, 11 Dec 2024 16:02:36 +0100
Subject: [PATCH 3/4] feat(editor): add learner event handler to package
---
packages/editor/src/___dev-demo/preview.tsx | 5 +++++
packages/editor/src/package/index.ts | 1 +
packages/editor/src/package/serlo-renderer.tsx | 9 +++++++++
3 files changed, 15 insertions(+)
diff --git a/packages/editor/src/___dev-demo/preview.tsx b/packages/editor/src/___dev-demo/preview.tsx
index a29f50cacc..d4df7eed8d 100644
--- a/packages/editor/src/___dev-demo/preview.tsx
+++ b/packages/editor/src/___dev-demo/preview.tsx
@@ -1,5 +1,6 @@
import { showToastNotice } from '@editor/editor-ui/show-toast-notice'
import { EditorPluginType, SerloEditor, SerloRenderer } from '@editor/package'
+import { LearnerEventData } from '@editor/plugin/helpers/editor-learner-event'
import { parseDocumentString } from '@editor/static-renderer/helper/parse-document-string'
import { AnyEditorDocument } from '@editor/types/editor-plugins'
import { useMemo, useState } from 'react'
@@ -90,6 +91,10 @@ export function Preview() {
{
+ // eslint-disable-next-line no-console
+ console.log(data)
+ }}
/>
diff --git a/packages/editor/src/package/index.ts b/packages/editor/src/package/index.ts
index d762a36a62..e07daf3c00 100644
--- a/packages/editor/src/package/index.ts
+++ b/packages/editor/src/package/index.ts
@@ -3,6 +3,7 @@ export { SerloRenderer, type SerloRendererProps } from './serlo-renderer'
export type { SupportedLanguage } from '@editor/types/language-data'
export type { BaseEditor } from '@editor/core'
+export type { LearnerEventData } from '@editor/plugin/helpers/editor-learner-event'
// We need to make a distinction between entires on our menu and technical
// plugin types Internally we have for example a `scMcExercise` which has a
diff --git a/packages/editor/src/package/serlo-renderer.tsx b/packages/editor/src/package/serlo-renderer.tsx
index 0e92e9004e..4f356ab681 100644
--- a/packages/editor/src/package/serlo-renderer.tsx
+++ b/packages/editor/src/package/serlo-renderer.tsx
@@ -2,6 +2,10 @@ import { EditorMetaContext } from '@editor/core/contexts/editor-meta-context'
import { createRenderers } from '@editor/editor-integration/create-renderers'
import { EditStringsProvider } from '@editor/i18n/edit-strings-provider'
import { StaticStringsProvider } from '@editor/i18n/static-strings-provider'
+import {
+ editorLearnerEvent,
+ LearnerEventData,
+} from '@editor/plugin/helpers/editor-learner-event'
import { editorRenderers } from '@editor/plugin/helpers/editor-renderer'
import { StaticRenderer } from '@editor/static-renderer/static-renderer'
import type { SupportedLanguage } from '@editor/types/language-data'
@@ -16,6 +20,7 @@ export interface SerloRendererProps {
state: unknown
_ltik?: string
editorVariant: EditorVariant
+ handleLearnerEvent?: (data: LearnerEventData) => void
}
export function SerloRenderer(props: SerloRendererProps) {
@@ -36,6 +41,10 @@ export function SerloRenderer(props: SerloRendererProps) {
const basicRenderers = createRenderers()
editorRenderers.init(basicRenderers)
+ if (props.handleLearnerEvent) {
+ editorLearnerEvent.init(props.handleLearnerEvent)
+ }
+
return (