or run

npx @tessl/cli init
Log in

Version

Files

tile.json

rubric.jsonevals/scenario-4/

{
  "context": "Evaluates whether the solution uses @ckeditor/ckeditor5-mention’s built-in UI to anchor the dropdown to the caret with RTL-aware contextual balloon fallbacks. Checks rely on the package’s Mention, MentionUI, and ContextualBalloon helpers rather than custom popups, plus correct hide/reposition behavior during lookup changes.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Mention config",
      "description": "Enables the Mention plugin and wires feeds through config.mention.feeds (including marker, dropdownLimit/minimumCharacters) so lookup text and limits are driven by the package instead of bespoke parsing.",
      "max_score": 20
    },
    {
      "name": "Contextual balloon",
      "description": "Shows the dropdown via ContextualBalloon#add (or MentionUI’s equivalent) with the mentions view and singleViewMode/ck-mention-balloon class instead of manually positioned DOM.",
      "max_score": 25
    },
    {
      "name": "RTL positions",
      "description": "Builds position data with getBalloonPanelPositions/_getBalloonPanelPositionData so caret_se/caret_sw/caret_ne/caret_nw order flips when editor.locale.uiLanguageDirection === 'rtl', providing the mirrored fallback stack.",
      "max_score": 25
    },
    {
      "name": "Live reposition",
      "description": "On active lookups, calls ContextualBalloon#updatePosition with new _getBalloonPanelPositionData when the caret moves, view rerenders, or the mention view size changes, mirroring MentionUI._showOrUpdateUI behavior.",
      "max_score": 15
    },
    {
      "name": "Hide cleanup",
      "description": "Uses MentionUI-style cleanup (e.g., _hideUIAndRemoveMarker) to remove the mentions view from ContextualBalloon and drop the 'mention' marker when markers disappear, feeds return empty, or focus/selection leaves the editor.",
      "max_score": 15
    }
  ]
}